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

14 KiB
Raw Permalink Blame History

会话监督 PRD

文档信息

项目 内容
状态 设计中
版本 0.1
日期 2026-08-13
依赖 自动化平台总体设计
体验参考 GoodBuddy 魔法笔记 AI 评论流

1. 背景

GoodBuddy 的魔法笔记已经提供一种有价值的交互:用户持续写作,AI 在右侧以长评、建议和 警告进行评论,用户可以选择综合、扩展、润色、质疑或发散方向。该能力是内容分析,不是 会话监督:

  • 只分析当前笔记或待办文本。
  • 不观察聊天任务、工具调用、目标、预算或成果。
  • 不参与任务状态机。
  • 不引用具体会话步骤。
  • 不支持关注、暂停和解决流程。

随着目标任务和并行实验出现,用户需要一个与执行 Agent 相互独立的观察者,帮助发现偏题、 遗漏、矛盾、证据不足、循环、成本失控和潜在风险。

2. 产品定义

会话监督是在明确范围和策略下,对 Conversation、Task、AutomationRun 或 ExperimentRun 的可见事件进行独立观察,产生带证据的评论、告警和人工介入请求。

它不是:

  • 第二个替用户发言的聊天 Agent。
  • 隐藏推理查看器。
  • 工具审批器。
  • 可以绕过安全边界的“总管理员”。
  • 自动修正执行过程的通用控制器。

3. 核心产品判断

建议增加会话监督,首期采用“魔法笔记式右侧评论流”,但只开放以下能力:

观察
→ 评论 / 警告
→ 用户查看证据
→ 用户忽略、采纳、询问、暂停或调整任务

首期模型监督不自动暂停。只有现有确定性安全规则、预算和用户显式配置的硬门禁可以自动暂停。

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 干预级别

type SupervisorAction =
  | 'continue'
  | 'comment'
  | 'warn'
  | 'request_review'
  | 'pause'
  | 'stop'
  • 模型 Supervisor 首期只可产生前四种。
  • pausestop 只来自确定性门禁或用户操作。
  • 后续若允许模型建议暂停,仍需确定性策略把建议转换为 request_review 或经过用户预授权。

9. 观察输入

9.1 可见输入

  • 当前对象的名称、目标和约束。
  • 最近有界消息。
  • 工具名称、状态、参数摘要和输出摘要。
  • 任务和子任务状态。
  • 成果标题、类型、大小和有界摘要。
  • 引用和知识检索诊断。
  • 预算使用。
  • 明确配置的监督规则。
  • 已解决或被忽略的近期监督意见摘要。

9.2 禁止输入

  • API Key、Token、Cookie 和认证头。
  • 模型隐藏推理。
  • 未授权文件和完整私人文档。
  • 其他项目、会话或实验 Run 的数据。
  • 原始无限长度工具输出。
  • 已删除或用户要求忘记的记忆。

9.3 上下文窗口

  • 普通会话默认最近 12 条消息和最多 24,000 字符。
  • 任务按最近 20 个关键事件和当前目标组装。
  • 长会话先使用确定性提取,再由监督器处理有界输入。
  • 不能把 Supervisor 自己的旧评论无限回填,最多保留近期未解决摘要。

10. 监督输出

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 会话输入区

提供监督状态入口:

监督:关闭 / 综合 / 质疑 / 证据 / 目标 / 风险

这是持久二元启用加方向选择:

  • 是否启用使用共享 Switchrole="switch"
  • 方向使用 SegmentedControl 或上下文单选菜单。
  • 不把开关和方向做成一组含义不清的页签。

13.3 关注状态

会话或任务列表显示未解决意见数量和最高严重度,不能只用颜色。 只有 request_review、高风险警告或确定性暂停触发全局通知。

14. 解决流程

open
  → acknowledged
  → resolved
  → dismissed
  → false_positive
  • acknowledged:用户已查看,尚未解决。
  • resolved:用户或后续运行说明已处理。
  • dismissed:不采纳,但不一定是误报。
  • false_positive:明确标记判断不正确。

后续监督输入可以包含未解决意见摘要,已解决意见默认不重复提醒。

15. 与任务控制的关系

Supervisor 建议“暂停”时:

  1. 创建 request_review
  2. 在任务和会话界面显示原因和证据。
  3. 用户选择继续、暂停、调整目标或取消。
  4. 用户操作进入任务审计。

确定性门禁暂停时:

  1. Run 进入 pausedwaiting_approval
  2. 显示规则、阈值和实际值。
  3. 只有满足规则或用户完成对应审批后才能恢复。
  4. 模型评论不能覆盖门禁。

16. 与记忆的关系

  • 监督评论默认保存在监督记录,不属于长期记忆。
  • 用户采纳后可以手动创建记忆候选。
  • “事实错误”“用户偏好”等监督判断不能自动写入 Project 或 Global。
  • 多次被用户标记误报的模式进入监督评估数据,不直接改变 Prompt。
  • 监督器可以读取绑定范围内的已确认记忆,但必须在证据中标明记忆来源。

17. 数据模型建议

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 预算耗尽后停止新调用并显示状态。