Personal Agent · 双层架构

一个入口,很多只手

用户只需要面对一个助理。它理解你说的话,记得你,决定什么时候开口;真正的活交给一群异构 Agent 去做,可以并行,也可以协作。

Router 负责那一条线 Worker 负责线背后的手 六条约束

架构

自上而下只有四层。用户永远在最上面那一层,只看到一个对话。

用户
主动消息只能从这里来
入口
Router
读全局 · 判断主动性 · 委托权限 · 决定投递 · 维护索引
派工 · 回传
执行
常驻助手 A
长期 · 事项记忆 · 可直接对话
常驻助手 B
长期 · 事项记忆 · 可直接对话
临时 Worker
单张工单 · 随任务归档 · 不可对话
临时 Worker
异构运行时 · 可跨设备与沙箱
按任务解析并注入
资源
Skill 连接 知识库 MCP 模型 设备
用户不需要逐个配置。系统按任务选,选完固定下来。
常驻助手可以被用户直接打开对话,但那属于「主动查看」。它自己不能主动弹消息——所有主动投递都经过 Router。

「唯一入口」的准确含义

不是只有一个对话,而是三件事各自只有一个。

唯一主动投递
所有 Agent 主动发给你的消息,只能经 Router 出来。Worker 自己不能发。
主入口
默认面对的那条对话。你也可以打开某个常驻助手,但那是你主动去查看。
统一真值
任务状态、待决事项、谁做了什么,从哪个入口看都是同一份账本。

六条硬约束

缺任何一条,系统就会退化成多个助理,而不是一个助理有很多只手。

01

主动性只在 Router 判断

Worker 只执行,不决定「这件事值不值得告诉用户」。否则三个 Worker 各自主张打扰,就是三路噪音。

02

两级收件箱

人侧一个收件箱,严格串行,连发消息合并成一轮;Worker 侧各自排队,可以并行。

03

主动消息只有一个投递决策

Worker 的产出只能走 report → Router → Outbox。不能自己发消息、开通知、回 IM。

04

用户级记忆只有一个写权威

画像、偏好、长期指令只归 Router。常驻助手有自己的事项记忆,跨任务的经验由 Router 提炼后写入。

05

权限委托一次

你批准的是「这类事可以做到什么程度」。Router 把它变成 Worker 的委托边界,执行点自查,不再逐个弹审批。

06

所有执行都回流

Router 自己做的、Worker 做的,都留痕并进入索引:做了什么、用了什么、结果如何。回答「它最近在做什么」靠它。

Router 能做什么,不能做什么

边界按能力类别切,不按单个工具切。这样新增工具时能自动归类。

给 三类能力

read:*跨项目、任务、日程、知识库、记忆
orchestrate:*派工、挂接、查状态、回复、管理助手
self:*记偏好、设提醒、跟进定时器、暂停
可读全局、可协调、不可执行。

不给 两类能力

write:*文件、shell、浏览器写、改仓库
external:*对外发送、第三方写操作
写工具在 Router 角色下直接不可用,不靠提示词自觉。

什么必须派出去

  1. 有外部副作用会改文件、仓库、第三方系统,或对外发送。
  2. 超过一次工具往返需要多步试错,或等待外部结果。
  3. 上下文超预算要读大量资料,或会把 Router 的上下文弄脏。
  4. 依赖特定环境需要某台设备、沙箱、凭据。
  5. 需要留痕或可恢复跨轮、跨天、可中断、有持续状态。

一个可以写进提示词的判断:如果需要向你解释「我先做了 A,又做了 B,然后做了 C」,这件事就不该由 Router 做。

两类 Worker

常驻助手解决「某个事项和负责它的 Agent 更聚焦」,临时 Worker 解决「做完就散」。

常驻助手 Standing临时 Worker Task
来源用户创建,或 Router 提议、用户确认Router 派工,或常驻助手再派工
身份有名字、职责范围、事项记忆无身份,属于某张工单
上下文独立且长期一次性,随工单归档
能否对话能不能,只看日志
生命周期长期,可暂停、改名、换模型任务结束即结束
主动消息经 Router 投递不可能

两个合同:Router 只持有助手的索引(名字、职责、状态、最近结论),细节按需读取;用户和助手聊完后,结论要回写索引,否则 Router 对全局失明。

资源不该成为用户的负担

对外只有三个词。Skill、MCP、知识库、模型选择都是内部实现。

助手Standing Worker
任务工单 + 临时 Worker
连接账号与资源授权

解析优先级

01显式配置覆盖一切
02排他模式只用这些,不推断
03任务推断按目标、来源、历史
04默认不配置也能跑

推断分三步,不让模型自由挑

规则缩候选

任务类型、来源、项目、助手职责,把候选从几百缩到十几个。

模型在候选里选

给出选择理由;运行时可以补。

快照固定

写进 Assignment,执行期间不变。行为可复现、可审计。

三个体验:可解释(为什么用了这个连接)、可纠正(以后别用,沉淀成偏好)、可固化(同类任务稳定后建议变成常驻助手)。

走一遍

「把上周会议纪要整理成周报,发到团队群」

01
判断分派

要对外发送,命中副作用,交给 Worker。

02
选执行者

有对口的常驻助手就派给它,没有就开一个临时 Worker。

03
解析资源

会议纪要连接、文档技能、IM 连接。你没配过,推断得到。

04
执行并报告

Worker 产出草稿;发送前查委托边界,超范围才回到 Router 审批。

05
投递

Router 决定发什么,Outbox 发一条:「周报已发到团队群」。

验收时看什么

每条都要有可测条件,不靠「看起来对了」。

三个 Worker 同时产出,用户只收到一条合并消息;Worker 把 report 直接写成用户消息应被拒绝。
连发五条消息只触发一轮 Router;两个 Worker 的输入可以并行投递。
断开发送渠道后,所有产出停在 Outbox,没有任何消息从旁路发出。
常驻助手里的对话不自动进入用户级画像,经 Router 提炼后才写入。
批准一次「只读访问某仓库」,三个 Worker 都不再弹审批;超范围的调用被拒绝。
Router 自己执行的只读查询也留下记录,可按时间追溯。
和某个助手聊完,回到主入口问「它刚做了什么」,Router 能准确回答。

还没定的

实现前拍板,不影响上面的架构。

D7
资源自动解析的边界。 建议:读取类自动;写入类受委托边界;第一次动用某个账号时告知一次。
D8
常驻助手的创建时机。 建议:Router 提议、用户确认,避免助手列表被临时任务撑爆。
D9
分派是硬规则还是提示词。 建议:写工具硬拒绝,其余按判据判断;观察分派率后再调阈值。