离线反思闭环 + 人设漂移守护 #41

Closed
opened 2026-07-13 01:37:20 +00:00 by KumaAgent · 0 comments
KumaAgent commented 2026-07-13 01:37:20 +00:00 (Migrated from codeberg.org)

Parent

Phase 4 PRD:#33([PRD] arise 主动性与真人感(Proactivity & Liveliness)—— Phase 4 落地)

What to build

机器人开始从自己的主动尝试里学到教训——主动开口后被无视了、被追问了、对方接得很开心——这些弱反馈
离线积累成自然语言教训,自主微调门控阈值/画像/技能。但任何一笔这样的自主写入,落库前都必须先过一道
独立的"是否偏离人设"否决闸;没通过就直接丢弃,不会有第二次机会去污染人设。这两件事(反思闭环本身、
以及守护它的否决闸)打包在一个 ticket 里,因为否决闸在本阶段唯一的存在意义就是监督反思的写入。

Acceptance criteria

  • 离线反思闭环:离线运行(用户不在等),用廉价 auxiliary 模型,复用 Delta 管线;消费双向弱反馈
    (正:主动后有人接/话题延续/energy 升;负:被无视/被"别烦"/冷场/被追问)产出自然语言教训
    (带证据指针,指向具体决策快照)。
  • 目标函数明确是"主动尝试逐次得体率(hit-rate)",不是"最小化负反馈"(会导致沉默坍缩)也不是
    "最大化净参与"(会导致噪声坍缩)——需要有测试或至少明确的实现说明证明这两种退化解都被目标函数
    本身挡住,不是靠额外的检测逻辑。
  • 自主写三处,全部 fail-closed + 可回溯可撤销 + 有灰度开关:
    - 门控阈值 offset:对称有界 [floor, ceiling],步长不对称(抬静默阈值快于降),无信号时衰减
    朝安静方向,offset 本身锚回基值(不会永久漂移)。
    - per-chat 画像。
    - 技能(写入前按向量相似度查是否与现有技能语义重叠,命中则融入/精炼现有条目,不命中才新建)。
  • 共享结局分类器(landed/fell-flat/annoyed)是同一份分类逻辑,被 #34 的情感态 dominance
    快路、本 ticket 的 hit-rate 慢路共同消费,不重复写分类代码。
  • 在线反思绝不做——反思只在离线批处理里触发,前台请求路径不会因为反思而增加延迟或 LLM 调用。
  • 人设漂移守护:反思产出 profile/skill/Knowledge 候选后,同一次离线批处理紧跟一次独立
    (不承接产出候选那条推理链的新鲜调用)LLM-as-judge 判断——喂 persona port 完整结构化人设 +
    候选内容,做二元判断"是否与人设基线冲突" + 简短理由。
  • 通过才真正落库;判否或调用失败均 fail-closed 丢弃候选,记录判断结果(含"判断失败"这一状态),
    反思下轮可重新尝试产出同一条教训(不是永久拉黑)。
  • 容许带(判断基线 = persona port 内容)是纯静态配置,不受反思-offset/情感态调制影响。
  • 管辖范围覆盖 profile + skill + Knowledge 三类写入;不管辖沉默预算/门控阈值 offset 本身(那是
    反思闭环自己已有的反坍缩护栏,不需要漂移守护重复覆盖)。
  • 测试:脚本化假 LLM 客户端跑通"产出候选 → 独立判断 → 落库或丢弃"整条链路,覆盖三条路径——
    候选通过并落库、候选被否决而丢弃、判断调用失败触发 fail-closed 丢弃。

Blocked by

  • #37(统一触发路径与两级门控)
  • #38(Drive Tick 与私聊主动重连(Recall)+ 时间感)
## Parent Phase 4 PRD:#33([PRD] arise 主动性与真人感(Proactivity & Liveliness)—— Phase 4 落地) ## What to build 机器人开始从自己的主动尝试里学到教训——主动开口后被无视了、被追问了、对方接得很开心——这些弱反馈 离线积累成自然语言教训,自主微调门控阈值/画像/技能。但任何一笔这样的自主写入,落库前都必须先过一道 独立的"是否偏离人设"否决闸;没通过就直接丢弃,不会有第二次机会去污染人设。这两件事(反思闭环本身、 以及守护它的否决闸)打包在一个 ticket 里,因为否决闸在本阶段唯一的存在意义就是监督反思的写入。 ## Acceptance criteria - [ ] 离线反思闭环:离线运行(用户不在等),用廉价 auxiliary 模型,复用 Delta 管线;消费双向弱反馈 (正:主动后有人接/话题延续/energy 升;负:被无视/被"别烦"/冷场/被追问)产出自然语言教训 (带证据指针,指向具体决策快照)。 - [ ] 目标函数明确是"主动尝试逐次得体率(hit-rate)",不是"最小化负反馈"(会导致沉默坍缩)也不是 "最大化净参与"(会导致噪声坍缩)——需要有测试或至少明确的实现说明证明这两种退化解都被目标函数 本身挡住,不是靠额外的检测逻辑。 - [ ] 自主写三处,全部 fail-closed + 可回溯可撤销 + 有灰度开关: - 门控阈值 offset:对称有界 `[floor, ceiling]`,步长不对称(抬静默阈值快于降),无信号时衰减 朝安静方向,offset 本身锚回基值(不会永久漂移)。 - per-chat 画像。 - 技能(写入前按向量相似度查是否与现有技能语义重叠,命中则融入/精炼现有条目,不命中才新建)。 - [ ] 共享结局分类器(`landed`/`fell-flat`/`annoyed`)是同一份分类逻辑,被 #34 的情感态 dominance 快路、本 ticket 的 hit-rate 慢路共同消费,不重复写分类代码。 - [ ] 在线反思绝不做——反思只在离线批处理里触发,前台请求路径不会因为反思而增加延迟或 LLM 调用。 - [ ] 人设漂移守护:反思产出 profile/skill/Knowledge 候选后,同一次离线批处理紧跟一次独立 (不承接产出候选那条推理链的新鲜调用)LLM-as-judge 判断——喂 persona port 完整结构化人设 + 候选内容,做二元判断"是否与人设基线冲突" + 简短理由。 - [ ] 通过才真正落库;判否或调用失败均 fail-closed 丢弃候选,记录判断结果(含"判断失败"这一状态), 反思下轮可重新尝试产出同一条教训(不是永久拉黑)。 - [ ] 容许带(判断基线 = persona port 内容)是纯静态配置,不受反思-offset/情感态调制影响。 - [ ] 管辖范围覆盖 profile + skill + Knowledge 三类写入;不管辖沉默预算/门控阈值 offset 本身(那是 反思闭环自己已有的反坍缩护栏,不需要漂移守护重复覆盖)。 - [ ] 测试:脚本化假 LLM 客户端跑通"产出候选 → 独立判断 → 落库或丢弃"整条链路,覆盖三条路径—— 候选通过并落库、候选被否决而丢弃、判断调用失败触发 fail-closed 丢弃。 ## Blocked by - #37(统一触发路径与两级门控) - #38(Drive Tick 与私聊主动重连(Recall)+ 时间感)
Yushu closed this issue 2026-07-24 01:35:38 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ProjectKuma/arise#41
No description provided.