“ZCode 是个什么东西?”这几天我在技术群里被问了好几次。起因是智谱把 ZCode 开源了,GitHub 仓库一公开,讨论就炸了:有人说它是“国产 Claude Code”,有人说“不过是套了个终端壳子”,还有人直接问“它会不会偷我的代码”。这些说法其实都只说中了一小部分。ZCode 本质上是一个跑在终端里的 AI 编程代理,你用自然语言说需求,它自己去读项目文件、改代码、执行命令、跑测试,最后把结果汇报给你。它适合两类人:一类是想用国产大模型试试 Agent 编程、又不想依赖国外订阅服务的人,另一类是刚听说 AI 编程助手、想找一个能真正跑在自己机器上的开源方案的人。
这篇里我把几个最实际的问题一次聊透:ZCode 到底是什么、本地怎么跑通、跟 Trae、WorkBuddy 放一起怎么选、网上说的“偷代码”争议到底怎么回事,以及我连续高强度用了一周之后踩到的坑。看完你基本能判断自己要不要装,装完也不至于走太多弯路。
1. 智谱开源 ZCode:定位、玩法与“开源”这件事的分量
1.1 它不是 IDE,是替你动手干活的终端代理
很多人一听“AI 编程工具”就默认是 IDE 插件,比如 Copilot、Cursor 那样的界面。ZCode 完全不是这个形态。它更像你雇了一个能进你电脑的实习生:你打开终端,进入项目目录,直接说“把登录接口的超时时间从 5 秒改成 3 秒,顺便补上单元测试”,它会自己拆解任务、读取相关文件、修改代码、跑测试,如果测试挂了它还会自己再看一眼日志、再改一版,直到通过或者确实干不动了再来问你。
这个过程和传统“代码补全”有天壤之别。补全工具是你在敲代码,它帮你续写;ZCode 是你不敲代码,它替你从头到尾执行。跟 Claude Code 属于同一类产品,只不过底层模型换成了智谱的 GLM 系列,并且把整个工具链开源出来。对国内开发者来说,这意味着不需要订阅海外服务,直接用国产模型就能体验完整的 agentic coding 工作流。
1.2 一次典型任务里,ZCode 内部到底做了什么
我拿一个真实例子说。我让它在一个 Python 项目里“写一个脚本,统计 src 目录下所有 .py 文件的行数,输出到终端”。它没有直接甩给我一段代码让我自己跑,而是自己创建了一个count_lines.py,写完源码后自动在终端执行,确认输出结果正常,然后才告诉我完成。
这个流程拆开看大致是:先解析任务,把“统计行数”拆成“遍历目录、过滤文件、统计、格式化输出”几个子目标;然后它会读取项目结构,决定新建文件还是改现有文件;写代码时它会结合项目已有风格,比如这个项目用的是 f-string 还是 format,它会尽量保持一致;执行完命令后它会读输出结果,判断是否达到预期,如果报错就进入“读错误信息—定位原因—修改—再执行”的循环。这种自主迭代的能力,才是 Agent 编程和普通代码补全拉开差距的地方。
1.3 开源的价值:代码可审计、能力可扩展、信任门槛被拉低
这次事件的关键词不是“AI 编程”,而是“开源”。智谱没有把 ZCode 藏起来卖钱,而是把整个工程公开了,这对开发者的意义很直接。
首先是可审计。一个闭源工具说自己“不会上传代码”,你只能选择信或不信;开源之后,你可以直接去看它的请求构造逻辑、看它到底把哪些数据发出去了,甚至可以自己抓包验证。其次是可扩展。社区可以提交 issue、改进功能、适配更多模型,这让工具的迭代速度完全不一样。第三点是信任门槛。很多公司的项目代码是不能随便交给第三方服务的,但它们对“自托管 + 开源 + 可自查”的方案的接受度会高很多。智谱这一步棋,等于把选择权交回给了开发者。
顺便提一句:很多人在搜索时把“智谱”打成了“智普”,官网和模型名称都以“智谱”为准,找资料的时候别搜错字。
2. 从下载到跑通第一个任务:完整安装与配置流程
2.1 环境准备与安装方式
安装 ZCode 不需要什么重型依赖,前提是你有一个能用的终端,以及对应的包管理器。我这边是 Node 环境,直接用 npm 全局安装就行,命令大概长这样:
npm install -g @zhipu-ai/zcode如果你的环境更习惯 Python,官方仓库也提供了 pip 安装入口:
pip install zcode安装完成后终端里就会出现zcode命令。不同版本、不同渠道的安装方式可能略有差异,最稳妥的判断标准是看官方 README 里写的命令,不要照搬网上的旧教程。装完之后我建议先跑一个zcode --version确认安装成功,顺便看看当前版本,后续提 issue 的时候这个信息很有用。
2.2 注册账号与获取 API Key:容易被卡住的一步
ZCode 本身是开源的,但调用模型还是要通过智谱开放平台。所以你得先去申请一个 API Key,这步卡住了很多人,因为注册流程和常见的 AI 平台不太一样。
登录智谱开放平台后,进入 API Keys 管理页面,创建一个新的 Key,然后把它配置到环境变量里。大多数版本读取的是ZHIPU_API_KEY这个变量,你可以在终端里这样设置:
export ZHIPU_API_KEY=你的key但我强烈建议你不要只设置临时变量,而是把它写进 shell 配置文件(.bashrc或.zshrc),不然每次新开终端都要重新 export 一次。配置好之后,在项目目录里输入zcode启动会话,它会自动读取环境变量完成认证。首次启动可能会有一段模型初始化的等待时间,第一次用的人容易以为卡死了,其实是在加载会话环境。
2.3 第一次任务:选一个边界清晰的小需求
认证通过后,我第一次给它的任务是:“把当前目录下所有 markdown 文件里的 TODO 字样统一改成 FIXME”。这个任务范围很小、边界清楚,非常适合练手。
它先是扫描了目录,发现这个任务会影响三个文件,然后逐个打开文件、定位 TODO、替换成 FIXME,最后还跑了一个grep -r "FIXME" .来确认改动生效。整个过程中我完全没有手动改过一行代码。任务结束之后,它会展示本次改动的摘要,这时候我的建议是一定要自己再看一眼改动,用git diff检查它的修改是否合理,不要因为“AI 完成了”就把 review 这一步省掉。
第一次用的时候,任务范围越窄越好。你给它一个宽泛任务,比如“优化这个项目的性能”,它会在几十个文件里展开大规模改动,结果很难控制。先从小需求跑通流程,建立对工具的信任边界,再逐步放大任务的复杂度。
3. ZCode 和 WorkBuddy、Trae 放一起怎么选:实测对比与建议
3.1 三个工具根本不在同一个形态上
很多人在搜“zcode、workbuddy、trae work 开发软件哪个更好用”,其实这个比较本身就有问题,因为它们的定位差异很大。
Trae 是字节跳动推出的 AI IDE,它是完整编辑器形态,你直接在它里面写代码,AI 以补全、对话、Agent 面板的形式嵌入编辑器。适合习惯 IDE 工作流、不想离开编辑界面的人。WorkBuddy 更偏向协作式 Agent 平台,强调的是多个 AI 角色配合完成任务,而不是单纯给你一个终端代理。ZCode 则是纯 CLI Agent,打开终端就开始干活,跟你现有的编辑器无关。
把三者放在一起对比时,不如先问自己:你缺的是一个编辑器,还是一个能替你执行任务的代理?如果你是 VSCode 重度用户,缺的是智能补全和辅助,Trae 可能更顺手;如果你已经有自己熟悉的编辑器,缺的是一个能在终端里自动跑任务的助手,ZCode 这类 CLI Agent 才是对症的方案。
3.2 几个关键维度的实测感受
我用 ZCode 和 Trae 分别跑过同样一个任务:在一个小型 Go 服务里新增一个 HTTP 接口,并补上 handler 的单元测试。
在模型能力上,Trae 因为内置了多种模型可选,常规 CRUD 接口生成表现不错;ZCode 基于 GLM 系列模型,对中文需求理解很自然,任务拆解和按步骤执行的能力给我留下的印象更深。在可控性上,ZCode 因为所有操作都在终端里、每一步执行都能看到,我随时可以用 Ctrl+C 打断,而 Trae 里的 Agent 模式操作是封装在编辑器里的,打断和控制粒度相对粗一些。在资源占用上,IDE 形态的 Trae 本身就要吃不少内存,ZCode 就一个终端进程,轻量太多,跑在低配服务器上毫无压力。
下面这个表我每次给别人讲选型时都会贴出来:
| 对比维度 | ZCode | Trae | WorkBuddy |
|---|---|---|---|
| 形态 | 终端 CLI Agent | AI IDE | 多 Agent 协作平台 |
| 上手成本 | 低,装完即用 | 中,需迁移编辑器习惯 | 较高,需理解协作概念 |
| 模型 | GLM 系列 | 多模型可切换 | 按平台配置 |
| 开源程度 | 开源可审计 | 闭源 | 视项目而定 |
| 适合场景 | 脚本、重构、终端工作流 | 日常 IDE 开发 | 复杂任务分工 |
| 资源占用 | 极低 | 较高 | 较高 |
3.3 我的选择建议
如果是个人 side project、写脚本、做中小型重构,我首选 ZCode,因为它不绑架你的编辑器,改完代码回到你自己的工具链里继续干活。如果是团队固定在一个 IDE 里协作,Trae 这种完整 IDE 对新人更友好,学习成本更低。如果你有比较复杂的需求拆解场景,想同时让多个 AI 角色各管一摊,可以试试 WorkBuddy 这类协作平台。
说到底,工具是手段不是目的。我见过有人为了用某款 AI IDE 硬生生换了编辑器,结果生产力不升反降。选型先看形态,再看模型,最后看开源和隐私诉求,顺序反了就容易踩坑。
4. 说 ZCode“偷代码”的人,到底在担心什么
4.1 争议的本质不是 ZCode,而是所有云端 AI 编程工具
“zcode偷代码”这个说法最近出现频率不低。真相是什么?真相是:所有需要调用云端模型的 AI 编程工具,都涉及把代码发送到模型服务端的问题。ZCode 不是第一个,也不是唯一一个。闭源的 Claude Code、Copilot 一样有这个问题,只是大家默认接受了商业公司的隐私承诺。
要完成你的编程任务,AI 代理必须“看到”相关代码。它需要读文件内容才能理解需求、修改代码,需要把修改结果和错误日志拼进模型请求,让模型判断下一步动作。这是 Agent 工作方式的物理前提。关键问题只有一个:这些数据离开你的机器之后去了哪里、保存在哪里、会不会被拿去做别的用途。
4.2 代码的实际流向:我能通过源码确认什么
因为 ZCode 开源了,我做的事情很简单:把仓库拉下来,直接搜网络请求的构造逻辑。可以看到默认配置下,它会调用智谱的模型 API,请求体里包含系统提示词、当前会话的上下文、被读取文件的内容片段、终端命令的输出结果。这些内容确实会发送到智谱的服务器。
也就是说,如果你在一个目录里跑了 ZCode,而目录里有敏感源码、密钥、数据库连接串,那么这些信息中的相关片段有很大概率作为上下文进入模型请求。这不叫“偷”,严格来说是你使用云模型服务必须付出的代价,但代价的大小取决于你喂给它什么内容。源码不会自己飞出去,飞出去的是你让它“看到”的那部分。
4.3 开源的最大价值:你可以亲自验证,而不是赌厂商良心
为什么我会强调“开源”在这个争议里很重要?因为闭源工具出问题,你只能等厂商发声明、看公关文章;开源工具出了问题,社区会有人复现、有人提交 issue、有人把请求日志贴出来,所有人一起盯着。这是一种完全不同的信任模型。
我自己做了一个小实验:在本地起了一个抓包工具,把它作为 API 端点指向 ZCode 的请求地址,观察它的请求内容。结果是:确实只有当前任务相关的文件内容被发送,而不是整个仓库被打包上传。它会读取项目里的配置文件来判断语言、框架,但不会把你磁盘上的无关文件翻个底朝天。这个结论比任何隐私白皮书都让我放心,因为我亲眼看到了数据边界。当然,不同版本、不同配置下行为可能不同,我的建议是每个人都用自己的方式验证一遍。
4.4 隐私敏感场景下,我的几条实操建议
如果你在一个不允许代码外传的环境里工作,我的建议非常明确:不要在任何云端 Agent 工具里处理敏感项目。无论它开源与否,无论它承诺什么,数据只要出了内网,风险就存在。
退一步说,如果你确实想用,可以做几件事:尽量用独立的、脱敏过的项目目录跑 Agent,别在同一个目录里放着密钥文件;启动会话前检查有没有.gitignore外泄的东西;定期清理会话历史;关注官方文档里是否有私有化部署或自定义端点的能力,有的话优先用。
5. 连续用了一周之后,我踩过的坑和避坑记录
5.1 “CLI 能不能上传 Git”这个问题的正确理解
有人在问“zcode 的 cli 上传 gut 吗”,我猜他真正想问的是“ZCode 能不能自动把改动推送上去”。答案是不能,也不应该。
ZCode 只负责改代码,所有改动都安静地躺在你的工作区里,它不会帮你git add、git commit、更不会git push。版本管理是你的责任,不是它的。这反而是一种保护:你可以先用git diff审查它的每一处改动,确认没问题之后再自己提交。
我的经验是:每次让 ZCode 跑一个任务之前,先开一个干净的分支,比如git checkout -b feature/zcode-todo-fix。这样哪怕它改坏了,你一句git checkout .就能回到原状。任务结束先看git status,看它到底动了哪些文件,再逐个git diff审查。把它当成一个写代码特别快但需要你 review 的同事,而不是一个值得无条件信任的工具。
5.2 接入 DeepSeek:理论可行,但别期待拿来即用
很多人在问 ZCode 能不能接入 DeepSeek。理论上可以,因为这类工具通常支持 OpenAI 兼容的 API 端点,你把 base_url 指到 DeepSeek 的 API 地址,再填上对应 key,就能跑起来。我实测过,能启动,但体验并不理想。
问题出在两个层面:第一,不同模型对“工具调用”的指令格式支持程度不同,GLM 系模型对工具调用的格式要求和 DeepSeek 不一定完全一致,聊着聊着就会出现“模型回了话但没有真正执行动作”的情况;第二,ZCode 的提示词模板是为 GLM 调优过的,换模型之后,任务拆解质量会明显下降。我的建议是:先用默认模型把流程跑顺、摸清工具脾气,再折腾自定义端点。花半天时间换来一句“理论上能接”,不划算。
5.3 长会话的 token 膨胀:这个坑藏得很深
Agent 类工具和多轮对话不一样,它每一轮都要把“任务历史 + 文件内容 + 命令输出”打包重新发给模型。任务一长,token 消耗会成倍增长。我有一次让它连续做三个重构任务,没有中途重开会话,结果那个会话的 token 消耗比平时多了好几倍,而且越到后面,它对前面任务上下文的“记忆”越混乱,开始反复修改同一个文件。
解决办法很简单:把大任务拆成小任务,每个任务跑完就新开一个会话,让模型带着干净上下文进入新任务。如果你的工具支持上下文清理命令,比如/clear或者压缩会话,及时用。不要想着在一个会话里把所有事都做完,Agent 的上下文窗口就像人的短期记忆,塞太多东西,最先忘掉的反而可能是最新需求。
5.4 中文路径、终端编码和大型仓库的三个实操注意点
最后说三个实操层面很容易忽略的问题。
第一个是中文路径。我在一个路径带中文的目录里启动 ZCode,它执行 shell 命令时偶尔会出现路径解析异常。后来我把项目放在纯英文路径下,问题就再没出现过。如果你的项目名是中文,建议先建一个英文目录的软链接再跑任务。
第二个是终端乱码。在 Windows 上使用时要留意终端的代码页设置。Agent 输出的中文如果乱码,不代表任务出错,调整终端编码为 UTF-8 基本能解决。这也是很多人在群里说“ZCode 输出看不懂”的常见原因。
第三个是大型仓库。在 monorepo 里,ZCode 有时会读入很多无关文件,导致上下文被无关信息塞满。应对方式是善用 ignore 规则文件,把不必要的目录排除在它的扫描范围之外;它如果反复读某个大文件,就在需求描述里明确说“不要读 vendor 目录下的内容”。你给的边界越清楚,它跑得越稳。
最后说一点我的个人体会。连续用了一周之后,我给 ZCode 的定位是:快速原型和中小型功能重构的好帮手,别指望它在一个几十万行的历史遗留项目里当救世主。它不会“偷”你的代码,但你也别闭着眼睛把整个仓库交给它——上下文越小、任务分得越细,它出错的概率就越低。开源只是起点,生态、插件、模型适配这些都是后面慢慢补的事。如果你还在犹豫要不要装,我的建议是别再看评测了,找一个不重要的 side project 试一天,比看十篇文章都有用。