@kodax-ai/kodax 0.7.49 → 0.7.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +1800 -1741
  2. package/README.md +1215 -1210
  3. package/README_CN.md +636 -632
  4. package/dist/chunks/agent-EFA7BSE7.js +2 -0
  5. package/dist/chunks/argument-completer-MAJVHSE7.js +2 -0
  6. package/dist/chunks/{chunk-TYZAH3YP.js → chunk-CCZMQE3Q.js} +1 -1
  7. package/dist/chunks/chunk-E3HENKTX.js +420 -0
  8. package/dist/chunks/chunk-FAIGYAEX.js +301 -0
  9. package/dist/chunks/chunk-HMATTIU6.js +574 -0
  10. package/dist/chunks/{chunk-YW4RQV7U.js → chunk-JJTUBNQX.js} +1 -1
  11. package/dist/chunks/chunk-ODVA5VTE.js +492 -0
  12. package/dist/chunks/chunk-PEWH3AAL.js +31 -0
  13. package/dist/chunks/chunk-WQTVG2T5.js +648 -0
  14. package/dist/chunks/{compaction-config-BQBYOWX2.js → compaction-config-UBPCNGC2.js} +1 -1
  15. package/dist/chunks/{construction-bootstrap-5TFGMSWQ.js → construction-bootstrap-WY5MDXRX.js} +1 -1
  16. package/dist/chunks/{dist-BL7IBQHD.js → dist-B73FQEAA.js} +1 -1
  17. package/dist/chunks/dist-BTWS2ENP.js +2 -0
  18. package/dist/chunks/utils-HVOJRR5C.js +2 -0
  19. package/dist/index.d.ts +11 -11
  20. package/dist/index.js +4 -4
  21. package/dist/kodax_cli.js +1091 -984
  22. package/dist/provider-capabilities.json +2 -0
  23. package/dist/sdk-agent.d.ts +25 -11
  24. package/dist/sdk-agent.js +1 -1
  25. package/dist/sdk-coding.d.ts +160 -34
  26. package/dist/sdk-coding.js +1 -1
  27. package/dist/sdk-llm.d.ts +3 -5
  28. package/dist/sdk-llm.js +1 -1
  29. package/dist/sdk-mcp.js +1 -1
  30. package/dist/sdk-repl.d.ts +38 -727
  31. package/dist/sdk-repl.js +2 -2
  32. package/dist/sdk-session.d.ts +8 -200
  33. package/dist/sdk-session.js +1 -1
  34. package/dist/sdk-skills.js +1 -1
  35. package/dist/types-chunks/{types.d-rPRl2LSB.d.ts → base.d-GZ6jvICS.d.ts} +270 -3
  36. package/dist/types-chunks/{bash-prefix-extractor.d-CI_xcPhn.d.ts → bash-prefix-extractor.d-DTOiDMlG.d.ts} +84 -537
  37. package/dist/types-chunks/{capsule.d-DaPuhyyK.d.ts → capsule.d-CXGdLGAn.d.ts} +6 -3
  38. package/dist/types-chunks/guardrail.d-D47yu9AO.d.ts +518 -0
  39. package/dist/types-chunks/{types.d-BR9oNWup.d.ts → process.d-B8kEBnQD.d.ts} +487 -275
  40. package/dist/types-chunks/{resolver.d-B_wm409c.d.ts → resolver.d-D75XFRH2.d.ts} +23 -6
  41. package/dist/types-chunks/sdk-session-BKQJN9oH.d.ts +977 -0
  42. package/dist/types-chunks/{storage.d-J2GqOgaX.d.ts → storage.d-BN1xIn8R.d.ts} +78 -3
  43. package/dist/types-chunks/types.d-DQ_hdN70.d.ts +273 -0
  44. package/dist/types-chunks/{utils.d-BJ_-y8gC.d.ts → utils.d-ZfRDo-kX.d.ts} +8 -80
  45. package/package.json +2 -2
  46. package/dist/chunks/argument-completer-GDG5OHN7.js +0 -2
  47. package/dist/chunks/chunk-67SWUEEN.js +0 -1035
  48. package/dist/chunks/chunk-C5PKZX5Z.js +0 -291
  49. package/dist/chunks/chunk-ISGHUKRY.js +0 -428
  50. package/dist/chunks/chunk-JTHMWRXM.js +0 -566
  51. package/dist/chunks/chunk-YACQ4OST.js +0 -31
  52. package/dist/chunks/dist-D7HOETCE.js +0 -2
  53. package/dist/chunks/utils-XWDT3W5X.js +0 -2
  54. package/dist/types-chunks/base.d-C4jYVjJh.d.ts +0 -270
  55. package/dist/types-chunks/types.d-BnjX2Gn4.d.ts +0 -297
package/README_CN.md CHANGED
@@ -1,632 +1,636 @@
1
- <p align="center">
2
- <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
4
- <source media="(prefers-color-scheme: light)" srcset="assets/logo-light.svg">
5
- <img src="assets/logo-light.svg" alt="KodaX" width="640">
6
- </picture>
7
- </p>
8
-
9
- <p align="center">
10
- <b>开源 AI Coding Agent,跑你能拿到的任何 LLM。</b><br>
11
- Anthropic · OpenAI · DeepSeek · Kimi · 智谱 · MiniMax · 小米 MiMo · 火山方舟 · Qwen · Gemini · Codex<br>
12
- REPL · CLI · 库 · 免 Node 单文件二进制
13
- </p>
14
-
15
- <p align="center">
16
- <a href="https://www.npmjs.com/package/@kodax-ai/kodax"><img alt="npm version" src="https://img.shields.io/npm/v/@kodax-ai/kodax?style=flat-square&color=cb3837"></a>
17
- <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square"></a>
18
- <a href="https://github.com/icetomoyo/KodaX/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/icetomoyo/KodaX?style=flat-square&logo=github&color=f1c40f"></a>
19
- <a href="https://github.com/icetomoyo/KodaX/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/icetomoyo/KodaX/release.yml?style=flat-square&label=release"></a>
20
- <img alt="providers" src="https://img.shields.io/badge/LLMs-14_aliases_+_custom-2ecc71?style=flat-square">
21
- </p>
22
-
23
- <p align="center">
24
- <a href="#30-秒上手">安装</a> ·
25
- <a href="#四种使用形态">使用形态</a> ·
26
- <a href="#为什么用-kodax">为什么用</a> ·
27
- <a href="CHANGELOG.md">更新日志</a> ·
28
- <a href="docs/FEATURE_LIST.md">Roadmap</a> ·
29
- <a href="https://github.com/icetomoyo/KodaX/discussions">讨论</a> ·
30
- <a href="README.md">English README</a>
31
- </p>
32
-
33
- <p align="center">
34
- <img src="kodax.gif" alt="KodaX 实战演示" width="880">
35
- </p>
36
-
37
- ---
38
-
39
- ## 30 秒上手
40
-
41
- ```bash
42
- npm i -g @kodax-ai/kodax
43
-
44
- # 选一个你有 API key 的 provider
45
- export ZHIPU_API_KEY=... # 或 KIMI_API_KEY / MINIMAX_API_KEY / MIMO_API_KEY /
46
- # ARK_API_KEY / DEEPSEEK_API_KEY / ANTHROPIC_API_KEY /
47
- # OPENAI_API_KEY / QWEN_API_KEY / GEMINI_API_KEY
48
-
49
- kodax
50
- ```
51
-
52
- 就这样。进 REPL,自然语言提问。
53
-
54
- > **不装 Node 的目标机器**:从 [GitHub Releases](https://github.com/icetomoyo/KodaX/releases) 拿 Bun 编译的单文件二进制(Win / macOS / Linux × x64 + arm64)。详见 [docs/release.md](docs/release.md)。
55
-
56
- ---
57
-
58
- ## 四种使用形态
59
-
60
- | 形态 | 命令 / 入口 | 什么时候用 |
61
- |---|---|---|
62
- | **REPL** | `kodax` | 交互式多轮编码会话,流式 UI + 权限 + slash 命令 |
63
- | **CLI** | `kodax -p "your task"` | 单次脚本任务、CI、批量处理 |
64
- | **库** | `import { runKodaX } from '@kodax-ai/kodax'` | 嵌入你自己的工具 / agent / 服务 |
65
- | **单文件二进制** | `./kodax` | 分发到没装 Node 的机器 |
66
-
67
- ---
68
-
69
- ## 为什么用 KodaX
70
-
71
- <table>
72
- <tr>
73
- <td width="33%" align="center" valign="top">
74
- <h3>🇨🇳 6 家国内 LLM 原生</h3>
75
- <sub>智谱 · Kimi · MiniMax · 小米 MiMo · 火山方舟 · 通义千问</sub>
76
- <br><br>
77
- first-class 适配器,跨 provider 在 5-alias canonical panel 做过 <a href="benchmark/EVAL_GUIDELINES.md">prompt-eval 校准</a> —— 不是 OpenAI-compat 转发。
78
- </td>
79
- <td width="33%" align="center" valign="top">
80
- <h3>📦 单文件二进制</h3>
81
- <sub>Bun --compile · Win / macOS / Linux · x64 + arm64</sub>
82
- <br><br>
83
- 目标机器不装 Node。一份文件随处跑 —— 受管环境、内网、CI runner、断网机器都行。
84
- </td>
85
- <td width="33%" align="center" valign="top">
86
- <h3>🌳 可分叉会话血缘</h3>
87
- <sub>fork · rewind · 并行编辑</sub>
88
- <br><br>
89
- 对话历史是 DAG 不是链表。即将发布的 <b>KodaX Space</b> 桌面端基于此。
90
- </td>
91
- </tr>
92
- <tr>
93
- <td align="center" valign="top">
94
- <h3>🤖 默认多 agent</h3>
95
- <sub>V2 Worker 单循环 + Sidecar Verifier + 异步子 agent</sub>
96
- <br><br>
97
- <code>dispatch_child_task</code>、<code>send_message</code>、<code>task_stop</code>,多实例自动协调(content-hash safety net)。
98
- </td>
99
- <td align="center" valign="top">
100
- <h3>🧩 Skills + 自构造</h3>
101
- <sub>Markdown skill,自然语言触发</sub>
102
- <br><br>
103
- 5 阶自改造阶梯(scaffold → validate → stage → test → activate),由 8 条 admission invariant 守护。
104
- </td>
105
- <td align="center" valign="top">
106
- <h3>🛠 50+ 内置工具</h3>
107
- <sub>文件 · shell · 搜索 · MCP · ACP</sub>
108
- <br><br>
109
- repo intelligence、语义搜索、git worktree、web fetch,统一从干净的 tool definition 接口暴露。
110
- </td>
111
- </tr>
112
- </table>
113
-
114
- ## 同类产品对比
115
-
116
- | 能力 | **KodaX** | Claude Code | Aider | Codex CLI | Cursor | Cline |
117
- |---|---|---|---|---|---|---|
118
- | 开源协议 | ✅ Apache&nbsp;2.0 | ❌ source-available | ✅ Apache&nbsp;2.0 | ✅ Apache&nbsp;2.0 | ❌ 闭源 | ✅ Apache&nbsp;2.0 |
119
- | 免 Node 单文件 | ✅ Bun | ❌ 需 Node | ❌ 需 Python | ✅ Rust | ❌ Electron | ❌ 插件 |
120
- | 国内 6 家原生<br><sub>(智谱·Kimi·MiniMax·MiMo·方舟·Qwen)</sub> | ✅ 6 家原生 | ❌ | ⚠ 走 LiteLLM | ❌ OpenAI 主线 | ❌ 无 provider 菜单 | ⚠ Kimi/Qwen/DeepSeek |
121
- | 可分叉会话血缘 | ✅ fork & rewind | ⚠ routines/sessions | ❌ | ❌ | ❌ | ⚠ checkpoints |
122
- | Multi-agent + MCP + 50+ 工具 | ✅ 三项全有 | ✅ 三项全有 | ⚠ 有 tools, 无 MCP | ✅ 三项全有 | ⚠ Composer + MCP | ✅ 三项全有 |
123
-
124
- <sub>数据于 2026-05 对照官方公开文档核对([Claude Code](https://github.com/anthropics/claude-code) · [Aider](https://aider.chat/docs/llms.html) · [Codex CLI](https://github.com/openai/codex) · [Cursor](https://cursor.com) · [Cline](https://github.com/cline/cline))。⚠ 表示部分支持 / 需额外配置 / 非 first-class。欢迎 PR 修正。</sub>
125
-
126
- ## 详细配置
127
-
128
- > 上面的 `npm i -g @kodax-ai/kodax` 一行就够了。下面这一节是给"从源码构建 / 接自定义 provider / 把 KodaX 当库使用"的场景。
129
-
130
- ### 1. 从源码构建
131
-
132
- ```bash
133
- git clone https://github.com/icetomoyo/KodaX.git
134
- cd KodaX
135
- npm install
136
- npm run build
137
- npm link
138
- ```
139
-
140
- 构建完成后就可以直接启动:
141
-
142
- ```bash
143
- kodax
144
- ```
145
-
146
- ### 2. 配置模型提供商
147
-
148
- 最简单的方式是先设置 API Key:
149
-
150
- ```bash
151
- # macOS / Linux
152
- export ZHIPU_API_KEY=your_api_key
153
-
154
- # PowerShell
155
- $env:ZHIPU_API_KEY="your_api_key"
156
- ```
157
-
158
- 然后在 `~/.kodax/config.json` 里写一个最小配置:
159
-
160
- ```json
161
- {
162
- "provider": "zhipu-coding",
163
- "reasoningMode": "auto"
164
- }
165
- ```
166
-
167
- ### 3. 启动 REPL 或执行单次任务
168
-
169
- ```bash
170
- # 进入交互式 REPL
171
- kodax
172
-
173
- # 单次任务
174
- kodax "Review this repository and summarize the architecture"
175
- ```
176
-
177
- 进入 REPL 后,你可以直接自然语言提问,也可以使用命令:
178
-
179
- ```text
180
- /help
181
- /mode
182
- /agent-mode ama
183
- ```
184
-
185
- ### 4. 作为库使用
186
-
187
- ```bash
188
- npm install @kodax-ai/kodax
189
- ```
190
-
191
- ```typescript
192
- import { runKodaX } from '@kodax-ai/kodax';
193
-
194
- const result = await runKodaX(
195
- {
196
- provider: 'zhipu-coding',
197
- reasoningMode: 'auto',
198
- },
199
- 'Explain this codebase'
200
- );
201
- ```
202
-
203
- #### SDK Subpath 导入(v0.7.39+)
204
-
205
- 如果只想用某个子能力,按 subpath 引入更轻量,bundler 也能更好地 tree-shake:
206
-
207
- ```typescript
208
- import { Runner } from '@kodax-ai/kodax/agent'; // Agent runtime
209
- import { getProvider } from '@kodax-ai/kodax/llm'; // LLM 抽象(14 个内置 alias)
210
- import { runKodaX } from '@kodax-ai/kodax/coding'; // Coding tools + prompts
211
- import { SkillRegistry } from '@kodax-ai/kodax/skills'; // 零依赖 skill loader
212
- import { loadConfig } from '@kodax-ai/kodax/repl'; // REPL 配置 / session 工具
213
- import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager(v0.7.42 起)
214
- import { listSessions } from '@kodax-ai/kodax/session'; // session 历史工具
215
- ```
216
-
217
- 8 个 SDK 入口(root + 7 subpath)通过 ESM 共享 chunk 复用底层代码 —— 只 import `/agent` 不会把 `/repl` 的 Ink + React 一起拉进来。
218
-
219
- > **SDK 是 ESM-only**。在 CommonJS 上下文(Electron main 进程、传统 Webpack CJS bundle、`require()` 调用方)必须用 `await import('@kodax-ai/kodax/...')` 代替 `require()`。详见 [docs/SDK_EMBEDDER_GUIDE.md §5](docs/SDK_EMBEDDER_GUIDE.md#5-consuming-from-a-commonjs-context-electron-main-cjs-bundles),含 Electron main 完整 recipe + 为什么大多数 subpath 物理上无法做 dual ESM/CJS bundle。
220
-
221
- ### 5. 自定义 Provider(OpenAI / Anthropic 兼容端点)
222
-
223
- 任何 OpenAI 或 Anthropic 协议兼容的 endpoint 都可以通过 `customProviders[]` 接入,CLI 模式写在 `~/.kodax/config.json` 里:
224
-
225
- ```json
226
- {
227
- "provider": "my-openai-compatible",
228
- "customProviders": [
229
- {
230
- "name": "my-openai-compatible",
231
- "protocol": "openai",
232
- "baseUrl": "https://example.com/v1",
233
- "apiKeyEnv": "MY_LLM_API_KEY",
234
- "model": "my-model",
235
- "userAgentMode": "compat"
236
- }
237
- ]
238
- }
239
- ```
240
-
241
- `userAgentMode` 默认 `"compat"`(发送 `KodaX` 而非上游 SDK 的 User-Agent);如果你的网关要求原生 SDK header,再切到 `"sdk"`。
242
-
243
- #### OpenAI 兼容推理模型
244
-
245
- 部分 OpenAI-compatible 推理模型要求多轮请求时回放上一轮 assistant 的 `reasoning_content`。DeepSeek V4 thinking mode 是已知必须开启的场景;内置 DeepSeek provider 已经默认开启,但自定义 provider 需要显式配置:
246
-
247
- ```json
248
- {
249
- "customProviders": [
250
- {
251
- "name": "my-deepseek-v4",
252
- "protocol": "openai",
253
- "baseUrl": "https://example.com/v1",
254
- "apiKeyEnv": "MY_DEEPSEEK_API_KEY",
255
- "model": "deepseek-v4-flash",
256
- "supportsThinking": true,
257
- "reasoningCapability": "native-toggle",
258
- "replayReasoningContent": true
259
- }
260
- ]
261
- }
262
- ```
263
-
264
- 如果网关同时代理 DeepSeek 和 OpenAI proper,建议用 per-model override,避免把 `reasoning_content` 发给不接受该字段的模型:
265
-
266
- ```json
267
- {
268
- "models": [
269
- { "id": "deepseek-v4-flash", "replayReasoningContent": true },
270
- { "id": "gpt-5", "replayReasoningContent": false }
271
- ]
272
- }
273
- ```
274
-
275
- Sidecar verifier 的结构化裁决请求会优先使用 provider 级 `tool_choice` 强制工具调用;如果某个兼容端点明确拒绝 `tool_choice` 参数,KodaX 会对该 verifier 请求自动重试一次“不强制但仍带 tools”的兼容模式,并保持 fail-open,不会阻塞主 Worker。
276
-
277
- 调试 Worker 结束后的 verifier 行为时可设置:
278
-
279
- ```bash
280
- export KODAX_VERIFIER_LOG=1
281
- export KODAX_VERIFIER_PROVIDER=anthropic
282
- export KODAX_VERIFIER_MODEL=claude-haiku-4-5-20251001
283
- ```
284
-
285
- `KODAX_VERIFIER_LOG=1` 等价于在 `~/.kodax/config.json` 写 `"verifierLog": true`,会显示 verifier gate、elapsedMs 和 trace;`KODAX_VERIFIER_PROVIDER` / `KODAX_VERIFIER_MODEL` 需要成对设置,用独立模型执行 verifier;`KODAX_VERIFIER_ALWAYS=1` 仅建议调试和回归测试时使用。
286
-
287
- #### 给自定义 provider 开图片 / vision 输入(FEATURE_134 v0.7.40)
288
-
289
- 如果你的自定义 provider 后面的模型支持 vision,加 `capabilityProfile.multimodalSupport: "image-input"` 显式开启,KodaX 的 SA-path policy gate 就不会人为拦截多模态请求。内置 vision-capable alias(Anthropic、OpenAI、DeepSeek、Kimi、Qwen、Zhipu、MiniMax、MiMo、Ark,以及通过 CLI `@<path>` file-include 语法传图的 Gemini-CLI)已经默认开了这个 flag。Codex-CLI 和自定义 provider 在底层模型支持图片输入时需要手动 opt-in。
290
-
291
- ```json
292
- {
293
- "customProviders": [
294
- {
295
- "name": "my-vision-provider",
296
- "protocol": "openai",
297
- "baseUrl": "https://example.com/v1",
298
- "apiKeyEnv": "MY_LLM_API_KEY",
299
- "model": "my-vision-model",
300
- "capabilityProfile": {
301
- "transport": "native-api",
302
- "conversationSemantics": "full-history",
303
- "mcpSupport": "none",
304
- "contextFidelity": "full",
305
- "toolCallingFidelity": "full",
306
- "sessionSupport": "full",
307
- "longRunningSupport": "full",
308
- "multimodalSupport": "image-input",
309
- "evidenceSupport": "full"
310
- }
311
- }
312
- ]
313
- }
314
- ```
315
-
316
- 序列化层(Anthropic-compat 走 `packages/llm/src/providers/anthropic.ts:770`,OpenAI-compat 走 `openai.ts:904`)通过基类继承自动转发 image block。这个 flag 只控制 KodaX 自身是否预先拒绝多模态请求 —— 上游模型到底支不支持 vision 由 provider 自己决定。如果模型实际是 text-only,你会看到真实的上游 API 错误,而不是 KodaX 一侧的 `[Provider Policy] multimodal requests are unsupported` 预拦截。
317
-
318
- 库模式下用 `registerCustomProviders()` 显式注册:
319
-
320
- ```typescript
321
- import { registerCustomProviders, runKodaX } from '@kodax-ai/kodax';
322
-
323
- registerCustomProviders([
324
- {
325
- name: 'my-openai-compatible',
326
- protocol: 'openai',
327
- baseUrl: 'https://example.com/v1',
328
- apiKeyEnv: 'MY_LLM_API_KEY',
329
- model: 'my-model',
330
- userAgentMode: 'compat',
331
- },
332
- ]);
333
-
334
- await runKodaX({ provider: 'my-openai-compatible' }, '解释这个仓库');
335
- ```
336
-
337
- ### 6. 打包成单文件二进制(无需 Node)
338
-
339
- KodaX 可以用 `bun --compile` 打包成单可执行文件 + 一个 `builtin/` sidecar 目录,目标机器**不需要安装 Node.js 或任何运行时**。
340
-
341
- 支持目标:`win-x64`、`linux-x64`、`linux-arm64`、`darwin-x64`、`darwin-arm64`。Win7 / glibc < 2.27 的发行版 / 龙芯 LoongArch 暂不支持。
342
-
343
- 本地构建:
344
-
345
- ```bash
346
- # 先在构建机器上装好 Bun(一次性)
347
- npm i -g bun # 或 scoop / brew / curl,详见 docs/release.md
348
-
349
- npm run build:binary # 当前平台(最快)
350
- npm run build:binary:all # 一台机器出全部 5 个目标
351
- node scripts/build-binary.mjs --target=linux-arm64 # 指定平台
352
- ```
353
-
354
- 产物在 `dist/binary/<target>/`:
355
-
356
- ```
357
- dist/binary/linux-x64/
358
- ├── kodax # ~60 MB Bun 编译的二进制
359
- └── builtin/ # 内置 skills sidecar
360
- ```
361
-
362
- 冒烟验证:`dist/binary/<host>/kodax --version`。
363
-
364
- **自动发布**:推送 `v*` git tag 会触发 `.github/workflows/release.yml`,在原生 runner 上构建全部 5 个目标、跑冒烟测试,然后自动创建 GitHub Release 并上传 archives + SHA256SUMS。也可以从 Actions UI 用 `workflow_dispatch` 不打 tag 跑流水线测试。
365
-
366
- 详细的构建参数、archive 结构、`KODAX_BUNDLED` / `KODAX_VERSION` build-time defines、故障排查,参见 [docs/release.md](docs/release.md)。
367
-
368
- ## 内置 Provider 列表
369
-
370
- | Provider | 环境变量 | Reasoning | 默认 Model |
371
- |----------|----------|-----------|-----------|
372
- | anthropic | `ANTHROPIC_API_KEY` | Native | claude-sonnet-4-6 |
373
- | openai | `OPENAI_API_KEY` | Native | gpt-5.3-codex |
374
- | kimi | `KIMI_API_KEY` | Native | kimi-k2.6 |
375
- | kimi-code | `KIMI_CODE_API_KEY` | Native | kimi-for-coding |
376
- | qwen | `QWEN_API_KEY` | Native | qwen3.5-plus |
377
- | zhipu | `ZHIPU_API_KEY` | Native | glm-5 |
378
- | zhipu-coding | `ZHIPU_CODING_API_KEY` | Native | glm-5(GLM Coding Plan 端点) |
379
- | minimax-coding | `MINIMAX_CODING_API_KEY` | Native | MiniMax-M2.7(M2 系列默认;`MiniMax-M3` 原生多模态 + 1M 上下文 Frontier Coding 模型可 `/model` 切换,同网关还有 M2.7-highspeed / M2.5 / M2.5-highspeed / M2.1 / M2.1-highspeed / M2)|
380
- | mimo | `MIMO_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo 按量计费,Anthropic 协议) |
381
- | mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo Token Plan,Anthropic 协议) |
382
- | ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.1(火山方舟 Coding Plan,多模型网关,Anthropic 协议) |
383
- | deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-v4-flash |
384
- | gemini-cli | `GEMINI_API_KEY` | Prompt-only / CLI bridge | (通过 gemini CLI) |
385
- | codex-cli | `OPENAI_API_KEY` | Prompt-only / CLI bridge | (通过 codex CLI) |
386
-
387
- > 不在表里的端点:用上面"自定义 Provider"那一节加进来即可。
388
-
389
- ## 内置工具一览
390
-
391
- KodaX 有 50+ 个内置工具,按类别分组如下(实际暴露给 LLM 是一张扁平表)。
392
-
393
- **文件操作**
394
-
395
- | 工具 | 说明 |
396
- |------|------|
397
- | `read` | 读取文件(支持 offset / limit) |
398
- | `write` | 创建新文件或完整重写 |
399
- | `edit` | 精确字符串替换(支持 `replace_all`) |
400
- | `multi_edit` | 对同一文件做一批独立 edit,整批原子提交 |
401
- | `insert_after_anchor` | 在唯一 anchor 后插入内容,避免整文件重写 |
402
- | `undo` | 撤销最近一次文件修改 |
403
-
404
- **Shell 与搜索**
405
-
406
- | 工具 | 说明 |
407
- |------|------|
408
- | `bash` | 执行 shell 命令(支持后台、输出截断) |
409
- | `glob` / `grep` | 文件名匹配 / 正则内容搜索 |
410
- | `code_search` | 代码搜索,比裸 grep 噪音更低 |
411
- | `semantic_lookup` | 借助 repo intelligence 的符号 / 模块 / 流程感知查找 |
412
- | `web_search` / `web_fetch` | 联网搜索 / 抓取,自带 trust + 时效信号 |
413
-
414
- **Repo Intelligence working tools**
415
-
416
- | 工具 | 说明 |
417
- |------|------|
418
- | `repo_overview` | 仓库结构、关键区域、入口提示、intelligence 快照 |
419
- | `changed_scope` | 当前 diff 涉及的文件 / 区域 / 类别 |
420
- | `changed_diff` / `changed_diff_bundle` | 单文件 / 多文件分页 diff |
421
- | `module_context` | 模块 capsule(依赖、入口、符号、测试、文档) |
422
- | `symbol_context` | 定义 + 可能的 caller/callee + 备选 |
423
- | `process_context` | 入口的近似静态执行/流程 capsule |
424
- | `impact_estimate` | 符号 / 路径 / 模块的影响面估算 |
425
-
426
- **MCP 能力**(配置了 MCP server 时可用)
427
-
428
- | 工具 | 说明 |
429
- |------|------|
430
- | `mcp_search` / `mcp_describe` / `mcp_call` | 通过共享 capability runtime 发现并调用 MCP 工具 |
431
- | `mcp_read_resource` / `mcp_get_prompt` | 读取 MCP 资源、获取 MCP prompt |
432
-
433
- **Git Worktree**
434
-
435
- | 工具 | 说明 |
436
- |------|------|
437
- | `worktree_create` | 在隔离分支上新建 worktree,让 agent 安全工作 |
438
- | `worktree_remove` | 移除 worktree(自带安全检查) |
439
-
440
- **Agent 控制 / 交互**
441
-
442
- | 工具 | 说明 |
443
- |------|------|
444
- | `dispatch_child_task` | 派发子 agent 跑独立调研 / 改动任务。可选 `model_hint: 'fast' \| 'balanced' \| 'deep'`(advisory 标记,routing 在 FEATURE_102 v0.7.45 之前是 no-op) |
445
- | `send_message` | 给在跑 child 队列追加一条 `<coordinator-instruction>` 指令,child 下一个 turn 边界看到。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
446
- | `task_stop` | 请求指定 child 优雅退出。当前 tool 原子结束后 child 看到 `<coordinator-stop-request>` 并 emit 最终摘要。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
447
- | `ask_user_question` | 向用户发起单选 / 多选 / 自由文本提问 |
448
- | `exit_plan_mode` | Plan 模式下提交最终方案给用户审批(仅 REPL) |
449
- | `emit_managed_protocol` | managed-task 协议侧信道(verdict role payload)。v0.7.42 FEATURE_184 起默认走 V2 Worker 单循环 + Sidecar Verifier;v0.7.43 FEATURE_193 退役 V1 chain。 |
450
-
451
- ## Repo Intelligence(可选 premium 引擎)
452
-
453
- KodaX 内置 OSS repo intelligence(`repo_overview` / `module_context` / `symbol_context` / `process_context` / `impact_estimate` 等),让 coding agent 不靠零散 grep/glob 就能理解大型仓库。
454
-
455
- 可选的 **premium 引擎**(`repointel` 本地 daemon,通过 sibling `KodaX-private` 仓发布)增加主动上下文注入、更深的 module capsule,以及一条 KodaX 原生 auto-lane。premium 不可用时 KodaX 自动 fallback 到 OSS。
456
-
457
- ```bash
458
- # 选一个运行模式(off | oss | premium-shared | premium-native | auto)
459
- kodax --repo-intelligence premium-native --repo-intelligence-trace
460
- ```
461
-
462
- 完整安装 / 运行模式 / REPL 控制 / config schema / 第三方宿主接入,详见 [docs/REPOINTEL.md](docs/REPOINTEL.md)。
463
-
464
- ## 仓库结构
465
-
466
- KodaX 是基于 npm workspaces 的 TypeScript monorepo,**源码层 4 个 workspace 包**(FEATURE_194 v0.7.43 包合并 — 9 → 4,ADR-036),npm 上以单 bundle 包 `@kodax-ai/kodax` 发布 + 7 个 SDK subpath exports(`/agent`、`/llm`、`/coding`、`/repl`、`/skills`、`/mcp`、`/session`;ADR-024 + ADR-032 + ADR-038)。核心包:
467
-
468
- | Workspace 包 | 作用 | 主要依赖 |
469
- |----|------|---------|
470
- | `@kodax-ai/llm` | LLM 抽象层(14 个内置 provider alias + 自定义 provider 注册),可独立使用 | `@anthropic-ai/sdk`, `openai` |
471
- | `@kodax-ai/agent` | 通用 Agent 框架 —— Runner / runFanOut / runWithIdleYield / ChildTaskRegistry + 会话管理 + tokenization + 可插拔 compaction + **inline 后**:session-lineage 子树 + capabilities (mcp + skills + builtin) + tracing(subpaths: `/session-lineage`、`/capabilities/mcp`、`/capabilities/skills`、`/tracing`) | `@kodax-ai/llm`, `js-tiktoken`, `fflate`, `yaml` |
472
- | `@kodax-ai/coding` | Coding Agent:50+ 工具(含 `dispatch_child_task`/`send_message`/`task_stop`)、role prompts、agent loop、auto-continue + repo-intelligence protocol(v0.7.43 inline) | `@kodax-ai/llm`, `@kodax-ai/agent` |
473
- | `@kodax-ai/repl` | 完整交互式终端 UI(Ink / React、权限模式、命令系统、流式渲染) | `@kodax-ai/coding`, `ink`, `react` |
474
-
475
- 根目录 `src/kodax_cli.ts` 是 CLI 入口;`src/sdk-{agent,llm,coding,repl,skills,mcp,session}.ts` 是 SDK subpath 入口;构建产物在 `dist/`,单文件二进制在 `dist/binary/<target>/`。
476
-
477
- ### 源码层 vs npm 发布层
478
-
479
- KodaX 有两层结构,SDK 用户需要分开理解:
480
-
481
- - **源码层**:上面 4 个 workspace 包(开发者读代码时看到的物理结构)。
482
- - **npm 发布层**:单个 bundled 包 `@kodax-ai/kodax`,对外暴露 7 个 SDK subpath(SDK 消费者 `import` 时看到的接口)。subpath 分两种角色:
483
- - **完整包 subpath**(`/agent`、`/llm`、`/coding`、`/repl`)—— 每个 1:1 对应一个源码包,暴露完整公开 API。
484
- - **窄子集 subpath**(`/skills`、`/mcp`、`/session`)—— 从 `/agent` 或 `/repl` 切出聚焦的能力子集,让"只用 Skills/MCP/会话管理"的消费者引入更小的依赖。
485
-
486
- | 源码包 | npm subpath | 类型 | 内容 | 典型消费者 |
487
- |---|---|---|---|---|
488
- | `packages/llm` | `@kodax-ai/kodax/llm` | 完整包 | 14-alias LLM 抽象 (77 exports) | 独立 LLM 客户端 |
489
- | `packages/agent` | `@kodax-ai/kodax/agent` | 完整包 | Runner / fan-out / session-lineage / capabilities / tracing (202 exports) | 自定义 agent 框架 |
490
- | `packages/agent` | `@kodax-ai/kodax/skills` | **窄子集** | 仅 Skills 系统 —— `SkillRegistry` / `loadFullSkill` / `expandSkillForLLM` 等 (26 exports = v0.7.43 之前 `@kodax-ai/skills` 完整 API) | Skill 加载器、IDE 插件 |
491
- | `packages/agent` | `@kodax-ai/kodax/mcp` | **窄子集** | 仅 MCP —— `McpCapabilityProvider` / `createMcpTransport` / `searchMcpCatalog` 等 (11 exports = v0.7.43 之前 `@kodax-ai/mcp` 完整 API) | MCP server 宿主 |
492
- | `packages/coding` | `@kodax-ai/kodax/coding` | 完整包 | Coding agent + 50+ 工具 + repo-intelligence (342 exports) | 构建 Claude Code 形态产品 |
493
- | `packages/repl` | `@kodax-ai/kodax/repl` | 完整包 | Ink TUI + 权限模式 + 命令系统 (193 exports) | 终端 UI 消费者 |
494
- | `packages/repl` | `@kodax-ai/kodax/session` | **窄子集** | 仅会话管理 —— `listSessions` / `forkSession` / `watchSessions` 等 (9 exports) | 读取 session 历史的 IDE 插件 |
495
-
496
- **经验法则**:需要 Runner / Agent / fan-out 时从 `/agent` 引入;只需要 skills 或 mcp API 时从 `/skills` 或 `/mcp` 引入,bundle 更小。窄子集是完整包的真子集 —— **不会**有额外符号。
497
-
498
- ```
499
- KodaX/ # 4 workspace packages(FEATURE_194 v0.7.43)
500
- ├── packages/
501
- │ ├── llm/ # @kodax-ai/llm —— 14 个内置 provider alias
502
- │ ├── agent/ # @kodax-ai/agent —— Runner / fan-out / idle-yield + 子树:
503
- │ │ ├── session-lineage/ # 分支 session tree (v0.7.43 inline)
504
- │ │ ├── capabilities/
505
- │ │ ├── mcp/ # MCP 集成 (v0.7.43 inline)
506
- │ │ └── skills/ # Skills 标准实现 + builtin (v0.7.43 inline)
507
- │ │ └── tracing/ # 追踪 / 可观测性 (v0.7.43 inline)
508
- │ ├── coding/ # @kodax-ai/coding —— tools + prompts + agent loop
509
- │ │ └── repo-intelligence/ # protocol.ts (v0.7.43 inline)
510
- │ └── repl/ # @kodax-ai/repl —— Ink TUI
511
- ├── src/
512
- │ ├── kodax_cli.ts # CLI 主入口(bin: `kodax`)
513
- │ └── sdk-*.ts # SDK subpath 入口 → @kodax-ai/kodax/{agent,llm,coding,repl,skills,mcp,session}
514
- ├── scripts/
515
- ├── build-bundle.mjs # esbuild 单 bundle 多 entry 打包(CLI + root + 7 SDK subpath + chunks)
516
- │ ├── build-binary.mjs # Bun --compile 单文件二进制打包
517
- │ └── release.mjs # ADR-024 release-time pkg name/exports 注入
518
- └── .github/workflows/
519
- └── release.yml # v* tag 自动发布 GitHub Release
520
- ```
521
-
522
- 这套拆分让你既可以把 KodaX 当成完整产品使用,也可以只复用其中某一层能力 —— SDK 消费者装 `@kodax-ai/kodax` 后从 subpath(`@kodax-ai/kodax/agent` 等)按需 import。
523
- ## API 导出
524
-
525
- ```typescript
526
- // 主函数
527
- export { runKodaX, KodaXClient };
528
-
529
- // 类型
530
- export type {
531
- KodaXEvents, KodaXOptions, KodaXResult,
532
- KodaXMessage, KodaXContentBlock,
533
- KodaXSessionStorage, KodaXToolDefinition
534
- };
535
-
536
- // 工具
537
- export { KODAX_TOOLS, KODAX_TOOL_REQUIRED_PARAMS, executeTool };
538
-
539
- // Provider
540
- export { getProvider, KODAX_PROVIDERS, KodaXBaseProvider };
541
-
542
- // 工具函数
543
- export {
544
- estimateTokens,
545
- getGitRoot, getGitContext, getEnvContext, getProjectSnapshot,
546
- checkPromiseSignal
547
- };
548
- ```
549
-
550
- ---
551
-
552
- ## 术语说明
553
-
554
- | 术语 | 含义 | 位置 |
555
- |------|------|------|
556
- | **Skills** | Agent 能力(KODAX_TOOLS: read, write, bash 等)+ 扩展 Skills | Coding 层 + Skills 层 |
557
- | **Commands** | CLI 快捷命令(/review, /test 等) | REPL 层 |
558
-
559
- ---
560
-
561
- ## 开发
562
-
563
- ```bash
564
- # 开发模式
565
- npm run dev "你的任务"
566
-
567
- # 构建
568
- npm run build
569
-
570
- # 可选:只构建 workspace packages
571
- npm run build:packages
572
-
573
- # 打包成单文件二进制(当前平台 / 全平台)
574
- npm run build:binary
575
- npm run build:binary:all
576
-
577
- # 测试
578
- npm test
579
-
580
- # Eval-driven development(provider 矩阵、identity round-trip 等)
581
- npm run test:eval
582
-
583
- # 清理
584
- npm run clean
585
- ```
586
-
587
- ### Repo Intelligence 缓存目录
588
-
589
- KodaX 现在会把 Repo Intelligence 的本地缓存分成两条路径:
590
-
591
- - `.agent/repo-intelligence/`
592
- - OSS baseline 的索引、缓存和现有 task-engine 产物。
593
- - `.repointel/`
594
- - premium `repointel` 的 workspace 级共享缓存,供本地 daemon / native frontdoor 使用。
595
-
596
- 这样拆开的目的很明确:
597
-
598
- - premium 不可用时,OSS fallback 仍然可以稳定工作。
599
- - premium 缓存不会污染 OSS 产物目录。
600
- - KodaX 和其他宿主可以共享同一份 premium workspace cache。
601
-
602
- `.repointel/` 是本地生成目录,不应该提交到 Git。
603
-
604
- ---
605
-
606
- ## 文档
607
-
608
- - [README.md](README.md) - 英文版 README
609
- - [docs/release.md](docs/release.md) - 单文件二进制构建与发布流程
610
- - [docs/PRD.md](docs/PRD.md) - 产品需求
611
- - [docs/ADR.md](docs/ADR.md) - 架构决策
612
- - [docs/HLD.md](docs/HLD.md) - 高层设计
613
- - [docs/DD.md](docs/DD.md) - 详细设计
614
- - [docs/FEATURE_LIST.md](docs/FEATURE_LIST.md) - Feature 跟踪
615
- - [docs/test-guides/](docs/test-guides/) - 功能专用测试指南
616
- - [CHANGELOG.md](CHANGELOG.md) - 更新日志(v0.7.0+;更早版本见 [CHANGELOG_ARCHIVE](docs/CHANGELOG_ARCHIVE.md))
617
-
618
-
619
- ---
620
-
621
- ## 许可证
622
-
623
- 公共仓库当前采用:
624
-
625
- - `Apache-2.0`
626
-
627
- ## 相关仓库
628
-
629
- 建议把公仓和私仓 clone 到同一个父目录下,例如:
630
-
631
- - public repo: `<parent>/KodaX`
632
- - private repo: `<parent>/KodaX-private`(未公开发布)
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.svg">
4
+ <source media="(prefers-color-scheme: light)" srcset="assets/logo-light.svg">
5
+ <img src="assets/logo-light.svg" alt="KodaX" width="640">
6
+ </picture>
7
+ </p>
8
+
9
+ <p align="center">
10
+ <b>开源 AI Coding Agent,跑你能拿到的任何 LLM。</b><br>
11
+ Anthropic · OpenAI · DeepSeek · Kimi · 智谱 · MiniMax · 小米 MiMo · 火山方舟 · Qwen · Gemini · Codex<br>
12
+ REPL · CLI · 库 · 免 Node 单文件二进制
13
+ </p>
14
+
15
+ <p align="center">
16
+ <a href="https://www.npmjs.com/package/@kodax-ai/kodax"><img alt="npm version" src="https://img.shields.io/npm/v/@kodax-ai/kodax?style=flat-square&color=cb3837"></a>
17
+ <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-Apache--2.0-blue?style=flat-square"></a>
18
+ <a href="https://github.com/icetomoyo/KodaX/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/icetomoyo/KodaX?style=flat-square&logo=github&color=f1c40f"></a>
19
+ <a href="https://github.com/icetomoyo/KodaX/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/icetomoyo/KodaX/release.yml?style=flat-square&label=release"></a>
20
+ <img alt="providers" src="https://img.shields.io/badge/LLMs-14_aliases_+_custom-2ecc71?style=flat-square">
21
+ </p>
22
+
23
+ <p align="center">
24
+ <a href="#30-秒上手">安装</a> ·
25
+ <a href="#四种使用形态">使用形态</a> ·
26
+ <a href="#为什么用-kodax">为什么用</a> ·
27
+ <a href="CHANGELOG.md">更新日志</a> ·
28
+ <a href="docs/FEATURE_LIST.md">Roadmap</a> ·
29
+ <a href="https://github.com/icetomoyo/KodaX/discussions">讨论</a> ·
30
+ <a href="README.md">English README</a>
31
+ </p>
32
+
33
+ <p align="center">
34
+ <img src="kodax.gif" alt="KodaX 实战演示" width="880">
35
+ </p>
36
+
37
+ ---
38
+
39
+ ## 30 秒上手
40
+
41
+ ```bash
42
+ npm i -g @kodax-ai/kodax
43
+
44
+ # 选一个你有 API key 的 provider
45
+ export ZHIPU_API_KEY=... # 或 KIMI_API_KEY / MINIMAX_API_KEY / MIMO_API_KEY /
46
+ # ARK_API_KEY / DEEPSEEK_API_KEY / ANTHROPIC_API_KEY /
47
+ # OPENAI_API_KEY / QWEN_API_KEY / GEMINI_API_KEY
48
+
49
+ kodax
50
+ ```
51
+
52
+ 就这样。进 REPL,自然语言提问。
53
+
54
+ > **不装 Node 的目标机器**:从 [GitHub Releases](https://github.com/icetomoyo/KodaX/releases) 拿 Bun 编译的单文件二进制(Win / macOS / Linux × x64 + arm64)。详见 [docs/release.md](docs/release.md)。
55
+
56
+ ---
57
+
58
+ ## 四种使用形态
59
+
60
+ | 形态 | 命令 / 入口 | 什么时候用 |
61
+ |---|---|---|
62
+ | **REPL** | `kodax` | 交互式多轮编码会话,流式 UI + 权限 + slash 命令 |
63
+ | **CLI** | `kodax -p "your task"` | 单次脚本任务、CI、批量处理 |
64
+ | **库** | `import { runKodaX } from '@kodax-ai/kodax'` | 嵌入你自己的工具 / agent / 服务 |
65
+ | **单文件二进制** | `./kodax` | 分发到没装 Node 的机器 |
66
+
67
+ ---
68
+
69
+ ## 为什么用 KodaX
70
+
71
+ <table>
72
+ <tr>
73
+ <td width="33%" align="center" valign="top">
74
+ <h3>🇨🇳 6 家国内 LLM 原生</h3>
75
+ <sub>智谱 · Kimi · MiniMax · 小米 MiMo · 火山方舟 · 通义千问</sub>
76
+ <br><br>
77
+ first-class 适配器,跨 provider 在 5-alias canonical panel 做过 <a href="benchmark/EVAL_GUIDELINES.md">prompt-eval 校准</a> —— 不是 OpenAI-compat 转发。
78
+ </td>
79
+ <td width="33%" align="center" valign="top">
80
+ <h3>📦 单文件二进制</h3>
81
+ <sub>Bun --compile · Win / macOS / Linux · x64 + arm64</sub>
82
+ <br><br>
83
+ 目标机器不装 Node。一份文件随处跑 —— 受管环境、内网、CI runner、断网机器都行。
84
+ </td>
85
+ <td width="33%" align="center" valign="top">
86
+ <h3>🌳 可分叉会话血缘</h3>
87
+ <sub>fork · rewind · 并行编辑</sub>
88
+ <br><br>
89
+ 对话历史是 DAG 不是链表。即将发布的 <b>KodaX Space</b> 桌面端基于此。
90
+ </td>
91
+ </tr>
92
+ <tr>
93
+ <td align="center" valign="top">
94
+ <h3>🤖 默认多 agent</h3>
95
+ <sub>V2 Worker 单循环 + Sidecar Verifier + 异步子 agent</sub>
96
+ <br><br>
97
+ <code>dispatch_child_task</code>、<code>send_message</code>、<code>task_stop</code>,多实例自动协调(content-hash safety net)。
98
+ </td>
99
+ <td align="center" valign="top">
100
+ <h3>🧩 Skills + 自构造</h3>
101
+ <sub>Markdown skill,自然语言触发</sub>
102
+ <br><br>
103
+ 5 阶自改造阶梯(scaffold → validate → stage → test → activate),由 8 条 admission invariant 守护。
104
+ </td>
105
+ <td align="center" valign="top">
106
+ <h3>🛠 50+ 内置工具</h3>
107
+ <sub>文件 · shell · 搜索 · MCP · ACP</sub>
108
+ <br><br>
109
+ repo intelligence、语义搜索、git worktree、web fetch,统一从干净的 tool definition 接口暴露。
110
+ </td>
111
+ </tr>
112
+ </table>
113
+
114
+ ## 同类产品对比
115
+
116
+ | 能力 | **KodaX** | Claude Code | Aider | Codex CLI | Cursor | Cline |
117
+ |---|---|---|---|---|---|---|
118
+ | 开源协议 | ✅ Apache&nbsp;2.0 | ❌ source-available | ✅ Apache&nbsp;2.0 | ✅ Apache&nbsp;2.0 | ❌ 闭源 | ✅ Apache&nbsp;2.0 |
119
+ | 免 Node 单文件 | ✅ Bun | ❌ 需 Node | ❌ 需 Python | ✅ Rust | ❌ Electron | ❌ 插件 |
120
+ | 国内 6 家原生<br><sub>(智谱·Kimi·MiniMax·MiMo·方舟·Qwen)</sub> | ✅ 6 家原生 | ❌ | ⚠ 走 LiteLLM | ❌ OpenAI 主线 | ❌ 无 provider 菜单 | ⚠ Kimi/Qwen/DeepSeek |
121
+ | 可分叉会话血缘 | ✅ fork & rewind | ⚠ routines/sessions | ❌ | ❌ | ❌ | ⚠ checkpoints |
122
+ | Multi-agent + MCP + 50+ 工具 | ✅ 三项全有 | ✅ 三项全有 | ⚠ 有 tools, 无 MCP | ✅ 三项全有 | ⚠ Composer + MCP | ✅ 三项全有 |
123
+
124
+ <sub>数据于 2026-05 对照官方公开文档核对([Claude Code](https://github.com/anthropics/claude-code) · [Aider](https://aider.chat/docs/llms.html) · [Codex CLI](https://github.com/openai/codex) · [Cursor](https://cursor.com) · [Cline](https://github.com/cline/cline))。⚠ 表示部分支持 / 需额外配置 / 非 first-class。欢迎 PR 修正。</sub>
125
+
126
+ ## 详细配置
127
+
128
+ > 上面的 `npm i -g @kodax-ai/kodax` 一行就够了。下面这一节是给"从源码构建 / 接自定义 provider / 把 KodaX 当库使用"的场景。
129
+
130
+ ### 1. 从源码构建
131
+
132
+ ```bash
133
+ git clone https://github.com/icetomoyo/KodaX.git
134
+ cd KodaX
135
+ npm install
136
+ npm run build
137
+ npm link
138
+ ```
139
+
140
+ 构建完成后就可以直接启动:
141
+
142
+ ```bash
143
+ kodax
144
+ ```
145
+
146
+ ### 2. 配置模型提供商
147
+
148
+ 最简单的方式是先设置 API Key:
149
+
150
+ ```bash
151
+ # macOS / Linux
152
+ export ZHIPU_API_KEY=your_api_key
153
+
154
+ # PowerShell
155
+ $env:ZHIPU_API_KEY="your_api_key"
156
+ ```
157
+
158
+ 然后在 `~/.kodax/config.json` 里写一个最小配置:
159
+
160
+ ```json
161
+ {
162
+ "provider": "zhipu-coding",
163
+ "reasoningMode": "auto"
164
+ }
165
+ ```
166
+
167
+ ### 3. 启动 REPL 或执行单次任务
168
+
169
+ ```bash
170
+ # 进入交互式 REPL
171
+ kodax
172
+
173
+ # 单次任务
174
+ kodax "Review this repository and summarize the architecture"
175
+ ```
176
+
177
+ 进入 REPL 后,你可以直接自然语言提问,也可以使用命令:
178
+
179
+ ```text
180
+ /help
181
+ /mode
182
+ /agent-mode ama
183
+ ```
184
+
185
+ ### 4. 作为库使用
186
+
187
+ ```bash
188
+ npm install @kodax-ai/kodax
189
+ ```
190
+
191
+ ```typescript
192
+ import { runKodaX } from '@kodax-ai/kodax';
193
+
194
+ const result = await runKodaX(
195
+ {
196
+ provider: 'zhipu-coding',
197
+ reasoningMode: 'auto',
198
+ },
199
+ 'Explain this codebase'
200
+ );
201
+ ```
202
+
203
+ #### SDK Subpath 导入(v0.7.39+)
204
+
205
+ 如果只想用某个子能力,按 subpath 引入更轻量,bundler 也能更好地 tree-shake:
206
+
207
+ ```typescript
208
+ import { Runner } from '@kodax-ai/kodax/agent'; // Agent runtime
209
+ import { getProvider } from '@kodax-ai/kodax/llm'; // LLM 抽象(14 个内置 alias)
210
+ import { runKodaX } from '@kodax-ai/kodax/coding'; // Coding tools + prompts
211
+ import { SkillRegistry } from '@kodax-ai/kodax/skills'; // 零依赖 skill loader
212
+ import { loadConfig } from '@kodax-ai/kodax/repl'; // REPL 配置 / session 工具
213
+ import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager(v0.7.42 起)
214
+ import { listSessions } from '@kodax-ai/kodax/session'; // session 历史工具
215
+ ```
216
+
217
+ 8 个 SDK 入口(root + 7 subpath)通过 ESM 共享 chunk 复用底层代码 —— 只 import `/agent` 不会把 `/repl` 的 Ink + React 一起拉进来。
218
+
219
+ > **SDK 是 ESM-only**。在 CommonJS 上下文(Electron main 进程、传统 Webpack CJS bundle、`require()` 调用方)必须用 `await import('@kodax-ai/kodax/...')` 代替 `require()`。详见 [docs/SDK_EMBEDDER_GUIDE.md §5](docs/SDK_EMBEDDER_GUIDE.md#5-consuming-from-a-commonjs-context-electron-main-cjs-bundles),含 Electron main 完整 recipe + 为什么大多数 subpath 物理上无法做 dual ESM/CJS bundle。
220
+
221
+ ### 5. 自定义 Provider(OpenAI / Anthropic 兼容端点)
222
+
223
+ 任何 OpenAI 或 Anthropic 协议兼容的 endpoint 都可以通过 `customProviders[]` 接入,CLI 模式写在 `~/.kodax/config.json` 里:
224
+
225
+ ```json
226
+ {
227
+ "provider": "my-openai-compatible",
228
+ "customProviders": [
229
+ {
230
+ "name": "my-openai-compatible",
231
+ "protocol": "openai",
232
+ "baseUrl": "https://example.com/v1",
233
+ "apiKeyEnv": "MY_LLM_API_KEY",
234
+ "model": "my-model",
235
+ "userAgentMode": "compat"
236
+ }
237
+ ]
238
+ }
239
+ ```
240
+
241
+ `userAgentMode` 默认 `"compat"`(发送 `KodaX` 而非上游 SDK 的 User-Agent);如果你的网关要求原生 SDK header,再切到 `"sdk"`。
242
+
243
+ #### OpenAI 兼容推理模型
244
+
245
+ 部分 OpenAI-compatible 推理模型要求多轮请求时回放上一轮 assistant 的 `reasoning_content`。DeepSeek V4 thinking mode 是已知必须开启的场景;内置 DeepSeek provider 已经默认开启,但自定义 provider 需要显式配置:
246
+
247
+ ```json
248
+ {
249
+ "customProviders": [
250
+ {
251
+ "name": "my-deepseek-v4",
252
+ "protocol": "openai",
253
+ "baseUrl": "https://example.com/v1",
254
+ "apiKeyEnv": "MY_DEEPSEEK_API_KEY",
255
+ "model": "deepseek-v4-flash",
256
+ "supportsThinking": true,
257
+ "reasoningCapability": "native-toggle",
258
+ "replayReasoningContent": true
259
+ }
260
+ ]
261
+ }
262
+ ```
263
+
264
+ 如果网关同时代理 DeepSeek 和 OpenAI proper,建议用 per-model override,避免把 `reasoning_content` 发给不接受该字段的模型:
265
+
266
+ ```json
267
+ {
268
+ "models": [
269
+ { "id": "deepseek-v4-flash", "replayReasoningContent": true },
270
+ { "id": "gpt-5", "replayReasoningContent": false }
271
+ ]
272
+ }
273
+ ```
274
+
275
+ Sidecar verifier 的结构化裁决请求会优先使用 provider 级 `tool_choice` 强制工具调用;如果某个兼容端点明确拒绝 `tool_choice` 参数,KodaX 会对该 verifier 请求自动重试一次“不强制但仍带 tools”的兼容模式,并保持 fail-open,不会阻塞主 Worker。
276
+
277
+ 调试 Worker 结束后的 verifier 行为时可设置:
278
+
279
+ ```bash
280
+ export KODAX_VERIFIER_LOG=1
281
+ export KODAX_VERIFIER_PROVIDER=anthropic
282
+ export KODAX_VERIFIER_MODEL=claude-haiku-4-5-20251001
283
+ ```
284
+
285
+ `KODAX_VERIFIER_LOG=1` 等价于在 `~/.kodax/config.json` 写 `"verifierLog": true`,会显示 verifier gate、elapsedMs 和 trace;`KODAX_VERIFIER_PROVIDER` / `KODAX_VERIFIER_MODEL` 需要成对设置,用独立模型执行 verifier;`KODAX_VERIFIER_ALWAYS=1` 仅建议调试和回归测试时使用。
286
+
287
+ #### 给自定义 provider 开图片 / vision 输入(FEATURE_134 v0.7.40)
288
+
289
+ 如果你的自定义 provider 后面的模型支持 vision,加 `capabilityProfile.multimodalSupport: "image-input"` 显式开启,KodaX 的 SA-path policy gate 就不会人为拦截多模态请求。内置 vision-capable alias(Anthropic、OpenAI、DeepSeek、Kimi、Qwen、Zhipu、MiniMax、MiMo、Ark,以及通过 CLI `@<path>` file-include 语法传图的 Gemini-CLI)已经默认开了这个 flag。Codex-CLI 和自定义 provider 在底层模型支持图片输入时需要手动 opt-in。
290
+
291
+ ```json
292
+ {
293
+ "customProviders": [
294
+ {
295
+ "name": "my-vision-provider",
296
+ "protocol": "openai",
297
+ "baseUrl": "https://example.com/v1",
298
+ "apiKeyEnv": "MY_LLM_API_KEY",
299
+ "model": "my-vision-model",
300
+ "capabilityProfile": {
301
+ "transport": "native-api",
302
+ "conversationSemantics": "full-history",
303
+ "mcpSupport": "none",
304
+ "contextFidelity": "full",
305
+ "toolCallingFidelity": "full",
306
+ "sessionSupport": "full",
307
+ "longRunningSupport": "full",
308
+ "multimodalSupport": "image-input",
309
+ "evidenceSupport": "full"
310
+ }
311
+ }
312
+ ]
313
+ }
314
+ ```
315
+
316
+ 序列化层(Anthropic-compat 走 `packages/llm/src/providers/anthropic.ts:770`,OpenAI-compat 走 `openai.ts:904`)通过基类继承自动转发 image block。这个 flag 只控制 KodaX 自身是否预先拒绝多模态请求 —— 上游模型到底支不支持 vision 由 provider 自己决定。如果模型实际是 text-only,你会看到真实的上游 API 错误,而不是 KodaX 一侧的 `[Provider Policy] multimodal requests are unsupported` 预拦截。
317
+
318
+ 库模式下用 `registerCustomProviders()` 显式注册:
319
+
320
+ ```typescript
321
+ import { registerCustomProviders, runKodaX } from '@kodax-ai/kodax';
322
+
323
+ registerCustomProviders([
324
+ {
325
+ name: 'my-openai-compatible',
326
+ protocol: 'openai',
327
+ baseUrl: 'https://example.com/v1',
328
+ apiKeyEnv: 'MY_LLM_API_KEY',
329
+ model: 'my-model',
330
+ userAgentMode: 'compat',
331
+ },
332
+ ]);
333
+
334
+ await runKodaX({ provider: 'my-openai-compatible' }, '解释这个仓库');
335
+ ```
336
+
337
+ ### 6. 打包成单文件二进制(无需 Node)
338
+
339
+ KodaX 可以用 `bun --compile` 打包成单可执行文件 + 一个 `builtin/` sidecar 目录,目标机器**不需要安装 Node.js 或任何运行时**。
340
+
341
+ 支持目标:`win-x64`、`linux-x64`、`linux-arm64`、`darwin-x64`、`darwin-arm64`。Win7 / glibc < 2.27 的发行版 / 龙芯 LoongArch 暂不支持。
342
+
343
+ 本地构建:
344
+
345
+ ```bash
346
+ # 先在构建机器上装好 Bun(一次性)
347
+ npm i -g bun # 或 scoop / brew / curl,详见 docs/release.md
348
+
349
+ npm run build:binary # 当前平台(最快)
350
+ npm run build:binary:all # 一台机器出全部 5 个目标
351
+ node scripts/build-binary.mjs --target=linux-arm64 # 指定平台
352
+ ```
353
+
354
+ 产物在 `dist/binary/<target>/`:
355
+
356
+ ```
357
+ dist/binary/linux-x64/
358
+ ├── kodax # ~60 MB Bun 编译的二进制
359
+ └── builtin/ # 内置 skills sidecar
360
+ ```
361
+
362
+ 冒烟验证:`dist/binary/<host>/kodax --version`。
363
+
364
+ **自动发布**:推送 `v*` git tag 会触发 `.github/workflows/release.yml`,在原生 runner 上构建全部 5 个目标、跑冒烟测试,然后自动创建 GitHub Release 并上传 archives + SHA256SUMS。也可以从 Actions UI 用 `workflow_dispatch` 不打 tag 跑流水线测试。
365
+
366
+ 详细的构建参数、archive 结构、`KODAX_BUNDLED` / `KODAX_VERSION` build-time defines、故障排查,参见 [docs/release.md](docs/release.md)。
367
+
368
+ ## 内置 Provider 列表
369
+
370
+ | Provider | 环境变量 | Reasoning | 默认 Model |
371
+ |----------|----------|-----------|-----------|
372
+ | anthropic | `ANTHROPIC_API_KEY` | Native | claude-sonnet-4-6(可 `/model` 切换 `claude-opus-4-6` / `claude-haiku-4-5`) |
373
+ | openai | `OPENAI_API_KEY` | Native | gpt-5.3-codex(可 `/model` 切换 `gpt-5.4` / `gpt-5.3-codex-spark`) |
374
+ | kimi | `KIMI_API_KEY` | Native | kimi-k2.6(可 `/model` 切换 `kimi-k2.7-code` 256K / `k2.5`) |
375
+ | kimi-code | `KIMI_CODE_API_KEY` | Native | kimi-for-coding |
376
+ | qwen | `QWEN_API_KEY` | Native | qwen3.5-plus |
377
+ | zhipu | `ZHIPU_API_KEY` | Native | glm-5(可 `/model` 切换 `glm-5.2` 1M ctx / `glm-5.1` / `glm-5-turbo`) |
378
+ | zhipu-coding | `ZHIPU_CODING_API_KEY` | Native | glm-5(GLM Coding Plan;可 `/model` 切换 `glm-5.2` 1M ctx / `glm-5.1` / `glm-5-turbo`) |
379
+ | minimax-coding | `MINIMAX_CODING_API_KEY` | Native | MiniMax-M2.7(可 `/model` 切换 `MiniMax-M3` Frontier Coding,原生多模态 + 1M ctx;以及 `MiniMax-M2.7-highspeed`) |
380
+ | mimo | `MIMO_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo 按量计费,Anthropic 协议) |
381
+ | mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo Token Plan,Anthropic 协议) |
382
+ | ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.1(火山方舟 Coding Plan:GLM、Kimi、MiniMax M3/M2.7、DeepSeek V3.2/V4、Doubao Seed 2.0 路由) |
383
+ | deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-v4-flash(可 `/model` 切换 `deepseek-v4-pro`) |
384
+ | gemini-cli | `GEMINI_API_KEY` | Prompt-only / CLI bridge | (通过 gemini CLI) |
385
+ | codex-cli | `OPENAI_API_KEY` | Prompt-only / CLI bridge | (通过 codex CLI) |
386
+
387
+ > 不在表里的端点:用上面"自定义 Provider"那一节加进来即可。
388
+
389
+ ## 内置工具一览
390
+
391
+ KodaX 有 50+ 个内置工具,按类别分组如下(实际暴露给 LLM 是一张扁平表)。
392
+
393
+ **文件操作**
394
+
395
+ | 工具 | 说明 |
396
+ |------|------|
397
+ | `read` | 读取文件(支持 offset / limit) |
398
+ | `write` | 创建新文件或完整重写 |
399
+ | `edit` | 精确字符串替换(支持 `replace_all`) |
400
+ | `multi_edit` | 对同一文件做一批独立 edit,整批原子提交 |
401
+ | `insert_after_anchor` | 在唯一 anchor 后插入内容,避免整文件重写 |
402
+ | `undo` | 撤销最近一次文件修改 |
403
+
404
+ **Shell 与搜索**
405
+
406
+ | 工具 | 说明 |
407
+ |------|------|
408
+ | `bash` | 执行 shell 命令(支持后台、输出截断) |
409
+ | `glob` / `grep` | 文件名匹配 / 正则内容搜索 |
410
+ | `code_search` | 代码搜索,比裸 grep 噪音更低 |
411
+ | `semantic_lookup` | 借助 repo intelligence 的符号 / 模块 / 流程感知查找 |
412
+ | `web_search` / `web_fetch` | 联网搜索 / 抓取,自带 trust + 时效信号 |
413
+
414
+ **Repo Intelligence working tools**
415
+
416
+ | 工具 | 说明 |
417
+ |------|------|
418
+ | `repo_overview` | 仓库结构、关键区域、入口提示、intelligence 快照 |
419
+ | `changed_scope` | 当前 diff 涉及的文件 / 区域 / 类别 |
420
+ | `changed_diff` / `changed_diff_bundle` | 单文件 / 多文件分页 diff |
421
+ | `module_context` | 模块 capsule(依赖、入口、符号、测试、文档) |
422
+ | `symbol_context` | 定义 + 可能的 caller/callee + 备选 |
423
+ | `process_context` | 入口的近似静态执行/流程 capsule |
424
+ | `impact_estimate` | 符号 / 路径 / 模块的影响面估算 |
425
+
426
+ **MCP 能力**(配置了 MCP server 时可用)
427
+
428
+ | 工具 | 说明 |
429
+ |------|------|
430
+ | `mcp_search` / `mcp_describe` / `mcp_call` | 通过共享 capability runtime 发现并调用 MCP 工具 |
431
+ | `mcp_read_resource` / `mcp_get_prompt` | 读取 MCP 资源、获取 MCP prompt |
432
+
433
+ **Git Worktree**
434
+
435
+ | 工具 | 说明 |
436
+ |------|------|
437
+ | `worktree_create` | 在隔离分支上新建 worktree,让 agent 安全工作 |
438
+ | `worktree_remove` | 移除 worktree(自带安全检查) |
439
+
440
+ **Agent 控制 / 交互**
441
+
442
+ | 工具 | 说明 |
443
+ |------|------|
444
+ | `dispatch_child_task` | 派发子 agent 跑独立调研 / 改动任务。可选 `model_hint: 'fast' \| 'balanced' \| 'deep'`(advisory 标记,routing 在 FEATURE_102 v0.7.45 之前是 no-op) |
445
+ | `send_message` | 给在跑 child 队列追加一条 `<coordinator-instruction>` 指令,child 下一个 turn 边界看到。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
446
+ | `task_stop` | 请求指定 child 优雅退出。当前 tool 原子结束后 child 看到 `<coordinator-stop-request>` 并 emit 最终摘要。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
447
+ | `ask_user_question` | 向用户发起单选 / 多选 / 自由文本提问 |
448
+ | `exit_plan_mode` | Plan 模式下提交最终方案给用户审批(仅 REPL) |
449
+ | `emit_managed_protocol` | managed-task 协议侧信道(verdict role payload)。v0.7.42 FEATURE_184 起默认走 V2 Worker 单循环 + Sidecar Verifier;v0.7.43 FEATURE_193 退役 V1 chain。 |
450
+
451
+ ## Repo Intelligence(可选 premium 引擎)
452
+
453
+ KodaX 内置 OSS repo intelligence(`repo_overview` / `module_context` / `symbol_context` / `process_context` / `impact_estimate` 等),让 coding agent 不靠零散 grep/glob 就能理解大型仓库。
454
+
455
+ 可选的 **premium 引擎**(`repointel` 本地 daemon,通过 sibling `KodaX-private` 仓发布)增加主动上下文注入、更深的 module capsule,以及一条 KodaX 原生 auto-lane。premium 不可用时 KodaX 自动 fallback 到 OSS。
456
+
457
+ ```bash
458
+ # 选一个运行模式(off | oss | premium-shared | premium-native | auto)
459
+ kodax --repo-intelligence premium-native --repo-intelligence-trace
460
+ ```
461
+
462
+ 完整安装 / 运行模式 / REPL 控制 / config schema / 第三方宿主接入,详见 [docs/REPOINTEL.md](docs/REPOINTEL.md)。
463
+
464
+ ## 仓库结构
465
+
466
+ KodaX 是基于 npm workspaces 的 TypeScript monorepo,**源码层 4 个 workspace 包**(FEATURE_194 v0.7.43 包合并 — 9 → 4,ADR-036),npm 上以单 bundle 包 `@kodax-ai/kodax` 发布 + 7 个 SDK subpath exports(`/agent`、`/llm`、`/coding`、`/repl`、`/skills`、`/mcp`、`/session`;ADR-024 + ADR-032 + ADR-038)。核心包:
467
+
468
+ | Workspace 包 | 作用 | 主要依赖 |
469
+ |----|------|---------|
470
+ | `@kodax-ai/llm` | LLM 抽象层(14 个内置 provider alias + 自定义 provider 注册),可独立使用 | `@anthropic-ai/sdk`, `openai` |
471
+ | `@kodax-ai/agent` | 通用 Agent 框架 —— Runner / runFanOut / runWithIdleYield / ChildTaskRegistry + 会话管理 + tokenization + 可插拔 compaction + **inline 后**:session-lineage 子树 + capabilities (mcp + skills + builtin) + tracing(subpaths: `/session-lineage`、`/capabilities/mcp`、`/capabilities/skills`、`/tracing`) | `@kodax-ai/llm`, `js-tiktoken`, `fflate`, `yaml` |
472
+ | `@kodax-ai/coding` | Coding Agent:50+ 工具(含 `dispatch_child_task`/`send_message`/`task_stop`)、role prompts、agent loop、auto-continue + repo-intelligence protocol(v0.7.43 inline) | `@kodax-ai/llm`, `@kodax-ai/agent` |
473
+ | `@kodax-ai/repl` | 完整交互式终端 UI(Ink / React、权限模式、命令系统、流式渲染) | `@kodax-ai/coding`, `ink`, `react` |
474
+
475
+ 根目录 `src/kodax_cli.ts` 是 CLI 入口;`src/sdk-{agent,llm,coding,repl,skills,mcp,session}.ts` 是 SDK subpath 入口;构建产物在 `dist/`,单文件二进制在 `dist/binary/<target>/`。
476
+
477
+ ### 源码层 vs npm 发布层
478
+
479
+ KodaX 有两层结构,SDK 用户需要分开理解:
480
+
481
+ - **源码层**:上面 4 个 workspace 包(开发者读代码时看到的物理结构)。
482
+ - **npm 发布层**:单个 bundled 包 `@kodax-ai/kodax`,对外暴露 7 个 SDK subpath(SDK 消费者 `import` 时看到的接口)。subpath 分两种角色:
483
+ - **完整包 subpath**(`/agent`、`/llm`、`/coding`、`/repl`)—— 每个 1:1 对应一个源码包,暴露完整公开 API。
484
+ - **窄子集 subpath**(`/skills`、`/mcp`、`/session`)—— 从 `/agent` 或 `/repl` 切出聚焦的能力子集,让"只用 Skills/MCP/会话管理"的消费者引入更小的依赖。
485
+
486
+ | 源码包 | npm subpath | 类型 | 内容 | 典型消费者 |
487
+ |---|---|---|---|---|
488
+ | `packages/llm` | `@kodax-ai/kodax/llm` | 完整包 | 14-alias LLM 抽象 (77 exports) | 独立 LLM 客户端 |
489
+ | `packages/agent` | `@kodax-ai/kodax/agent` | 完整包 | Runner / fan-out / session-lineage / capabilities / tracing (202 exports) | 自定义 agent 框架 |
490
+ | `packages/agent` | `@kodax-ai/kodax/skills` | **窄子集** | 仅 Skills 系统 —— `SkillRegistry` / `loadFullSkill` / `expandSkillForLLM` 等 (26 exports = v0.7.43 之前 `@kodax-ai/skills` 完整 API) | Skill 加载器、IDE 插件 |
491
+ | `packages/agent` | `@kodax-ai/kodax/mcp` | **窄子集** | 仅 MCP —— `McpCapabilityProvider` / `createMcpTransport` / `searchMcpCatalog` 等 (11 exports = v0.7.43 之前 `@kodax-ai/mcp` 完整 API) | MCP server 宿主 |
492
+ | `packages/coding` | `@kodax-ai/kodax/coding` | 完整包 | Coding agent + 50+ 工具 + repo-intelligence (342 exports) | 构建 Claude Code 形态产品 |
493
+ | `packages/repl` | `@kodax-ai/kodax/repl` | 完整包 | Ink TUI + 权限模式 + 命令系统 (193 exports) | 终端 UI 消费者 |
494
+ | `packages/repl` | `@kodax-ai/kodax/session` | **窄子集** | 仅会话管理 —— `listSessions` / `forkSession` / `watchSessions` 等 (9 exports) | 读取 session 历史的 IDE 插件 |
495
+
496
+ **经验法则**:需要 Runner / Agent / fan-out 时从 `/agent` 引入;只需要 skills 或 mcp API 时从 `/skills` 或 `/mcp` 引入,bundle 更小。窄子集是完整包的真子集 —— **不会**有额外符号。
497
+
498
+ **Workflow process surface(FEATURE_229,v0.7.50)**:动态工作流不再只是 REPL 私有文本,而是 Agent 层可复用的 process/event/snapshot 契约。SDK 宿主可以订阅 `WorkflowProcessEvent`、轮询 `WorkflowProcessSnapshot`,并通过 `createWorkflowRunManager` / `createWorkflowLifecycleController` 做 stop/pause/resume、读取 final result/artifact、删除/清理 terminal runs、管理 workflow identity/preflight。`/coding` 负责 coding workflow backend 与 run graph,`/repl` 只是消费同一份 snapshot 渲染 UI;SDK 不需要解析 slash-command 输出或 Ink view-model。`KodaXEvents` 回调新增可选 meta 尾参(`KodaXToolEventMeta` / `KodaXActivityEventMeta` / `KodaXWorkflowEventMeta`),宿主据此把每个子 Agent 的 tool/thinking/progress 事件归因到对应 workflow run 与 child id,无需第二套事件协议;生成/保存的工作流脚本在运行前过 `validateRestrictedWorkflowSource`(编译 + 源策略检查)与 generator 的 repair/smoke 循环。分层取舍见 [docs/ADR.md ADR-040](docs/ADR.md)。
499
+
500
+ **宿主读持久化历史(FEATURE_230 + FEATURE_234,v0.7.51)**:两个面向「宿主读持久化状态」的纯 additive 闭环。**持久化工具记录回放**——resume 的会话现在会回放助手用过的工具卡片,而不是退化成纯文本。`messages` / `lineage` 仍是 canonical;`SessionData.uiHistory` 成为有界、脱敏、仅 terminal 状态的回放缓存。SDK transcript 契约明确化:`loadSession()` = 活动 model context,`loadFullTranscript()` = 追加序 host scrollback,`uiHistory` = 可选回放缓存,工具卡片始终可从 canonical messages 重建(回放类型从 `@kodax-ai/kodax/session` 导出)。**Workflow run 宿主归属**——`WorkflowProcessTrackerOptions` / `WorkflowProcessSnapshot` 新增 host-owned 不透明 `hostMetadata?: Record<string, string>`,SDK 存储、持久化进 `run.json`、回读回显(含进程重启后)但不解释其含义,让宿主零侧表把 run 归回发起它的 session/surface。未 stamp 的旧 run 诚实回显 `hostMetadata === undefined`。详见 [docs/features/v0.7.51.md](docs/features/v0.7.51.md)。
501
+
502
+ ```
503
+ KodaX/ # 4 workspace packages(FEATURE_194 v0.7.43)
504
+ ├── packages/
505
+ │ ├── llm/ # @kodax-ai/llm —— 14 个内置 provider alias
506
+ ├── agent/ # @kodax-ai/agent —— Runner / fan-out / idle-yield + 子树:
507
+ │ │ ├── session-lineage/ # 分支 session tree (v0.7.43 inline)
508
+ ├── capabilities/
509
+ │ │ │ ├── mcp/ # MCP 集成 (v0.7.43 inline)
510
+ │ │ └── skills/ # Skills 标准实现 + builtin (v0.7.43 inline)
511
+ │ │ └── tracing/ # 追踪 / 可观测性 (v0.7.43 inline)
512
+ │ ├── coding/ # @kodax-ai/coding —— tools + prompts + agent loop
513
+ └── repo-intelligence/ # protocol.ts (v0.7.43 inline)
514
+ │ └── repl/ # @kodax-ai/repl —— Ink TUI
515
+ ├── src/
516
+ │ ├── kodax_cli.ts # CLI 主入口(bin: `kodax`)
517
+ │ └── sdk-*.ts # SDK subpath 入口 → @kodax-ai/kodax/{agent,llm,coding,repl,skills,mcp,session}
518
+ ├── scripts/
519
+ │ ├── build-bundle.mjs # esbuild bundle entry 打包(CLI + root + 7 SDK subpath + chunks)
520
+ │ ├── build-binary.mjs # Bun --compile 单文件二进制打包
521
+ │ └── release.mjs # ADR-024 release-time pkg name/exports 注入
522
+ └── .github/workflows/
523
+ └── release.yml # 推 v* tag 自动发布 GitHub Release
524
+ ```
525
+
526
+ 这套拆分让你既可以把 KodaX 当成完整产品使用,也可以只复用其中某一层能力 —— SDK 消费者装 `@kodax-ai/kodax` 后从 subpath(`@kodax-ai/kodax/agent` 等)按需 import。
527
+ ## API 导出
528
+
529
+ ```typescript
530
+ // 主函数
531
+ export { runKodaX, KodaXClient };
532
+
533
+ // 类型
534
+ export type {
535
+ KodaXEvents, KodaXOptions, KodaXResult,
536
+ KodaXMessage, KodaXContentBlock,
537
+ KodaXSessionStorage, KodaXToolDefinition
538
+ };
539
+
540
+ // 工具
541
+ export { KODAX_TOOLS, KODAX_TOOL_REQUIRED_PARAMS, executeTool };
542
+
543
+ // Provider
544
+ export { getProvider, KODAX_PROVIDERS, KodaXBaseProvider };
545
+
546
+ // 工具函数
547
+ export {
548
+ estimateTokens,
549
+ getGitRoot, getGitContext, getEnvContext, getProjectSnapshot,
550
+ checkPromiseSignal
551
+ };
552
+ ```
553
+
554
+ ---
555
+
556
+ ## 术语说明
557
+
558
+ | 术语 | 含义 | 位置 |
559
+ |------|------|------|
560
+ | **Skills** | Agent 能力(KODAX_TOOLS: read, write, bash 等)+ 扩展 Skills | Coding 层 + Skills 层 |
561
+ | **Commands** | CLI 快捷命令(/review, /test 等) | REPL 层 |
562
+
563
+ ---
564
+
565
+ ## 开发
566
+
567
+ ```bash
568
+ # 开发模式
569
+ npm run dev "你的任务"
570
+
571
+ # 构建
572
+ npm run build
573
+
574
+ # 可选:只构建 workspace packages
575
+ npm run build:packages
576
+
577
+ # 打包成单文件二进制(当前平台 / 全平台)
578
+ npm run build:binary
579
+ npm run build:binary:all
580
+
581
+ # 测试
582
+ npm test
583
+
584
+ # Eval-driven development(provider 矩阵、identity round-trip 等)
585
+ npm run test:eval
586
+
587
+ # 清理
588
+ npm run clean
589
+ ```
590
+
591
+ ### Repo Intelligence 缓存目录
592
+
593
+ KodaX 现在会把 Repo Intelligence 的本地缓存分成两条路径:
594
+
595
+ - `.agent/repo-intelligence/`
596
+ - OSS baseline 的索引、缓存和现有 task-engine 产物。
597
+ - `.repointel/`
598
+ - premium `repointel` workspace 级共享缓存,供本地 daemon / native frontdoor 使用。
599
+
600
+ 这样拆开的目的很明确:
601
+
602
+ - premium 不可用时,OSS fallback 仍然可以稳定工作。
603
+ - premium 缓存不会污染 OSS 产物目录。
604
+ - KodaX 和其他宿主可以共享同一份 premium workspace cache。
605
+
606
+ `.repointel/` 是本地生成目录,不应该提交到 Git。
607
+
608
+ ---
609
+
610
+ ## 文档
611
+
612
+ - [README.md](README.md) - 英文版 README
613
+ - [docs/release.md](docs/release.md) - 单文件二进制构建与发布流程
614
+ - [docs/PRD.md](docs/PRD.md) - 产品需求
615
+ - [docs/ADR.md](docs/ADR.md) - 架构决策
616
+ - [docs/HLD.md](docs/HLD.md) - 高层设计
617
+ - [docs/DD.md](docs/DD.md) - 详细设计
618
+ - [docs/FEATURE_LIST.md](docs/FEATURE_LIST.md) - Feature 跟踪
619
+ - [docs/test-guides/](docs/test-guides/) - 功能专用测试指南
620
+ - [CHANGELOG.md](CHANGELOG.md) - 更新日志(v0.7.0+;更早版本见 [CHANGELOG_ARCHIVE](docs/CHANGELOG_ARCHIVE.md))
621
+
622
+
623
+ ---
624
+
625
+ ## 许可证
626
+
627
+ 公共仓库当前采用:
628
+
629
+ - `Apache-2.0`
630
+
631
+ ## 相关仓库
632
+
633
+ 建议把公仓和私仓 clone 到同一个父目录下,例如:
634
+
635
+ - public repo: `<parent>/KodaX`
636
+ - private repo: `<parent>/KodaX-private`(未公开发布)