夜雨聆风学习资料网

ARTICLE · 1050427

开源第一天,从ZCode 源码里开始吃瓜

开源第一天,从ZCode 源码里开始吃瓜

一、模型请求静默改道:你配置的官方端点,实际发往 ZCode 网关

[official-coding-plan-gateway.ts]内置一张精确匹配表:

  • https://api.z.ai/api/anthropic/v1/messages
     → 改发 zcode.z.ai/api/v1/ultra-zai/anthropic/v1/messages
  • https://open.bigmodel.cn/api/anthropic/v1/messages
     → 改发 zcode.z.ai/api/v1/ultra/anthropic/v1/messages

按协议、主机、端口、路径精确匹配,命中后除 Host 头外全部请求头——包括你的鉴权凭证——原样透传给 ZCode 网关,无逐次用户确认。官方注释称这是“套餐权益校验等平台侧处理”。

争议点有三个:

  1. 判断依据是 URL,不是 provider 来源。
     你自己手动创建的 provider,只要 URL 指向这两个官方 Anthropic 兼容端点,一样被改道。[NOTICE.md]自己承认:“判断依据是请求 URL,不能因提供商由用户自行创建就推定一定绕过网关。”而代码注释却写着“用户自建 provider 与第三方模型服务不受影响”——两份自述,微妙地不完全一致。
  2. 每次请求附带 x-zcode-session-type 头
    ,把调用方标记为 main/subagent/other([runner-attribution.ts])——后台按会话类型做归因的用途,客户端不可见。
  3. 网关收到请求后做什么,不在开源范围内。
     NOTICE 原话:“网关收到请求后的内部处理不属于客户端源码已核验范围。”

公平地说:改道只命中这两个官方端点,DeepSeek、OpenRouter 等第三方端点不受影响。但“我到底在和谁通信”这个问题的答案,确实由客户端代码替你做了主。

二、提示词血统:Claude Code 的骨,Gemini CLI 的皮

[identity.ts]里的系统提示词,与 Claude Code 的公开系统提示词逐字一致的部分包括:安全声明整段("IMPORTANT: Assist with authorized security testing...")、# Harness 块五条("Github-flavored markdown in a terminal"、"a denied call means the user declined it — adjust, don't retry verbatim"、"file_path:line_number — it's clickable")。

工具面同样对齐:Edit/Glob/Grep/Bash/TodoWrite/Skill/AskUserQuestion/plan mode,甚至有 Claude Code 标志性的 system-reminder/ 目录。而子代理的环境块("Here is useful information about the environment you are running in..." + <env> 标签)是 Gemini CLI 的格式([system-prompt.ts])。

提示词本身不受 Apache-2.0 覆盖,这是版权灰色地带。有意思的是法务功课做得很足:THIRD-PARTY-NOTICES.md 有 1.9MB、1201 个包条目,连“Superpowers 技能描述改编(MIT,Copyright 2025 Jesse Vincent)”都单独署名。

三、开源的是源码,发行的是字节码

[build-desktop-agent-bytecode.mjs]把 agent 编译成 .jsc V8 字节码,加载器以原子替换方式分发,且 coverage 构建被显式禁止使用字节码。也就是说:GitHub 上能看到提示词源码,但官方桌面发行物里的 agent 是字节码——效果上,普通用户无法在安装包里审计实际运行的提示词和逻辑。开源与可审计之间,隔了一层字节码。

四、隐私清单:NOTICE.md 里的“坦白从宽”章节

以下全部是 NOTICE.md 自己写明的:

  • 模型输入输出日志默认写入本地
    ,“可能含提示词、代码、上下文、工具参数和模型回复”,仅部分脱敏;
  • 凭据加密密钥“可从本机环境信息派生”
    ,明文记录也会被读取逻辑接受——不是系统钥匙串;
  • Anthropic 兼容调用附加设备和会话标识
  • 桌面端使用阿里云 ARMS RUM 监控,console.error 的正文内容会上报。他们还 patch 了 SDK([patches/@arms__rum-electron@0.0.3.patch])修复原版只取第一个参数丢正文的 bug,并加了 api-key/token/Bearer 正则脱敏——patch 质量确实高,但也坐实了上报行为本身。

五、生态兼容明牌:插件体系直接吃下 Claude Code 和 Codex

[marketplace.ts]同时识别 .claude-plugin/plugin.json 和 .codex-plugin/plugin.json——Claude Code 插件和 Codex 插件可以直接装进 ZCode。命中 opencode.ai/zen/go/v1 时还会主动发送 x-opencode-session 头与 OpenCode Zen 互操作。内置模型目录([zcode-builtin.json])列满友商全家:claude-fable-5-1grok-4.6gpt-5.6-terrakimi-k3qwen3.8deepseek-v4……与其说是竞品,不如说是把整个市场做成了自己的接入层。

写在最后

ZCode ,你还会用吗?

相关学习资料