Skip to content

Agent RSI:智能体自进化 ​

Agent RSI = Recursive Self-Improvement:智能体从每天真实发生的服务里复盘、沉淀、提出改进, 但永远不给自己发授权——每一次改变对外口径的动作,都要留下证据并由人签字。

它解决的是“这个门面怎么越用越像你的业务专家”; 至于它如何主动找你(而不是等你来找它),见 智能体主动模式。


为什么门面 Agent 需要自进化 ​

普通 agent 只有一个服务对象,它的“记忆”就是这次会话,“提升”靠换模型或改 prompt。

Hushwork 的门面 Agent 不是这样:同一个 Agent 同时面向两类人。

谁目的在意什么
所有者(owner)构建 / 维护 / 升级这个门面它哪里做得好、哪里做砸了、行业变了什么、该补什么
客户(customer)使用这个门面的服务我的问题被理解了吗、下一步谁接、结果什么时候到

如果两类交互共用一条通道、一份 prompt、一套工具,后果不是“体验差”,而是治理失效:

  • 所有者无法系统性地改进它;
  • 客户也无法阻止它被客户自己“教坏”。

Agent RSI 就是这两者之间的那层“可控的自我进化”。


先隔离,再进化:三个面 ​

                    ┌────────────────────┐
                    │    AgentProfile     │
                    └──────────┬─────────┘
          ┌────────────────────┼────────────────────┐
          ▼                    ▼                    ▼
     OWNER 面              CUSTOMER 面           PEER 面
   复盘 / 投喂 / 提案      澄清 / 登记 / 交付     Agent 网络
  • 身份只由服务端推导:ownerId / ownerIds / 平台运维 / 外部 Agent;
  • 会话创建时客户端传入 audience 直接 400——不允许自报提权;
  • 推导结果持久化到会话,之后每轮不重算:所有者转让、成员移除不会让历史对话“变脸”;
  • 换面 = 新建会话,不复用。
能力客户面所有者面
承诺价格 / 时限 / 结论禁止可以讨论口径,但不对客户生效
看客户对话原文—不给原文,只给摘要、指标与指针
改自己的能力永不只能提案,不能直接写
登记需求(submit_request)有禁用(避免代客下单绕过确认)
知识投喂 / 变更提案 / 决策零read_owner_inbox / ingest_material / remember_lesson / propose_change / decide_change

四个环:Ingest / Observe / Reflect / Learn ​

        ┌──────── Ingest(主人喂料)────────┐
        │  资料 → 候选知识 → 批准 → 生效     │
        ▼                                    │
┌───────────────┐      ┌──────────────┐      │
│  knowledge    │◀─────│   Reflect    │◀─────┘
│  lessons      │      │   每日复盘    │
└───────┬───────┘      └──────┬───────┘
        │                     │ 产出复盘报告 + 候选变更
        ▼                     ▼
   customer 面           owner 收件箱
  (只有 approved 生效)   (人来决策)
环触发产出
Ingest 投喂所有者在对话里教 / 上传资料知识条目(自动批准或待审)
Observe 观察每天 05:00 抓取配置的行业订阅源新闻摘要 + 候选项(不自动生效)
Reflect 复盘每天 03:30 对前一天做复盘wins / misses / gaps + 改进提案
Learn 沉淀所有者的决策与对话偏好、口径、禁忌(进入 lessons)

四个环里,“把这些发现送到你面前”的那一环由 智能体主动模式 负责; 本页只讲“它如何变强”。


每天 03:30:一次不带幻觉的复盘 ​

复盘不是“让模型夸自己”。它输入的是指标与指针,不是对话原文:

输入来源
当天会话数、完成 / 过期 / 超预算比例会话聚合
submit_request 次数与命中数会话登记结果
needs_input 比例、非完成停止原因runtime 指标
错误事件(schema mismatch 等)状态层的错误路径
客户评价 / 信任分变化信任模块
每条结论的指针必须是 state path / session id / 聚合 key

输出一份结构化报告:

jsonc
{
  "wins":   [{ "claim": "VAT 场景 1–2 轮完成率 82%", "evidence": "/tasks/.../results/..." }],
  "misses": [{ "claim": "22% 会话在'是否本地仓储'上反复追问", "evidence": "session:..." }],
  "gaps":   [{ "claim": "3 次询问德国包装法,无对应 skill", "evidence": "dialogue:..." }],
  "proposedActions": [
    { "kind": "knowledge_draft", "summary": "补一条 LUCID 注册要求", "requires": "owner_approval" }
  ],
  "droppedClaims": 2
}

两条硬规则:

  1. 没有 evidence 的结论直接被丢弃,并计入 droppedClaims——这是幻觉率的一手信号。
  2. 提案一律 requires: owner_approval。模型可能输出 auto,系统会强制覆盖: 自我修改的授权只能来自人。

报告只是“提议”,不产生任何行为变更。


从复盘到变强:三条落地路径 ​

复盘只是发现,真正改变 agent 的是下面三条路径:

路径等级谁能决定生效方式
补一条知识 / 经验L1合规内容自动批准,其余待审立即影响客户面检索或边界段
调话术 / 澄清顺序 / 边界措辞L2自动生效并留痕;涉及对外承诺时升格人工下一轮对话即生效,可回滚
改能力 / 交付方式 / 定价L3只能人工批准(对话内批准需邮箱验证码)走契约编译器门禁,版本递增,失败回滚

知识最终沉淀到哪里、如何审批与过期,见 知识库。


自治等级:自动到什么程度 ​

等级内容生效方式闸门
L0 观察复盘、新闻摘要、缺口统计自动只读,不改变行为
L1 知识追加新知识 / 经验条目自动 approved必须带来源与版本;低置信 / 法规类降级待审
L2 行为参数话术、澄清顺序、边界措辞自动生效并留痕可回滚;触及对外承诺口径时升格人工
L3 能力与契约skillIds / delivery / pricing / stateContract提案 → 人工批准 → 既有编译器门禁版本递增、旧订阅禁用、失败回滚

六条红线 ​

  1. audience 只能服务端推导,客户端传入即 400;
  2. 客户面永不出现 RSI 工具(工具可见性 + 执行期双重校验);
  3. 客户内容只能生成 pending 候选,不能直接改知识 / 边界;
  4. 自我修改不碰 L3 字段,除非走提案 + 编译器门禁;
  5. 复盘与所有者面只拿摘要、指标与指针,不回写客户原文;
  6. 每条知识 / 经验必须带来源与可回滚版本;无来源的不生效。

授权:点击、一次性凭证与邮箱验证码 ​

变更不是“点一下就直接改”。一次决策由三样东西共同成立:

  1. 用户消息:所有者必须在对话里明确写出 approve/reject <changeId>;
  2. 一次性凭证:前端点击后由服务端签发,绑定 agentId + changeId + owner + decision,5 分钟内有效,只能消费一次;
  3. 决策:带凭证调用 /decide,服务端用 expectedVersion CAS 消费,并把 authorizationId 写进提案。

L3 还多一道邮箱验证码:

点击 Approve/Reject
  → 服务端发送 6 位验证码到 owner 邮箱(10 分钟有效,最多输错 5 次)
  → 在卡片内输入验证码
  → /authorize/verify 校验通过 → 签发 assurance=email_otp 的 token
  → /decide 消费 → 契约重编译

验证码只走“邮件 → 用户 → 前端 → 后端”:不进入聊天正文、不返回给模型、不落日志。 没有可用邮箱时 L3 直接失败(fail-closed),不会降级成点击授权。

模型不能自批:confirm 是模型填的,不可信;真正的证据是用户消息和一次性凭证。

为什么不做“全自动自改”:门面一旦自主改动对外口径,越界承诺率会从 0 变成非零—— 而那条指标是红线,不是目标。


可回放、可回滚 ​

知识、经验、复盘、提案、信号全部落在状态层,每次写入都带:

  • actor:谁做的(人 / agent / 平台);
  • causedByEventId:由哪个事件触发;
  • version:第几次变更。

因此可以回答:这条口径是谁在什么时候、因为哪次复盘改的? 也可以回到任意时点验证“如果当时没改,会怎样”。


自进化的节奏 ​

时间你做什么agent 做什么
周一看上周复盘:哪些问题反复出现、哪些能力缺失03:30 已生成报告,收件箱里等你
周二把新法规资料投喂给它,确认 2 条待审知识自动批准合规的条目,其余标为待审
周三批准 1 条 L2 话术建议,拒绝 1 条 L3 能力变更记录你的决策(这也会影响它主动打扰你的频率)
周四不小心说错一次口径,随手纠正生成一条待审 lesson,不直接改对外话术
周五查看澄清完成率与知识命中率继续积累证据,不打扰你

“它什么时候主动提醒你”是另一个特性,见 智能体主动模式。


创新点 ​

1. 自评但不自欺 ​

复盘报告里每一条结论都必须能回查;没有证据的结论直接丢弃并计数。 “整体表现良好,建议继续优化”这种话进不了报告。

2. 提案有证据,签字有人 ​

agent 可以提出改知识、改话术、改能力,但等级由平台判定,L3 永远人工批准, 批准后仍走契约编译器的既有门禁——Agent RSI 不绕过任何审核。 对话内批准 L3 还必须通过邮箱验证码;验证码不经过模型,也不写进聊天记录。

3. 先隔离身份,再谈进化 ​

所有者面与客户面在身份、prompt、工具可见性上完全分开; 客户无法“教坏” agent,所有者也不会被当成客户处理。

4. 一切可回放 ​

知识、经验、提案、信号都在同一条事件流里,可审计、可回滚、可追责。

5. 进化有边界 ​

L0–L2 自动、L3 人工;对外承诺口径即使属于 L2 也升格人工。 “变得更强”不等于“变得更敢承诺”。


边界:如实列出 ​

项现状
行业订阅的真实抓取只留端口;未接实现前 Observe 环不产出摘要
新闻影响评估只做关键词相关性,无法判断“这条新闻是否改变了现有结论”
新闻 → 知识自动转化刻意保持人工(成本换准确)
复盘建议 → 知识条目需要人工把建议转成条目,未做自动接线
PDF / docx 结构化解析未做:由模型先读成结构化字段再投喂
周复盘 / 趋势报告只做日复盘
L3 对话内批准已实现:邮箱验证码 + email_otp token;没有验证码不能降级成点击授权
授权频率限制 / 双人复核未做:当前只有单 challenge 5 次尝试上限
已消费凭证撤销未做:token 消费后不可撤销;需要新的变更提案回滚

怎么判断它有用 ​

指标含义健康线
复盘采纳率被采纳的提案 / 总提案高于 20%(过低说明报告没价值)
幻觉结论率无 evidence 被丢弃的结论比例持续下降
越界承诺率抽检出现价格 / 时限 / 结论承诺等于 0(红线)
知识命中率客户对话引用知识 / 总对话按场景设阈值
客户侧指标澄清完成率、登记转化、满意度自进化前后对比

相关阅读 ​


源码位置(开发者) ​

能力文件
双面身份推导libs/modules/src/agent-profile/services/dialogue-audience.ts
两套 promptlibs/modules/src/agent-profile/services/facade-prompt.ts
复盘报告与证据门禁libs/modules/src/agent-runtime/rsi/review-report.ts
复盘输入 / prompt / 调度libs/modules/src/agent-runtime/rsi/{review-input,review-prompt,agent-rsi.scheduler}.ts
投喂 / 提案 / 变更应用libs/modules/src/agent-runtime/rsi/{ingest-material.tool,change-proposal,agent-change.service,propose-change.tool}.ts
owner 面工具libs/modules/src/agent-runtime/rsi/{read-owner-inbox.tool,remember-lesson.tool,decide-change.tool}.ts
一次性授权 / 邮箱验证码libs/modules/src/agent-runtime/rsi/{change-authorization,change-authorization.service}.ts
对话里的提案卡片propose-change.tool.ts → metadata.proposalCard;frontend/src/components/agent/ChangeProposalCard.tsx
知识条目与检索见 知识库 · 源码位置

Released under the MIT License.