GKD

July 16, 2026 · View on GitHub

GKD — one Claude, many Clawds

GKD · 搞快点

中文 · English

GKD 是「搞快点」的拼音首字母,也是三个当下前沿开源模型的首字母 —— GLM · Kimi · Deepseek。

GKD 是一个 Claude Code plugin。它借 Claude Code 自己的工具循环(harness),起一个以你指定的任意模型为大脑的子进程去干活——子进程有完整的 Read/Edit/Bash... 工具,在自己的上下文里读文件、思考、改代码、跑命令,只把结果回传给主对话。

两个并重的目的:

  • 省 token —— 重活的开销发生在子进程,主 Claude 只付「指令 + 结果」那一点点;可降级的活交给便宜模型即可。
  • 借不同模型的视角 —— 代码、长文摘要、视觉、高难推理,各家强项不一样;换一个大脑,既能在 brainstorm / cross-review 时不被单一模型的偏好带着走,也能把每样活交给最擅长它的那个。

默认这套子进程走 Claude Code 的 harness(claude -p 换端点)。如果你本机装了 Codex CLI,还能把任务委派给 codex——那是另一套 harness,GPT 在自己的工具循环里干活、走你的 codex 登录态。详见下文「另一套 harness:codex」


它解决什么问题

用 Claude Code 时会有两个问题:一是很多活其实不需要最贵的旗舰模型(写样板、批量同构改写、格式/语言转换、读长文档做摘要、代码审查……),但默认全喂给同一个主模型,token 哗哗地烧;二是你被锁死在单一模型的视角里,想听听 GLM、Kimi、Deepseek、GPT 对同一个问题怎么看,得手动切来切去。

GKD 的思路是分包给另一个大脑:主 Claude 给方向,真正读写跑的实活交给一个换了脑的子进程。

flowchart LR
    U([你]) -->|/gkd:do 改这50个文件| Main[主 Claude<br/>调度 · 给方向]
    Main -->|只传任务+文件路径<br/>不传文件内容| RT[gkd-runtime.mjs<br/>换脑底座]
    RT -->|spawn 独立子进程<br/>claude -p --model 你选的模型| Sub[子 agent<br/>GLM/Kimi/Deepseek… · 大脑]
    Sub -->|完整工具循环<br/>Read/Edit/Bash 自己干| Files[(你的代码)]
    Sub -->|只回传结果| Main
    Main -->|汇报| U

    style Main fill:#d97757,color:#fff
    style Sub fill:#2d6a4f,color:#fff
    style RT fill:#e9c46a,color:#000

关键纪律:主 Claude 绝不先读文件内容再转发给子进程,只传文件路径,子进程自己读。这样主对话的 token 占用几乎只剩「下达指令」那一句话。


省了多少?(/gkd:stats)

GKD 自带用量统计,每次委派都记一笔,随时可查省了多少,例如:

GKD delegation stats                                      30d · cache 5m old
────────────────────────────────────────────────────────────────────────────

  44 calls · 9 failed · saved \$15.40 (↓38%)

  Tokens
    input 6.46M (96%)  ·  output 267.1k (4%)
    cache_r 2.44M  ·  cache_w 0

  Models
    model     │          calls │ tokens │ cache_r/w │    cost
    glm-5.2   │ 21 ok · 2 fail │  2.98M │   1.84M/— │   \$5.12
    kimi-k2.6 │  6 ok · 6 fail │ 236.3k │  603.9k/— │ \$0.4531
    gpt-5.5   │  8 ok · 1 fail │  3.51M │         — │  \$19.22

  Cost
    \$24.80 actual  █████████████████░░░░░░░░░░░  \$40.20 if Opus
    saved \$15.40 · 38% lower
    · baseline claude-opus-4-8
    · public-rate estimate, gateway billing may differ

成本按 LiteLLM 的公开价格表估算,baseline 是「同样的活全用 Opus 跑」的假想成本。实际网关计费可能不同,数字仅供参考方向。


安装

前置条件

  • 已安装 Claude Code(claude 在 PATH 里)
  • 至少一个 Anthropic 兼容的模型端点(官方 Claude API、OpenRouter、各家兼容网关均可)及其 API Key
  • (可选)本机装了 Codex CLI 并已登录,即可用 --codex 把任务委派给 GPT——无需额外配端点/密钥,走 codex 自己的登录态

第一步:添加 marketplace 并安装

/plugin marketplace add alvis-HaoH/gkd
/plugin install gkd@gkd

然后 /reload-plugins(或重启 Claude Code)使命令生效。

也可以本地开发模式加载:claude --plugin-dir /path/to/gkd

第二步:配置你的模型(必做)

GKD 出于安全不把任何真实端点/密钥入库。安装后需要你提供一份模型注册表:

# 进入 plugin 目录(marketplace 安装后在 ~/.claude/plugins/cache/gkd/gkd/<version>/)
cp config/models.example.json config/models.json
# 编辑 models.json,填你自己的端点和模型

模板里自带 GLM · Kimi · Deepseek 三个示例条目(正是 GKD 名字的由来),你按自己接入的真实端点改写即可。单个模型的结构(完整字段见 models.example.json 里的 _comment):

{
  "models": {
    "glm": {
      "model": "glm-5.2",
      "baseUrl": "${ANTHROPIC_BASE_URL}",
      "authToken": "${ANTHROPIC_AUTH_TOKEN}",
      "pricingKey": "fireworks_ai/glm-5p2"
    }
  }
}

要点:

  • baseUrl / authToken 支持 ${ENV_VAR} 插值 —— 推荐用环境变量传密钥,别把明文写进文件。
  • 模型选择靠显式指定:用 /gkd:ask --glm ... 点名;不指定时主 Claude 自行判断,拿不准就用默认(第一个未禁用条目)。
  • 支持视觉输入的模型加 "supportsVision": true —— 主 Claude 无法从模型名推断模态,派带图任务时据此避开收不了图的模型。runtime 有一道硬护栏:--with-context 且主对话含图片时,若选定模型没标 supportsVision,直接 fail 拦住(不会等到子进程被端点 400)。子进程自己 Read 图片文件的路径 runtime 无从预判,靠主 Claude 自觉选对模型。
  • 第一个未禁用的模型 = 默认模型
  • harness 字段选 harness:缺省 "claude"(spawn claude -p 换端点);设 "codex" 则委派给本机 codex CLI(见下文专节)。模板里的 codex 条目就是个 harness:"codex" 的例子——不填 baseUrl/authToken(走本机登录态),autoDetect:true 让本机没装 codex 时自动禁用。
  • 加新模型只改这个文件,runtime 自动读,无需改代码。
  • 某些网关未适配新版 CLI 的 adaptive thinking 会报 400,可在该模型加 "env": { "MAX_THINKING_TOKENS": "0" } 关掉 thinking 绕过。

models.json 已在 .gitignore 里(含密钥不入库),models.example.json 是给所有人看的模板。


命令速查

命令权限用途
/gkd:ask <任务>只读(Read/Grep/Glob + git)问 / 分析 / 咨询,主进程物理上无法改文件
/gkd:do <任务>读写(+Edit/Write/Bash)改文件 / 落盘 / 执行,命令名本身就是你的「同意改」
/gkd:resume [<模糊描述>] <补充>自动继承上次续委派线程:默认续本目录上次;也可凭「上次那个改配置的」等模糊描述点名续任意历史 / 跨目录 session(主 Claude 自动检索,读/写模式自动继承)
/gkd:review只读代码审查(常规缺陷 / --adversarial 对抗式设计审)
/gkd:brainstorm只读多模型并行独立发散,主 Claude 综合分歧与共识
/gkd:workflow视任务N 个 item 批量委派,各起一个子进程并行处理
/gkd:stats委派用量与省钱估算

主 Claude 会智能补全 flag:你只需要用自然语言表达,它自己判断选哪个模型、要不要带上对话历史。当然你也可以显式指定:

/gkd:do --glm 把 src/legacy/ 下所有 .js 转成 TypeScript
/gkd:review --codex 这个并发设计有没有竞态问题?
/gkd:brainstorm 让 glm,kimi,deepseek 一起脑暴下xxx

三个核心机制

1. 换脑:最可靠的开关

在默认的 claude harness 里,GKD 不靠环境变量换模型(那些常被全局 settings 钉死),而是直接 spawn 一个独立子进程:

claude -p --model <你的模型> --setting-sources project ...

2. 上下文三档:按需决定子进程「知道多少」

flowchart TD
    A["A 档 · 干净委派<br/>(默认)"] -->|不带任何历史<br/>任务自洽时用| R[换脑子进程]
    B["B 档 · --resume<br/>续线程"] -->|接着上次委派<br/>继续干| R
    C["C 档 · --with-context<br/>fork 主对话"] -->|子进程自己从磁盘<br/>加载主对话历史<br/>主 token 几乎免费| R

    style A fill:#2d6a4f,color:#fff
    style B fill:#e9c46a,color:#000
    style C fill:#d97757,color:#fff
  • A 档(默认):任务文本已经写清一切,子进程从零开始,最省。
  • B 档(--resume):接着委派线程往下做,读/写模式自动继承。默认续本目录上次;你也可以只凭模糊描述(「上次那个改配置的」)让主 Claude 检索历史委派、点名续任意一条(含跨目录、fork 链最新节点),不必记 session id。
  • C 档(--with-context):任务里有「上面那个方案」这种回指时,让子进程自己从磁盘 fork 主对话历史——主 Claude 不用把历史复述一遍,所以主 token 几乎免费。

3. workflow:批量委派的双层编排

/gkd:workflow 把「50 个文件各转一次」这类同构批量,编排成并行的换脑子进程:

flowchart LR
    Main[主 Claude<br/>拿到路径列表] --> WF{Workflow 编排}
    WF -->|item 1| S1[换脑子进程]
    WF -->|item 2| S2[换脑子进程]
    WF -->|item N| S3[换脑子进程]
    S1 --> Agg[汇总: 成功/失败]
    S2 --> Agg
    S3 --> Agg
    Agg --> Main

    style Main fill:#d97757,color:#fff
    style WF fill:#e9c46a,color:#000
    style S1 fill:#2d6a4f,color:#fff
    style S2 fill:#2d6a4f,color:#fff
    style S3 fill:#2d6a4f,color:#fff

每个 item 一个独立子进程,token 互相隔离,还能按 item 或按「worker 干活 / verifier 把关」分配不同模型。


另一套 harness:委派给本机 codex(GPT)

前面讲的换脑,都是同一套 harness(Claude Code 的工具循环)换一个模型端点。GKD 还支持换掉整套 harness:如果你本机装了 Codex CLI 并已登录,--codex 会 spawn 一个 codex exec 子进程,让 GPT 在 codex 自己的工具循环里读文件、改代码、跑命令。

flowchart LR
    U([你]) --> Main[主 Claude<br/>调度]
    Main -->|--glm / --kimi …| RT[gkd-runtime.mjs]
    RT -->|harness: claude| C["claude -p --model 你选的模型<br/>(换端点)"]
    RT -->|harness: codex| X["codex exec<br/>(换整套 harness · 走本机登录态)"]

    style Main fill:#d97757,color:#fff
    style RT fill:#e9c46a,color:#000
    style C fill:#2d6a4f,color:#fff
    style X fill:#264653,color:#fff

它是什么、不是什么:codex 是另一套 harness,不是又一个便宜模型。它走你的 codex 订阅登录态(不消耗 Anthropic 端点额度,/gkd:stats 也不计它的成本),要的是 GPT 的独立第二意见 / 换 harness 的视角 / GPT 侧的能力(如 GPT-image 生成)。

开箱即用:你甚至不必在 models.json 里配它——只要本机装了 codex,runtime 会自动注入一个默认 codex 条目;没装则 --codex 会明确报「未检测到 codex CLI」而不是静默退化。要自定义(改模型、effort)再在 models.json 显式配 harness:"codex" 条目。

支持上下文三档:--with-context 同样可用——首次会把当前对话导入成一个 codex thread(约 1–2s),之后 --resume 续这个 thread。

写模式的两点差异(派写任务给 codex 前务必知悉):

  • 写边界由 codex 自己的 sandbox 定义(workspace-write),
  • codex 写模式默认关闭网络 —— npm installgit fetch 这类要联网的命令会失败;这类任务别派给 codex,交给 claude harness 的模型。

续接差异:codex 的 thread 存在 ~/.codex/sessions(不是 Claude 的 jsonl),续接走 codex exec resume,工作目录跟原 thread 走——README 里那些「jsonl 归属目录 / 跨目录续」是 Claude 侧机制,对 codex 不适用。

思考强度:--effort <档>(none/low/medium/high/xhigh/max),claude/codex 通用。各 harness 把不支持的档就近映射到最近的支持档(claude 无 none → 取 low),不报错不丢语义。 codex 专属开关:--codex-model <名>(覆盖本机默认模型)。


直接调底座

所有命令最终都调同一个底座,你也可以手动调:

node "${CLAUDE_PLUGIN_ROOT}/scripts/gkd-runtime.mjs" [--<modelKey>] [选项] "<任务(含文件路径)>"

# 看帮助和当前可用模型
node "${CLAUDE_PLUGIN_ROOT}/scripts/gkd-runtime.mjs" --help

关键开关:--write(允许改文件)、--resume(续线程)、--with-context(fork 主对话)、--effort <档>(思考强度 none/low/medium/high/xhigh/max,claude/codex 通用)、--prompt-file <path>(注入前置系统指令,如审查模板)、--json(结构化输出,供 workflow 消费)。codex 专属:--codex-model <名>


目录结构

gkd/
├── .claude-plugin/
│   ├── plugin.json          # plugin 元信息
│   └── marketplace.json     # 自带 marketplace(让别人能一键装)
├── commands/                # 7 个 slash 命令
├── scripts/
│   ├── gkd-runtime.mjs         # 换脑底座(核心 · 兼派发 claude/codex 两套 harness)
│   ├── gkd-brainstorm.mjs      # 多模型并行
│   ├── gkd-codex-import.mjs    # --with-context 时把当前对话导入成 codex thread
│   ├── gkd-find-session.mjs    # 委派历史检索(主 Claude 把模糊描述翻成 session id)
│   └── gkd-stats.mjs           # 用量统计 TUI
├── bin/gkd-stats            # 零模型成本看 stats 的入口
├── config/
│   └── models.example.json  # 模型注册表模板(复制成 models.json 用)
└── prompts/                 # review 的两种立场模板

命令与模型完全解耦:加模型只改 models.json,命令文件不动。


License

MIT © alvis-HaoH