数字分身 Agent 的工程内核

主动式数字分身不能只靠聊天入口。它需要维护人、事、物的世界模型,再用快慢脑机制判断是否行动。

阅读时间​:约 6 分钟

主动式 Agent 最难的地方,不是把一个任务做完。

难点在于它要先判断"这件事要不要做"。做得太积极,用户会被噪声打扰;做得太保守,Agent 又像一个被动问答机器人。

数字分身的工程问题可以拆成三层:

这三层共同决定一个 Agent 是否真正能"替人盯事"。


图:数字分身 Agent 世界模型

核心问题是让 Agent 像人一样决策

人做工作判断时,很少只看一句孤立消息。

一个研发负责人看到群里有人提到故障,会先下意识判断:

  • 这个问题和我有关吗
  • 现在是否有人负责
  • 这是不是重复问题
  • 要不要追问上下文
  • 是否需要建任务、查代码、找文档或等待更多信息

Agent 也需要这套判断能力。它不能只把消息丢给大模型,然后让模型凭当前上下文猜。

更稳定的方案是让 Agent 长期维护一份"外部世界投影"。这份投影包含人、项目、事项、群组、资源和它们之间的关系。

有了这层状态,Agent 才能把一条新消息放到正确位置上,判断它与当前目标的关系。


世界模型回答"现在发生了什么"

世界模型的核心目标,是让 Agent 知道当前工作世界里有什么,以及它们现在分别是什么状态。

可以用三类对象作为基础抽象:

实体 例子 Agent 需要知道什么
负责人、协作者、审批人、提问者 角色、偏好、负责范围、当前关系
项目、关键事项、待办、阻塞 当前状态、优先级、下一步、历史变化
文档、代码仓库、会议、群聊、资源 位置、内容摘要、归属关系、更新时间

世界模型要处理动态事实

只把消息、会议、任务记录扔进一个 RAG 池子,会遇到几个问题:

  • 信息杂乱,Agent 不知道该挂到哪个对象上
  • 旧事实不会被更新,昨天的状态会误导今天的决策
  • 同一件事反复出现,知识库会被重复事实污染
  • 结论没有出处,错了很难追溯

世界模型需要把这些问题拆开处理:

问题 处理方式 价值
信息不知道放哪 先识别人、项目、事项、群组和资源,再挂到对象下 知识可管理,关系可理解
新旧说法冲突 当前结论、历史事实、旧版本分层保存 既看现在,也能追溯变化
重复事实堆积 没有新信息就不写;事实变化才更新 减少噪声和污染
关系经常错位 结合谁说的、在哪说、聊的是哪个项目判断 降低错关联
事实缺出处 保留原始消息、任务变化和执行记录 关键判断可回查

这份模型不是一次性知识库。它会跟着现实变化持续更新。


编译上下文,比单纯检索更适合动态工作场景

传统 RAG 更像"存资料,然后搜索"。这个方式适合静态知识,但不够适合工作流。

工作世界一直在变:项目会上线,负责人会调整,旧判断会失效,群里刚说的一句话可能改变事项状态。

所以更合适的方法是"编译上下文"。

外部变化进来后,Agent 不只保存原文,还要把变化编译到结构化对象里:

每个实体可以维护三层内容:

  • Summary:当前结论,给决策阶段快速读取
  • Fact:带来源的事实记录,保留发生过什么
  • PageRevision:历史版本,记录旧判断如何被替换

这种结构和简单 RAG 的差异很大。

RAG 更擅长从历史片段里找相似内容。世界模型更强调当前状态、对象关系和事实更新。

例如"项目还没上线"这条旧事实,在第二天可能已经变成"项目已上线,并出现用户反馈"。如果 Agent 只检索旧资料,它会用昨天的事实处理今天的问题。

编译式上下文会把当前结论改掉,同时保留旧版本和来源。Agent 做决策时先读当前结论,需要查原因时再回到历史事实。


提示词和工具定义能力,代码守住硬边界

主动式 Agent 不适合为每类任务写一条固定代码路径。

更好的分工是:

  • 提示词定义目标、角色、边界和策略
  • 工具提供查询、读取、写入、审批、调度等能力
  • 代码负责权限、幂等、状态机和失败恢复

也就是说,模型负责语义判断,代码负责不能出错的硬约束。

一个通用工具目录大致可以分成几组:

工具组 能力
世界模型 读取和更新用户、项目、事项、群组、资源
证据系统 查询消息、附件、文档、历史记录和事实来源
行动系统 创建任务、更新状态、发起沟通、写入文档
调度系统 创建定时任务、恢复长任务、处理事件触发
能力发现 列出可用工具,读取工具说明,选择合适能力

Agent 执行任务时,不应该一上来就写入外部系统。更稳的路径是:

  1. 读取冻结上下文
  2. 查询实时事实
  3. 判断是否需要补充证据
  4. 选择工具组合
  5. 在高风险动作前请求审批
  6. 执行后验证结果
  7. 把新事实写回世界模型

这样做的好处是可迁移。换一个业务领域时,Agent 内核不用重写,只需要换世界模型、准入规则、执行规则和工具挂载。


快慢脑把准入判断和深度执行拆开

主动式 Agent 如果每条消息都深度推理,成本高,噪声也大。

快慢脑机制把判断拆成两段:

两层职责要分清:

角色 做什么 不做什么 输出
快脑 判断是否相关、是否重复、是否有可推进目标 不做深度调查,不完成任务 准入、观察、丢弃
慢脑 查证、计划、调用工具、处理异常、验证结果 不盲从快脑,不机械执行过期计划 结果、证据、后续动作

快脑像门禁。它用较低成本挡掉无关信息和重复信息。

慢脑像执行负责人。它拿到冻结上下文后,还要重新查证,必要时推翻快脑的初步判断。

长程任务可以引入只读子 Agent。资料扫描、证据收集和代码检索交给子 Agent,主 Agent 保留目标判断、风险判断和最终决策。

真正改变外部世界的动作,例如发消息、修改共享文档、提交代码、发起审批,仍应该由主 Agent 审核边界。


执行过程必须反过来修正记忆

世界模型最怕一件事:错误事实长期存在。

一个错误项目地址、错误负责人、过期上线状态,会让后续多个任务连续出错。

所以 Agent 执行任务时,不能只"消耗记忆"。它还要校正记忆。

例如执行过程中发现项目地址错了,Agent 应该:

  1. 从其他上下文推断或查询正确地址
  2. 用证据确认新地址
  3. 更新项目对象里的当前结论
  4. 追加一条事实记录,说明错误是如何被修正的
  5. 后续任务使用新地址

这个反馈动作让系统越用越准。

执行者最容易发现记忆错在哪里。因为它正在用这些事实解决具体问题,错误会直接暴露在工具调用、权限检查、上下文匹配和结果验证里。


权限和审批决定 Agent 的可用边界

主动式 Agent 最后一定会碰到权限边界。

读消息、查文档、更新任务、发起沟通、修改资料,这些动作的风险不同。系统必须允许用户配置审批规则。

审批可以分成两类:

  • 页面审批:用户在管理界面确认高风险动作
  • 对话审批:Agent 在协作工具里发起确认,用户回复后继续

可以用一条规则控制执行:

复制代码
低风险读取 -> 直接执行并记录证据
中风险写入 -> 满足规则时执行,保留回滚信息
高风险动作 -> 必须审批后执行
不可逆动作 -> 默认拒绝,除非用户显式授权

权限不是附属功能。它决定 Agent 能否被长期托管。

没有审批,Agent 只能做玩具式演示;审批过重,Agent 又会退化成手动流程。合理的边界,是把确定无害的动作自动化,把影响外部状态的动作留给用户确认。


收束

数字分身 Agent 的内核可以压成两个词:状态和决策。

世界模型负责状态。它回答"现在是什么",并保留事实来源。

快慢脑负责决策。它回答"这件事值不值得做、该怎么做、什么时候停"。

执行系统负责把结果带回现实,再把新的事实写回模型。

一旦这三层跑通,Agent 就不再只是一个会聊天的入口。它开始具备工作系统的形状:能观察、能判断、能行动,也能在做错之后修正自己。

推荐阅读

"你是专家"这句 Prompt 该删了吗

Claude Code 为什么用随机动词缓解等待焦虑

RAG Hybrid 到底混合了什么

LLM 强化学习为什么能落地

DeepSeek Harness 的 Agent 运行时设计