--- name: memory-merger description: '将领域记忆文件中的成熟经验合并到其指令文件中。语法:`/memory-merger >domain [scope]`,其中 scope 为 `global`(默认)、`user`、`workspace` 或 `ws`。' --- # Memory Merger 你将某个领域的记忆文件中积累的经验教训整合到其指令文件中,确保在最小冗余的前提下保存知识。 **使用任务列表**来跟踪你在各个处理步骤上的进度,并让用户了解最新情况。 ## 作用域 记忆指令可以存储在两个作用域中: - **全局**(`global` 或 `user`)——存储在 ``(`vscode-userdata:/User/prompts/`)中,适用于所有 VS Code 项目 - **工作区**(`workspace` 或 `ws`)——存储在 ``(`/.github/instructions/`)中,仅适用于当前项目 默认作用域为 **全局**。 在整个提示词中,`` 和 `` 均指上述目录。 ## 语法 ``` /memory-merger >domain-name [scope] ``` - `>domain-name` —— 必填。要合并的领域名称(例如 `>clojure`、`>git-workflow`、`>prompt-engineering`) - `[scope]` —— 可选。可选值:`global`、`user`(两者均表示全局)、`workspace` 或 `ws`。默认为 `global` **示例:** - `/memory-merger >prompt-engineering` —— 合并全局的 prompt engineering 记忆 - `/memory-merger >clojure workspace` —— 合并工作区的 clojure 记忆 - `/memory-merger >git-workflow ws` —— 合并工作区的 git-workflow 记忆 ## 处理流程 ### 1. 解析输入并读取文件 - **提取**用户输入中的领域和作用域 - **确定**文件路径: - 全局:`/{domain}-memory.instructions.md` → `/{domain}.instructions.md` - 工作区:`/{domain}-memory.instructions.md` → `/{domain}.instructions.md` - 用户可能输错领域名称,如果找不到记忆文件,请在该目录下进行 glob 搜索,判断是否存在可能的匹配项。如有疑问,请向用户确认。 - **读取**两个文件(记忆文件必须存在;指令文件可能不存在) ### 2. 分析并提出建议 审阅所有记忆章节,并将其展示出来供合并考虑: ``` ## 建议合并的记忆 ### 记忆:[标题] **内容:** [关键要点] **位置:** [在指令中的合适位置] [更多记忆]... ``` 请说:"请审阅这些记忆。输入 'go' 批准全部,或指定要跳过的条目。" **停下来等待用户输入。** ### 3. 定义质量标准 制定 10/10 标准,定义何为优秀的合并后指令: 1. **零知识丢失** —— 每个细节、示例和细微之处都得以保留 2. **最小冗余** —— 重叠的指导内容被合并精简 3. **最高可扫描性** —— 清晰的层级结构、平行句式、有策略地加粗、逻辑分组 ### 4. 合并与迭代 **在更新文件之前**,先拟定最终的合并后指令: 1. 起草合并后的指令,纳入已批准的记忆 2. 对照质量标准进行评估 3. 优化结构、措辞和排版 4. 重复上述步骤,直到合并后的指令达到 10/10 标准 ### 5. 更新文件 一旦最终的合并后指令达到 10/10 标准: - **创建或更新**指令文件,写入最终的合并内容 - 如果是新建文件,请包含正确的 frontmatter - 如果记忆文件和指令文件均存在,则**合并两者的 `applyTo` 模式**,确保覆盖全面且不重复 - **删除**记忆文件中已合并的章节 ## 示例 ``` 用户:"/memory-merger >clojure" Agent: 1. 读取 clojure-memory.instructions.md 和 clojure.instructions.md 2. 提出 3 条待合并的记忆 3. [停止] 用户:"go" Agent: 4. 制定 10/10 质量标准 5. 合并新的指令候选版本,迭代至 10/10 6. 更新 clojure.instructions.md 7. 清理 clojure-memory.instructions.md ```