整框架对标:我们和十二家放在一起看

这一页站在整个框架的高度:我们是什么形态、别人是什么形态、强在哪、弱在哪、缺什么。子系统级的对标已经有六份(沙箱、agent协作、长期记忆、记忆采纳、发言人身份、聊天附件),本页不重做它们,只吸收结论。十二维每维一句话定性加一张图,细节留在各自的子系统页里。

最强 · 最弱 · 没想到 1我们是什么 代码量级 2十二家是什么 执行模型四种 十二维矩阵 国产四家 盲区清单 我们独有的三件 3候选状态 4理想状态 取证方法 来源不一致 实现状态

00三个问题先回答结论

下面三条是这次调研要回答的全部。后面的十二维矩阵和盲区清单都是这三条的证据。

最强

会话是一张图,代码执行也是图上的节点

十二个参考对象中没有确认第二个实现把函数调用树写入对话历史。模型工具调用结果,以及启用会话 DAG 记录、非 expose=hidden 且持久化成功的 Agent method 调用层,会规范化为会话 DAG 的 code 节点,与 user、llm 节点共用 caller/predecessor 边并保存在同一会话 git 仓库。多个 head 可引用不同历史分支。

OpenClaw 和 pi-mono 都有 transcript 分支:OpenClaw Control UI 提供 fork、rewind 和 branch,pi-mono 的 JSONL 记录带 parentId 且 /tree 可切换。OpenProgram 的额外差异是 user、llm 以及统一承载工具结果和嵌套调用的 code 节点共用 DAG。Transcript 分支与 worktree 是独立机制:默认 agent 分支共享当前工作目录,只有显式绑定 worktree_id 的 job 才隔离文件修改。

context/git/dag.py · store/session/session_store.py · agentic_programming/call_state.py
最弱

标准本机入口已有,稳定远程控制契约仍缺

OpenProgram 支持随包 provider、动态 community provider、自定义 provider、MCP 客户端、skills 和 plugins;外部程序可通过认证的 stdio MCP server调用工具,也可通过ACP server驱动会话。尚未确认的是 OpenAI 兼容端点、稳定且版本化的远程控制 SDK、公开的完整 headless 事件协议和自维护 IDE 扩展。Owner 认证的 WebSocket 与 Python 库入口仍是内部或嵌入式接口,不能替代这些对外兼容承诺。

项目说明文件方面,我们和 OpenClaw 同样把 agent 级说明保存在 agent 工作区。OpenClaw 提供 migrate-claude 和 migrate-hermes,Codex desktop/CLI 的 import 可迁移 Claude Code 与 Cursor 的 setup 和 recent work;OpenProgram 当前没有外部 agent 会话、配置与 skill 导入器。

openprogram/mcp/server/server.py · openprogram/acp/server.py · apps/cli/python/openprogram_cli/_impl/commands/mcp.py · agent/management/workspace.py
没想到

codex的code mode:让模型写代码来调工具

模型不再发工具调用,而是当场写JavaScript调工具;CodeModeOnly模式下模型可见的工具面只剩exec和wait两个。背后是四个crate加一个V8运行时,在功能台账里默认关着,只看默认行为会判成不存在。

OpenProgram 允许模型先生成 workflow package,经静态校验和原子发布后再执行版本化 Python 流程;Codex code mode 则在当前轮次即时生成 JavaScript 并调用工具。OpenProgram 当前没有这种逐轮即时 code mode,也没有把模型可见工具面压缩到 exec/wait 两个入口。

codex-rs/features/src/lib.rs · code-mode / code-mode-host / code-mode-protocol / code-mode-runtime / v8-poc
按使用场景区分能力范围:OpenProgram 已提供 Python/TypeScript 的 LSP diagnostics、references 与 definition 三个 core 工具,但没有自维护 IDE 扩展、自动格式化器集合、tree-sitter 代码索引或 GitHub Action。这些差异只在编码场景中直接影响体验。渠道数量则属于通用 harness 的公开范围:OpenClaw 与 Hermes 的接入数量明显多于 OpenProgram 当前的四个渠道。

01我们是什么现状

一个 Python 通用 agent harness。安装后提供 openprogram 命令和常驻 worker;TUI、网页、Electron 桌面与四个聊天渠道经 dispatcher 共用 process_user_turn,Python 库入口由 Agent.run 或 Runtime 直接进入 agent_loop。会话 transcript 的事实源是每会话一个 git 仓库;SQLite 用于 usage 账本;记忆正文是 Markdown,检索使用可重建的内存 BM25/embedding 索引。工作流可定义为带 Agent method 的 Python 函数,符合记录条件且持久化成功的嵌套函数调用写入同一张会话 DAG。

OpenProgram 运行时与存储结构 TUI、Web、Electron 和聊天渠道经 dispatcher 进入常驻 worker,再连接会话 DAG、动态工具注册表、usage 账本和记忆工作区;Python 库入口在正文单独说明。 接入面 常驻worker · 单端口18100 一次对话的收口 落到哪 TUI · Ink + React 网页 · Next.js 14.2.35 桌面 · Electron外壳 渠道 · 4个 Telegram Discord Slack微信 process_user_turn agent/dispatcher/__init__.py 上下文装配L0 / L1 / L2 超预算就snip,再不够才压缩 agent_loop调模型、跑工具 tool.before事件门,可否决 finalize:ContextCommit、git提交 Web/TUI每轮建daemon thread;JobRunner用有界线程池 dispatcher每轮建asyncio loop;Scheduler用线程+进程 会话DAG user / llm / code三种节点 caller + predecessor两种边,分支即head指针 动态注册工具面 · 四域 todo · task · agent · message 扩展口 MCP客户端/服务端 · ACP · skills · plugins 32事件 · agent.json · 随包/动态/自定义provider 工具延迟加载:目录 + tool_search 每会话一个git仓库 history/ JSON节点,可补写或删除 context/commits/ 每轮冻结 usage.db usage账本;记忆使用内存BM25/embedding索引 记忆工作区 Markdown,后台线程写 7个memory_* 工具 网页与WS接口由owner_auth强制单owner认证:per-start token加profile专属cookie,这是一个单人框架,不是多租户服务。 聊天渠道还以配对与白名单(channels/_access.py)形成独立于owner Web的来源身份边界。

1.1代码量级:我们在中间偏下

同一套口径数出来的首方源码行数:只算 .py/.ts/.tsx/.js/.rs/.go,排除测试、node_modules、dist、target、vendor。横轴是对数刻度,因为最大和最小之间差了350倍。这一栏只用来判断复杂度落差,不代表能力高低。

九个固定源码版本的首方代码量 用对数刻度比较九个取证时固定源码版本的首方代码行数;该图不表示当前版本规模或能力排名。 1千 1万 10万 100万 1000万 openclaw 1,987,813 codex-cli 1,070,595 hermes-agent 544,917 claude-code泄露树 512,685 · 截至2026-04 opencode 366,499 OpenProgram 254,320 pi-mono 116,599 weclaw 5,723 pi-ai 4,021 · 不是框架,是协议快照 pi-ai是pi-mono里packages/ai的只读切片,为了给我们的Python Codex provider当协议参考才留在references下,不参与能力比较。
怎么读这张图:行数是取证时固定源码版本的静态统计,不表示 2026-09-01 的最新规模。该统计显示 OpenClaw 和 Codex 的首方源码量约为当时 OpenProgram 的 4 到 8 倍,差异主要集中在渠道、TUI 与 IDE 集成;weclaw 以约五千行实现微信转接与 ACP 调用。OpenProgram 当时约 25 万行,其中 Web 约 7.3 万、TUI 约 3.5 万、openprogram/ 约 13.4 万。

02十二家是什么对照

能力结论中,Claude Code、Codex、OpenClaw 与 OpenCode 按 2026-09-01 官方稳定版本和官方文档复核;代码量、内部实现细节及其余对象继续使用 references/ 与本机安装包的固定版本。两类证据不会混写为同一时点的完整源码审计。

2.1执行模型只有四种形状

参考框架的四类执行模型 比较单进程、本机客户端与服务端、常驻服务和远端执行,并标出 OpenProgram 当前采用的常驻 worker 以及未提供托管云执行服务的边界。 一次对话跑在哪 一个进程 终端起来,跑完就没了 终端 agent循环 模型 谁 pi-mono weclaw 状态存在哪 pi-mono:JSONL会话树 带parentId,叶子是当前位置 weclaw:转发给外部ACP agent 本机也拆成两半 客户端和服务端始终分离 TUI客户端 RPC worker内HTTP服务 谁 opencode,只此一家 状态存在哪 SQLite加drizzle,消息表是追加 写的seq日志,系统上下文快照 单独一张epoch表 常驻守护进程 多个入口收口到一个进程 渠道 网页 / TUI 常驻进程 会话路由 + 名册 谁 OpenProgram hermes-agent · openclaw claude-code · codex(都有daemon) 状态存在哪 我们:每会话一个git仓库 hermes / codex:SQLite claude-code:每项目一堆JSONL 远端执行 会话在本机,命令不在 本机 容器 / 远端 / 云 谁 codex:远端环境 + 云端任务 claude-code:teleport到云容器 openclaw:可选云端 worker 与受管理的 worktree hermes:7种执行后端 我们:docker.py / ssh.py在 backend/ 下,没接沙箱, 也没有云端一侧 四类执行模型不互斥:Codex 与 Claude Code 同时覆盖本机进程、服务进程和远端执行。OpenProgram 采用常驻 worker,Docker/SSH 后端存在,但没有托管云执行服务。
可采用的机制:OpenCode 在本机也以 RPC 分离 TUI 与执行服务,control-plane/move-session.ts 可在同一项目内把会话及 Git changes 重定位到另一绝对目录或 worktree,但不能迁移到另一台机器,也不接管活动轮次。OpenProgram 已有常驻 worker、WebSocket 客户端和每会话 git 存储;若增加跨 worker 迁移,仍缺版本化迁移协议、目标放置、身份验证、处理中轮次语义和失败恢复设计。

2.2十二维矩阵

每格一句话定性。我们那一列按判定上色:绿=领先、橙=持平、红=落后。表格宽,自己横向滚。

维度OpenProgramclaude-codecodexopenclaw opencodehermes-agentpi-monoweclaw
定位形态 通用harness编码CLI加云端编码CLI加云端多渠道网关平台 编码CLI加SaaS周边私人助理加研究harness编码TUI加库微信转接器
目标用户 单人本机单人,订阅或企业单人,配置分七层单人运营,多人经渠道进 单个开发者单人,陌生人靠配对码单人本机单人,零鉴权
执行模型 常驻worker进程内加daemon加云容器进程内加App Server加云端网关加 paired devices、opt-in cloud workers 与 managed worktrees 本机也拆服务端客户端进程内加网关守护单进程守护进程转发
状态存哪 每会话一个git仓库每项目一组JSONLrollout JSONL加5个SQLite每agent SQLite保存运行态与transcript;JSONL仅归档或旧格式迁移 SQLite加drizzleSQLite加FTS5JSONL会话树内存,重启即失
上下文装配 L0/L1/L2组件注册表静态前缀加动态边界标记每模型提示词编进二进制工作区文件加引导预算 13套按模型提示词stable/context/volatile三层按已启用工具裁提示词没有
项目说明文件 agent工作区AGENTS.mdCLAUDE.md四层含系统级AGENTS.md从git根往下拼工作区AGENTS/SOUL/TOOLS 全局加项目,首个命中四种格式加子目录提示祖先目录全走一遍没有
工具面 动态 registry,常驻 preset 加 tool_search 延迟目录约24个外露,ToolSearch约28个,code mode可压到2个约35个分11组,tool_search 16个,按模型换apply_patch约82个,32个toolset7个,3个默认关0个
权限审批 5种模式加规则加tool.before门6种模式:default/acceptEdits/plan/auto/dontAsk/bypassPermissions4种含Granular,execpolicy DSL分层裁剪,审批卡进聊天 默认ask,bash命令分词55条危险模式,辅助LLM自动批没有,靠工具白名单自动全批
扩展口 插件加skills加MCP客户端加32事件插件市场加27钩子加122命令插件市场加11钩子,模型可自装126插件加59skills加ClawHub 插件19钩子,可往TUI里渲染20钩子加shell脚本钩子加178skills约40事件加包管理器,无MCP只有配置文件
多渠道 4个手机网页桥,Slack,DiscordSlack 集成,依赖 cloud 账户与工作区配置原生10个,插件渠道20多个 GitHub加Slack加ACP加两个IDE约26个,另加webhook与cron没有1个
界面 TUI加网页加Electron自研Ink分支加Vim加语音ratatui,IDE经socket提供上下文TUI加控制台加macOS/iOS/watchOS/Android节点 OpenTUI加网页加ElectronInk TUI加React网页自研TUI框架,能跑DOOM只有终端
对外接口 认证stdio MCP server加ACP;无稳定远程SDKMCP server加Agent SDK加会话服务App Server加Python/TypeScript SDK;codex mcp-server已deprecatedMCP server三种加OpenAI兼容加74个RPC HTTP服务加JS SDK加ACPMCP server加OpenAI兼容加ACPRPC模式加JSON模式加SDK本机HTTP推送
观测与计费 追加账本含缓存读写与分项成本OTel加Perfetto加BigQuery,有预算上限OTel加分析上报,只有token没有金额轨迹导出加OTel加Prometheus OTel加数据湖,stats命令日志脱敏加Langfuse,拉供应商配额安装计数可关,脚本聚合成本一个日志文件
首方源码行数 254,320512,685 截至2026-041,070,5951,987,813 366,499544,917116,5995,723
矩阵结论。OpenProgram、OpenClaw 与 Hermes 都采用常驻服务承载多个入口,但 OpenClaw 还支持 paired devices、opt-in cloud workers 和 managed worktrees;Codex 同时覆盖本机 App Server、managed worktree、Web/cloud、GitHub 和 Slack。OpenProgram 当前有四个渠道、认证 stdio MCP server 与 ACP;相对差异是渠道覆盖、稳定远程 SDK、OpenAI 兼容端点、跨 worker 会话放置,以及版本化的完整 headless 事件契约。社区规模和插件库存会持续变化,本页不再使用未固定时点的 stars、forks 或技能总数作为当前能力证据。

2.3国产四家:把一个开源框架搬进企业要补什么

本机装着腾讯的四个CLI。前三个是上游的内网化版本,改动本身就是素材:它们相对上游补的东西,正好是一个"要给别人用"的框架该考虑的。codebuddy-code是自研的,对比价值最高。字节的Trae本机没有可读实现,不写猜测。

包是什么相对上游改了什么规模
claude-code-internal
v1.1.9
不是代码分支,是启动器包装。依赖上游@anthropic-ai/claude-code@2.1.154原封不动,全部改动在环境变量与代理层。 端点换成内网网关;模型白名单从网关拉,Opus和Sonnet都映射到GLM-5.1;配置目录劫持到~/.claude-internal;把逃生口堵死(扫设置文件删掉所有ANTHROPIC_*键,用户改不回去);关掉上游遥测,换成内网上报,事件里带git仓库与commit;三种认证含设备码流程供CI用;本机MITM代理守护进程固定12639端口;服务器下发的启动公告带确认门。 388行
133 KB
codex-internal
v0.0.8
同样是包装器,包上游@openai/codex@0.118.0。 重写config.toml注入内网provider并强制选中;关掉上游更新检查与反馈上报;注入请求头映射,每个请求把打开的仓库列表、是否YOLO模式、会话id告诉网关;能力阉割:codex mcp add直接拒绝改成管理员托管,codex app-server硬退出;清掉继承来的OPENAI_*与CODEX_HOME;把用户id与邮箱绑进子进程环境。 502行
572 KB
gemini-cli-internal
v1.9.0
三个里唯一的真源码分支。 新增一个codebuddy/核心模块,做成与Google并列的第四个ContentGenerator后端;认证枚举里加了两种(内网GitLab OAuth、内网API key),Google那几条原样保留,所以同一个二进制内外网都能用;把仓库远端与submodule路径上报网关;API key透传进沙箱容器环境。 576,579行
25 MB
codebuddy-code
v2.109.3
腾讯自研,内部代号genie,建在一个IoC容器上。44个工具,工具名与claude-code高度同形(Agent、Skill、ToolSearch、EnterWorktree、SendMessage、TeamCreate),另有LSP、ComputerUse、CronCreate、Workflow、WeChatReply/WeComReply。 提示词与工具授权是数据不是代码:一个326 KB的product.json装着109个Nunjucks模板、每个agent的工具白名单、模型白名单、命令表;换部署就换这个文件,五套档位(SaaS、内网、零信任、自托管、云托管)同一份代码。会话存成~/.codebuddy/projects/<cwd槽>/<uuid>.jsonl。有原生沙箱二进制,另有bubblewrap/seatbelt兜底。带一个叫"CodeBuddy Code Remote Control"的PWA,用手机浏览器遥控本机会话。headless是独立的webpack产物,不是一个命令行开关。 2,629行打包
21.7 MB
另有16 MB
headless
四条我们没想到过的,全部来自codebuddy-code。 一:把删除拦在运行时。vendor/shim/safe-bin/下有rm/rmdir/unlink三个PATH替身,只在会话环境变量存在时生效;再配一个sitecustomize.py经PYTHONPATH自动加载,patch掉os.remove/shutil.rmtree/pathlib,全部改道到自带的回收站二进制。这层在工具层之下,agent起的子进程也盖得住。OpenProgram 现已为绑定session/turn的本地agent子进程注入shell、Python和Node常用删除拦截,并提供trash list/restore;cron、后台任务、Docker、SSH、绝对路径命令、直接syscall和禁用注入等路径仍不覆盖。 二:度量AI写了多少。一个git HEAD watcher按文件归因agent与人类的改动比例并上报。这是管理指标不是用户功能,但它说明"agent产出可审计"是企业采购的硬条件。 三:远程企业策略带失败开放缓存,组织服务器决定你能不能加自定义模型、能不能上传skill,判定结果缓存在本地。 四:合规内容策略直接编在系统提示词最前面,在模型之前先做客户端拦截。

2.4盲区清单:外部机制与当前状态

前面六份子系统对标按既有问题取证,本节从十二家的能力清单反向核对曾未覆盖的机制。部分条目此后已有实现基础;各行按当前状态标出已实现边界与仍待确认的候选,不表示实施批准。

谁有机制我们为什么没想到判定
主题一 · 直接挑战我们的方法论
codex code mode:模型写JavaScript调工具,不发工具调用。CodeModeOnly下模型可见的工具只剩exec和wait。四个crate加一个V8运行时,默认关。code-mode / code-mode-host / code-mode-protocol / code-mode-runtime / v8-poc 我们的agentic programming命题是"把流程事先固化成Python给agent调",从没考虑过"让模型当场写代码调工具"。两者是同一命题的两端,我们只做了一端。 值得单独立项对比。它同时给出了一种我们没有的裁剪方式:把整个工具面折进一个exec。
hermes harness自己是训练数据发生器:批量跑数据集,按概率分布采样每条样本可见的toolset,再把轨迹压到token预算里,接进Atropos强化学习环境。batch_runner.py · toolset_distributions.py · trajectory_compressor.py · environments/ 我们把工具裁剪当成"这个agent能用什么"的权限问题,它把工具裁剪当成"这条训练样本的观测空间"的采样问题。同一个开关,两种用途。 训练管线不纳入当前范围;结构化轨迹只有人工可读导出基础,完整版本化格式仍是待单独设计批准的候选。
主题二 · 让别人能用上我们
codex
openclaw
把用户从别的agent搬过来。codex有一个约1.6万行的external-agent-migration crate,导入别的agent(含claude-code)的会话、配置和skills,磁盘上留着external_agent_session_imports.json。openclaw有migrate-claude和migrate-hermes两个扩展。 我们一直在想"怎么把功能做全",没想过"用户已经在别的工具里攒了半年会话和配置,怎么让他零成本走过来"。这是获客问题被当成工程问题解决了。 未实现。会话与配置导入仍是待单独设计批准的候选;读取外部skills格式不等于迁移实现。
codex 105条功能台账带阶段:features/src/lib.rs里每个能力一条记录,标Stable/UnderDevelopment/Experimental/Removed/Deprecated,各自带default_enabled。三分之一的已发布能力默认关着。 我们的能力分散在代码里,没有统一表格说明每个版本包含哪些能力、哪些能力受实验开关控制。此前审计曾把 Codex 长期记忆误判为未实现,原因是该完整子系统默认关闭。 未实现。统一feature registry仍是待单独设计批准的候选。
codebuddy 五套部署档,提示词与工具授权是数据:109个提示词模板、每agent工具白名单、模型白名单全在一个product.json里,SaaS/内网/零信任/自托管/云托管换文件不换代码。 我们的系统提示词组件是Python函数,工具授权在agent.json里,但"整套配置作为一个可替换的部署档"这个层级不存在。 部分该做。我们的组件注册表已经是对的骨架,缺的是把整套值外置成一份可替换的档。
opencode 控制面:在同一项目内把会话及 Git changes 重定位到另一目录或 worktree,以及把会话发布成一个公开URL(增量流进Durable Object加对象存储,自托管版也有)。control-plane/move-session.ts · share/share-next.ts OpenProgram 把会话作为本机资产。每会话一个 git 仓库可作为本机目录重定位和公开分享设计的输入,但当前没有对应产品入口。 可评估本机目录重定位与公开分享;跨 worker 迁移需要独立协议设计。
主题三 · 让agent可信
codebuddy 把删除拦在工具层之下:PATH里放rm/rmdir/unlink替身,PYTHONPATH里放sitecustomize.pypatch掉Python的删除API,全部改道回收站二进制。子进程也盖得住。 OpenProgram 已在绑定session/turn的本地agent子进程中覆盖shell、Python和Node常用删除入口;没有上下文的cron与后台任务、Docker、SSH、绝对路径命令、直接syscall和禁用注入等路径仍不覆盖。 部分实现。剩余覆盖范围仍是待确认候选,该机制不是完整安全边界。
codex execpolicy:命令允许清单是一门独立的小语言,规则文件发到~/.codex/rules/default.rules,和操作系统沙箱是两层。另有guardian,用一个LLM复核审批提示。 我们的权限规则是字符串匹配加fnmatch,够用但表达不了"这条命令的第三个参数不能是绝对路径"这类判断。而"审批本身要不要复核"这个问题我们没问过。 DSL先不做。guardian值得试,它正好补上我们Gate.ask三态里悬空的那一态。
openclaw 沙箱的能力与默认行为分开记:backend支持Docker、Podman、SSH、OpenShell,mode取off/non-main/all,默认是off。Docker模式默认无网络、只读根文件系统、非root并丢弃capabilities;官方同时明确它不是完美的安全边界。 只看到Docker backend会把"具备隔离能力"误写成"默认处于隔离中"。backend、启用范围、默认值和安全保证需要分别比较。 借鉴Docker的收紧默认值,但不把容器本身当成完整信任边界;验收同时检查默认模式与实际启动参数。
openclaw 扩展市场与公网Gateway形成两条独立风险面:ClawHub允许任何人发布技能,已经出现恶意指令注入案例;Gateway存在CVE-2026-25253。 我们的skills与owner认证Gateway都按本机单人边界设计。技能市场引入不受信发布者,对外服务引入远程攻击者,两者都会改变现有信任前提。 如果建设技能市场,发布者身份、权限说明、扫描、下架与安装确认是准入条件;如果对外暴露服务,认证、默认绑定、补丁响应和版本升级单独设门,不能沿用仅面向本机的假设。
codebuddy 度量AI写了多少代码:git HEAD watcher按文件归因agent与人类的改动比例并上报。 我们记token和成本,不记产出归属。企业要买单的时候问的是后者。 先记录不上报。我们有每轮git提交,归属信息是现成的。
openclaw 轨迹导出:系统提示词加工具清单加每一个事件,脱敏后打成一个带版本的包,10 MB/50 MB/256 KB三级上限。src/trajectory/ OpenProgram 已能把会话导出为默认脱敏的Markdown或HTML,内容面向人工阅读并截断工具参数与结果;尚未把system prompt、完整工具定义、运行时事件、provider artifacts、usage/cache与runtime settings组成版本化轨迹包。 部分实现。完整结构化轨迹仍是待确认候选。
主题四 · 让agent更主动、更好测
openclaw Automations加Heartbeat:Automations支持cron、固定间隔与一次性任务,结果投递到聊天渠道或webhook;Heartbeat默认每30分钟主动运行一轮主会话,只上报值得注意的事项。 OpenProgram Scheduler 已实现一次性、周期和监控任务的持久登记、签名执行、重试、恢复与常驻 worker,可运行 agent prompt 或受控命令;尚无把结果投递到聊天渠道或 webhook 的协议,也没有默认周期执行主会话并按重要性筛选结果的 heartbeat。 剩余候选是两个独立范围:Scheduler 结果投递协议,以及具备频率、静默和筛选规则的主会话 heartbeat;两者仍需单独设计批准。
openclaw 承诺追踪:从聊天里抽出隐含承诺,转成有类型的条目(约定、截止、关心、未了事),置信度阈值0.86,每天最多主动发3条。另有心跳与开机一次性两条独立的主动路径。src/commitments/ 我们的 proactive 层执行显式登记的外部事件或 Scheduler 任务;当前不会从普通对话内容自动创建未来动作。 若设计自动承诺提取,必须同时定义置信度阈值、每日主动消息上限、撤销方式和误触发处置;当前未获实施批准。
openclaw Dreaming:后台按评分阈值从每日笔记memory/YYYY-MM-DD.md提炼条目并提升进MEMORY.md;上下文压缩前另有自动memory flush,先保存值得长期保留的信息。 我们的记忆有每晚reorganize(),但没有"每日笔记按评分晋升到核心记忆"这条显式生命周期;压缩前提炼与后台整理也不是同一个阶段。 值得作为分层记忆机制继续比较;评分阈值、自动写入归属和压缩前失败语义必须同时定义。
openclaw 节点把远端设备能力挂成工具:macOS、iOS、watchOS、Android都是原生节点;手机节点提供传感器、日历与通知等能力,Android可经无障碍服务控机,macOS提供computer.act桌面自动化。 我们的渠道只用来收发消息,没有把另一台设备的能力注册到agent工具面。"节点协议"与"为产品做一套原生App界面"是两件可分离的事,不能因为不做手机App就把远端设备工具一并排除。 节点协议值得单独设计;原生App不是它的前置条件,具体设备能力仍按权限、可撤销授权与平台成本逐项选择。
pi-mono 假provider加HTTP录制回放:一个完整注册的假模型按脚本吐文本、思考和工具调用,chunk大小可配;另有HTTP与WebSocket的录制回放,磁带存在测试夹具里。 OpenProgram 已有测试专用scripted provider,可经正常注册路径驱动文本、思考、工具调用、错误和多轮响应,并覆盖真实agent_loop工具结果回填;它不是正式发布的生产provider。 部分实现。是否提供正式provider仍需单独设计批准。
pi-mono 会话中途换供应商:把思考块签名和工具调用 id 归一化,使同一段历史可在不同供应商间继续;另有扩展用生成的交接提示词创建新会话。 OpenProgram 的 Web/TUI 可在同一会话切换模型;providers/_shared/transform_messages.py 归一化跨协议消息、思考块和工具调用 ID,测试覆盖跨供应商工具调用历史。它不等同于另建会话的交接提示词扩展。 已实现同会话跨供应商继续;独立的新会话交接工作流不是本项必需语义。
当前边界:测试专用 scripted provider 已覆盖真实 agent loop;会话已有默认脱敏的 Markdown/HTML 导出;同一会话可跨供应商继续。正式 scripted provider 与包含完整 runtime 事件、provider artifacts、usage 和 settings 的版本化结构化轨迹仍是候选,本页不表示已批准实施。

2.5我们独有的三件,别人最接近的对应物是什么

独有本身不是价值,独有并且换来了别人换不到的东西才是。三件里两件成立,一件目前只是形状上独有。

我们的它是什么别人最接近的这份独有买到了什么
会话DAG
分支即head指针
一张图,三种节点角色(user/llm/code),两种边(caller/predecessor)。每会话使用一个 git 仓库;history JSON 节点可在锁内创建、补写 output/metadata 或删除。meta.json 中当前 head 与可选 branch refs 使用 CAS;title/archive 由锁保护的原子替换更新。系统不维护可变的完整 transcript 快照。 OpenClaw 的 Control UI 提供 transcript fork、rewind 与 branch;pi-mono 的 JSONL 记录带 parentId,/tree 可切换并摘要废弃分支。opencode 的 fork 创建新会话,codex 的 agent graph 记录 agent 关系。 OpenProgram 的已确认差异是 transcript 分支、user/llm/code 统一 DAG 和每会话 git 存储。OpenClaw 与 pi-mono 已具备 transcript 多分支,不能据此声明该能力只有 OpenProgram 与 pi-mono。OpenProgram 自身也不会自动为每个 transcript 分支创建独立 worktree;文件隔离只适用于显式绑定 worktree_id 的 job。
Agent method
流程固化成代码
一个Python装饰器。启用会话 DAG 记录、非 expose=hidden 且持久化成功时,对应调用层会记成会话 DAG 上的 code 节点,和用户消息、模型消息、工具结果共用同一套边,写进同一个git仓库。 没有对应物。pi-mono的扩展、opencode的tool/*.ts、hermes的skills都能注册新工具,但工具执行对它们是一个黑盒,只有入参和返回值进历史。
反方向的对应物是codex的code mode:模型当场写代码调工具。
持久化成功的内部步骤可与对话一起回看;顶层手动函数可通过 Retry/Edit 形成 sibling branch。任意嵌套步骤的状态恢复或重放尚未实现。
四域协作工具面
todo/task/agent/message
四个名词各管一个域:计划归todo,正在跑的任务归task,执行任务的实体归agent,通讯归message。工具名不用记,每个工具只操作它那个域的名词。 各家都有这些能力,但没人分域命名。opencode是task加todowrite;hermes是delegate加看板;claude-code是Task/TaskOutput/SendMessage/Brief;codebuddy的44个工具里TaskCreate/Get/Update/List/Stop/Output六个动词全在,也没有分域。 这是命名上的独有,能力上不独有。真正有实证的差异在另一份文档里:八家中只有我们按剩余消息预算裁子agent的工具面,防环机制密度与openclaw并列第一。见runtime/agent-collab-comparison.html

03候选状态待确认

以下六项保留原有候选范围并校准当前实现状态,不表示已批准实施。未完成部分仍需单独设计、估算与批准,本页不补写实施方案。

编号条目与当前状态事实边界现有落点
1 scripted provider:部分实现。测试专用实现可按脚本产生文本、思考、工具调用、错误与多轮响应。 已通过正常provider注册路径覆盖真实agent_loop与工具结果回填;正式发布的生产provider尚未实现,也未获设计批准。 tests/component/providers/scripted_provider.py · test_scripted_provider.py
2 MCP server:已实现。CLI提供认证的stdio服务端并暴露允许的OpenProgram工具。 实现复用现有工具注册、权限模式与allow-pattern映射;稳定远程SDK、OpenAI兼容端点和入站webhook不在这一实现范围内。 openprogram/mcp/server/server.py · apps/cli/python/openprogram_cli/_impl/commands/mcp.py
3 轨迹导出:部分实现。会话可导出为默认脱敏的Markdown或HTML。 现有格式面向人工阅读,并截断工具参数与结果;system prompt、完整工具定义、运行时事件、provider artifacts、usage/cache与runtime settings尚未形成版本化结构化包。 openprogram/store/session/export.py
4 可恢复删除:部分实现。绑定session/turn的本地agent子进程具备shell、Python与Node常用删除拦截、manifest和trash list/restore。 没有上下文的cron与后台任务、Docker、SSH、绝对路径命令、直接syscall和禁用注入等路径不覆盖;该机制不是完整安全边界。 openprogram/sandbox/recoverable_delete.py · apps/cli/python/openprogram_cli/_impl/commands/trash.py
5 功能台账与默认阶段:未实现。 当前没有统一的运行时feature registry来记录每项能力的阶段与默认开关;该候选仍需单独设计批准。 无统一feature registry
6 外部agent会话与配置导入:未实现。 现有外部CLI credential discovery不等于会话、配置、skills与历史迁移;该候选仍需单独设计批准。 无外部session/config importer
明确不做或不扩展的范围:训练数据管线(OpenProgram 不训练模型)、原生手机 App(它不是节点协议或远端设备工具的前置条件)、完整自动格式化器集合,以及新增 execpolicy 式参数语义 DSL。现有 ToolName prefix/glob/exact 规则语法和 Python/TypeScript LSP diagnostics、references 和 definition 工具保留;是否增加语言另按真实需求判断。

04理想状态目标

宏观层的理想只有三句,每句对应上面三个问题里的一个。

把最强的做到底

一次会话是一个可搬运、可分享、可复现的对象

会话已经是一个git仓库,里面是一张完整的图。理想状态下这个仓库可以整个交给另一台机器接着跑,可以脱敏后发出去给别人看,可以从图上任意一个节点重新分叉。三件事共用同一个载体,不需要三套导出格式。

补齐对外控制范围

别的程序能通过稳定契约驱动我们

现有MCP server与ACP已经提供标准本机入口;理想状态还需要稳定且版本化的远程控制契约,并保留外部会话与配置导入能力。后两项仍是未批准候选。

把盲区变成常态

能力有一张表,行为有一份可复现的记录

每个能力在台账上有一条记录,标着阶段和默认开关;每一次运行都能导出成一份脱敏的完整轨迹。前者让我们说得清自己有什么,后者让别人说得清我们哪里坏了。这两件缺一件,规模一大就失控。

05取证方法与状态

主要产品能力按 2026-09-01 官方稳定版复核;源码结构、行数和国产安装包仍使用固定本地版本。表内明确区分两种证据。

对象取证来源日期注意
OpenProgramintegrated candidate@d91c3e66 的代码、CLI/Web/TUI 入口与对应测试2026-09-01MCP server、ACP、LSP、mid-turn steer、Scheduler、跨会话 agent provenance、会话导出、跨供应商历史兼容与可恢复删除按当前实现边界复核;未实现候选不按设计文档记为完成
claude-code官方稳定版 v2.1.252及官方文档2026-09-01旧参考源码树与本机 2.1.226 只用于内部实现补充;当前公开能力以官方稳定版证据为准
codex官方稳定版 rust-v0.152.0及官方文档2026-09-01worktree、cloud、Web、GitHub、Slack、Automations、import 与 App Server/SDK 按正式公开能力计;旧本地源码只用于内部结构补充
openclaw官方稳定版 v2026.8.1及官方文档2026-09-01session SQLite/search/archive、paired devices、需显式配置 profiles 的 cloud workers、managed worktrees、Control UI 与 Workboard 按版本对应文档复核
opencode官方稳定版 v1.18.25、tag-pinned 源码及官方文档2026-09-01Scout 存在 docs/source 冲突,按稳定源码记为未确认;worktree core 存在但路由仍属 experimental
其余四家references/ 下固定源码:Hermes、pi-mono、weclaw 与协议参考 pi-ai固定版本不声明为项目最新发布版;功能结论只限列明证据
国产四家本机~/.npm-global/lib/node_modules/下的npm包,读dist/打包产物2026-08前三个是包装器,改动集中在环境变量与配置层;gemini那个是真源码分支
Trae未获取到实现—本机没装,/Applications、应用支持目录、VS Code与Cursor扩展目录里都没有。不写猜测
Claude Code、Codex、OpenClaw 与 OpenCode 本轮改变状态的逐项官方页面列在 feature-matrix 的当前官方证据表;本页不重复同一证据清单。

固定本地证据中的来源差异

条目旧参考源码树本机固定二进制用途
claude-code的子agent深度上限 树里没有这个开关 有,默认3,可用环境变量覆盖,且带灰度开关2.1.226 @249432727附近 内部机制补充;当前公开能力另按 v2.1.252 官方证据
claude-code的按agent裁工具 有裁剪,但不含深度 裁剪函数直接吃agentDepth,只有深度小于上限才给出派子agent的工具;另有三张常量表分别管普通agent、异步agent、协调者模式@256834891 · @75243888 · @75243840 · @75243792 内部机制补充;当前公开能力另按 v2.1.252 官方证据
claude-code的Slack 只有一个市场安装链接 有完整的Slack对话面,含机器人、人类回合校验、频道搜索@78014240 · @106577664 · @106582768 · @70680752 内部机制补充;当前公开能力另按 v2.1.252 官方证据
claude-code的产物发布 完全没有 有一整套:计划产物发布成带脚本哈希白名单的托管HTML,另有独立的产物工具与一组开关@75228592 · @75228672 · @75228896 · @75229360 · @75180658 内部机制补充;当前公开能力另按 v2.1.252 官方证据
claude-code的定时与外部触发 没有 有三个定时工具、一个远程触发工具,以及一组给自托管CI跑的工具集@75240320 内部机制补充;当前公开能力另按 v2.1.252 官方证据
codex的长期记忆 源码里是完整子系统(读写两阶段管线加独立数据库),功能台账里标Stable但default_enabled: false。只看默认行为会判成"没有",今天已经误判过一次。 按"有"计

本页的实现状态

第一层的 OpenProgram 状态按集成候选复核;第二层中四个主要产品的公开能力按 2026-09-01 官方稳定版本复核,代码量与内部实现细节仍是固定本地版本;第三层校准六项候选,第四层描述未完整达到的目标形态。

条目状态落点
形态图、代码量级、十二维矩阵、国产四家、盲区清单、差异机制能力状态按上表版本复核;代码量和内部结构只代表固定本地版本官方稳定版证据 + 固定 references/ 与本机包,见上表
第三层六项候选与第四层三句候选未表示已批准;目标形态尚未完整实现具体边界见第三层各行
MCP server已实现openprogram/mcp/server/server.py · apps/cli/python/openprogram_cli/_impl/commands/mcp.py
scripted provider、轨迹导出、可恢复删除部分实现tests/component/providers/scripted_provider.py · store/session/export.py · sandbox/recoverable_delete.py
功能台账、外部agent会话与配置导入未实现;仍需单独设计批准无统一feature registry或external session/config importer
和别的文档的分工。framework-overview回答"我们内部一次对话怎么跑",只讲我们自己,没有对照。本页回答"我们和别人整体上差在哪",只讲对照,不讲内部机制。feature-matrix对标同样十二个参考对象,但按功能清单取证(功能开关配置、命令清单、工具清单、出厂agent、帮助文本、运行时目录),160项canonical表当前有56个候选差异。两页的取证单位不同,计数不能直接合并。子系统级的对照各有各的页:沙箱在runtime/sandbox(图解),agent协作在智能体协作对比,长期记忆在memory-comparison与memory-adoption,多人会话身份在speaker-identity,聊天附件在chat-attachments,上下文成分在context/comparison,扩展准入在extension-gating/reference-comparison。本页不重复它们的结论,只在需要时引用。