ACECode 对照 opencode 差距分析与超越路线(2026-09)
对照对象:C:\Users\shao\opencode 本地 checkout,HEAD a453386e9d(2026-09),包版本 v1.18.30。
ACECode 侧:master d603cacb。所有论断都逐条对照两边源码核实,附文件锚点;未核实的不写。
与 竞品调研报告_完整版_2026-08.md 的关系:那份报告对标 11 个产品但未覆盖 opencode ;本报告只做 opencode 单点深挖,并在 §6 说明 8 月报告 Phase 1 哪些项到现在仍未落地。
规模 :opencode 已不是一个"TUI 工具",而是一个 33 包 monorepo(~29 万行 TS 不含测试;678 个单测文件 + 111 个 e2e;27 条 GitHub workflow),同时在跑两套运行时(legacy 单进程 + Effect 化的 V2 durable session core),并且有 Zen/Go 两条付费模型网关 + 云 console + enterprise 包。ACECode 是 ~20 万行 C++ + 13 万行前端,397 个 C++ 测试文件 + 272 个前端测试。体量相当,但 opencode 的投入方向是"平台化 + 生态",ACECode 是"桌面纵深 + 自主执行"。
ACECode 明确领先的 (§3):Agent Browser(CDP 级)、图像生成、Remote Control(IM 通道)、Loops 定时任务、Thread Goals 自主续跑、Expert 组件、PA 内网适配、蜂群/子代理写边界、TUI 工具行渲染与 prompt-cache 前缀不变量的严谨程度、中文优先体验。opencode 没有这些,或者只有雏形(后台子代理、workspace adapter)。
opencode 领先、ACECode 要补的 ,按"对用户价值 × 实现代价"排出五个最大的洞:
#
洞
一句话
1
权限粒度
ACECode 的"总是允许"是按工具名整锅端(permissions.hpp:166),规则表硬编码在 main.cpp:2764;opencode 是 tree-sitter 拆命令 → git status * 级前缀记忆 + 配置化 glob 规则 + external_directory 越界门
2
项目级配置 + Agent 定义
ACECode 没有可入库的 .acecode/config.json(只有 hooks/skills/model_override);opencode 的 opencode.json 能把 model/permission/mcp/agent/command/instructions 全部随仓库分发,Markdown 定义 agent
3
对外接口生态
opencode:OpenAPI 3.1 + 生成式 SDK(JS/Go)+ ACP(Zed/JetBrains/nvim)+ GitHub Action + VS Code 扩展 + npm 插件 + TUI 插件;ACECode:REST/WS 文档 + shell hooks + MCP
4
模型层广度
opencode:models.dev 全目录 50+ provider、Anthropic/OpenAI/Copilot/Google 等 OAuth、reasoning variants 一键切、small_model 分流、按模型族分发 10 套系统提示;ACECode:5 个 provider 实现、单套系统提示、effort 只在 profile 里静态存
5
会话存储与流转
opencode:SQLite(drizzle)+ 序列化事件 + export/import/share + attach 远程 TUI;ACECode:每会话两文件(CLAUDE.md 里已记录 1428 文件冷缓存 7.3s 的痛点)、无导出导入分享
结论:不需要跟 opencode 比"平台化"的全面性 (那是它烧钱换来的),但上面 1、2 两项是"团队/企业能不能用"的门槛,3 里的 OpenAPI+ACP 是"能不能被别人的工具接入"的门槛,4 里的 variants + 模型族提示是"同一个模型跑得好不好"的门槛——这四块补齐后,加上 §3 的领先项,就是真正意义上的全面超越。
维度
opencode
ACECode
语言/栈
TypeScript + Bun + Effect;TUI 用 opentui(Solid);Web 用 SolidJS;Desktop 用 Electron (已从 Tauri 迁走,packages/desktop/package.json)
C++17 + FTXUI;Web 用 React 18 + Vite;Desktop 自研 webview 壳
包结构
33 个 workspace 包:opencode(CLI 主体 678 文件) / core(479) / app(596) / tui(204) / ui(247) / console(258, 云控制台) / llm(105, 原生 provider 协议) / server / plugin / sdk / codemode / enterprise / slack / stats …
单仓:src/ 40 个子目录 + web/ + ace-browser-bridge/
运行时
legacy(packages/opencode/src/session/prompt.ts 1631 行主循环)与 V2(core/src/session/*,durable inbox → runner → projector,见 CONTEXT.md 的术语表)双轨过渡
单轨:agent_loop.cpp 状态机 + SessionRegistry 多路复用
持久化
SQLite + drizzle(core/src/session/sql.ts:session/message/part 表,带 cost/tokens 列)
JSONL + meta.json 每会话两文件 + writer lease
客户端
TUI / opencode run(带交互 footer) / Web / Desktop / ACP / GitHub Action / GitLab / VS Code 扩展 / Slack
TUI / -p headless / Web / Desktop / Remote Control(IM)
测试
678 单测 + 111 e2e(Playwright) + storybook + perf 基准
397 C++ 测试 + 272 前端 Node 测试
CI
27 条 workflow(含 issue 去重/triage、docs locale 同步、nix、vscode 发布、storybook)
2 条(package / test)
文档
36 页 mdx,24 种语言 同步
docs/ 中文为主 + help 站
标注:影响 = 对用户/团队的价值;代价 = 在现有 C++ 架构上的实现难度(S/M/L/XL);优先级 = P0 门槛项 / P1 明显收益 / P2 锦上添花。
#
opencode 做法
ACECode 现状
影响
代价
优先级
A1
按模型族分发系统提示 :session/system.ts::provider() 按 model id 选 anthropic.txt / gpt.txt / codex.txt / gemini.txt / kimi.txt / beast.txt(gpt-4/o1/o3) / gpt-astra.txt(gpt-6) / meta.txt / trinity.txt / default.txt 十套;工具面也随模型切:GPT 系用 apply_patch,其它用 edit/write(tool/registry.ts:~300)
src/engine/prompt/system_prompt.cpp 单套提示(grep gpt/claude/gemini 无分支);工具面固定
同一套提示在 Claude/GPT/Kimi/GLM 上表现差异很大,这是"同模型跑得好不好"的直接因素;ACECode 用户大量用国产/内网模型,更需要
M
P0
A2
Agent 定义 :primary/subagent 两类,Markdown frontmatter(~/.config/opencode/agents/*.md / .opencode/agents/*.md)定义 description/model/prompt/temperature/top_p/permission/steps/color/hidden;内置 build/plan/general/explore/scout + 隐藏 compaction/title/summary;Tab 循环主 agent,@name 提及子 agent;permission.task 控制谁能派谁
Expert 组件(src/domain/experts/,Agent/Team + 头像 + 能力范围)方向类似但绑定桌面 UI;spawn_subagent 只有 prompt/wait/model 三参数,没有"子代理类型"概念;无 per-agent prompt/permission/temperature
团队沉淀"审查员/文档员/安全员"这类角色是刚需;Expert 已有壳,缺的是把它接进 spawn 与权限
M
P0
A3
嵌套指令按需注入 :session/instruction.ts::resolve() 在 read 工具读到文件时,向上找该文件祖先目录里的 AGENTS.md/CLAUDE.md,每条 assistant 消息只注入一次(Claude Code 同款)
src/domain/project_instructions/ 启动时按 cwd 祖先链 outer-first 加载;子目录里的 AGENTS.md 永远不会被看到
monorepo 里 packages/x/AGENTS.md 是主流写法;不支持等于这些规则形同虚设
S
P0
A4
结构化输出 :prompt.ts 支持 format:{type:"json_schema"},注入 StructuredOutput 工具 + toolChoice:"required",失败报 StructuredOutputError
无(src/apps/headless、agent_loop.cpp 无 json_schema)
脚本化/流水线调用(almcli4acecode 那类)的基础能力
S
P1
A5
每 agent 步数上限 steps + MAX_STEPS_PROMPT(到上限后让模型总结收尾而不是硬停)
agent_loop.max_iterations 全局硬停
成本控制 + 优雅收尾
S
P1
A6
压缩策略 :compaction.prune(回合结束后异步清老工具输出,PRUNE_PROTECT=40k 保护近期)、preserve_recent_tokens 保留最近 2k–15k、可增量更新的结构化摘要模板(Objective/Work State/Next Move/Relevant Files,core/src/session/compaction.ts)、插件可改压缩提示
/compact + cold tool archive(add-compact-cold-tool-archive);摘要模板见 compact_prompt.cpp
长会话稳定性;ACECode 已有骨架,缺 prune 与"增量合并旧摘要"
S
P1
A7
task_id 续跑子代理 :tool/task.ts 允许传 task_id 让子代理在原上下文继续;后台任务完成自动通知父会话(BACKGROUND_STARTED 文案明确禁止父轮询)
spawn_subagent(wait=false) + wait_subagent,子会话结束即从面板移除,无续跑
多轮委派("再改一下")不用重头来
S
P1
A8
Session summary agent :首轮异步生成会话摘要(summary.ts),侧栏/分享页用
只有自动标题
会话列表可读性
S
P2
A9
invalid 工具 :模型调了不存在的工具或参数校验失败时,由一个专门工具把错误以 tool result 形式回给模型,而不是断回合
resolve_model_tool_name_to_native fail-open 透传未知名,但校验失败路径需核对
弱模型鲁棒性
S
P2
#
opencode 做法
ACECode 现状
影响
代价
优先级
T1
webfetch 工具 (URL → markdown/text,重定向提示)
只有 web_search,没有取网页正文的工具;browser_* 能开页但重
查文档是最高频动作之一,没有 fetch 模型只能 bash curl
S
P0
T2
Shell 工具按 shell 出提示 :tool/shell/prompt.ts 对 bash / pwsh / Windows PowerShell 5.1 / cmd 各出一套描述(链式操作符差异、引号规则、workdir 参数替代 cd);timeout 与 workdir 是显式参数
bash_tool 一套描述;Windows 默认 cmd(用户决策);system prompt 里有 PowerShell/Git Bash 指引段
已有一半;把指引挪进工具描述并加 workdir 参数即可
S
P1
T3
工具输出溢出统一落盘 :tool/truncate.ts 服务,2000 行/50KB 上限,超出写 tool_* 文件(7 天保留),模型可 read/grep 全量;bash 流式时按 maxBytes*2 滚动窗口 + 边收边写文件
tool_result_storage + preserve_full_output 已等价(bash_tool.cpp:618 注释)
已对齐
—
—
T4
read 直接返回图片/PDF 附件 (jpeg/png/gif/webp/pdf → attachments)
show_image 单独工具 + vision_analyze 子代理;file_read 读图报错
模型自己有视觉时多一次工具往返;CLAUDE.md 已记录过这个坑
S
P1
T5
question 工具支持多题、多选、自定义答案 (custom 默认开,multiple)
AskUserQuestion 已有多题/推荐项
基本对齐;核对 multiple 与自定义输入
S
P2
T6
CodeMode (实验):模型写一段受限 JS 在沙箱里串多个 MCP 工具(packages/codemode),减少工具往返
无
MCP 工具多时省 token;实验性
L
P2(观望)
T7
apply_patch (OpenAI 补丁格式)作为 GPT 系的编辑工具
无
只对 GPT 系有意义;与 A1 一起做
S
P1
T8
edit 的 9 级模糊匹配 (edit.ts: Simple/LineTrimmed/BlockAnchor/WhitespaceNormalized/IndentationFlexible/EscapeNormalized/TrimmedBoundary/ContextAware/MultiOccurrence 依次尝试,isDisproportionateMatch 防误配)
file_edit_tool 精确匹配 + CRLF 处理;需核对是否有容错层
弱模型编辑成功率
S
P1
#
opencode 做法
ACECode 现状
影响
代价
优先级
P1
命令级权限记忆 :tool/shell.ts::collect() 用 tree-sitter(bash + PowerShell 语法)拆出每条子命令,permission/arity.ts 的命令前缀词典算出"人类可理解前缀"(git checkout / npm run dev / python script.py),"总是允许"记的是 git status * 这种模式,不是整个 bash
PermissionManager::add_session_allow(tool_name) 按工具名整锅记(permissions.hpp:166,182);"总是允许 bash" = 本会话任何命令免问
安全与体验双输 :用户要么每条都点,要么一次放开全部。这是 ACECode 权限系统最大的短板
M(tree-sitter 可用 tree-sitter C 库;先用 arity 词典 + 简单分词也能拿到 80%)
P0
P2
配置化规则 :permission.{read,edit,glob,grep,bash,task,skill,webfetch,websearch,external_directory,doom_loop,...} 每键可 allow/ask/deny 或 {pattern: action} 对象,最后匹配者胜 ;~/$HOME 展开;.env 默认 deny;全局/项目/agent 三层合并
规则表硬编码(main.cpp:2764-2768、tui_init.cpp:272),config 里无 permission 段;只有 4 档模式
团队无法下发"禁止 git push、允许 npm test"这类策略
M
P0
P3
external_directory 越界门 :任何工具触碰 worktree 之外路径(含 bash 里的 cd/rm/cp/mv/cat 参数解析)先问一次,可 always 记目录
write_root 写边界(worktree/LOOP/继承)只管写,读越界不问;bash 守卫只管写目标
读越界(~/.ssh、其它项目)无感知
M
P1
P4
doom_loop 作为权限键 :同一工具同参数连续 3 次 → 走 ask,用户可放行
agent_loop_doom_guard.cpp 自动处理
基本对齐
—
—
P5
--auto 模式 :自动批准未显式 deny 的请求,与 deny 规则共存;TUI 里显示 auto 徽标
yolo 等价但绕过全部(deny 规则除外)
对齐;差一个"auto 与 deny 共存"的语义确认
S
P2
P6
Policies (实验):experimental.policies 用 effect/action/resource 三元组控 provider 使用;managed config (/etc/opencode、%ProgramData%\opencode、macOS .mobileconfig MDM)用户不可覆盖;remote config .well-known/opencode 组织默认值
无
企业部署门槛;8 月报告已列"企业 SSO/SIEM 不做",但 managed config 成本很低
S
P1
#
opencode 做法
ACECode 现状
影响
代价
优先级
C1
多层配置合并 :remote → global → OPENCODE_CONFIG → 项目 opencode.json(c) → .opencode/ 目录 → OPENCODE_CONFIG_CONTENT → managed;JSONC;{env:X} / {file:path} 变量替换;JSON Schema 发布供编辑器校验
单个 ~/.acecode/config.json + <cwd_hash>/model_override.json + .acecode/hooks.json + .acecode/skills;无项目级 config、无 schema、无变量替换
团队协作的基础设施 :模型/权限/MCP/指令随仓库走
M
P0
C2
instructions 数组 :glob(.cursor/rules/*.md、packages/*/AGENTS.md)+ 远程 URL(5s 超时)
project_instructions.filenames 只认文件名
复用团队已有规则文件
S
P1
C3
References :references.{alias} 把外部目录或 git 仓库 (自动 clone 进缓存、按 branch 刷新)挂成 @alias,带 description 进系统提示,自动豁免 external_directory
无
"对照上游实现"类任务很常见(scout 子代理专门干这个)
M
P1
C4
Commands :Markdown 命令支持 $ARGUMENTS/$1..$n、!`shell` 注入命令输出、@file 内联、agent/model/subtask frontmatter
opencode_command.cpp 已实现 $ARGUMENTS;需核对 ! 注入与 subtask
基本对齐
S
P2
C5
Formatters :写入后按扩展名调 prettier/biome/gofmt/rustfmt/clang-format 等 20+ 种(默认关)
无
代码风格一致性;有 LSP 诊断注入的骨架可复用
S
P2
C6
Claude Code 兼容层 :读 ~/.claude/CLAUDE.md、.claude/skills,OPENCODE_DISABLE_CLAUDE_CODE* 开关
读 CLAUDE.md 与 .agent/skills;.claude/skills 需核对
迁移成本
S
P2
#
opencode 做法
ACECode 现状
影响
代价
优先级
M1
Variants :每模型内置 reasoning 变体(Anthropic high/max、OpenAI none→xhigh、Google low/high),ctrl+t 一键循环,--variant CLI,config 可自定义/禁用变体
ModelReasoningOptions 只在 saved_models profile 里静态存;无命令、无快捷键(8 月报告 Phase 1 #1 至今未做)
同一模型"快/深"切换是高频操作
S
P0
M2
Provider 广度 :models.dev 目录驱动 50+ provider(Bedrock/Vertex/Azure/Cloudflare/Ollama/LM Studio/OpenRouter/…),@ai-sdk/* 按需加载 + 自研 packages/llm 六协议原生实现(anthropic-messages / openai-chat / openai-responses / gemini / bedrock-converse / openai-compatible);/connect 内置 OAuth(Anthropic 订阅、OpenAI、Copilot、Google 等)
openai-compat / anthropic / copilot / codex / grok 五个;OAuth 只有 Copilot/Grok/Codex;models.dev 只用于元数据
ACECode 用户主战场是内网/OpenAI 兼容,广度不是第一优先;但 Gemini 原生协议 + Bedrock 是常见缺口
L
P1(只补 Gemini/Bedrock)
M3
small_model :标题/摘要等轻任务自动用便宜模型
summary_generation 已有独立模型配置
对齐
—
—
M4
Prompt cache 默认开 :packages/llm 的 cache:"auto" 在最后一个 tool 定义 / 最后 system / 最新 user 三处打断点
AnthropicProvider 有 cache_control;CLAUDE.md 的前缀不变量比 opencode 讲得更透
ACECode 更严谨
—
—
M5
Provider 超时三件套 :timeout / headerTimeout / chunkTimeout 可配
ACECODE_OPENAI_STREAM_TIMEOUT_MS 单值
内网慢模型场景需要 chunk 级超时
S
P2
M6
重试策略 :5 次指数退避 + retry-after(-ms) 头 + 可重试错误正则表(retry.ts)
retry_policy.cpp + PA rescue 链更激进
ACECode 已更强(内网场景)
—
—
#
opencode 做法
ACECode 现状
影响
代价
优先级
S1
SQLite 存储 :session/message/part 表,cost/tokens 列直接可聚合;opencode db 可直接 SQL
每会话 .jsonl + .meta.json;CLAUDE.md 记录了 1428 文件冷缓存 7.3s 的列表问题及分页补丁;state.sqlite3 已用于 goal/loop
列表/搜索/统计都在跟文件系统作斗争;opencode stats 那种跨会话成本报表在 JSONL 上做不了
L(迁移 + 兼容旧数据)
P1
S2
export / import / share :opencode export --sanitize(脱敏)、`import <file
share-url>、/share 生成公开链接(share: manual/auto/disabled` 可由项目配置强制关闭)
Web 有 exportSession API;TUI 无 /export;无 import、无 share
复盘、求助、跨机迁移
S(export/import)/ L(share 需服务端)
S3
undo/redo 基于 git 快照 :/undo 撤销最后一条 user 消息 + 文件;/redo 恢复;snapshot:false 可关(大仓库)
/rewind + per-user-turn checkpoints,语义等价(还多 web 时间线待接 UI)
对齐
—
—
S4
attach :TUI 挂到远程 serve/web 实例(basic auth、mDNS 发现)
Remote Web mode 有;TUI 无法 attach 到 daemon
一台机器跑 daemon、多终端接入
M
P2
S5
stats :按天/项目/模型/工具聚合 token 与成本
/tokens 会话内
依赖 S1
S(S1 之后)
P2
#
opencode 做法
ACECode 现状
影响
代价
优先级
U1
可配置键位 :tui.json 的 keybinds 140+ 个动作、leader key(ctrl+x)、which-key 提示面板、none 禁用、多绑定
无 keybind 机制(8 月报告 Phase 1 #3/#5 未做)
终端用户核心诉求
M
P1
U2
命令面板 ctrl+p 搜索全部动作(80+ 条,见 tui/src/app.tsx)
斜杠命令 + 排序
可发现性
S
P1
U3
外部编辑器 /editor($EDITOR,--wait)
无(Phase 1 #2 未做)
长 prompt 编辑
S
P1
U4
主题 :33 套 JSON 主题 + 亮/暗自动跟随终端 + 锁定
主题系统 + AI 生成主题(theme_create)——ACECode 更强
—
—
—
U5
时间线/跳转/分叉 :dialog-timeline、dialog-fork-from-timeline、messages_last_user、session_child_first/cycle/parent 子会话导航键
/fork、/checkpoint;子代理只在侧栏列表
长会话导航
M
P2
U6
Prompt stash / 模型收藏与最近循环 / agent Tab 切换 / variant ctrl+t
无
高频操作效率
S
P1(并入 M1/A2)
U7
Attention :问题/权限/完成时播放音效 + 终端失焦时桌面通知,可自定义 sound pack
Desktop 有通知;TUI 无
终端用户
S
P2
U8
opencode run 带交互 footer :非交互模式下权限/提问仍能在底部一行内应答(cli/cmd/run/footer.*.tsx)
-p 纯 headless(自动拒绝/自动应答)
脚本与人工混用场景
M
P2
#
opencode 做法
ACECode 现状
影响
代价
优先级
W1
i18n 65 种语言 (app/src/i18n/)+ 文档 24 语
中/英
海外分发
S(机翻流水线)
P2
W2
Review tab + 行级评论 (context/comments.tsx:在 diff 上选行写评论,回灌给 agent)
变更面板 + diff2html,无行评论
代码审查工作流
M
P1
W3
多服务器 :Web 可同时连多个 opencode server(dialog-select-server、settings-servers)
多 workspace = 多 daemon,但 UI 一次只连 active
对齐(形态不同)
—
—
W4
Desktop 自动更新 + 多窗口 + onboarding (Electron updater)
acecode upgrade 显式 + macOS 自更新
桌面用户默认期待静默更新
M
P2
W5
Session 标签页拖拽、文件标签页、终端面板
ConsoleDock + SidePanel
对齐
—
—
#
opencode 做法
ACECode 现状
影响
代价
优先级
E1
OpenAPI 3.1 + 生成式 SDK :/doc 端点;packages/sdk(JS)、Go SDK、sdk-next(Effect 内嵌模式);CONTEXT.md 对 Page/cursor/事件流有完整契约
docs/daemon-api.md 手写文档;无 schema、无 SDK
第三方(含 almcli4acecode)接入成本;有了 schema 才能生成客户端和做契约测试
M
P0
E2
ACP(Agent Client Protocol) :opencode acp 让 Zed / JetBrains / Avante / CodeCompanion 直接把 opencode 当 agent 用
无
一次实现,进入所有 ACP 编辑器
M
P1
E3
GitHub Action / GitLab :/opencode 评论触发、PR 自动审查、schedule、opencode pr <n> 拉 PR 分支
无(Loops 是本地定时)
CI 里跑 agent 是团队采用路径
M(headless 已有,主要是 action 包装 + 评论回写)
P1
E4
VS Code 扩展 :sdks/vscode,Cmd+Esc 唤起、选区/文件引用注入、自动安装
无
IDE 用户
M
P2
E5
npm 插件 :`chat.params/chat.headers/permission.ask/tool.execute.before
after/shell.env/tool.definition/experimental.session.compacting/...` 20+ 钩子 + 自定义工具(TS/任意语言)+ 自定义 auth 流程 + provider 钩子 + TUI 插件 (自定义路由/组件/键位)
shell hooks(docs/hooks.md 8 类事件)+ MCP + connectors
8 月报告已决定不做 TS 扩展运行时;但 tool.definition(改工具描述)和 chat.params(改采样参数)两个钩子用 shell hooks 也能补
S
E6
Slack 包 、console 云控制台 、enterprise 包
Remote Control 覆盖 IM;无云
不跟
—
—
#
opencode
ACECode
建议
Q1
111 个 Playwright e2e + 视觉稳定性/性能基准
前端 Node 单测为主
给 Web 加最小 e2e(登录→发消息→工具行→权限弹窗)当回归底线
Q2
27 条 workflow:issue 去重/triage 用 agent、docs 多语同步、storybook
2 条
用自己的 headless 跑 triage.yml 式自动化,本身就是产品演示
Q3
AGENTS.md + CONTEXT.md(领域术语表 + 关系 + 开放问题)
CLAUDE.md 极详尽(实现记忆)
ACECode 的 CLAUDE.md 更有用;可以借鉴 CONTEXT.md 的"术语表"形式给 session/goal/loop 立一份
Q4
安装:curl 脚本 / npm / brew / choco / scoop / mise / docker / AUR / nix
npm + GitHub Releases + 自更新
补 brew tap / scoop / winget 三条低成本渠道
这些是 opencode 没有 或只有雏形的,也是"超越"的根基:
能力
ACECode
opencode 对应物
Agent Browser(CDP 级点击/填表/截图/evaluate,双宿主,开发宽松策略)
src/adapters/tool/agent_browser/、src/apps/desktop/agent_browser_*
无
图像生成/编辑工具
image_generate
无
Remote Control(IM 通道托管会话、提问桥接、出站摘要)
src/host/remote_control/
只有 Slack 包(云侧)
Loops(本地定时任务 + workspace_touched 审计)
src/host/loop/
只能借 GitHub Action schedule
Thread Goals(自主续跑、budget/usage 状态机、in-turn steering)
thread_goal_store、maybe_continue_goal
无
子代理写边界继承 + 事后 workspace_touched 兜底
fix-subagent-write-boundary
后台子代理仍是实验 flag
蜂群/网状多代理(进行中)
add-mesh-swarm-mode
无
PA 内网适配(错误识别、预算学习、随机拒收救援)
src/adapters/pa/
无
Expert 组件(头像状态、能力范围)
src/domain/experts/
agent 无 UI 实体
Vision 子代理(主模型无视觉时自动路由)
vision_analyze
无(读图直接给模型)
记忆工具(memory_read/write 索引)
src/domain/memory/
无(只有 AGENTS.md)
Prompt-cache 前缀不变量的测试守卫
RequestPrefixIsByteStableAcrossIterationsInATurn
无同等测试
主题 AI 生成 + 图标/标题配色 + EVA 资源包
theme_create
33 套静态 JSON
Windows 纵深(ConPTY/winpty、conhost 兼容布局、自绘 toast、junction 坑)
多处
官方建议 Windows 用 WSL
会话标题跨 daemon、分页、attention 节流等性能修复
CLAUDE.md 记录
SQLite 天然没这些问题
中文文案、中文 IM、国产模型(Kimi/GLM/DeepSeek DSML 修复)
全局
只有 kimi.txt 提示
P0(门槛项,建议一个迭代内并行开 4 个 openspec change)
权限 2.0 (P1 + P2):
新增 config.permission 段,语义照抄 opencode(键 = 工具/能力名,值 = allow|ask|deny 或 {pattern: action},最后匹配胜,~ 展开,.env 默认 deny)。
bash 走"命令拆分 + arity 前缀词典","总是允许"记 git status * 级模式;可先用 tree-sitter-bash 的 C 库(ACECode 已是 C++,比 opencode 的 wasm 更顺),或先用简单分词拿到 80%。
现有 4 档模式保留为规则集的预设(default/accept-edits/yolo/plan = 四组默认规则),避免破坏 TUI/Web 现有交互。
项目级配置 (C1):<worktree>/.acecode/config.json(+ .jsonc)与全局合并,允许 saved_models(不含 key)、permission、mcp_servers、project_instructions、agents、skills.disabled;发布 JSON Schema 到 assets/;{env:X}/{file:p} 替换。
Agent 定义 + variants (A2 + M1):Markdown agent(frontmatter:description/model/variant/prompt/permission/steps)落在 ~/.acecode/agents 与 .acecode/agents;spawn_subagent 增 agent 参数;Expert 组件改为"agent 的桌面壳"而不是并行体系;/thinking 或 /variant 命令 + TUI 快捷键 + Web 下拉。
模型族提示 + webfetch + 嵌套指令 (A1 + T1 + A3):三个都是 S 级代价、高频收益,可并作一个 change。
E1 OpenAPI schema(先从 daemon-api.md 反推出 openapi.json,加契约测试);E2 ACP(acecode acp,stdio JSON-RPC,复用 SessionRegistry);E3 GitHub Action(headless 包装 + 评论回写)。
S1 SQLite 会话存储(迁移工具 + 双写过渡);S2 export/import。
T4 file_read 直接返回图片/PDF;T8 edit 容错层;T2 shell 工具 workdir/按 shell 描述;A4 结构化输出;A5 steps;A6 prune;A7 task_id 续跑。
U1 键位配置 + U2 命令面板 + U3 外部编辑器(8 月报告 Phase 1 欠账)。
W2 Review 行评论;P3 external_directory;P6 managed config;C2/C3 instructions glob + references。
M2 Gemini/Bedrock 原生协议;S4 attach;S5 stats;U5/U7/U8;W1/W4;E4 VS Code;E5 两个钩子;C5 formatters;T6 CodeMode 观望。
P2 权限规则 ──→ C1 项目级配置(规则要能入库)──→ A2 agent 定义(per-agent permission)
A1 模型族提示 ──→ T7 apply_patch(GPT 系工具面)
S1 SQLite ──→ S5 stats / 会话搜索
E1 OpenAPI ──→ E2 ACP / E4 VS Code / SDK
Effect/TS 双运行时重写 :opencode 的 V2 core 是它自己的债,不是我们的方向。
Zen/Go 模型网关、云 console、enterprise 按席收费 :商业形态问题,不是产品能力。
Electron :ACECode 自研壳的体积/启动优势要守住;只补自动更新。
npm 插件运行时 :8 月报告已定;hooks + MCP + 项目级配置覆盖 90% 场景。
65 语 i18n :先做英文质量,其余等有分发需求再机翻。
CodeMode :等它从 experimental 出来再评估。
6. 与 2026-08 报告 Phase 1 的衔接
8 月报告 Phase 1 的五项(/thinking、Ctrl+G 外部编辑器、会话元命令、离线开关、/hotkeys)截至本次核实 均未落地 (src/apps/tui/commands/ 无 thinking/effort/hotkeys 命令,src/apps/tui 无 keybind 机制,$EDITOR 仍只用于 /memory edit)。本报告的 M1、U1、U3 与之重叠,建议直接合并到 P0/P1 排期,不再单独立项。
opencode:读 AGENTS.md、CONTEXT.md、packages/web/src/content/docs/*.mdx(36 页)建立功能清单,再逐项进 packages/opencode/src、packages/core/src、packages/plugin/src、packages/tui/src、packages/app/src、packages/llm/src 核对实现存在且非 stub。
ACECode:对 src/adapters/tool/builtin_tool_registry.hpp、src/apps/tui/commands/*.cpp 的注册点、src/domain/permissions/permissions.hpp、src/base/config/config.hpp、src/engine/prompt/system_prompt.cpp、docs/hooks.md 做 grep 级核实;"无"的结论均来自 grep 零命中 + 目录结构确认。
未核实、只依据文档的项已在表中用"docs"或"需核对"标出。