Skip to content

认识 ZCode:被骂"偷偷上传代码"的第 3 天,智谱把整个 AI 编程工作台开源了 ​

先讲一件有点黑色幽默的事。

2026 年 9 月 19 日,有开发者发现智谱的 AI 编程产品 ZCode 在生成 Repo Wiki 的时候,会把本地代码仓库打成一个快照、加密上传到阿里云对象存储。

社区炸了。这触碰的是程序员最敏感的那根神经——我的代码仓库,你凭什么传走?

然后剧情拐了个弯,拐得有点猛:

  • 9 月 19 日:官方发情况说明、致歉,披露原因和整改方案,承诺开源 ZCode 代码库,并给全体用户额外重置一次周额度;
  • 9 月 21 日:宣布整改完成,ZCode 正式开源,Apache-2.0 协议,把代码交给社区监督;
  • 同日:公布中国信息通信研究院(CAICT)与绿盟科技(NSFOCUS)的审计结果——zcode-prod 这个阿里云 OSS 存储桶为云端零数据,全部数据对象及存储桶本身已清除;v3.14.0 客户端移除了 Repo Wiki 功能及相应生成链路;
  • 9 月 28 日:新一轮补偿方案,付费用户给 8 张重置卡,全体用户连续 10 天发放 Token。

我盯着这个时间线看了半天,脑子里只有一个念头:

一个 AI 编程工具把自己整个工作台——桌面应用、Web 客户端、后端服务、Agent 运行时——全开源了,起因是一次信任事故。

这大概是 2026 年我见过最"实在"的道歉方式。PPT 和承诺书都能写,源码不能。

而且说实话,这件事背后有个更值得聊的判断:**当 AI 编程 Agent 能读你的文件、跑你的终端、动你的 Git、还能联网,你就必须能读到它的每一行源码。**否则"它到底干了什么"这个问题,永远只能靠厂商自证。

什么是 ZCode ​

ZCode 是智谱(Z.ai / Zhipu AI)的 AI 编程工作台(Agentic Development Environment,ADE),2026 年 7 月正式发布,2026 年 9 月 20—21 日以 Apache-2.0 协议开源(仓库:zai-org/ZCode,当前版本 v3.14.3)。它不是一个"聊天窗口 + 代码补全",而是一个把任务上下文、文件读写、终端、Git、权限、浏览器、远程主机全部收进同一个任务里的 Agent 运行环境,一次提供桌面应用(Electron)、浏览器界面和终端 Agent(CLI / TUI)三种形态。

先把"它不是什么"说清楚:

  • 它不是一个模型。它是跑模型的那一层壳——模型你可以自己选,见下文;
  • 它不是插件。它是独立的工作台,桌面版自带文件树、任务列表、终端、Git 控制、Review、内置浏览器;
  • 它不是"开源了个空壳"。仓库里 packages/desktop(Electron)、packages/web、packages/server(HTTP / WebSocket)、packages/zcode-server-cli、packages/ui、packages/services、packages/shared / rpc / client、packages/provider,以及 apps/zcode-cli(Agent CLI、TUI、运行时与工具)全都在,而且 Agent CLI 是普通目录,不是 submodule,克隆下来就能跑。

这次开源的完整仓库结构,官方 README 里列得很直白:

目录职责
packages/desktopElectron Main、Host、Renderer 与桌面打包
packages/webWeb 客户端
packages/serverHTTP / WebSocket 服务与远程连接
packages/zcode-server-cli独立 Server 启动与进程管理
packages/ui共享 React 组件、hooks 与 Zustand 状态
packages/services业务服务与持久化
packages/shared / rpc / client共享协议和类型、RPC 框架、Agent 客户端 SDK
packages/provider / provider-nodeProvider 公共能力与 Node 实现
apps/zcode-cliAgent CLI、TUI、运行时与工具
scripts / config / third-party构建维护脚本、内置配置与第三方声明材料

技术栈是 TypeScript + pnpm workspace monorepo,版本钉死在 Node.js 24.14.0 + pnpm 10.33.2(写在 mise.toml 里)。截至 2026 年 9 月 24 日前后,仓库约 6.8k Star、2k Fork。

我一直觉得,"AI 编程工具"这个品类的终局不是谁的模型更聪明,而是谁来定义你和 Agent 说话的那个界面。 智谱给出答案的方式很直接:不只是卖 GLM 的 API,而是自己把桌面端、Web 端、CLI 全做了,然后把整套东西开源。 这是 Claude Code、Codex CLI、Cursor 那条赛道上的第 N 个玩家,但它是第一个把源码摊开的国产选手。

它有什么特点 ​

  • Goal Mode:给 Agent 一个"完成条件",它自己一轮轮干到通过为止。 这是我认为 ZCode 最有辨识度的设计。

    你在会话里敲一句:

    /goal make pnpm test pass

    Agent 就有了可以自查的目标:每轮结束后自己跑一遍验证,没过就再开一轮。什么时候停?验证通过、你手动暂停或清除目标、或者跑到了你配置的用量预算。

    这解决的是 Coding Agent 最烦人的那个体验:你交代一个任务,它改了七轮,最后一脸真诚地说"应该可以了"。 有了 Goal Mode,"应该可以了"变成一个可被机器判定的条件。这一下就把 Agent 从"陪聊"推进到"交付"。

  • 四档执行模式,权限粒度是真的在给。 不是笼统一个"YOLO 开关":

    模式行为
    Ask before changes每次改文件、每次跑命令都要你确认(默认模式)
    Edit automatically文件修改自动执行,但命令仍需确认
    Plan先分析项目,等你批准方案后再开工
    Full access减少确认提示,给可信任务用
  • 内置浏览器:前端任务能闭环。 桌面版自带浏览器面板,Agent 可以打开你的本地 dev server 或线上页面,点按钮、填表单、滚动、截图。也就是说一个前端需求,从改代码到看渲染结果,可以在同一个任务里跑完,不用你自己在浏览器里点一遍再回来骂它。

  • 远程开发:项目可以不住在本机。 文件访问、终端命令、Git 操作、Agent 执行,整体搬进 SSH 主机、WSL 发行版或本地 Docker 里跑;桌面客户端继续管你的账号、模型配置和任务控制。

    这对"代码必须留在内网 / 开发机"的团队非常关键——顺带说一句,考虑到这次事故的起因,远程开发 + 源码可审这个组合,大概正是很多团队现在最想看到的形态。

  • Subagent + 动态多智能体工作流。 内置 general-purpose 和 Explore 两类子智能体,自定义或插件子智能体可以各自定义指令和模型。更大的活可以用一份 workflow 定义去协调多个 Subagent,而且 v3.14.3 起,运行中的工作流并发数可以直接调,不用停任务。

    v3.14.3 的 Release Notes 里还有几条很"工程"的改进,我挺喜欢的:工作流脚本提交与修改的 token 消耗降低了、大工作流的实时状态显示改好了、修掉了工作流把界面搞崩的问题。看得出来是真有人在天天用。

  • 扩展点很全:Plugins / Skills / Commands / MCP / Hooks。

    • 一个 Plugin 可以打包 Skills、Commands、Subagents、MCP servers 和 Hooks;
    • Skills 用 SKILL.md 写可复用流程(代码审查、生成 Release Notes 之类);
    • Commands 存更短的提示词动作;
    • MCP 支持 stdio / HTTP / SSE 三种传输,而且能直接从 Claude Code、Codex CLI、OpenCode 导入已有 MCP 配置——这一手很聪明,迁移成本几乎归零;
    • Hooks 可以在会话启动、提示提交、工具调用、权限请求、失败、任务完成这些事件周围挂本地进程。

    扩展还能按 user 或 workspace 两种作用域存放,团队可以共用一套。

  • 模型随便换,不绑死 GLM。 官方列的接入清单:

    GLM Coding Plan、Z.ai / BigModel API、Anthropic、OpenAI、OpenRouter、Moonshot(月之暗面)、MiniMax、Xiaomi MiMo,以及任何实现了 Anthropic 兼容或 OpenAI 兼容的自定义端点。

    ZCode Agent 对 GLM-5.3 和 GLM-5.3-Flash 做了深度调优(8 月 27 日 ZCode 接入刚开源的 GLM-5.3-Flash,并深度适配 GLM-5.2),依托 1M 长上下文支撑从规划、编码、审查到迭代的全流程。

  • 三端同一套运行时,免 Electron 也能跑。 命令行发行包把 TUI、Web、Agent 打包进一个 zcode 命令:

    bash
    zcode                 # 无参数 → 进入终端 TUI
    zcode --web           # 启动本地 Web 界面

    Web 模式默认只监听 127.0.0.1、默认不启用访问令牌、自动选空闲端口并打开浏览器;想局域网访问就 --host 0.0.0.0,此时默认生成访问令牌并在终端打印带 token 的链接。可以用 --token 自己指定,或 --no-token 关掉。

    桌面版支持 macOS / Windows / Linux,v3.14.3 的安装包是 ZCode-3.14.3-mac-arm64.dmg(177 MB)和 ZCode-3.14.3-win-x64.exe(143 MB)。

用在哪儿 ​

长任务改造:给老项目加测试、做迁移、修一串 lint。 这类活的特点是"轮次多、标准明确"。Goal Mode 正好对上——/goal make pnpm test pass、或者 /goal 加上"某目录下不再出现某个 deprecated API"。有明确的判定条件,Agent 才知道自己该不该停。

前端开发闭环。 改组件 → 起 dev server → 内置浏览器打开页面 → 点一遍 → 截图看效果 → 回去再改。以前这是"人肉在浏览器和编辑器之间来回切"的活,现在能收在一个任务里。

内网 / 远程开发机上的项目。 代码不能出内网的团队,用 SSH 远程开发把 Agent 执行放在远端,本地客户端只管账号、模型与任务控制。但请务必先读完 NOTICE.md——功能范围、维护规则、执行与数据风险都写在那里,这次的事故就是最好的提醒。

需要接内部系统的团队。 MCP + Hooks + Skills 三件套,是把它塞进公司现有流程的入口:MCP 接内部服务,Hooks 在权限请求和任务完成时挂你的审批逻辑,Skills 把团队的代码规范和发布流程固化成 SKILL.md。

不想被单一模型绑死的人。 你今天用 GLM Coding Plan,明天想试 MiMo 或者自建的 vLLM 端点,改个配置就行。对成本敏感的场景,这个自由度很值钱。

不适合的地方也说清楚:

  • 想要"装完就能白嫖"的同学——ZCode 应用本身免费开源,但模型是按你接的账号、Coding Plan、API Key 或第三方服务计费的。开源的是工作台,不是算力;
  • 浏览器自动化只在桌面版有;
  • 远程同步会传输部分开发资源与配置(开发态经 SFTP 上传),敏感配置同步前请自己过一遍;
  • 用私有仓库的同学,务必逐项确认:你选的模型服务商、执行模式、启用的扩展、远程主机是否可信,以及每个功能的数据流向。

初体验 ​

路线 A:不折腾,直接用桌面版 / CLI 发行包。

去 GitHub Releases 下 v3.14.3 对应平台的安装包,macOS 拖进"应用程序"即可。本地构建的产物没签名,被 macOS 拦截时执行:

bash
sudo xattr -rd com.apple.quarantine /Applications/ZCode.app

路线 B:从源码跑起来(推荐,既然都开源了)。

bash
git clone https://github.com/zai-org/ZCode.git
cd ZCode

# 环境:Git + Node.js 24.14.0 + pnpm 10.33.2(以 mise.toml 为准)
pnpm bootstrap      # 装 workspace 依赖 + 准备桌面本地资源 + 执行 build:bootstrap

pnpm dev:desktop    # 起桌面版(Electron + 源码监听)
pnpm dev:web        # 起 Web 开发态:前端 5173、后端 3030

CLI 单独开发:

bash
pnpm --filter @zcode/cli dev --help
pnpm --filter @zcode/cli dev

# 构建 CLI 及其 workspace 依赖
pnpm --filter @zcode/cli... build
node apps/zcode-cli/packages/cli/dist/zcode.cjs --help

路线 C:只想最快验证 CLI 全链路。

bash
# 本地解压运行,不需要上传也不需要安装
zcode_version=$(node -p "require('./dist/zcode/latest.json').version")
mkdir -p dist/zcode/debug
tar -xzf "dist/zcode/releases/$zcode_version/zcode-$zcode_version.tar.gz" -C dist/zcode/debug

node dist/zcode/debug/zcode/bin/zcode.mjs --web \
  --workspace "$PWD" --port 3030 --no-open

然后浏览器打开 http://127.0.0.1:3030,Web 页面和 Agent 由同一个后端服务托管,一条链路全都验证到了。

几个你会立刻用到的环境变量:

变量用途
ZCODE_DATA_BASE_DIR应用数据基目录,数据写入其下的 .zcode/
ZCODE_SERVER_WORKSPACEWeb 后端的工作区路径
ZCODE_BUILTIN_PROVIDER_CONFIG_FILE本地 Provider 配置文件路径;不设则用内置配置
ZCODE_DIST_BASE_URL命令行安装脚本的下载根地址

四个坑,提前给你标出来:

第一,Node.js 和 pnpm 版本是真的钉死的。 24.14.0 / 10.33.2,写在 mise.toml 里。别拿你机器上那套老环境硬跑,先装 mise 或者 nvm 切版本。

第二,旧 Lite 用户要迁移。 官方明确说了:Lite 用户必须改用新的构建命令、环境变量和新安装脚本,而且新安装不会删除旧 Lite 目录,也不会迁移或删除已有会话数据。想清干净,自己动手。

第三,pnpm build:zcode 不会替换 PATH 里已有的 zcode。 构建完如果命令还指向旧安装,用 command -v zcode(Windows 用 where.exe zcode)查一下。这个坑我敢说十个人里有八个会踩。

第四,安全那根弦别松。 就算源码开源了、审计报告也出了,"Ask before changes" 永远是默认模式这件事本身就说明了官方的态度。别一上来就切 Full access,尤其是接了第三方 MCP server 或连了不明远程主机的时候。

进阶 ​

如果这篇文章你只记住一件事,我希望是这个判断:

AI 编程工具的下半场,竞争的不是模型,是"你敢不敢把权限交出去"——而这件事最终只能靠开源和可审计来解决。

我们这一年看着 Coding Agent 的权限越来越大:读文件、写文件、跑命令、动 Git、开浏览器、连远程主机。能力每加一项,风险就加一档。到今天,"Agent 到底对我的代码做了什么"这个问题,闭源产品只能给你一份承诺书;而 ZCode 这次给的是 Apache-2.0 的仓库、一份第三方审计报告,和一个已经删掉的上传链路。

冷水照例要泼:

第一,开源不等于无风险。 源码摊开只是让你能审,不等于你审了。私有仓库用户仍然要自己确认模型服务商的数据处理方式——智谱也承诺了 MaaS 平台将支持申请 no-retention(标准模型调用的输入输出不做静态存储,仅用于当前请求),但 Batch API、File API 以及出于法律、安全与滥用防控需要保留的信息,仍可能按一定期限留存。

第二,这是一次事故驱动的开源,不是产品规划的自然结果。 好处是诚意足、动作快;隐忧是仓促——仓库开源初期只有三个 commit,文档以中文为主,构建链条(Node 版本、远程资源、mock-cdn、SFTP 上传)对新人不算友好。把它当"能用的工作台",别当"成熟的社区项目"。

第三,成本在模型侧。 工作台免费,但你跑 Goal Mode 一轮轮迭代,烧的是 token。v3.14.3 专门优化了"工作流脚本提交与修改的 token 消耗",本身就说明这块是真实痛点了。上 Goal Mode 之前先设好用量预算。

我的建议很具体:**如果你在用 Claude Code 或 Codex CLI,今天就可以花半小时试一下——直接从它们导入现有 MCP 配置,接一个你已经付费的模型端点,挑一个"有明显判定条件"的任务(比如让某个目录下的测试全绿)开 Goal Mode,然后只看两件事:它几轮收敛,以及最后是不是真的自己验过了。**这两件事决定 ZCode 值不值得进你的日常工具箱,比任何宣传稿都准。

再往深一层,我建议你去读仓库里三个文件:DESIGN.md(架构取舍)、AGENTS.md(Agent 的行为约定)、以及 NOTICE.md(功能范围与数据风险)。尤其是 NOTICE.md——一个愿意把"执行与数据风险"单独写成一份声明的项目,值得你认真读完再决定要不要把代码交给它。

更多开源技术干货和学习资料,关注公众号「遇码」,领取专属福利。

遇码MeetCoding 开源技术社区