一句话:QwenPaw 在 AgentScope 原语之上自建工作区边界、请求生命周期、资源轴和信任主干;2.1 再叠 OS Shell、统一文件工作区、跨 Harness 接入和长任务续接,没有改掉 2.0 的内核。
资料截止 2026-08-13 稳定版 v2.1.0。仓库里另有 2.1.1b1 预发布记录,本文以稳定架构面为准。
1. 它是什么
QwenPaw(Qwen Personal Agent Workstation)是 AgentScope 团队做的本机常驻个人智能体平台,Apache 2.0。一次安装可以托管多个互相隔离的智能体;数据默认落在你自己的磁盘上,不依赖第三方托管。
内核是进程内的 AgentScope 2.0:ReAct 循环、会话与可序列化状态、流式事件、工具层、工作目录抽象。它当库用,不另起一个运行时服务。
QwenPaw 在这些原语之上自建四样东西:
- 工作区边界:一智能体一目录,懒加载,默认互不可见。
- 请求生命周期:固定 8 阶段 Hook,外加三次固定步骤。
- 资源轴:工作区文件、记忆、Skills、驱动、模型。
- 信任主干:治理策略 + 工具守卫 + 原生 OS 沙箱 + Skill 扫描 + 加密密钥。
2. 四层怎么叠
官方把系统画成「上层 Runtime / 下层 Workspace ‖ Drivers」,底座是 AgentScope。人从频道进来,智能体从驱动出去,中间被工作区隔离。
入口人找智能体
Console、TUI、CLI、桌面应用、钉钉 / 飞书 / Discord 等频道。2.1 收成 OS Shell:窗口、启动器、任务栏、通知和保存布局。
Runtime请求调度
8-phase Hook · Slash 分发 · AgentBuilder 按请求组装 · AgentExecutor 跑 ReAct · SSE Envelope 流出。
Workspace资源 · 治理 · 沙箱
配置是 JSON,记忆是 Markdown,Skills 是文件夹。三大支柱:资源透明落盘、allow/deny/ask/sandbox、原生 OS 沙箱。
Drivers + 底座连接器与 AgentScope
MCP / A2A / ACP,加密凭据 + 按次策略门控。下面是进程内的 AgentScope 2.0:循环、会话、事件流、工具层。
频道 ≠ 驱动。 频道把各 IM 的原生消息翻成统一请求,并自带访问控制、防抖和流式。驱动是协议中立的连接器层:声明端点、凭据引用和策略,系统从加密存储取密钥,再按次过门。目前落地的是 MCP;抽象比 MCP 宽,所以 A2A / ACP 能接到同一套凭据和策略下面。
工作区是隔离单位。 一个智能体对应一个磁盘目录,加上一组在它之上运行的实时服务(会话、记忆、连接器、频道、聊天、定时任务)。第一次被用到才懒加载;服务停止则干净退出。除非主动发消息或 spawn 子智能体,谁也看不到对方的文件、记忆和对话。整个工作区可以备份、恢复、纳入版本控制。
3. 一次请求怎么走
旧版把请求处理堆在超过 650 行的 query_handler() 里。2.0 改成固定骨架 + 可插拔 Hook,目标是「新功能 = 新 Hook,尽量不改 Runtime.run()」。
Runtime 是 per-workspace 编排器。每次请求调用 run(),产出 SSE 信封。匹配 slash 命令可 skip_agent,但 POST_RESPONSE 和 FINALLY 仍会跑,保证落盘和清理。
| 顺序 | 类型 | 阶段 / 步骤 | 做什么 |
|---|---|---|---|
| 1 | Hook | PRE_DISPATCH |
规范化请求,slash 分发前 |
| 2 | 固定 | SlashCommandRegistry | 统一命令分发;命中则跳过智能体 |
| 3 | Hook | POST_DISPATCH |
无匹配命令后继续 |
| 4 | Hook | PRE_AGENT_BUILD |
加载会话、媒体、上下文 |
| 5 | 固定 | AgentBuilder.build | 按当前模式 / Skill / 策略组装无状态 Agent |
| 6 | Hook | POST_AGENT_BUILD |
注入模式上下文 |
| 7 | Hook | PRE_EXECUTE |
首次初始化、提示词刷新、Skill 环境 |
| 8 | 固定 | AgentExecutor.run | ReAct 循环 + 心跳,审批等待时 SSE 不断 |
| 9 | Hook | POST_RESPONSE |
保存会话、定时任务回写 |
| 10 | Hook | ON_ERROR |
异常规范化 |
| 11 | Hook | FINALLY |
取消回复、关连接器、重置请求状态;始终执行 |
Hook 可以 CONTINUE、SHORT_CIRCUIT(立刻回一条消息结束请求)或 SKIP_AGENT(跳过构建和执行,后续 Hook 仍跑)。同一阶段内按 before / after 拓扑排序,启动时检测环路。
AgentBuilder 每个请求重新组装:模型、Toolkit、系统提示、记忆、上下文策略。工具经 ToolRegistry 按激活条件(模式、Skill、功能、沙箱资源)过滤,再包治理层。资源调配和策略留在智能体之外,所以换模式、换 Skill、换审批级别不必改 Agent 类。
AgentMode 把命令、工具、Hook、提示词贡献者打成一个开关。Coding 模式加上项目目录内的搜索与 inline diff;Mission 模式先写计划,再按检查点迭代。另有 Normal / Goal,以及用户可编辑的 Oh-My-Paw 模式。
跨工作区只允许三个共享件,用 __slots__ 钉死:task_tracker、tool_coordinator、approval_coordinator。其余状态必须落在 per-agent 的 ServiceManager / WorkspacePlugins,防止串状态。
4. 三个控制平面
请求级、推理级、循环级各管一层,别混:
| 平面 | 作用域 | 典型职责 |
|---|---|---|
| Runtime Hooks | 整次请求 | 会话加载、slash 短路、媒体处理、Skill 环境、保存与清理 |
| Middlewares | 单次 reply 内 | 洋葱模型包裹 model call / acting / reply;截断、记忆注入 |
| Loop Gates | 每次 ReAct 迭代后 | 迭代上限、死循环检测、Mission 检查点、可组合审批 |
5. 记忆不是上下文
官方把这两个概念拆开,混用就会设计歪。
记忆通过带 owner 的 backend registry 选择。默认后端是 ReMe:在透明的 workspace Markdown 上做召回、写入和整合。文件是 MEMORY.md 和 memory/YYYY-MM-DD.md。也可以装 ADBPG、PowerContext 等插件。后端不可用会明确失败,不会悄悄换库。2.1 增加 embedding 热更新、可选 rerank、3D 关系图。
上下文默认同样可插拔。窗口一满,就把较早轮次总结掉。可选的 Scroll 换思路:每一轮都持久化,滚出窗口的内容留精简索引,智能体用 recall 工具按需回放——长对话因此能完整找回,而不是只剩摘要。2.1:模型报超限时 Scroll 压缩并重试一次;Visual Compact 压多模态输入;长对话把精确历史移进可搜索索引,当前任务保留。
6. 信任主干
每一次工具调用、每一个对外动作,碰到机器或数据之前,都要先过这条链路。工具在组装时就已经包成 PolicyGuardedTool,智能体绕不开。
| 层 | 决策 / 动作 | 实现要点 |
|---|---|---|
| 治理策略 | allow / deny / ask / sandbox | 内置规则 + 用户规则;ask 弹到控制台或 IM |
| 工具守卫 | 内容筛查 | 路径穿越、敏感文件、危险参数、Shell 规避;与策略合成单路径 |
| 沙箱 | 按次创建、用完销毁 | macOS seatbelt;Linux bubblewrap 优先或 landlock;Windows AppContainer / Write Restricted Token |
| 技能扫描器 | 安装前静态分析 | Skill 是可执行文件夹,不过扫描不能进运行时 |
| 加密密钥库 | 静态加密 | 提供商密钥和连接器凭据;驱动按次取凭据再过策略门 |
2.1 明确还没闭合的边界:
- Browser-use 仍是 Beta。可选独立会话或接入已登录 Chrome;浏览器内代码执行不受宿主沙箱保护,动作策略也尚未强制。
- Computer-use 已支持 Windows 桌面自动化;macOS 打包签名完成,设备级端到端验证仍在进行。操作需按应用审批,用户接管输入即停止。
7. 多智能体
同一安装内,一个 QwenPaw 智能体可以给另一个发消息,或新拉起一个智能体。子智能体继承当前会话审批级别;后台 fork 要等权威终态,失败时不丢 worktree 变更。
对外走 ACP(Agent Client Protocol):QwenPaw 可以拉起外部智能体进程,把它干的活当工具结果流式发回,权限请求交回宿主审批。2.1 可以创建由 Codex / Qoder 驱动的 Agent;ACP 客户端可传临时模型、项目目录、MCP,且不把运行时凭据写盘。
8. 从 2.0 内核到 2.1 外壳
| 版本 | 日期 | 定位 | 架构含义 |
|---|---|---|---|
| 2.0.0 | 2026-07-10 | Agent OS 内核 | Workspace 三支柱、Driver、Loop Engineering、Scroll、ReMe v0.4、TUI |
| 2.0.1 | 2026-07-24 | PawApp 平台 | 小程序、用户可编辑 Agent Mode、Oh-My-Paw 插件、记忆增强 |
| 2.1.0 | 2026-08-13 | OS Shell + 应用 | 窗口化桌面、统一 Files、Creator、Codex/Qoder、Browser/Computer-use、检查点 |
2.1 真正改架构的部分:
- OS Shell 把 Console 从单页管理中枢变成窗口管理器,已装应用和市场共用一份目录。
- 统一 Files 工作区让 Chat 与磁盘资源同屏:浏览、预览、编辑、Diff、上传下载。
- ACP Harness 让 QwenPaw 从「自有 ReAct」变成「可托管外部 agent 进程」的宿主。
- Workspace checkpoint 快照对话、记忆、选定文件,不碰项目 Git 历史。
仍挂在 2.0 骨架上: 8 阶段 Runtime、每请求组装、治理四态、原生沙箱、ReMe Markdown 记忆都没有被替换。Creator 是多智能体视频生产应用,不是新内核——脚本、素材、渲染各用独立 Agent,靠既有协作与任务恢复。长任务续接、后台工具、工作流分支并行,是 Loop / Executor 能力的加厚。
9. 设计判断
选对了。 工作区即文件系统,备份、版本控制和人工编辑都成立。请求级无状态组装让策略和模式可热切换。频道与驱动分离,避免 IM 协议污染工具层。
成本。 常驻多工作区服务比无状态 API 调用重:Hook 拓扑、插件注册、沙箱探测、SSE 心跳都要运维。本地优先换来的是你自己扛隔离和升级。
还敞着。 Browser-use 与 Computer-use 的策略强制落后于文件 / Shell 工具。外部 Harness 的安全模型取决于宿主审批是否被正确交回。多模态上下文计量仍在修。
若只记三句:
- 它是 Agent OS,不是聊天套壳。
- 隔离单位是工作区,执行骨架是 8 阶段 Runtime,安全脊梁是治理四态加原生沙箱。
- 2.1 是外壳和应用层升级,内核仍是 2.0。
资料
Runtime 阶段名对照公开源码路径:src/qwenpaw/runtime/runtime.py、phases.py、builder.py、executor.py。