9.8 KiB
主 Agent 提示词与记忆分层设计
背景
当前 master-agent 会话已经具备这些能力:
- 真实对话链路:
APP / Web -> boss-web -> master-agent -> local-agent / OpenAI API -> 回写账本 - 当前对话模型选择
- 当前对话推理强度选择
- 微信式右上角三点菜单
但还有两个关键能力缺失:
- 主 Agent 没有一套显式可管理的提示词体系
- 主 Agent 没有一套可见、可编辑、可沉淀的记忆体系
在当前产品形态下,这两个能力不能再停留在“代码里写死一段 prompt”或“隐性记忆”的阶段。因为实际使用中已经出现两类长期信息:
- 系统级规则和风格约束
- 用户在大量对话、长期研发、项目推进过程中沉淀下来的偏好、进度、阻塞、结论
同时,项目是多租户结构:
- 管理员需要定义系统级主 Agent 规则
- 每个用户又需要维护自己私有的长期上下文
- 单个当前会话还可能需要额外临时约束
目标
- 为主 Agent 建立分层提示词体系
- 为主 Agent 建立用户级记忆体系,并支持自动沉淀
- 在主 Agent 聊天页右上角三点菜单中增加:
提示词记忆
- 支持在前台对记忆进行:
- 新增
- 编辑
- 删除
- 支持在前台对提示词进行:
- 查看管理员全局主提示词(只读)
- 编辑用户私有主提示词
- 编辑当前对话附加提示词
- 主 Agent 每次执行时,真实使用这些提示词和记忆,而不是只存不读
非目标
- 本轮不做向量数据库
- 本轮不做复杂语义聚类
- 本轮不做管理员全局记忆
- 本轮不做提示词版本对比和历史回滚
- 本轮不把提示词/记忆扩展到普通线程会话
设计总览
1. 提示词分层
主 Agent 提示词分三层:
管理员全局主提示词用户私有主提示词当前对话附加提示词
这三层不是互相覆盖,而是固定顺序叠加:
管理员全局主提示词
+ 用户私有主提示词
+ 当前对话附加提示词
约束如下:
- 管理员全局主提示词:
- 由管理员在 Web 后台配置
- 全局唯一
- 所有主 Agent 对话都会继承
- 不可被用户层和对话层覆盖
- 用户私有主提示词:
- 每个用户独立维护
- 用来表达长期偏好、表达方式、工作方式
- 当前对话附加提示词:
- 只作用于当前
master-agent会话 - 用来表达本轮对话的临时约束和上下文
- 只作用于当前
2. 记忆分层
记忆只保留用户层,不做管理员全局记忆。
但用户记忆再分两类:
用户通用记忆项目记忆
2.1 用户通用记忆
适合保存:
- 用户长期偏好
- 常用语言/表达要求
- 长期研究方向
- 长期稳定的工作约束
例如:
- 用户偏好微信式交互
- 用户偏好中文直接回复
- 用户倾向先打通主链再做 UI 精修
2.2 项目记忆
默认绑定到具体 projectId。
适合保存:
- 项目目标变化
- 决策结论
- 阻塞点
- 风险
- 重要进度结论
- 关键线程/设备职责
例如:
boss项目服务器固定是106.53.170.158wenshenapp当前真实线程导入规则已切到项目聚合 + 线程下钻- 某个设备上的某个线程负责某类任务
3. 前台呈现方式
前台不直接暴露复杂结构,而是保持轻量卡片式体验:
- 提示词页:按分层 section 展示
- 记忆页:按列表卡片展示
但底层必须是结构化存储,以支撑未来的大量记忆沉淀、检索、过滤和去重。
数据模型
1. 管理员全局主提示词
建议增加一条系统配置记录,例如:
interface MasterAgentPromptPolicy {
globalPrompt: string;
updatedAt: string;
updatedBy?: string;
}
特点:
- 全局唯一
- 不跟项目绑定
- 只允许管理员修改
2. 用户私有主提示词
interface UserMasterPrompt {
account: string;
content: string;
updatedAt: string;
}
3. 当前对话附加提示词
当前这层建议直接复用 master-agent 对话控制思路,挂在 project 上:
interface ProjectAgentControls {
modelOverride?: string;
reasoningEffortOverride?: "low" | "medium" | "high";
promptOverride?: string;
updatedAt: string;
}
本轮新增:
promptOverride
4. 用户记忆
type MasterMemoryScope = "global" | "project";
type MasterMemoryType =
| "user_preference"
| "project_progress"
| "decision"
| "risk"
| "blocking_issue"
| "research_note"
| "workflow_rule";
interface MasterAgentMemory {
memoryId: string;
account: string;
scope: MasterMemoryScope;
projectId?: string;
title: string;
content: string;
memoryType: MasterMemoryType;
tags: string[];
sourceMessageId?: string;
createdAt: string;
updatedAt: string;
lastUsedAt?: string;
archived: boolean;
}
主 Agent 执行链合成规则
主 Agent 每次真正执行时,统一按下面顺序拼装上下文:
- 管理员全局主提示词
- 用户私有主提示词
- 当前对话附加提示词
- 当前项目相关的项目记忆
- 用户通用记忆
- 当前运行时上下文
- 当前消息
记忆筛选原则
不是把所有记忆都塞进去,而是按相关性选一批:
- 当前项目命中的项目记忆优先
- 最近使用过的用户通用记忆优先
- 标签命中的记忆优先
- 已归档的不参与默认拼装
管理员全局主提示词不可覆盖
这条是硬规则:
- 用户私有主提示词只能追加
- 当前对话附加提示词也只能追加
- 不允许声明“忽略管理员规则”
- 不允许用户端删除或修改管理员全局主提示词
自动记忆沉淀规则
默认自动沉淀,但不是“所有聊天都入库”。
1. 允许自动写入的内容
只有满足“未来仍有使用价值”的信息才进入记忆:
- 对项目推进有持续价值
- 对用户长期偏好有持续价值
- 对系统后续调度和回答有稳定帮助
2. 自动分类
自动写入时分两类:
- 项目进度、决策、阻塞、风险:
- 写为
projectscope
- 写为
- 用户长期偏好、风格、研究方向:
- 写为
globalscope
- 写为
3. 默认不写入的内容
这些内容默认不进入记忆:
- 打招呼
- 一次性口头确认
- 临时、马上会过期的状态
- 未确认的猜测
- 重复且没有新增信息的催促或抱怨
- 纯操作性瞬时提示
4. 去重与合并
自动沉淀必须带基础去重:
- 如果识别到表达的是同一条长期事实
- 优先更新已有记忆,而不是新增重复条目
- 只刷新:
updatedAtlastUsedAt- 必要时更新标题/内容
前台页面与入口
1. 主 Agent 聊天页右上角三点菜单
新增并调整为:
提示词记忆模型推理强度会话信息刷新
2. 提示词页
这是一个新的轻量编辑页。
包含三个 section:
管理员全局主提示词- 只读
- 明确标注“不可覆盖”
我的主提示词- 可编辑
当前对话附加提示词- 可编辑
页面还需要提供:
查看组合结果
目的是让用户知道当前主 Agent 真正看到的提示词是什么。
3. 记忆页
这是一个新的记忆管理页。
分两个 section:
项目记忆我的通用记忆
每条记忆卡片支持:
- 编辑
- 删除
页面支持:
- 新增记忆
自动写入后的记忆也会直接出现在这里,而不是只存在后端。
Web 后台
本轮需要补一个管理员可用的 Web 配置页,用来管理:
管理员全局主提示词
这页只做一件事:
- 编辑和保存全局主提示词
本轮不扩展成复杂控制台,不加入记忆管理,不做多级配置中心。
API 设计
本轮建议至少新增这些能力:
1. 管理员全局主提示词
GET /api/v1/master-agent/prompt-policyPOST /api/v1/master-agent/prompt-policy
2. 用户私有主提示词
GET /api/v1/master-agent/user-promptPOST /api/v1/master-agent/user-prompt
3. 当前对话附加提示词
沿用现有:
GET /api/v1/projects/[projectId]/agent-controlsPOST /api/v1/projects/[projectId]/agent-controls
本轮在 payload 中加入:
promptOverride
4. 用户记忆
GET /api/v1/master-agent/memoriesPOST /api/v1/master-agent/memoriesPOST /api/v1/master-agent/memories/[memoryId]DELETE /api/v1/master-agent/memories/[memoryId]
并支持:
scope=global|projectprojectIdmemoryType
验收标准
本轮完成后,至少要满足:
- 主 Agent 聊天页右上角三点菜单能看到
提示词和记忆 提示词页能:- 查看管理员全局主提示词
- 编辑用户私有主提示词
- 编辑当前对话附加提示词
- 查看最终组合结果
记忆页能:- 查看项目记忆
- 查看用户通用记忆
- 新增、编辑、删除
- 主 Agent 实际执行时会读取:
- 管理员全局主提示词
- 用户私有主提示词
- 当前对话附加提示词
- 用户记忆
- 自动沉淀出的记忆会真实出现在记忆页
- 项目进度类记忆默认挂到
projectId - 用户长期偏好类记忆默认挂到用户全局
- 管理员全局主提示词不能被用户端覆盖
风险与约束
1. 记忆膨胀
如果自动沉淀规则太宽,记忆会迅速变脏。
因此本轮必须至少带上:
- 自动分类
- 基础去重
- 归档能力
2. prompt 过长
提示词和记忆叠加后,最终 prompt 不能无限增长。
因此本轮虽然先不做复杂向量检索,但必须做最基础的筛选:
- 当前项目优先
- 最近使用优先
- 归档排除
3. 多租户边界
用户记忆必须严格按用户隔离:
- 用户 A 的记忆不能进入用户 B 的主 Agent
- 项目记忆也必须同时受
account + projectId约束