ZCode 开源:Z.ai 的编程 Agent 把桌面端、Web 端和终端源码一起放了出来

Z.ai 旗下的编程 Agent 项目 ZCode 已在 GitHub 开源,仓库地址为 github.com/zai-org/ZCode。仓库说明中的定位是「Z.ai 的 coding agent harness」,官方给出的三个关键词是强大、智能、可扩展。

开源了什么

这次放出的不只是客户端,而是整套源码:桌面应用、后端服务、共享 UI,以及 Agent CLI 与运行时。仓库中同时包含 Web 客户端、HTTP/WebSocket 服务与远程连接、共享 React 组件与状态管理、业务服务与持久化、Provider 公共能力及其 Node 实现,还有 RPC 框架和 Agent 客户端 SDK。

按照仓库的目录划分,主要模块有:

  • packages/desktop:Electron Main、Host、Renderer 与桌面打包
  • packages/web:Web 客户端
  • packages/server:HTTP/WebSocket 服务与远程连接
  • packages/zcode-server-cli:独立 Server 启动与进程管理
  • packages/ui:共享 React 组件、hooks 与 Zustand 状态
  • packages/services:业务服务与持久化
  • packages/sharedpackages/rpcpackages/client:共享协议和类型、RPC 框架、Agent 客户端 SDK
  • packages/providerpackages/provider-node:Provider 公共能力与 Node 实现
  • apps/zcode-cli:Agent CLI、TUI、运行时与工具

Agent CLI 与运行时源码位于 apps/zcode-cli/,随仓库一起克隆,不需要单独拉取或初始化 Git submodule。

三种使用入口

入口 用途 开发命令
Desktop Electron 桌面应用 pnpm dev:desktop
Web / ZCode 命令行版 终端与浏览器工作台;将 TUI、Web、后端和 Agent 组装为独立运行包 pnpm dev:web
Agent CLI 在终端中使用 zcode,也为 Desktop 和 Web 提供 Agent 运行时 pnpm --filter @zcode/cli dev

命令行发行包把 TUI、Web 和 Agent 打在一起,统一用 zcode 启动:不带参数进入终端交互界面,第一个参数是 --web 时启动 Web 界面,其余参数交给现有 Agent CLI 处理。两种模式都在本机运行,不需要 Electron。

zcode
zcode --web
zcode --web --workspace /path/to/project --port 3030 --no-open
zcode --help

Web 模式默认以当前目录为工作目录,监听 127.0.0.1,默认不启用访问令牌,自动挑选空闲端口并打开浏览器。需要局域网访问时用 --host 0.0.0.0;监听非本机地址时默认生成访问令牌,用终端输出的带令牌链接进入,也可以用 --token 指定令牌或 --no-token 关掉认证。

开发环境与构建

准备 Git、Node.js 24.14.0 和 pnpm 10.33.2,具体版本以仓库的 mise.toml 为准,命令都在仓库根目录执行。pnpm bootstrap 会安装 workspace 依赖、准备桌面本地运行资源,然后执行 build:bootstrap。默认的 bootstrap 跳过远程资源准备,适合本地桌面开发;要用远程工作区或验证远程发行资源,再跑 prepare:remote-assetsbootstrap:with-remote

其他常用入口包括 pnpm install(安装依赖)、pnpm prepare:desktop-runtime(准备桌面运行资源,默认含远程资源)、pnpm build(递归执行各 workspace 包的构建脚本)。

桌面开发用 pnpm dev:desktop,默认等同于 pnpm dev:desktop:prod,走生产服务配置;需要独立数据目录时设置 ZCODE_DATA_BASE_DIR。改 Web 或后端源码用 pnpm dev:web,它会同时拉起 Web 开发服务器(默认 http://localhost:5173)和后端(默认 http://localhost:3030),浏览器访问前者。改完 Agent 源码要执行 pnpm --filter @zcode/cli... build 并重启服务。

打包方面,pnpm bundle:desktop 默认目标为 macOS arm64,输出到 packages/desktop/dist/--os 支持 mac、win、linux,--arch 支持 x64、arm64,实际打包与签名需要目标平台对应的工具和配置。本地构建未签名,macOS 首次打开若被拦截,需要执行 sudo xattr -rd com.apple.quarantine /Applications/ZCode.app

命令行发行包由 pnpm build:zcode 生成,脚本依次构建 CLI/TUI、后端和 Web,收集 TUI 的原生库、worker 与运行时依赖,再组装发行包;运行发行包仍然需要 Node.js。打包前必须设置下载根地址 ZCODE_DIST_BASE_URL,也可以用 --base-url 传入。默认版本取根目录 package.json,输出目录为 dist/zcode/,内含运行包 releases/<version>/zcode-<version>.tar.gz、校验摘要 sha256.txt,以及版本索引 latest.json 和安装脚本 install.sh。安装脚本默认装到 ~/.zcode/runtime,并在 ~/.local/bin 创建 zcode 命令,安装目录可用 ZCODE_DIST_HOME 修改,命令目录可用 ZCODE_DIST_BIN_DIR 修改。

仓库还提示,旧 Lite 用户需要改用新的构建命令、环境变量和安装脚本;新安装不会删除旧 Lite 目录,也不会迁移或删除已有会话数据。

几点补充

从仓库结构看,ZCode 走的是「一套 Agent 运行时、三种外壳」的路子:Agent CLI 既能在终端里直接用,又是 Desktop 和 Web 的运行时底座,后端以 HTTP/WebSocket 服务的形式统一托管页面与 Agent,因此桌面端、浏览器端和命令行端共享的是同一套协议与状态。开发、调试、发行三条链路也都写在 README 里,属于可以直接上手改的开源工程,而不是只放出一个壳。

需要留意的是,功能与优惠范围、维护规则、执行与数据风险,以及许可和第三方版权说明,都写在仓库的 NOTICE.md 里,使用和二次开发前建议先读这一份。

分享 微博

评论 0

    昵称