Files
goodbuddy/docs/features/conversation-supervision-prd.md
T
2026-08-14 13:24:42 +08:00

410 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 会话监督 PRD
## 文档信息
| 项目 | 内容 |
| --- | --- |
| 状态 | 设计中 |
| 版本 | 0.1 |
| 日期 | 2026-08-13 |
| 依赖 | [自动化平台总体设计](./automation-platform-architecture.md) |
| 体验参考 | GoodBuddy 魔法笔记 AI 评论流 |
## 1. 背景
GoodBuddy 的魔法笔记已经提供一种有价值的交互:用户持续写作,AI 在右侧以长评、建议和
警告进行评论,用户可以选择综合、扩展、润色、质疑或发散方向。该能力是内容分析,不是
会话监督:
- 只分析当前笔记或待办文本。
- 不观察聊天任务、工具调用、目标、预算或成果。
- 不参与任务状态机。
- 不引用具体会话步骤。
- 不支持关注、暂停和解决流程。
随着目标任务和并行实验出现,用户需要一个与执行 Agent 相互独立的观察者,帮助发现偏题、
遗漏、矛盾、证据不足、循环、成本失控和潜在风险。
## 2. 产品定义
会话监督是在明确范围和策略下,对 Conversation、Task、AutomationRun 或 ExperimentRun
的可见事件进行独立观察,产生带证据的评论、告警和人工介入请求。
它不是:
- 第二个替用户发言的聊天 Agent。
- 隐藏推理查看器。
- 工具审批器。
- 可以绕过安全边界的“总管理员”。
- 自动修正执行过程的通用控制器。
## 3. 核心产品判断
建议增加会话监督,首期采用“魔法笔记式右侧评论流”,但只开放以下能力:
```text
观察
→ 评论 / 警告
→ 用户查看证据
→ 用户忽略、采纳、询问、暂停或调整任务
```
首期模型监督不自动暂停。只有现有确定性安全规则、预算和用户显式配置的硬门禁可以自动暂停。
## 4. 已确认的产品决策
1. 监督默认关闭,由用户对会话、任务、自动化或实验显式启用。
2. 监督只读取用户可查看的消息、工具事件、状态、指标、成果摘要和目标。
3. 不读取、推断或保存模型隐藏推理链。
4. 每条重要判断必须引用具体消息、工具、步骤、指标或成果。
5. 模型监督默认只评论、警告或请求人工复核。
6. 确定性监督负责权限、预算、Schema、幂等和硬停止条件。
7. 监督器不能自动批准工具、扩大范围、修改安全策略或替用户发送消息。
8. 监督评论不是长期事实,默认不进入记忆。
9. 监督调用使用独立预算和低于前台对话的优先级。
10. 同一个事件不能同时产生重复页内警告、评论和全局通知。
## 5. 目标
### 5.1 用户目标
- 在重要会话旁获得不中断主对话的独立评论。
- 及时发现目标偏移、缺少证据、相互矛盾、重复循环和遗漏要求。
- 点击监督意见查看对应证据,而不是接受无来源判断。
- 对监督意见进行采纳、忽略、标记误报或追问。
- 对自动任务设置更严格的监督策略和人工检查点。
### 5.2 产品目标
- 为普通会话、目标任务和实验提供统一监督契约。
- 让确定性安全门禁与模型质量判断保持分层。
- 保存有界、可审计的监督事件,而非复制完整会话。
- 将用户反馈用于调整规则和评估监督器,但不自动训练或改策略。
## 6. 非目标
- 不展示内部 Chain of Thought。
- 不持续监控其他应用、键盘、麦克风或屏幕。
- 不把 Supervisor 设为拥有所有工具的超级 Agent。
- 不自动修改用户消息或助手回答。
- 不保证识别所有事实错误、偏见或安全风险。
- 不把一次模型警告作为任务失败的确定性依据。
- 不在首期支持 Supervisor 与执行 Agent 自主多轮辩论。
- 不让 Supervisor 读取未授权项目、会话、知识库或记忆。
## 7. 监督对象
| 对象 | 观察内容 | 典型用途 |
| --- | --- | --- |
| 普通会话 | 用户消息、助手回答、引用、工具事件 | 质量和证据评论 |
| 任务 | 目标、步骤、状态、工具、成果 | 偏离、循环和失败分析 |
| 自动化 Run | 触发、协议、预算、审批、指标 | 无人值守关注 |
| 实验 Run | 协议、变量、指标、证据 | 协议一致性 |
| 实验整体 | 各 Run 结算和比较 | 评估公平性与无结论提示 |
每个监督会话只能绑定一个主对象,并继承其项目范围。
## 8. 监督模式
### 8.1 评论方向
借鉴魔法笔记,普通会话支持:
| 模式 | 行为 |
| --- | --- |
| 综合 | 平衡总结目标、进展、风险和下一步 |
| 质疑 | 检查逻辑跳跃、前提、反例和证据 |
| 证据 | 检查重要结论是否有可追溯依据 |
| 目标 | 检查是否回应用户目标和约束 |
| 风险 | 检查权限、隐私、外部影响和不可逆行为 |
自动化和实验可组合多个检查维度,不用方向单选替代确定性规则。
### 8.2 触发方式
| 方式 | 说明 |
| --- | --- |
| 手动 | 用户点击“检查当前会话” |
| 每次回复后 | 助手一轮完成后异步分析 |
| 每 N 步 | 自动化或实验按有界步骤间隔分析 |
| 关键事件 | 工具失败、预算 80%、等待审批、指标异常 |
| Run 结束 | 进行最终监督回顾 |
首期优先手动和每次回复后。草稿输入不发送给监督器,除非未来明确增加类似魔法笔记的
草稿评论模式。
### 8.3 干预级别
```ts
type SupervisorAction =
| 'continue'
| 'comment'
| 'warn'
| 'request_review'
| 'pause'
| 'stop'
```
- 模型 Supervisor 首期只可产生前四种。
- `pause``stop` 只来自确定性门禁或用户操作。
- 后续若允许模型建议暂停,仍需确定性策略把建议转换为 `request_review` 或经过用户预授权。
## 9. 观察输入
### 9.1 可见输入
- 当前对象的名称、目标和约束。
- 最近有界消息。
- 工具名称、状态、参数摘要和输出摘要。
- 任务和子任务状态。
- 成果标题、类型、大小和有界摘要。
- 引用和知识检索诊断。
- 预算使用。
- 明确配置的监督规则。
- 已解决或被忽略的近期监督意见摘要。
### 9.2 禁止输入
- API Key、Token、Cookie 和认证头。
- 模型隐藏推理。
- 未授权文件和完整私人文档。
- 其他项目、会话或实验 Run 的数据。
- 原始无限长度工具输出。
- 已删除或用户要求忘记的记忆。
### 9.3 上下文窗口
- 普通会话默认最近 12 条消息和最多 24,000 字符。
- 任务按最近 20 个关键事件和当前目标组装。
- 长会话先使用确定性提取,再由监督器处理有界输入。
- 不能把 Supervisor 自己的旧评论无限回填,最多保留近期未解决摘要。
## 10. 监督输出
```ts
type SupervisorDecision = {
action:
| 'continue'
| 'comment'
| 'warn'
| 'request_review'
category:
| 'goal_drift'
| 'missing_requirement'
| 'evidence_gap'
| 'contradiction'
| 'repetition'
| 'quality'
| 'risk'
| 'budget'
severity: 'info' | 'low' | 'medium' | 'high'
title: string
content: string
evidence: SupervisorEvidenceRef[]
confidence: number
suggestedActions: SupervisorSuggestedAction[]
}
```
证据引用可以指向:
- `messageId`
- `toolCallId`
- `taskEventId`
- `artifactId`
- `metricId`
- `approvalId`
没有有效证据时,严重度最多为 `low`,且必须显示“推测”。
## 11. 确定性监督
以下检查由代码执行:
- Ask 出现写工具请求。
- 工具或路径超出计划快照。
- 未经批准的跨项目或跨分区读取。
- Token、时间、工具、子任务和成果预算。
- 幂等键冲突或结果未知。
- 输出 Schema 不匹配。
- 实验 Run 读取其他 Run 数据。
- 硬停止条件和必填成果。
确定性监督可以阻止、暂停或终止运行。结果必须包含规则 ID、实际值、阈值和触发事件,
不通过模型重新解释才能生效。
## 12. 模型监督
适合判断:
- 回答是否偏离用户问题。
- 计划是否遗漏明确要求。
- 重要结论是否缺少证据。
- 当前回答与前文是否矛盾。
- 是否重复尝试而没有进展。
- 是否存在值得用户注意的模糊风险。
模型监督输出严格经过 Schema 校验。格式错误最多修复一次;失败不阻塞普通前台会话,
但在配置为自动化门禁时必须明确记录“监督不可用”,不能假装检查通过。
## 13. 用户交互
### 13.1 右侧评论流
复用魔法笔记的体验方向:
- 长评卡。
- 建议卡。
- 警告卡。
- 证据链接。
- 评论方向和时间。
每条意见操作:
- 查看证据。
- 采纳建议。
- 追问。
- 忽略。
- 标记误报。
- 对自动化请求暂停。
“采纳”只是把建议带入输入框、计划草稿或任务操作,不让 Supervisor 直接执行。
### 13.2 会话输入区
提供监督状态入口:
```text
监督:关闭 / 综合 / 质疑 / 证据 / 目标 / 风险
```
这是持久二元启用加方向选择:
- 是否启用使用共享 Switch`role="switch"`
- 方向使用 `SegmentedControl` 或上下文单选菜单。
- 不把开关和方向做成一组含义不清的页签。
### 13.3 关注状态
会话或任务列表显示未解决意见数量和最高严重度,不能只用颜色。
只有 `request_review`、高风险警告或确定性暂停触发全局通知。
## 14. 解决流程
```text
open
→ acknowledged
→ resolved
→ dismissed
→ false_positive
```
- `acknowledged`:用户已查看,尚未解决。
- `resolved`:用户或后续运行说明已处理。
- `dismissed`:不采纳,但不一定是误报。
- `false_positive`:明确标记判断不正确。
后续监督输入可以包含未解决意见摘要,已解决意见默认不重复提醒。
## 15. 与任务控制的关系
Supervisor 建议“暂停”时:
1. 创建 `request_review`
2. 在任务和会话界面显示原因和证据。
3. 用户选择继续、暂停、调整目标或取消。
4. 用户操作进入任务审计。
确定性门禁暂停时:
1. Run 进入 `paused``waiting_approval`
2. 显示规则、阈值和实际值。
3. 只有满足规则或用户完成对应审批后才能恢复。
4. 模型评论不能覆盖门禁。
## 16. 与记忆的关系
- 监督评论默认保存在监督记录,不属于长期记忆。
- 用户采纳后可以手动创建记忆候选。
- “事实错误”“用户偏好”等监督判断不能自动写入 Project 或 Global。
- 多次被用户标记误报的模式进入监督评估数据,不直接改变 Prompt。
- 监督器可以读取绑定范围内的已确认记忆,但必须在证据中标明记忆来源。
## 17. 数据模型建议
```ts
type SupervisorSession = {
id: string
projectId?: string
targetType: 'conversation' | 'task' | 'automation_run' | 'experiment'
targetId: string
enabled: boolean
mode: 'general' | 'challenge' | 'evidence' | 'goal' | 'risk'
triggerPolicy: SupervisorTriggerPolicy
budget: SupervisorBudget
}
type SupervisorRecord = {
id: string
sessionId: string
source: 'deterministic' | 'model'
decision: SupervisorDecision
status:
| 'open'
| 'acknowledged'
| 'resolved'
| 'dismissed'
| 'false_positive'
createdAt: string
resolvedAt?: string
}
```
证据关系建议独立表或有界结构化 JSON,并在读取时重新验证对象归属。
## 18. 安全与隐私
1. Supervisor 使用独立可信系统指令,所有观察输入视为不可信数据。
2. 默认不给 Supervisor 任何工具。
3. 即使后续提供只读证据工具,也只能读取绑定对象和明确范围。
4. Supervisor 不接收 Runtime 授权回调,不能请求工具批准。
5. 普通会话监督失败不影响主回答;自动化配置的强制监督失败进入明确关注状态。
6. 评论和通知不包含完整私人消息,证据点击后才在原对象中查看。
7. Renderer 传入的 Evidence ID 必须由 Main 重新验证归属。
8. 删除会话时按产品数据保留策略删除或匿名化监督记录。
9. 用户关闭监督后停止新分析,但保留历史,除非用户明确删除。
## 19. 性能与预算
- Supervisor 使用独立后台并发池,默认全局并发 1。
- 前台回复完成后异步运行,不延迟主回答呈现。
- 同一会话同时只运行一次监督分析,新事件合并为下一次分析。
- 普通会话每 30 秒最多自动分析一次。
- 自动化按步骤或关键事件节流。
- 达到 Supervisor 预算时显示“监督已暂停”,不继续产生费用。
## 20. 实施顺序
1. 定义监督会话、记录、证据和解决状态。
2. 上线普通会话手动检查和右侧评论流。
3. 增加每次回复后异步监督、节流和预算。
4. 接入任务和自动化的确定性观察。
5. 增加目标、证据和无进展模型检查。
6. 接入实验协议一致性监督。
7. 建立误报和有用性评估,不自动改 Prompt。
## 21. 验收标准
- [ ] 监督默认关闭,用户可对单个会话显式启用。
- [ ] Supervisor 只读取当前对象的有界可见事件。
- [ ] 隐藏推理、密钥和未授权内容不进入监督输入。
- [ ] 每条中高严重度意见都有可点击证据。
- [ ] 无证据推测不会显示为高严重度事实。
- [ ] 模型监督不能自动暂停、终止、批准工具或替用户发言。
- [ ] 确定性门禁不依赖模型判断即可阻止越权和超预算行为。
- [ ] 主会话回答不等待后台 Supervisor 完成。
- [ ] 用户可采纳、忽略、标记误报和解决意见。
- [ ] 监督评论默认不进入长期记忆。
- [ ] 自动化强制监督不可用时明确请求关注,不假装检查通过。
- [ ] Supervisor 预算耗尽后停止新调用并显示状态。