mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-06 12:45:51 +00:00
Compare commits
8 Commits
5e1ec84345
...
5df9c5ebd3
| Author | SHA1 | Date | |
|---|---|---|---|
| 5df9c5ebd3 | |||
| 20d6f8dceb | |||
| a60e03116b | |||
| 89da0f9ff8 | |||
| a793a990bb | |||
| 7fd41f01e3 | |||
| cbf8b6d728 | |||
| 3355bfed81 |
123
MemoryGuide.md
Normal file
123
MemoryGuide.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 📘 记忆管理系统使用手册
|
||||
|
||||
> **设计老师**:繁华 & 可乐
|
||||
|
||||
**前言**:
|
||||
本系统基于 Amily2 插件中的 `记忆管理`、`总结模块`、`表格模块` 功能进行联动实现。
|
||||
* **定位**:作为 Amily2 `超级记忆功能` 的替代方案。
|
||||
* **优势**:在记忆的细节(如曾经的心动瞬间、铭记一生的誓言)上表现优异。
|
||||
* **兼容性**:两者可以兼容!可以单独使用,也可以配合使用。
|
||||
|
||||
> ⚠️ **重要警告**
|
||||
>
|
||||
> 当你按照本教程使用记忆系统功能并进行设置后,**原来的剧情优化实际功能将被改变**(即大家理解的剧情推进被改为记忆管理)。
|
||||
> 请不要再根据 Amily2 谷歌文档教程进行理解设置,请以本教程为准。
|
||||
>
|
||||
> **如何恢复?**
|
||||
> 若后续不想使用本 `记忆管理系统` 功能,或想恢复原本的 `剧情优化` 功能,只需要:
|
||||
> 1. 切换 `剧情优化预设`(路径:剧情优化功能页面 `提示词指令` → `提示词管理`)
|
||||
> 2. 或分别点击 `恢复主提示词`、`恢复拦截任务`、`恢复注入指令` 三个按钮即可。
|
||||
|
||||
## 一、前置通用设置
|
||||
|
||||
无论使用 `总结流` 还是 `超级记忆` 适配,**必须**进行以下设置。
|
||||
|
||||
1. **导入预设**
|
||||
* 请在群文件下载 `记忆管理系统可乐版-v1.17.2` 或 `剧情优化功能-记忆管理系统.json` 预设文件。
|
||||
* **导入路径**:`amily2插件` → `剧情优化功能` → `提示词指令` → `提示词管理` → `导入预设`
|
||||
|
||||
2. **参数设置**
|
||||
|
||||
| 参数项 | 对应设置 | 建议值 | 说明 |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| 主线剧情 (sulv1) | 单次输出最大回忆记录数 | **5 - 20** | 控制每次返回的回忆条数 (范围: 0-无限) |
|
||||
| 个人线 (sulv2) | 记忆关联性阈值 | **0.3 - 0.5** | 控制回忆的关联性 (范围: 0.1-1)<br>0.1最准确/直接相关;1包含间接相关 |
|
||||
|
||||
3. **标签提取与内容排除**
|
||||
* **设置路径**:`amily2插件` → `总结模块` → `标签提取/内容排除`
|
||||
* **提取 `正文标签`**:填写你的正文内包裹标签。
|
||||
* **内容排除**:
|
||||
* `<Plot_progression>` 到 `</Plot_progression>` (注意:不要复制反引号)
|
||||
* `正文标签内` 可能出现的 `非正文内容标签`(例如用了正文优化后的思维连或者某些预设奇奇怪怪的功能)
|
||||
* *若是可乐版*:`<details>` 到 `</details>`
|
||||
|
||||
## 二、记忆管理功能设置
|
||||
|
||||
请按照以下配置调整 `记忆管理功能` 页面:
|
||||
|
||||
### 1. 基础开关
|
||||
* 剧情优化开关:🔴 **关闭** (防笨蛋,设置完全部后再开启)
|
||||
* EJS预处理:🔴 **关闭**
|
||||
* 启用世界书:🟢 **开启**
|
||||
* 启用表格:🟢 **开启**
|
||||
|
||||
### 2. 上下文与模型
|
||||
* 上下文条数:`5` (建议设置单数 1、3、5)
|
||||
* 世界书最大字符数:`120000` (DS V3或V3.2模型推荐此数值)
|
||||
* 最大 Tokens:`4000` (建议默认)
|
||||
* 温度:`1` (越小越准,建议1)
|
||||
|
||||
> **🤖 模型推荐**
|
||||
> * **DS V3**:稳定、聪明、简洁、快。
|
||||
> * **DS V3.2**:(推荐)需额外设置 `魔法棒` → `提示词链` → `剧情推进提示词` → `恢复默认` → `保存`。
|
||||
> * *注:不建议使用其他快速模型。*
|
||||
|
||||
## 三、总结使用方式
|
||||
|
||||
1. **提示词恢复默认**
|
||||
* 插件版本达到 v1.7.4 版本及以上,总结模块中,大小总结的 `主要提示词` 与 `任务提示词` 需恢复默认并保存。
|
||||
* **操作路径**:`amily2插件` → `总结模块` → `小总结功能(微言录)` / `大总结功能(宏史卷)`
|
||||
* **操作**:分别点击 `恢复默认` 按钮,并点击 **保存**。
|
||||
* 💡 **建议操作:重新总结**
|
||||
* 恢复提示词后,最好进行一次重新总结。
|
||||
* **推荐设置**:模型 2.5pro,温度 1,最大 Tokens 30000,总结阈值 50。
|
||||
* **操作**:一次性批量总结完旧楼层。
|
||||
* **注意**:中途若世界书字符数过多,可使用一次大总结后继续。
|
||||
|
||||
2. **总结设置**
|
||||
* **大总结**:当世界书 `【敕史局】对话流水总账` 对话流水总账达到了 4 万以上字符数。
|
||||
* **小总结设置**:
|
||||
* 交互式巡录:🟢 **开启**
|
||||
* 静默总结:🟢 **开启**
|
||||
* 存世界书:🟢 **开启**
|
||||
* 上传向量:🔴 **关闭**
|
||||
* 总结阈值和保留层数:按个人情况或默认。(推荐10-20)
|
||||
* **模型推荐**:哈基米2.5p。
|
||||
|
||||
3. **设置总结世界书**
|
||||
* **路径**:`amily2插件` → `插件首页下拉` → `总结与法律`
|
||||
* **配置**:选择 `写入独立档案`、选择 `激活模式蓝灯`
|
||||
|
||||
4. **初始化与启动**
|
||||
1. **生成总结**:开始玩卡触发一次自动总结,已有聊天的直接手动总结一次(开始远征)。
|
||||
2. **开启功能**:回到插件的 `剧情优化功能`,将 `剧情优化开关` 切换为 🟢 **开启**。
|
||||
3. **关联世界书**:点击 `上下文设置` (启用世界书),将世界书来源选择 `自定`,选择名为 `Amily2-Lore-char-...` 的世界书,勾选总结出来的世界书条目 `【敕史局】对话流水总帐`,并且 **勾选全选**(务必确认,世界书中就只有 `【敕史局】对话流水总帐` 这个条目)。
|
||||
|
||||
5. **隐藏楼层**
|
||||
1. **开启功能**:总结模块上方的 `皇家史册管理员`。
|
||||
2. 将 `按阈值隐藏` 切换为 🟢 **开启**。
|
||||
3. 下方数字设置为 `10及以下`。(此处推荐带摘要的预设,并且有X楼前只发送摘要。)
|
||||
|
||||
6. **测试方式 (可选)**
|
||||
* 开启 `密折司` 功能 → 发送一条消息 → 等待 `剧情优化提示` 完成,自动弹出 `密折司` 页面 → 点击取消,查看 `用户消息` 确认效果。
|
||||
|
||||
## 四、搭配表格 (必须)
|
||||
|
||||
### 1. 开启表格支持
|
||||
* 路径:剧情优化功能 → `上下文设置` → `启用表格`
|
||||
|
||||
### 2. 表格模块设置
|
||||
* 路径:`amily2插件` → `表格模块` → `操作中心`
|
||||
* ✅ 表格系统总开关:🟢 **开启**
|
||||
* ❌ 启用表格注入:🔴 **关闭**
|
||||
* ✅ 启用上下文优化 (合并世界书):🟢 **开启**
|
||||
* ⚙️ 上下文深度:`3` (建议设置单数 1、3、5)
|
||||
* ⚙️ 填表批次:`4` (若无总结表则使用0)
|
||||
* ⚙️ 保留楼层:`2` (若无总结表则使用0)
|
||||
|
||||
### 3. 注意事项
|
||||
* 正常游玩即可。
|
||||
* ⚠️ **重要**:使用表格时,请注意每次填表后检查填写的准确性,否则回忆出来的内容也会是错误的。
|
||||
|
||||
---
|
||||
*Designed for Amily2 Chat Optimisation*
|
||||
91
README.md
Normal file
91
README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# Amily2号聊天优化助手 (ST-Amily2-Chat-Optimisation)
|
||||
|
||||
欢迎使用 **Amily2号聊天优化助手**!这是一个为 SillyTavern (酒馆) 量身打造的综合性增强插件,旨在通过全方位的智能化功能,为您带来更连贯、更沉浸、更具深度的角色扮演体验。
|
||||
|
||||
本插件集成了多项创新功能,让您的 AI 角色不仅拥有“超强记忆”,还能随着剧情发展不断成长。
|
||||
|
||||
> 💡 **推荐阅读**:[记忆管理系统使用教程](MemoryGuide.md)
|
||||
>
|
||||
> *这是由繁华与可乐老师设计的进阶记忆方案,在记忆细节(如心动瞬间、誓言)上表现优异,强烈推荐阅读!*
|
||||
|
||||
## 🌟 核心功能亮点
|
||||
|
||||
### 1. 📖 动态角色档案 (Character World Book)
|
||||
告别千篇一律的角色卡!插件会在聊天过程中,自动感知角色的性格变化、经历过的重要事件以及当前状态,并实时更新到角色的档案中。
|
||||
* **自动记录**:无需手动编辑,AI 会自动为您维护角色的最新设定。
|
||||
* **即时更新**:角色的每一次成长和变化都会被记录下来,确保长期聊天的一致性。
|
||||
* **数据驱动**:为未来的复杂互动(如关系网分析)打下坚实基础。
|
||||
|
||||
### 2. 📊 智能表格系统 (Table System)
|
||||
这是插件的数据基石,赋予 AI 像 RPG 游戏一样的状态追踪能力。
|
||||
* **结构化管理**:以表格形式精确记录物品栏、任务日志、当前时间、地点等关键信息。
|
||||
* **自主更新**:AI 能够理解剧情并自动对表格数据进行增删改查,无需人工干预。
|
||||
* **多模式填表**:支持“分步填表”和“批量填表”,利用独立 API 处理数据,准确高效且不污染主对话。
|
||||
|
||||
### 3. 🧠 超级记忆系统 (Super Memory)
|
||||
基于表格系统的数据,让 AI 拥有过目不忘的能力。
|
||||
* **万物皆可记**:将表格中的物品、任务、线索等信息转化为世界书条目,被清晰地记录在案。
|
||||
* **智能检索**:AI 会在需要时自动回忆起相关信息,不再出现“吃书”或遗忘关键设定的情况。
|
||||
* **时光倒流**:支持在回退聊天时自动恢复记忆状态,确保记忆与剧情进度一致。
|
||||
|
||||
### 4. 🕸️ 人物关系图谱 (Relationship Graph)
|
||||
不仅仅是文字,我们让 AI “看见”关系。
|
||||
* **关系可视化**:通过直观的图谱展示角色之间错综复杂的社交网络。
|
||||
* **深度理解**:帮助 AI 更好地理解人物之间的亲疏远近和爱恨情仇,做出更符合逻辑的互动。
|
||||
* **图谱增强检索 (Graph RAG)**:利用图谱结构增强 AI 的上下文理解能力。
|
||||
|
||||
### 5. ✍️ 文本与剧情优化
|
||||
让每一次对话都如小说般精彩。
|
||||
* **回复增强**:智能分析并提升 AI 回复的文笔和逻辑,提供更高质量的阅读体验。
|
||||
* **即时优化**:在 AI 生成回复后,自动提取核心内容并进行润色。
|
||||
|
||||
### 6. 📚 翰林院 (RAG 知识库)
|
||||
强大的检索增强生成系统,让 AI 能够利用海量的外部知识。
|
||||
* **忆识宝库**:将聊天记录、手动输入的文本或世界书条目转化为向量数据,存入“忆识宝库”。
|
||||
* **精准检索**:在聊天时自动检索宝库中最相关的内容,注入到提示词中,让角色“记起”相关信息。
|
||||
* **忆识精炼 (Rerank)**:对初步检索结果进行二次排序,选出最相关的几条,提高知识注入的精准度。
|
||||
|
||||
### 7. 📜 国史馆 (Historiographer)
|
||||
负责长篇内容处理的超级模块。
|
||||
* **自动总结**:在后台默默记录剧情发展,生成精炼的摘要。
|
||||
* **世界书精炼**:自动整理和优化世界书条目,保持记忆库的整洁和高效。
|
||||
|
||||
### 8. 📝 密折司 (Prompt Inspector)
|
||||
强大的提示词实时审查与编辑工具。
|
||||
* **最后一道防线**:在 AI 生成请求发送前的“最后一刻”拦截并审查提示词。
|
||||
* **御笔亲批**:允许用户直接修改最终发送给 AI 的提示词,确保一切尽在掌握。
|
||||
|
||||
### 9. 🌍 世界书编辑器 (World Editor)
|
||||
功能强大的表格化世界书管理工具。
|
||||
* **高效管理**:提供类似 Excel 的界面,支持批量编辑、复制、删除等操作。
|
||||
* **高级视图**:支持按关键词搜索、排序和过滤,轻松管理庞大的设定集。
|
||||
|
||||
### 10. 📖 术语表与小说处理 (Glossary)
|
||||
* **小说导入**:支持上传小说文本,自动分块并生成剧情摘要和结构化数据。
|
||||
* **世界书重组**:智能合并和整理分散的世界书条目。
|
||||
|
||||
### 11. 🎨 沉浸式 UI 体验
|
||||
* **动态面板**:支持在聊天气泡中直接显示状态栏、日历等动态内容,增强游戏的代入感。
|
||||
* **便捷操作**:提供悬浮窗和快捷指令,让您随时随地掌控全局。
|
||||
* **优化前文查看器**:直观展示剧情优化前后的文本差异。
|
||||
|
||||
### 12. ⚙️ 预设设置 (Preset Settings)
|
||||
* **可视化编辑**:通过拖拽和点击,轻松定制各个功能模块的提示词链。
|
||||
* **多场景适配**:支持创建和切换不同的预设,适应不同的聊天场景和模型。
|
||||
|
||||
### 13. 🤖 自动角色卡生成器 (Auto Char Card)
|
||||
类 CL 架构的智能代理,为您自动设计和优化角色卡。
|
||||
* **单代理循环**:采用先进的 Think-Act-Observe 循环,确保逻辑连贯,自我修正。
|
||||
* **动态规则注入**:支持自定义风格指南和世界观规则,AI 会像查阅资料一样遵守这些规范。
|
||||
* **智能工具调用**:AI 拥有全套工具,可以自主规划、执行并反思,为您打造独一无二的角色设定。
|
||||
|
||||
### 14. 🌐 在线互动
|
||||
* **实时统计**:可以看到当前有多少位同好正在一起使用本插件,感受社区的陪伴。
|
||||
|
||||
---
|
||||
|
||||
## 🚀 如何开始
|
||||
|
||||
安装本插件后,您可以在 SillyTavern 的扩展栏中找到 **Amily2** 的相关设置。插件的大部分功能在后台自动运行,您只需专注于享受与角色的互动即可。
|
||||
|
||||
祝您在 Amily2 的辅助下,谱写出更多动人的故事!
|
||||
@@ -51,17 +51,6 @@
|
||||
<label for="amily2_show_optimization_toast">显示优化通知</label>
|
||||
<small class="notes">启用后,将在优化完成后弹出通知。</small>
|
||||
</div>
|
||||
|
||||
<div class="amily2_settings_block">
|
||||
<label>优化模式选择:</label>
|
||||
<div class="radio-toggle-group">
|
||||
<input type="radio" id="amily2_mode_intercept" name="amily2_optimization_mode" value="intercept" checked>
|
||||
<label for="amily2_mode_intercept">无感优化</label>
|
||||
<input type="radio" id="amily2_mode_refresh" name="amily2_optimization_mode" value="refresh">
|
||||
<label for="amily2_mode_refresh">刷新优化</label>
|
||||
</div>
|
||||
<small class="notes">无感优化:直接替换文本,速度更快但要关流式,高楼层推荐。刷新优化:重载聊天界面,更加稳定无需关流式,低楼层推荐。</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="settings-group">
|
||||
|
||||
@@ -4,6 +4,7 @@ import { extensionName } from "../utils/settings.js";
|
||||
import { SlashCommand } from "/scripts/slash-commands/SlashCommand.js";
|
||||
import { SlashCommandParser } from "/scripts/slash-commands/SlashCommandParser.js";
|
||||
import { checkAndFixWithAPI } from "./api.js";
|
||||
import { amilyHelper } from './tavern-helper/main.js';
|
||||
|
||||
async function checkLatestMessage() {
|
||||
const context = getContext();
|
||||
@@ -94,9 +95,12 @@ export async function fixCommand() {
|
||||
result.optimizedContent &&
|
||||
result.optimizedContent !== latestMessage.mes
|
||||
) {
|
||||
latestMessage.mes = result.optimizedContent;
|
||||
await saveChatConditional();
|
||||
await reloadCurrentChat();
|
||||
const messageId = chat.length - 1;
|
||||
await amilyHelper.setChatMessage(
|
||||
{ message: result.optimizedContent },
|
||||
messageId,
|
||||
{ refresh: 'display_and_render_current' }
|
||||
);
|
||||
toastr.success("回复已修复", "命令检查器");
|
||||
} else {
|
||||
toastr.info("未检测到需要修复的问题", "命令检查器");
|
||||
|
||||
@@ -65,6 +65,7 @@ import { processOptimization } from "./summarizer.js";
|
||||
import { executeAutoHide } from './autoHideManager.js';
|
||||
import { checkAndTriggerAutoSummary } from './historiographer.js';
|
||||
import { fillWithSecondaryApi } from './table-system/secondary-filler.js';
|
||||
import { amilyHelper } from './tavern-helper/main.js';
|
||||
|
||||
export async function onMessageReceived(data) {
|
||||
window.lastPreOptimizationResult = null;
|
||||
@@ -97,11 +98,12 @@ export async function onMessageReceived(data) {
|
||||
}
|
||||
|
||||
if (result && result.optimizedContent && result.optimizedContent !== latestMessage.mes) {
|
||||
latestMessage.mes = result.optimizedContent;
|
||||
await saveChatConditional();
|
||||
if (settings.optimizationMode === 'refresh') {
|
||||
await reloadCurrentChat();
|
||||
}
|
||||
const messageId = chat.length - 1;
|
||||
await amilyHelper.setChatMessage(
|
||||
{ message: result.optimizedContent },
|
||||
messageId,
|
||||
{ refresh: 'display_and_render_current' }
|
||||
);
|
||||
}
|
||||
} else {
|
||||
console.log("[Amily2号-正文优化] 检测到消息并非AI对用户的直接回复,已跳过优化。");
|
||||
|
||||
@@ -98,9 +98,6 @@ export function updateUI() {
|
||||
$("#amily2_optimization_target_tag").val(settings.optimizationTargetTag);
|
||||
|
||||
|
||||
$(
|
||||
`input[name="amily2_optimization_mode"][value="${settings.optimizationMode}"]`,
|
||||
).prop("checked", true);
|
||||
$("#amily2_optimization_enabled").prop(
|
||||
"checked",
|
||||
settings.optimizationEnabled,
|
||||
|
||||
Reference in New Issue
Block a user