数字分身 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 执行任务时,不应该一上来就写入外部系统。更稳的路径是:
- 读取冻结上下文
- 查询实时事实
- 判断是否需要补充证据
- 选择工具组合
- 在高风险动作前请求审批
- 执行后验证结果
- 把新事实写回世界模型
这样做的好处是可迁移。换一个业务领域时,Agent 内核不用重写,只需要换世界模型、准入规则、执行规则和工具挂载。
快慢脑把准入判断和深度执行拆开
主动式 Agent 如果每条消息都深度推理,成本高,噪声也大。
快慢脑机制把判断拆成两段:

两层职责要分清:
| 角色 | 做什么 | 不做什么 | 输出 |
|---|---|---|---|
| 快脑 | 判断是否相关、是否重复、是否有可推进目标 | 不做深度调查,不完成任务 | 准入、观察、丢弃 |
| 慢脑 | 查证、计划、调用工具、处理异常、验证结果 | 不盲从快脑,不机械执行过期计划 | 结果、证据、后续动作 |
快脑像门禁。它用较低成本挡掉无关信息和重复信息。
慢脑像执行负责人。它拿到冻结上下文后,还要重新查证,必要时推翻快脑的初步判断。
长程任务可以引入只读子 Agent。资料扫描、证据收集和代码检索交给子 Agent,主 Agent 保留目标判断、风险判断和最终决策。
真正改变外部世界的动作,例如发消息、修改共享文档、提交代码、发起审批,仍应该由主 Agent 审核边界。
执行过程必须反过来修正记忆
世界模型最怕一件事:错误事实长期存在。
一个错误项目地址、错误负责人、过期上线状态,会让后续多个任务连续出错。
所以 Agent 执行任务时,不能只“消耗记忆”。它还要校正记忆。
例如执行过程中发现项目地址错了,Agent 应该:
- 从其他上下文推断或查询正确地址
- 用证据确认新地址
- 更新项目对象里的当前结论
- 追加一条事实记录,说明错误是如何被修正的
- 后续任务使用新地址
这个反馈动作让系统越用越准。
执行者最容易发现记忆错在哪里。因为它正在用这些事实解决具体问题,错误会直接暴露在工具调用、权限检查、上下文匹配和结果验证里。
权限和审批决定 Agent 的可用边界
主动式 Agent 最后一定会碰到权限边界。
读消息、查文档、更新任务、发起沟通、修改资料,这些动作的风险不同。系统必须允许用户配置审批规则。
审批可以分成两类:
- 页面审批:用户在管理界面确认高风险动作
- 对话审批:Agent 在协作工具里发起确认,用户回复后继续
可以用一条规则控制执行:
低风险读取 -> 直接执行并记录证据
中风险写入 -> 满足规则时执行,保留回滚信息
高风险动作 -> 必须审批后执行
不可逆动作 -> 默认拒绝,除非用户显式授权
权限不是附属功能。它决定 Agent 能否被长期托管。
没有审批,Agent 只能做玩具式演示;审批过重,Agent 又会退化成手动流程。合理的边界,是把确定无害的动作自动化,把影响外部状态的动作留给用户确认。
收束
数字分身 Agent 的内核可以压成两个词:状态和决策。
世界模型负责状态。它回答“现在是什么”,并保留事实来源。
快慢脑负责决策。它回答“这件事值不值得做、该怎么做、什么时候停”。
执行系统负责把结果带回现实,再把新的事实写回模型。
一旦这三层跑通,Agent 就不再只是一个会聊天的入口。它开始具备工作系统的形状:能观察、能判断、能行动,也能在做错之后修正自己。

浙公网安备 33010602011771号