新增记忆
支持自动沉淀后的手动增补、编辑和归档。项目记忆需要绑定到真实项目,而不是 master-agent 会话本身。
diff --git a/src/lib/master-agent-chat-menu.ts b/src/lib/master-agent-chat-menu.ts
new file mode 100644
index 0000000..eac069b
--- /dev/null
+++ b/src/lib/master-agent-chat-menu.ts
@@ -0,0 +1,30 @@
+export type MasterAgentChatMenuItem = {
+ key: "prompt" | "memory" | "refresh";
+ label: string;
+ href?: string;
+ action?: "refresh";
+};
+
+export function getMasterAgentChatMenuItems(projectId: string): MasterAgentChatMenuItem[] {
+ if (projectId !== "master-agent") {
+ return [];
+ }
+
+ return [
+ {
+ key: "prompt",
+ label: "提示词",
+ href: "/me/master-agent#prompt-section",
+ },
+ {
+ key: "memory",
+ label: "记忆",
+ href: "/me/master-agent#memory-section",
+ },
+ {
+ key: "refresh",
+ label: "刷新",
+ action: "refresh",
+ },
+ ];
+}
diff --git a/tests/master-agent-chat-menu.test.ts b/tests/master-agent-chat-menu.test.ts
new file mode 100644
index 0000000..87bf884
--- /dev/null
+++ b/tests/master-agent-chat-menu.test.ts
@@ -0,0 +1,19 @@
+import test from "node:test";
+import assert from "node:assert/strict";
+import { getMasterAgentChatMenuItems } from "../src/lib/master-agent-chat-menu";
+
+test("master-agent 聊天页菜单包含提示词、记忆和刷新", () => {
+ const items = getMasterAgentChatMenuItems("master-agent");
+ assert.deepEqual(
+ items.map((item) => item.key),
+ ["prompt", "memory", "refresh"],
+ );
+ assert.equal(items[0]?.href, "/me/master-agent#prompt-section");
+ assert.equal(items[1]?.href, "/me/master-agent#memory-section");
+ assert.equal(items[2]?.action, "refresh");
+});
+
+test("普通会话不返回主 Agent 专属菜单", () => {
+ const items = getMasterAgentChatMenuItems("boss-console");
+ assert.deepEqual(items, []);
+});