一、先说结论:这是个什么东西
ZCode ,官网 zcode.z.ai,仓库 github.com/zai-org/ZCo...,Apache-2.0 协议,TypeScript 写的。出品方是智谱 Z.ai(2513.HK)。
官方给自己的定义是一句英文: "Z.ai's coding agent harness. Powerful, intelligent, extensible."
注意这个词------Harness。
它不是 IDE 插件,不是代码补全工具,而是包裹模型的那层壳:负责任务编排、上下文管理、终端与文件读写、权限 judgment、Git 检查点、子智能体协作。模型是发动机,Harness 是底盘、方向盘和刹车。
过去两年大家都在聊模型有多强,很少有人聊这层壳。而恰恰是这层壳,握着你所有的代码、密钥和操作权限。
顺手放一组我写稿时查到的实时数据:
| 项目 | 数值 |
|---|---|
| GitHub Stars | 645(2026-09-21 09:30 查,开源约 21 小时) |
| Forks | 159 |
| 语言 / 协议 | TypeScript / Apache-2.0 |
| 仓库体量 | 38.6 MB |
| 仓库创建 | 2026-09-20 20:01(北京时间) |
| 提交数 | 2 (Initial commit + feat: open source) |
| Open Issues | 11 |
| 运行环境锁定 | Node.js 24.14.0 / pnpm 10.33.2 |
值得注意的是:755 个 star 里,一半以上是这次争议之后才点的。这个背景不能跳过,否则你看不懂它为什么开源。
二、先补一段背景:为什么是昨天
跳过这段,这篇文章就立不住。
| 时间 | 事件 |
|---|---|
| 2026-07 | ZCode 正式发布,定位 GLM-5.3 的官方 Harness |
| 2026-09-18 | 社区出现讨论:ZCode 疑似在未经明确许可的情况下上传用户代码库相关数据到第三方对象存储 |
| 2026-09-18 | 智谱通过官方群组向受影响用户致歉,称问题源于「代码库索引」功能------用于支持会话检查点恢复、历史版本回退与 Repo Wiki;该功能上线初期默认开启 |
| 2026-09-19 | 讨论扩散至海外,有开发者质疑覆盖范围包含 Git 完整历史,且加密密钥不在用户侧 |
| 2026-09-20 | 智谱承诺开源,并启动第三方安全审计;同日 MaaS 平台宣布上线「数据内容不留存」功能 |
| 2026-09-20 20:01 | zai-org/ZCode 仓库创建,提交标题 0 |
| 2026-09-21 | 官方再致歉并公布整改结果:v3.14.0 已移除 Repo Wiki、切断本地仓库快照生成与上传链路;中国信通院确认相关存储桶「云端零数据」,绿盟科技确认对象与存储桶均已删除;承诺今后每月公布代码安全审计报告 |
智谱在回应里有一句挺实在的话:
"做 ZCode 的初衷很简单,Claude Code 做得很牛,国内也应该有一个,让大家都能用上。今天我们把 ZCode 开源,并希望和社区一起继续探索 Harness,看看好的 Harness 如何释放模型能力。"
💡 我觉得这件事真正的价值在这里 :它把一个长期被混淆的命题摆到了台面上------模型权重开源 ≠ 你能审计跑模型那层壳。
GLM 系列一直是开源的,但开源的是权重;真正接触你文件系统、终端、Git 历史的那层 Harness,此前是闭源的。你可以在本地跑模型,但你没法检查那个每天读写你代码仓库的客户端到底干了什么。这次开源动的正是后者。
三、它到底交出来了什么:三种皮,一整套骨
很多"开源"只放 SDK 或插件层。这个仓库不是------整个客户端连锅端了。
| 形态 | 用途 | 启动方式 |
|---|---|---|
| Desktop | Electron 桌面应用 | pnpm dev:desktop |
| Web / ZCode CLI 发行版 | TUI、Web、后端和 Agent 打包成一个自包含运行包 | pnpm dev:web / zcode --web |
| Agent CLI | 终端里跑的 zcode,同时给 Desktop 和 Web 提供 Agent 运行时 |
pnpm --filter @zcode/cli dev |
根目录 packages/ 下有 14 个子包:
| 包 | 职责 |
|---|---|
desktop |
Electron Main、Host、Renderer 与桌面打包 |
web / server |
Web 客户端 / HTTP·WebSocket 服务与远程连接 |
zcode-server-cli |
独立 Server 启动与进程管理 |
ui / services |
共享 React 组件与 Zustand 状态 / 业务服务与持久化 |
shared rpc client |
共享协议与类型、RPC 框架、Agent 客户端 SDK |
provider provider-node |
Provider 公共能力与 Node 实现 |
formal-proof |
形式化证明相关(官方未展开说明) |
model-option-map |
模型参数映射 |
zcode-cua |
Computer Use Agent 入口 |
apps/zcode-cli/ 里还嵌着一个完整的 pnpm workspace,15 个子包:core、cli、tui、adapters、browser-use-plugin、superpowers-plugin、dynamic-workflow、dynamic-workflow-runtime、node-repl-host、swift-bridge、telemetry、i18n、debug、contracts、shared-types、bootstrap。
几个能看出工程成熟度的细节:
- Agent 运行时零生产依赖 。只用 Node 内置模块做参数解析和终端控制,构建产物
dist/zcode.cjs是个普通 Node bundle。 - SEA 是可选路径不是唯一路径。可以用 Node 的 single-executable 特性打成单文件可执行;如果某个平台 SEA 崩了,普通 Node 包自动兜底。README 里明确写了这条降级策略。
- 版本锁在 0,Node 24.14.0 / pnpm 10.33.2,跨平台工具链统一。
- 仓库根目录甚至带着
.agents/skills/,里面是给 Agent 自己用的工程技能:agent-browser、ai-elements、architecture-governance、dep-refs、dogfood、electron、feature-boundary-planner、react-best-practices。
💡 这一套 0 我特意多看了两眼。 它不是给用户的功能,是这家公司自己用 Agent 写这套代码时积累的工程约定。把它连同产品源码一起开源,某种程度上比源码本身更能说明"这代码是不是 AI 生成的"。
四、Harness 的通用零件:它和 Claude Code 长得很像
作为一个 Harness,它的可编排面基本覆盖了这一代 Coding Agent 的事实标准。
| 事件 | 能干什么 |
|---|---|
SessionStart |
会话上下文初始化后、首条 prompt 前触发,可注入上下文 |
UserPromptSubmit |
用户 prompt 落库前拦截(continue: false),或补充上下文 |
PreToolUse |
工具执行前 deny / ask / allow,可改写工具入参 |
PermissionRequest |
权限决策时可批准、拒绝、修改待决工具入参 |
PostToolUse |
工具成功后追加模型可见上下文 |
PostToolUseFailure |
工具失败后追加恢复线索 |
Stop |
回合即将结束时要求"再想一步"(continue: true),重复续接有上限防死循环 |
事件集几乎是 Claude Code 的一比一映射。进程钩子通过 stdin 收一个 JSON、stdout 吐一个 JSON,退出码 2 表示显式拦截。
Hooks 默认关闭------这点很关键,默认不执行才能保证"装上就有惊喜"不会发生。
json
{
"hooks": {
"enabled": true,
"timeoutMs": 60000,
"maxOutputBytes": 32768,
"events": {
"PreToolUse": [
{
"matcher": "^(Bash|Write|Edit)$",
"hooks": [
{ "type": "process", "command": "node",
"args": ["./scripts/pre-tool-hook.mjs"], "timeoutMs": 5000 }
]
}
]
}
}
}
支持 stdio / http / sse 三种传输。工具注册为 mcp__<server>__<tool> 命名空间,终端里用 /mcp list、/mcp status、/mcp connect、/mcp disconnect 直接管理当前会话的连接。
| 概念 | 说明 |
|---|---|
| Official Marketplace | 官方唯一分发渠道,id 为 zcode-plugins-official |
| Builtin Plugin | 随应用包分发、启动时播种进市场,默认启用 |
| CDN Plugin | 通过官方 CDN 以 sha256 校验的 zip 包按需下载安装 |
| Personal Source | 用户自己加的 git / URL / 本地目录来源 |
plugin.json 支持 skills、commands、mcpServers、userConfig 四类贡献,支持 ${ZCODE_PLUGIN_ROOT}、${ZCODE_PLUGIN_DATA}、${ZCODE_PROJECT_DIR}、${user_config.key} 等变量展开(且只会展开 ZCODE_ 前缀的环境变量,这是个不错的安全边界)。
内置且默认启用的官方插件:browser-use、document-skills、skill-creator、zcode-guide。 内置但默认关闭的:ios-simulator、android-emulator、restore-legacy-sessions。
💡 0 / 1 / 2 / 3 这套四件套,基本已经成行业通用接口了。 各家名字不同,骨架几乎一致。这也是为什么"把 Harness 单独开源"这件事有意义------它把「怎么给 Agent 装能力」的协议层面公开出来了。
五、几个不太一样的地方
1. 闲时任务(idle-time tasks)
这是我觉得设计得最巧的一块。除了常规定时任务,ZCode 有一套「闲时」队列:通过取号排队、票据状态同步来执行不紧急的任务,在算力富余时段跑,不消耗套餐额度。
NOTICE.md 里专门用一节讲"闲时任务票据与状态同步"------包括存在待处理票据时后台可能持续请求。把算力波谷包装成产品权益这件事,国内厂商做得比海外早。
2. 记忆(Memory)的默认值不统一
独立 CLI 的默认配置启用 记忆(自动分析已保存会话、持久化并在后续任务复用);桌面应用的设置默认关闭。同一个产品、两个入口、相反的默认------这种不一致本身就值得记录在案。
3. 远程执行锚在实际环境里
支持 SSH / WSL / Docker 远程工作区,Agent 直接在目标环境里跑代码和命令,而不是在本机代理。会话数据默认落在 ~/.zcode/cli/db/db.sqlite。
4. 它 Markdown 里给了完整的产品路线残影
从 NOTICE.md 的措辞能反推出官方版还有这些能力:手机 Remote 扫码、微信/飞书 Bot 远程跟进、Git 图谱、Wiki 架构导读、编辑历史对话、四档执行模式与推理强度调节、子智能体分工。
六、整篇文档里我最想让你读的一段:NOTICE.md
这份 70 行的文件,写得比很多安全白皮书诚实。我挑几条直接放:
① 官方 Coding Plan 的模型网关转发
当前对代码列出的两个官方 Anthropic 兼容模型端点按协议、主机、有效端口和路径匹配;命中时自动改发 ZCode 网关,保留请求方法、正文、查询参数及除 Host 外的请求头,包括请求中的认证信息 。此转发未设置额外的逐次用户确认。 实际网关 origin 可由
ZCODE_BASE_URL/ZCODE_ENDPOINT_ORIGIN配置改变。
💡 这条最值得单独拎出来说。 它不是漏洞------它是产品逻辑(订阅制 Coding Plan 要求流量过自家网关)。但它是那种"你以为在调 A,实际在走 B"的行为。以前这种事只能靠抓包逆向发现,现在它白纸黑字写在 NOTICE 里。这就是开源在透明度上最直接的价值:把"你本该知道但没人告诉你"变成"你可以自己读到"。
② Computer Use 目前是空壳
本仓库随附的 Computer Use 包为不可用占位实现,调用会返回不可用错误,不提供系统截图或操作能力。
产品卖点直接自曝成占位实现,这种坦诚程度在国内产品文档里罕见。
③ 权限与沙箱的边界说得很直
当前共享 Agent 执行适配器不提供默认的操作系统沙箱;工作目录、Git worktree、浏览器页面隔离和 Node REPL 的运行上下文,均不应被当作所有工具的系统级隔离保证。
还有一条容易踩的:共享运行配置默认 0 权限模式;独立 CLI 通过 1 执行非交互任务时,未指定 2 会采用 3。 跑 CI 的同学请务必显式传 --mode。
④ 凭据不是系统钥匙串
CLI 共享凭据文件使用加密机制,默认密钥可从本机环境信息派生;桌面/Node 服务的凭据同样采用本地加密文件,并非系统钥匙串。
加密是真的加密,但"加了密"和"只有你能解开"是两回事。这份文档至少没让你误以为它是后者。
⑤ 跨环境凭据同步没有逐项确认
SSH/WSL/容器:个人提供商配置、账号选择设置及允许同步的账号 API Key、OAuth 访问/刷新令牌等,可在环境首次上线以及连接存续期间相关配置或凭据变化时自动传入目标环境 ;该同步没有单独的逐项凭据确认步骤。
一句话总结这一节:它把"我们有哪些地方可能让你不放心"写成了正式文档。 在过去,这类信息只能靠社区拆解、逆向、抓包------而且要等到出事之后。
七、上手:怎么跑起来
前置:Git、Node.js 24.14.0 、pnpm 10.33.2 (版本以仓库根目录 mise.toml 为准)。所有命令在仓库根目录执行。
pnpm bootstrap
bootstrap 会装 workspace 依赖、准备桌面本地运行资源,并执行 build:bootstrap。
三个常用入口:
bash
# 桌面 dev
pnpm dev:desktop
# 想隔离数据目录
ZCODE_DATA_BASE_DIR="$HOME/.zcode-dev-home" pnpm dev:desktop:test
# Web dev:前端 :5173,后端 :3030
pnpm dev:web
# 命令行发行包安装后
zcode # 进 TUI
zcode --web # 起 Web 界面
zcode --help
打包:
bash
# 桌面(默认 macOS arm64)
pnpm bundle:desktop -- --os mac --arch arm64
# CLI 发行包,需先配置下载根地址
pnpm build:zcode --base-url https://your.cdn/zcode/
产物在 dist/zcode/,含 releases/<version>/zcode-<version>.tar.gz、sha256.txt、latest.json、install.sh。安装脚本默认装到 ~/.zcode/runtime,命令落在 ~/.local/bin/zcode。
一个诚实的前提 :大多数人其实用不到自己编译------直接装官方客户端就行。但如果你想知道"我用的这个客户端是不是这份代码编出来的",目前仓库没有可复现构建或二进制验真的承诺。源码公开和二进制可验证之间,还隔着一层。这一点后面会再提。
八、说点我的看法
先说值得肯定的。
1. 这是国内第一次有大厂把整个 Agent Harness 连客户端一起开源。 不是 SDK,不是插件,是完整工作台,Apache-2.0。这一步跨出去之后,后面再有人把 Harness 闭起来,理由就没那么好找了。
2. 时机难看,但结果实打实。 是被骂出来的开源没错,可用户能拿到的东西确实变多了。舆论压力传导成产品改进的闭环,比公关稿有价值得多。
3. 0 的诚实度超出预期。 愿意写"我们这里会把你的请求转发到自家网关、且不额外弹确认"的公司不多。这份文档本身,值得所有做 Agent 产品的团队当模板读一遍。
4. 工程底子扎实。 零生产依赖的运行时、15 个子包的 Agent workspace、明暗双主题、i18n、跨平台打包与降级策略------不是 demo 级代码,是从产品里完整切出来的。
再说几句保留意见。
1. 两个 commit 的仓库,历史是断的。 只有 Initial commit 和 feat: open source。你没法 git blame,看不到它是怎么演化到今天的,也无法判断某段代码是为了这次开源临时改的还是原本就这样。对审计来说,一次性的快照价值远不如连续历史。 如果真想把"交给社区监督"做实,保留或开放部分开发历史是下一步。
2. 开源的是代码,不是产品等价物。 NOTICE 明确写了"不承诺提供官方产品的全部功能及活动政策"。zcode-cua 就是直给的空实现。你 clone 下来跑起来,和你从官网下载的客户端,不是一回事。
3. 没有二进制可复现路径。 源码公开 ≠ "我装的这个包就是这份源码编出来的"。这恰恰是闭源 Harness 争议的根因,也是开源这步棋目前最大的缺口。如果能补上 reproducible build 或至少提供构建指纹,这次开源的说服力会翻倍。
4. 网关转发那条需要你自己做判断。 用官方 Coding Plan 就走网关------这是订阅的代价,商业上合理。但你至少要知道它存在,NOTICE.md 现在给了你这个知情权。
5. 每月安全审计是承诺,不是已交付物。 值得给一次机会,也值得到时候真的去读报告,而不是读完公告就算完。
一句话总结我的判断:
如果你在用或打算用 ZCode,现在你第一次有资格自己读一遍它到底做了什么------这件事本身就值一个 star。
如果你只是围观,那把 0 单独读一遍也够,它比任何公关稿都诚实。
最后
我一开始点开这个仓库,是冲着"看一场危机公关的收尾"去的。
翻完发现不是。它背后藏着一个更大的命题:模型越来越趋同的时候,真正决定体验、也真正掌握你数据的,是外面那层 Harness。 而过去两年,绝大部分 Harness 都是闭源的。
这次不管是被迫还是主动,第一个把壳拆开的公司出现了。
接下来值得观察的三件事:开发历史会不会开放、二进制能不能可复现验证、每月的安全审计报告能不能真的按时出。 这三件做到了,"开源"两个字才算立住。
相关链接:
- 官网:zcode.z.ai/
- GitHub:github.com/zai-org/ZCo...
- 风险声明全文:仓库根目录
NOTICE.md - Agent CLI 说明:
apps/zcode-cli/README.md - 社区:飞书社群 / Discord(见 README 顶部)
如果你正在用国内的 AI 编程工具,建议去把这个仓库读一遍------尤其是 NOTICE.md。至少比我预想的"又一次危机公关"要意外得多。
你现在在用哪个 Coding Agent?会为了开源换工具吗?评论区聊聊。