Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/core/prompts/l1-dedup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ export const CONFLICT_DETECTION_SYSTEM_PROMPT = `你是记忆冲突检测器。
- **事件类**(episodic):一次性经历、带时间点的客观记录,建议合并同一件事的前因后果

2. **判断是否同一事实/事件**:主体相同、主题一致、时间接近、scene_name 相似
- 对 instruction 记忆,必须同时比较适用场景/条件。规则文本相似但适用场景不同(例如"即时通讯文本不用表格" vs "正式报告可用表格")不是无条件的同一全局规则。
- merge / update instruction 时,merged_content 必须保留所有仍然成立的场景限定词;不得把带条件的规则改写成无条件全局规则。

3. **选择动作**:
- "store":视为新信息,新增当前记忆。
Expand Down
4 changes: 4 additions & 0 deletions src/core/prompts/l1-extraction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ export const EXTRACT_MEMORIES_SYSTEM_PROMPT = `你是专业的"情境切分与
- 提取句式:"用户要求/希望 AI 以后回答时..."
- 触发词:以后都、从现在开始、记住、必须。
- 打分 (priority):-1(极其严格的全局死命令);90-100(核心行为规则);70-80(重要要求);<70(临时要求,直接丢弃)。
- **场景限定指令**:如果用户明确给出适用场景(如"写微信/飞书消息时"、"给客户汇报时"、"这类代码评审里"),必须把场景条件写入 content,不得泛化成无条件全局规则。
- 正例:"用户要求 AI 在生成用于即时通讯发送的文本时尽量不要使用表格。"
- 反例:"用户要求 AI 不要使用表格。"
- 场景限定但可长期复用的规则可以保留为 instruction;priority 依据重要性打分,不要仅因带场景限定就低于 70。

---

Expand Down
21 changes: 21 additions & 0 deletions src/core/prompts/l1-scoped-instruction.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { describe, expect, it } from "vitest";
import { EXTRACT_MEMORIES_SYSTEM_PROMPT } from "./l1-extraction.js";
import { CONFLICT_DETECTION_SYSTEM_PROMPT } from "./l1-dedup.js";

describe("L1 scoped instruction prompts", () => {
it("tells extraction to preserve explicit instruction scope in content", () => {
expect(EXTRACT_MEMORIES_SYSTEM_PROMPT).toContain("场景限定指令");
expect(EXTRACT_MEMORIES_SYSTEM_PROMPT).toContain("必须把场景条件写入 content");
expect(EXTRACT_MEMORIES_SYSTEM_PROMPT).toContain("不得泛化成无条件全局规则");
expect(EXTRACT_MEMORIES_SYSTEM_PROMPT).toContain("在生成用于即时通讯发送的文本时尽量不要使用表格");
expect(EXTRACT_MEMORIES_SYSTEM_PROMPT).toContain("不要仅因带场景限定就低于 70");
});

it("tells dedup to keep distinct instruction scopes during merge/update", () => {
expect(CONFLICT_DETECTION_SYSTEM_PROMPT).toContain("必须同时比较适用场景/条件");
expect(CONFLICT_DETECTION_SYSTEM_PROMPT).toContain("适用场景不同");
expect(CONFLICT_DETECTION_SYSTEM_PROMPT).toContain("不是无条件的同一全局规则");
expect(CONFLICT_DETECTION_SYSTEM_PROMPT).toContain("merged_content 必须保留所有仍然成立的场景限定词");
expect(CONFLICT_DETECTION_SYSTEM_PROMPT).toContain("不得把带条件的规则改写成无条件全局规则");
});
});
Loading