@kodax-ai/kodax 0.7.39
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.
- package/CHANGELOG.md +1350 -0
- package/LICENSE +191 -0
- package/README.md +1170 -0
- package/README_CN.md +659 -0
- package/dist/acp_events.d.ts +109 -0
- package/dist/acp_logger.d.ts +20 -0
- package/dist/acp_server.d.ts +92 -0
- package/dist/builtin/code-review/SKILL.md +63 -0
- package/dist/builtin/git-workflow/SKILL.md +84 -0
- package/dist/builtin/skill-creator/SKILL.md +122 -0
- package/dist/builtin/skill-creator/agents/analyzer.md +12 -0
- package/dist/builtin/skill-creator/agents/comparator.md +13 -0
- package/dist/builtin/skill-creator/agents/grader.md +13 -0
- package/dist/builtin/skill-creator/references/schemas.md +227 -0
- package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -0
- package/dist/builtin/skill-creator/scripts/aggregate-benchmark.js +209 -0
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -0
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +289 -0
- package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -0
- package/dist/builtin/skill-creator/scripts/compare-runs.js +333 -0
- package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -0
- package/dist/builtin/skill-creator/scripts/generate-review.js +415 -0
- package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -0
- package/dist/builtin/skill-creator/scripts/grade-evals.js +405 -0
- package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -0
- package/dist/builtin/skill-creator/scripts/improve-description.js +161 -0
- package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -0
- package/dist/builtin/skill-creator/scripts/init-skill.js +153 -0
- package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -0
- package/dist/builtin/skill-creator/scripts/install-skill.js +176 -0
- package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -0
- package/dist/builtin/skill-creator/scripts/package-skill.js +124 -0
- package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -0
- package/dist/builtin/skill-creator/scripts/quick-validate.js +166 -0
- package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -0
- package/dist/builtin/skill-creator/scripts/run-eval.js +356 -0
- package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -0
- package/dist/builtin/skill-creator/scripts/run-loop.js +243 -0
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -0
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +225 -0
- package/dist/builtin/skill-creator/scripts/utils.js +273 -0
- package/dist/builtin/tdd/SKILL.md +56 -0
- package/dist/chunks/chunk-4E76FLZ3.js +2 -0
- package/dist/chunks/chunk-7LQ2NCHF.js +1221 -0
- package/dist/chunks/chunk-HUAU4KB3.js +2 -0
- package/dist/chunks/chunk-N2VZ2MJF.js +11 -0
- package/dist/chunks/chunk-SF7WD7E5.js +2 -0
- package/dist/chunks/chunk-SONW6AC7.js +14 -0
- package/dist/chunks/chunk-WEEQZYZS.js +460 -0
- package/dist/chunks/chunk-XI75LZIO.js +30 -0
- package/dist/chunks/compaction-config-YL4SWWII.js +2 -0
- package/dist/chunks/construction-bootstrap-XSE7ZABG.js +5 -0
- package/dist/chunks/devtools-MOFU7YQF.js +2 -0
- package/dist/chunks/dist-AMUYI7R5.js +2 -0
- package/dist/chunks/dist-WKW4CBG6.js +2 -0
- package/dist/chunks/utils-3HW4KOGE.js +2 -0
- package/dist/cli_commands.d.ts +17 -0
- package/dist/cli_option_helpers.d.ts +49 -0
- package/dist/cli_option_helpers.test.d.ts +1 -0
- package/dist/constructed_cli.d.ts +82 -0
- package/dist/constructed_cli.test.d.ts +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +9 -0
- package/dist/kodax_cli.d.ts +7 -0
- package/dist/kodax_cli.js +1882 -0
- package/dist/sdk-agent.d.ts +15 -0
- package/dist/sdk-agent.js +2 -0
- package/dist/sdk-coding.d.ts +20 -0
- package/dist/sdk-coding.js +2 -0
- package/dist/sdk-llm.d.ts +15 -0
- package/dist/sdk-llm.js +2 -0
- package/dist/sdk-repl.d.ts +21 -0
- package/dist/sdk-repl.js +2 -0
- package/dist/sdk-skills.d.ts +16 -0
- package/dist/sdk-skills.js +2 -0
- package/dist/self_modify_cli.d.ts +81 -0
- package/dist/self_modify_cli.test.d.ts +9 -0
- package/dist/skill_cli.d.ts +15 -0
- package/dist/skill_cli.test.d.ts +1 -0
- package/package.json +143 -0
- package/scripts/kodax-bin.cjs +27 -0
- package/scripts/production-env.cjs +16 -0
package/README_CN.md
ADDED
|
@@ -0,0 +1,659 @@
|
|
|
1
|
+
# KodaX
|
|
2
|
+
|
|
3
|
+
轻量、透明、可定制的 TypeScript AI Coding Agent。
|
|
4
|
+
|
|
5
|
+
KodaX 既可以作为命令行工具使用,也可以作为库集成到你的项目里,还能打包成**免 Node 运行时**的单文件二进制分发到目标机器。当前支持 12 个模型提供商,包含完整的 REPL、会话、30+ 工具、Skills,以及 Scout-first 自适应多 Agent 工作流。
|
|
6
|
+
|
|
7
|
+
## 为什么用 KodaX
|
|
8
|
+
|
|
9
|
+
- 透明:代码结构清晰,便于阅读、修改和调试。
|
|
10
|
+
- 灵活:支持多 provider,方便切换模型和网关。
|
|
11
|
+
- 可定制:prompts、tools、skills、session 流程都能改。
|
|
12
|
+
- 可复用:不只是 CLI,也可以把其中一层当库来使用。
|
|
13
|
+
|
|
14
|
+
如果你关心:
|
|
15
|
+
|
|
16
|
+
- 想理解 AI coding agent 是怎么工作的
|
|
17
|
+
- 不想被单一 provider 绑定
|
|
18
|
+
- 希望 agent 逻辑能自己控制
|
|
19
|
+
- 需要一套适合长期开发任务的工程化工作流
|
|
20
|
+
|
|
21
|
+
那 KodaX 会比单纯依赖某个黑盒托管产品更合适。
|
|
22
|
+
|
|
23
|
+
## 快速开始
|
|
24
|
+
|
|
25
|
+
### 1. 安装并构建
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
git clone https://github.com/icetomoyo/KodaX.git
|
|
29
|
+
cd KodaX
|
|
30
|
+
npm install
|
|
31
|
+
npm run build
|
|
32
|
+
npm link
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
构建完成后就可以直接启动:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
kodax
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 2. 配置模型提供商
|
|
42
|
+
|
|
43
|
+
最简单的方式是先设置 API Key:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# macOS / Linux
|
|
47
|
+
export ZHIPU_API_KEY=your_api_key
|
|
48
|
+
|
|
49
|
+
# PowerShell
|
|
50
|
+
$env:ZHIPU_API_KEY="your_api_key"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
然后在 `~/.kodax/config.json` 里写一个最小配置:
|
|
54
|
+
|
|
55
|
+
```json
|
|
56
|
+
{
|
|
57
|
+
"provider": "zhipu-coding",
|
|
58
|
+
"reasoningMode": "auto"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 3. 启动 REPL 或执行单次任务
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 进入交互式 REPL
|
|
66
|
+
kodax
|
|
67
|
+
|
|
68
|
+
# 单次任务
|
|
69
|
+
kodax "Review this repository and summarize the architecture"
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
进入 REPL 后,你可以直接自然语言提问,也可以使用命令:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
/help
|
|
76
|
+
/mode
|
|
77
|
+
/agent-mode ama
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 4. 作为库使用
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install @kodax-ai/kodax
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
import { runKodaX } from '@kodax-ai/kodax';
|
|
88
|
+
|
|
89
|
+
const result = await runKodaX(
|
|
90
|
+
{
|
|
91
|
+
provider: 'zhipu-coding',
|
|
92
|
+
reasoningMode: 'auto',
|
|
93
|
+
},
|
|
94
|
+
'Explain this codebase'
|
|
95
|
+
);
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### SDK Subpath 导入(v0.7.39+)
|
|
99
|
+
|
|
100
|
+
如果只想用某个子能力,按 subpath 引入更轻量,bundler 也能更好地 tree-shake:
|
|
101
|
+
|
|
102
|
+
```typescript
|
|
103
|
+
import { Runner } from '@kodax-ai/kodax/agent'; // Agent runtime
|
|
104
|
+
import { createProvider } from '@kodax-ai/kodax/llm'; // LLM 抽象(12 家 provider)
|
|
105
|
+
import { runKodaX } from '@kodax-ai/kodax/coding'; // Coding tools + prompts
|
|
106
|
+
import { SkillRegistry } from '@kodax-ai/kodax/skills'; // 零依赖 skill loader
|
|
107
|
+
import { loadConfig } from '@kodax-ai/kodax/repl'; // REPL 配置 / session 工具
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
6 个入口(root + 5 subpath)通过 ESM 共享 chunk 复用底层代码 —— 只 import `/agent` 不会把 `/repl` 的 Ink + React 一起拉进来。
|
|
111
|
+
|
|
112
|
+
### 5. 自定义 Provider(OpenAI / Anthropic 兼容端点)
|
|
113
|
+
|
|
114
|
+
任何 OpenAI 或 Anthropic 协议兼容的 endpoint 都可以通过 `customProviders[]` 接入,CLI 模式写在 `~/.kodax/config.json` 里:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"provider": "my-openai-compatible",
|
|
119
|
+
"customProviders": [
|
|
120
|
+
{
|
|
121
|
+
"name": "my-openai-compatible",
|
|
122
|
+
"protocol": "openai",
|
|
123
|
+
"baseUrl": "https://example.com/v1",
|
|
124
|
+
"apiKeyEnv": "MY_LLM_API_KEY",
|
|
125
|
+
"model": "my-model",
|
|
126
|
+
"userAgentMode": "compat"
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`userAgentMode` 默认 `"compat"`(发送 `KodaX` 而非上游 SDK 的 User-Agent);如果你的网关要求原生 SDK header,再切到 `"sdk"`。
|
|
133
|
+
|
|
134
|
+
库模式下用 `registerCustomProviders()` 显式注册:
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
import { registerCustomProviders, runKodaX } from '@kodax-ai/kodax';
|
|
138
|
+
|
|
139
|
+
registerCustomProviders([
|
|
140
|
+
{
|
|
141
|
+
name: 'my-openai-compatible',
|
|
142
|
+
protocol: 'openai',
|
|
143
|
+
baseUrl: 'https://example.com/v1',
|
|
144
|
+
apiKeyEnv: 'MY_LLM_API_KEY',
|
|
145
|
+
model: 'my-model',
|
|
146
|
+
userAgentMode: 'compat',
|
|
147
|
+
},
|
|
148
|
+
]);
|
|
149
|
+
|
|
150
|
+
await runKodaX({ provider: 'my-openai-compatible' }, '解释这个仓库');
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 6. 打包成单文件二进制(无需 Node)
|
|
154
|
+
|
|
155
|
+
KodaX 可以用 `bun --compile` 打包成单可执行文件 + 一个 `builtin/` sidecar 目录,目标机器**不需要安装 Node.js 或任何运行时**。
|
|
156
|
+
|
|
157
|
+
支持目标:`win-x64`、`linux-x64`、`linux-arm64`、`darwin-x64`、`darwin-arm64`。Win7 / glibc < 2.27 的发行版 / 龙芯 LoongArch 暂不支持。
|
|
158
|
+
|
|
159
|
+
本地构建:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# 先在构建机器上装好 Bun(一次性)
|
|
163
|
+
npm i -g bun # 或 scoop / brew / curl,详见 docs/release.md
|
|
164
|
+
|
|
165
|
+
npm run build:binary # 当前平台(最快)
|
|
166
|
+
npm run build:binary:all # 一台机器出全部 5 个目标
|
|
167
|
+
node scripts/build-binary.mjs --target=linux-arm64 # 指定平台
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
产物在 `dist/binary/<target>/`:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
dist/binary/linux-x64/
|
|
174
|
+
├── kodax # ~60 MB Bun 编译的二进制
|
|
175
|
+
└── builtin/ # 内置 skills sidecar
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
冒烟验证:`dist/binary/<host>/kodax --version`。
|
|
179
|
+
|
|
180
|
+
**自动发布**:推送 `v*` git tag 会触发 `.github/workflows/release.yml`,在原生 runner 上构建全部 5 个目标、跑冒烟测试,然后自动创建 GitHub Release 并上传 archives + SHA256SUMS。也可以从 Actions UI 用 `workflow_dispatch` 不打 tag 跑流水线测试。
|
|
181
|
+
|
|
182
|
+
详细的构建参数、archive 结构、`KODAX_BUNDLED` / `KODAX_VERSION` build-time defines、故障排查,参见 [docs/release.md](docs/release.md)。
|
|
183
|
+
|
|
184
|
+
## 内置 Provider 列表
|
|
185
|
+
|
|
186
|
+
| Provider | 环境变量 | Reasoning | 默认 Model |
|
|
187
|
+
|----------|----------|-----------|-----------|
|
|
188
|
+
| anthropic | `ANTHROPIC_API_KEY` | Native | claude-sonnet-4-6 |
|
|
189
|
+
| openai | `OPENAI_API_KEY` | Native | gpt-5.3-codex |
|
|
190
|
+
| kimi | `KIMI_API_KEY` | Native | kimi-k2.6 |
|
|
191
|
+
| kimi-code | `KIMI_API_KEY` | Native | kimi-for-coding |
|
|
192
|
+
| qwen | `QWEN_API_KEY` | Native | qwen3.5-plus |
|
|
193
|
+
| zhipu | `ZHIPU_API_KEY` | Native | glm-5 |
|
|
194
|
+
| zhipu-coding | `ZHIPU_API_KEY` | Native | glm-5(GLM Coding Plan 端点) |
|
|
195
|
+
| minimax-coding | `MINIMAX_API_KEY` | Native | MiniMax-M2.7 |
|
|
196
|
+
| mimo-coding | `MIMO_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo Token Plan,Anthropic 协议) |
|
|
197
|
+
| ark-coding | `ARK_API_KEY` | Native | glm-5.1(火山方舟 Coding Plan,多模型网关,Anthropic 协议) |
|
|
198
|
+
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-v4-flash |
|
|
199
|
+
| gemini-cli | `GEMINI_API_KEY` | Prompt-only / CLI bridge | (通过 gemini CLI) |
|
|
200
|
+
| codex-cli | `OPENAI_API_KEY` | Prompt-only / CLI bridge | (通过 codex CLI) |
|
|
201
|
+
|
|
202
|
+
> 不在表里的端点:用上面"自定义 Provider"那一节加进来即可。
|
|
203
|
+
|
|
204
|
+
## 内置工具一览
|
|
205
|
+
|
|
206
|
+
KodaX 有 30+ 个内置工具,按类别分组如下(实际暴露给 LLM 是一张扁平表)。
|
|
207
|
+
|
|
208
|
+
**文件操作**
|
|
209
|
+
|
|
210
|
+
| 工具 | 说明 |
|
|
211
|
+
|------|------|
|
|
212
|
+
| `read` | 读取文件(支持 offset / limit) |
|
|
213
|
+
| `write` | 创建新文件或完整重写 |
|
|
214
|
+
| `edit` | 精确字符串替换(支持 `replace_all`) |
|
|
215
|
+
| `multi_edit` | 对同一文件做一批独立 edit,整批原子提交 |
|
|
216
|
+
| `insert_after_anchor` | 在唯一 anchor 后插入内容,避免整文件重写 |
|
|
217
|
+
| `undo` | 撤销最近一次文件修改 |
|
|
218
|
+
|
|
219
|
+
**Shell 与搜索**
|
|
220
|
+
|
|
221
|
+
| 工具 | 说明 |
|
|
222
|
+
|------|------|
|
|
223
|
+
| `bash` | 执行 shell 命令(支持后台、输出截断) |
|
|
224
|
+
| `glob` / `grep` | 文件名匹配 / 正则内容搜索 |
|
|
225
|
+
| `code_search` | 代码搜索,比裸 grep 噪音更低 |
|
|
226
|
+
| `semantic_lookup` | 借助 repo intelligence 的符号 / 模块 / 流程感知查找 |
|
|
227
|
+
| `web_search` / `web_fetch` | 联网搜索 / 抓取,自带 trust + 时效信号 |
|
|
228
|
+
|
|
229
|
+
**Repo Intelligence working tools**
|
|
230
|
+
|
|
231
|
+
| 工具 | 说明 |
|
|
232
|
+
|------|------|
|
|
233
|
+
| `repo_overview` | 仓库结构、关键区域、入口提示、intelligence 快照 |
|
|
234
|
+
| `changed_scope` | 当前 diff 涉及的文件 / 区域 / 类别 |
|
|
235
|
+
| `changed_diff` / `changed_diff_bundle` | 单文件 / 多文件分页 diff |
|
|
236
|
+
| `module_context` | 模块 capsule(依赖、入口、符号、测试、文档) |
|
|
237
|
+
| `symbol_context` | 定义 + 可能的 caller/callee + 备选 |
|
|
238
|
+
| `process_context` | 入口的近似静态执行/流程 capsule |
|
|
239
|
+
| `impact_estimate` | 符号 / 路径 / 模块的影响面估算 |
|
|
240
|
+
|
|
241
|
+
**MCP 能力**(配置了 MCP server 时可用)
|
|
242
|
+
|
|
243
|
+
| 工具 | 说明 |
|
|
244
|
+
|------|------|
|
|
245
|
+
| `mcp_search` / `mcp_describe` / `mcp_call` | 通过共享 capability runtime 发现并调用 MCP 工具 |
|
|
246
|
+
| `mcp_read_resource` / `mcp_get_prompt` | 读取 MCP 资源、获取 MCP prompt |
|
|
247
|
+
|
|
248
|
+
**Git Worktree**
|
|
249
|
+
|
|
250
|
+
| 工具 | 说明 |
|
|
251
|
+
|------|------|
|
|
252
|
+
| `worktree_create` | 在隔离分支上新建 worktree,让 agent 安全工作 |
|
|
253
|
+
| `worktree_remove` | 移除 worktree(自带安全检查) |
|
|
254
|
+
|
|
255
|
+
**Agent 控制 / 交互**
|
|
256
|
+
|
|
257
|
+
| 工具 | 说明 |
|
|
258
|
+
|------|------|
|
|
259
|
+
| `dispatch_child_task` | 派发子 agent 跑独立调研 / 改动任务。可选 `model_hint: 'fast' \| 'balanced' \| 'deep'`(advisory 标记,routing 在 FEATURE_102 v0.7.45 之前是 no-op) |
|
|
260
|
+
| `send_message` | 给在跑 child 队列追加一条 `<coordinator-instruction>` 指令,child 下一个 turn 边界看到。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
|
|
261
|
+
| `task_stop` | 请求指定 child 优雅退出。当前 tool 原子结束后 child 看到 `<coordinator-stop-request>` 并 emit 最终摘要。仅 coordinator 可用。(FEATURE_120, v0.7.39) |
|
|
262
|
+
| `ask_user_question` | 向用户发起单选 / 多选 / 自由文本提问 |
|
|
263
|
+
| `exit_plan_mode` | Plan 模式下提交最终方案给用户审批(仅 REPL) |
|
|
264
|
+
| `emit_managed_protocol` | managed-task 协议侧信道(handoff / verdict 等 role payload)。v0.7.36 FEATURE_114 起默认走 V2 Worker→Evaluator 链。 |
|
|
265
|
+
|
|
266
|
+
## Repo Intelligence Premium
|
|
267
|
+
|
|
268
|
+
KodaX 现在支持一套拆分后的 Repo Intelligence 架构:
|
|
269
|
+
|
|
270
|
+
- 公共 OSS baseline 在 public `KodaX` 仓库里
|
|
271
|
+
- premium intelligence 在 private `KodaX-private` 仓库里
|
|
272
|
+
- premium 通过本地 `repointel` frontdoor 和 daemon 运行
|
|
273
|
+
- KodaX 自身支持原生旗舰路径
|
|
274
|
+
|
|
275
|
+
一句话理解:
|
|
276
|
+
|
|
277
|
+
- 没有 premium 时,KodaX 仍然能正常工作
|
|
278
|
+
- 安装 premium 后,KodaX 可以获得更强的仓库理解、影响面分析、上下文压缩和原生自动注入能力
|
|
279
|
+
|
|
280
|
+
## Repo Intelligence 运行模式
|
|
281
|
+
|
|
282
|
+
KodaX 支持这些模式:
|
|
283
|
+
|
|
284
|
+
- `off`
|
|
285
|
+
- 严格关闭 repo-intelligence 工作面
|
|
286
|
+
- 不自动注入,也不暴露 repo working tools
|
|
287
|
+
- 但 `/repointel` 控制命令仍然保留
|
|
288
|
+
- `oss`
|
|
289
|
+
- 只使用 public OSS baseline
|
|
290
|
+
- `premium-shared`
|
|
291
|
+
- 使用 premium,但不走 KodaX 原生 auto lane
|
|
292
|
+
- 适合和其他宿主路径做对比
|
|
293
|
+
- `premium-native`
|
|
294
|
+
- 使用 premium,并走 KodaX 原生路径
|
|
295
|
+
- 这是推荐模式,也是最佳体验
|
|
296
|
+
- `auto`
|
|
297
|
+
- 先尝试 `premium-native`
|
|
298
|
+
- premium 不可用时自动回退到 `oss`
|
|
299
|
+
|
|
300
|
+
## native-first 使用方式
|
|
301
|
+
|
|
302
|
+
当前正式发布推荐使用 native `repointel` 包。
|
|
303
|
+
|
|
304
|
+
也就是说:
|
|
305
|
+
|
|
306
|
+
- 正式 GitHub Release 应该发布 native 包
|
|
307
|
+
- offline bundle 只保留给内部验证或特殊场景
|
|
308
|
+
|
|
309
|
+
### 普通用户最简配置
|
|
310
|
+
|
|
311
|
+
如果 `repointel` 已经在 `PATH`:
|
|
312
|
+
|
|
313
|
+
```json
|
|
314
|
+
{
|
|
315
|
+
"repoIntelligenceMode": "premium-native"
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### 不在 PATH 时
|
|
320
|
+
|
|
321
|
+
```json
|
|
322
|
+
{
|
|
323
|
+
"repoIntelligenceMode": "premium-native",
|
|
324
|
+
"repointelBin": "C:\\Tools\\repointel\\repointel.exe"
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### 作者同父目录联调
|
|
329
|
+
|
|
330
|
+
```json
|
|
331
|
+
{
|
|
332
|
+
"repoIntelligenceMode": "premium-native",
|
|
333
|
+
"repointelEndpoint": "http://127.0.0.1:47891",
|
|
334
|
+
"repointelBin": "C:\\path\\to\\KodaX-private\\packages\\repointel-cli\\dist\\index.js",
|
|
335
|
+
"repoIntelligenceTrace": true
|
|
336
|
+
}
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
配置模板可参考:
|
|
340
|
+
|
|
341
|
+
- [config.example.jsonc](./config.example.jsonc)
|
|
342
|
+
|
|
343
|
+
## `repointelEndpoint` 是什么
|
|
344
|
+
|
|
345
|
+
`repointelEndpoint` 表示 KodaX 连接本地 premium daemon 的地址。
|
|
346
|
+
|
|
347
|
+
默认值通常是:
|
|
348
|
+
|
|
349
|
+
```json
|
|
350
|
+
"repointelEndpoint": "http://127.0.0.1:47891"
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
大多数用户不需要手动配置它,只有这些情况才建议显式设置:
|
|
354
|
+
|
|
355
|
+
- 你改了默认端口
|
|
356
|
+
- 你想同时跑多个 daemon
|
|
357
|
+
- 你在做本地调试或隔离实验
|
|
358
|
+
|
|
359
|
+
## REPL 里怎么看当前状态
|
|
360
|
+
|
|
361
|
+
启动 `kodax` 后,可以直接使用:
|
|
362
|
+
|
|
363
|
+
- `/status`
|
|
364
|
+
- 看简要状态
|
|
365
|
+
- `/repointel`
|
|
366
|
+
- 看更详细的 repo-intelligence 状态
|
|
367
|
+
- `/repointel status`
|
|
368
|
+
- 显式探测本地 premium frontdoor
|
|
369
|
+
|
|
370
|
+
最重要的字段有:
|
|
371
|
+
|
|
372
|
+
- `mode`
|
|
373
|
+
- `engine`
|
|
374
|
+
- `bridge`
|
|
375
|
+
- `status`
|
|
376
|
+
|
|
377
|
+
例如:
|
|
378
|
+
|
|
379
|
+
- `premium-native / premium / native / ok`
|
|
380
|
+
- 说明 premium 生效了,而且走的是 KodaX 原生旗舰路径
|
|
381
|
+
- `oss / oss / none / ok`
|
|
382
|
+
- 说明当前实际运行在 OSS baseline
|
|
383
|
+
|
|
384
|
+
## REPL 里怎么控制 Repo Intelligence
|
|
385
|
+
|
|
386
|
+
可用命令包括:
|
|
387
|
+
|
|
388
|
+
- `/repointel`
|
|
389
|
+
- `/repointel status`
|
|
390
|
+
- `/repointel mode premium-native|premium-shared|oss|off|auto`
|
|
391
|
+
- `/repointel trace on|off|toggle`
|
|
392
|
+
- `/repointel warm`
|
|
393
|
+
- `/repointel endpoint ...`
|
|
394
|
+
- `/repointel bin ...`
|
|
395
|
+
|
|
396
|
+
你也可以用:
|
|
397
|
+
|
|
398
|
+
- `/clear`
|
|
399
|
+
|
|
400
|
+
来清空当前会话上下文。
|
|
401
|
+
|
|
402
|
+
如果要做严格 benchmark,最好每档模式都使用一个全新的 session,避免旧上下文污染结果。
|
|
403
|
+
|
|
404
|
+
## `repoIntelligenceTrace` 有什么用
|
|
405
|
+
|
|
406
|
+
`repoIntelligenceTrace` 是一个诊断和对比开关。
|
|
407
|
+
|
|
408
|
+
打开后,你可以更清楚地看到:
|
|
409
|
+
|
|
410
|
+
- 当前到底是 `oss` 还是 `premium`
|
|
411
|
+
- 当前是 `shared` 还是 `native`
|
|
412
|
+
- daemon latency
|
|
413
|
+
- cache hit/miss
|
|
414
|
+
- capsule token 估算
|
|
415
|
+
|
|
416
|
+
普通用户平时通常可以不开;联调、benchmark、排障时再打开。
|
|
417
|
+
|
|
418
|
+
## `premium-native` 和 `premium-shared` 的区别
|
|
419
|
+
|
|
420
|
+
两者都使用 premium,但区别在于是否使用 KodaX 原生特权路径:
|
|
421
|
+
|
|
422
|
+
- `premium-native`
|
|
423
|
+
- KodaX 旗舰路径
|
|
424
|
+
- 更早预取 intelligence
|
|
425
|
+
- 在 planning / routing / prompt build 前就更主动地使用 premium
|
|
426
|
+
- `premium-shared`
|
|
427
|
+
- 仍然用 premium
|
|
428
|
+
- 但故意不走 KodaX 原生 auto lane
|
|
429
|
+
- 更接近其他宿主的共享接入方式
|
|
430
|
+
|
|
431
|
+
如果你平时自己用 KodaX,推荐 `premium-native`。
|
|
432
|
+
|
|
433
|
+
## 如何更明显地体现 `repointel` 收益
|
|
434
|
+
|
|
435
|
+
最容易体现 repo-intelligence 收益的任务,不是“改单一文件”,而是:
|
|
436
|
+
|
|
437
|
+
- 需要先理解仓库结构
|
|
438
|
+
- 需要缩小范围
|
|
439
|
+
- 需要判断模块、流程、影响面
|
|
440
|
+
|
|
441
|
+
例如:
|
|
442
|
+
|
|
443
|
+
```text
|
|
444
|
+
我要给 KodaX 增加一个真正的 /new 命令。先不要写代码,先判断最可能需要改哪些模块、调用链会经过哪里、最值得先看的 8 个文件是什么。
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
```text
|
|
448
|
+
帮我定位 KodaX 从命令行启动,到进入 REPL 或 ACP,再到真正调用 coding agent 的主入口链。先给我分层图和最关键文件,不要先铺开全部实现。
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
如果你要做 A/B 测试,建议比较:
|
|
452
|
+
|
|
453
|
+
- `off`
|
|
454
|
+
- `oss`
|
|
455
|
+
- `premium-shared`
|
|
456
|
+
- `premium-native`
|
|
457
|
+
|
|
458
|
+
而且每档尽量用全新的 session。
|
|
459
|
+
|
|
460
|
+
## Clients 目录说明
|
|
461
|
+
|
|
462
|
+
`clients/` 目录现在已经收敛成极简结构。
|
|
463
|
+
|
|
464
|
+
它只保留一个共享的开放资产:
|
|
465
|
+
|
|
466
|
+
- `clients/repointel/`
|
|
467
|
+
|
|
468
|
+
这份 shared skill 是 Phase 1 多宿主接入的唯一源:
|
|
469
|
+
|
|
470
|
+
- Codex
|
|
471
|
+
- Claude Code
|
|
472
|
+
- OpenCode
|
|
473
|
+
|
|
474
|
+
都通过同一份 shared skill 接入本地 `repointel`,而不是各自维护一套 host-pack 目录。
|
|
475
|
+
|
|
476
|
+
这样做的原因是:
|
|
477
|
+
|
|
478
|
+
- premium 逻辑在 `KodaX-private` 的 `repointel` 工具里,不在 host 包装层里
|
|
479
|
+
- 多宿主接入本来就是薄层,不应该继续保留一堆 Windows-first 的历史壳目录
|
|
480
|
+
- 共享一个 skill 源更干净、更容易维护,也更符合当前 native-first 的发布方向
|
|
481
|
+
|
|
482
|
+
现在的标准使用方式是:
|
|
483
|
+
|
|
484
|
+
- 用 `clients/repointel/scripts/install.mjs` 把 shared skill 安装到目标宿主需要的位置
|
|
485
|
+
- 用 `clients/repointel/scripts/doctor.mjs` 检查本地 premium / daemon / host skill 安装状态
|
|
486
|
+
- 用 `clients/repointel/scripts/demo.mjs` 做本地演示和验证
|
|
487
|
+
|
|
488
|
+
示例:
|
|
489
|
+
|
|
490
|
+
```powershell
|
|
491
|
+
node .\clients\repointel\scripts\install.mjs --host codex
|
|
492
|
+
node .\clients\repointel\scripts\install.mjs --host claude --workspace-root C:\path\to\workspace
|
|
493
|
+
node .\clients\repointel\scripts\install.mjs --host opencode --workspace-root C:\path\to\workspace
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
补充说明:
|
|
497
|
+
|
|
498
|
+
- 可安装的 skill 目录入口是 `clients/repointel/SKILL.md`
|
|
499
|
+
- `clients/repointel/` 整个目录遵循 Claude Code Skills 规范,`SKILL.md` 是入口,`reference.md` 是辅助参考文件
|
|
500
|
+
- `scripts/install.mjs`、`doctor.mjs`、`demo.mjs` 是仓库维护脚本,位于 `scripts/` 子目录
|
|
501
|
+
- 所以 `clients/repointel/` 现在承载的是完整的第三方宿主集成单元,而不只是一个单独的 skill 文件
|
|
502
|
+
|
|
503
|
+
也就是说:
|
|
504
|
+
|
|
505
|
+
- `clients/` 不是 build 产物
|
|
506
|
+
- 它现在也不再是“每个宿主一套安装包”
|
|
507
|
+
- 它只是存放 shared repointel skill 的正式源码位置
|
|
508
|
+
|
|
509
|
+
## 仓库结构
|
|
510
|
+
|
|
511
|
+
KodaX 是基于 npm workspaces 的 TypeScript monorepo,源码层 9 个 workspace 包,npm 上以单 bundle 包 `@kodax-ai/kodax` 发布 + 5 个 SDK subpath exports(ADR-022 + ADR-024,v0.7.39)。核心包:
|
|
512
|
+
|
|
513
|
+
| Workspace 包 | 作用 | 主要依赖 |
|
|
514
|
+
|----|------|---------|
|
|
515
|
+
| `@kodax-ai/llm` | LLM 抽象层(12 个内置 provider + 自定义 provider 注册),可独立使用 | `@anthropic-ai/sdk`, `openai` |
|
|
516
|
+
| `@kodax-ai/agent` | 通用 Agent 框架 —— Runner / runFanOut / runWithIdleYield / ChildTaskRegistry + 会话管理 + tokenization + 可插拔 compaction(ADR-021 standalone-consumable) | `@kodax-ai/llm`, `js-tiktoken` |
|
|
517
|
+
| `@kodax-ai/skills` | Agent Skills 标准实现(自然语言触发、变量解析) | 零外部依赖 |
|
|
518
|
+
| `@kodax-ai/coding` | Coding Agent:30+ 工具(含 `dispatch_child_task` / `send_message` / `task_stop`)、role prompts、agent loop、auto-continue | `@kodax-ai/llm`, `@kodax-ai/agent`, `@kodax-ai/skills` |
|
|
519
|
+
| `@kodax-ai/repl` | 完整交互式终端 UI(Ink / React、权限模式、命令系统、流式渲染) | `@kodax-ai/coding`, `ink`, `react` |
|
|
520
|
+
|
|
521
|
+
辅助包:`@kodax-ai/mcp`、`@kodax-ai/repointel-protocol`、`@kodax-ai/session-lineage`、`@kodax-ai/tracing`(按需依赖)。
|
|
522
|
+
|
|
523
|
+
根目录 `src/kodax_cli.ts` 是 CLI 入口;`src/sdk-{agent,llm,coding,repl,skills}.ts` 是 5 个 SDK subpath 入口;构建产物在 `dist/`,单文件二进制在 `dist/binary/<target>/`。
|
|
524
|
+
|
|
525
|
+
```
|
|
526
|
+
KodaX/
|
|
527
|
+
├── packages/
|
|
528
|
+
│ ├── ai/ # @kodax-ai/llm —— 12 个 LLM provider 实现
|
|
529
|
+
│ ├── agent/ # @kodax-ai/agent —— Runner / fan-out / idle-yield / session
|
|
530
|
+
│ ├── skills/ # @kodax-ai/skills —— 零依赖 skill 加载器
|
|
531
|
+
│ │ └── builtin/ # 内置 skills:code-review / tdd / git-workflow / skill-creator
|
|
532
|
+
│ ├── coding/ # @kodax-ai/coding —— tools + prompts + agent loop
|
|
533
|
+
│ ├── repl/ # @kodax-ai/repl —— Ink TUI
|
|
534
|
+
│ ├── mcp/ # @kodax-ai/mcp
|
|
535
|
+
│ ├── repointel-protocol/ # @kodax-ai/repointel-protocol
|
|
536
|
+
│ ├── session-lineage/ # @kodax-ai/session-lineage
|
|
537
|
+
│ └── tracing/ # @kodax-ai/tracing
|
|
538
|
+
├── src/
|
|
539
|
+
│ ├── kodax_cli.ts # CLI 主入口(bin: `kodax`)
|
|
540
|
+
│ └── sdk-*.ts # 5 个 SDK subpath 入口 → @kodax-ai/kodax/{agent,llm,coding,repl,skills}
|
|
541
|
+
├── scripts/
|
|
542
|
+
│ ├── build-bundle.mjs # esbuild 单 bundle 多 entry 打包(CLI + 6 SDK entry + chunks)
|
|
543
|
+
│ ├── build-binary.mjs # Bun --compile 单文件二进制打包
|
|
544
|
+
│ └── release.mjs # ADR-024 release-time pkg name/exports 注入
|
|
545
|
+
└── .github/workflows/
|
|
546
|
+
└── release.yml # 推 v* tag 自动发布 GitHub Release
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
这套拆分让你既可以把 KodaX 当成完整产品使用,也可以只复用其中某一层能力 —— SDK 消费者装 `@kodax-ai/kodax` 后从 subpath(`@kodax-ai/kodax/agent` 等)按需 import。
|
|
550
|
+
## API 导出
|
|
551
|
+
|
|
552
|
+
```typescript
|
|
553
|
+
// 主函数
|
|
554
|
+
export { runKodaX, KodaXClient };
|
|
555
|
+
|
|
556
|
+
// 类型
|
|
557
|
+
export type {
|
|
558
|
+
KodaXEvents, KodaXOptions, KodaXResult,
|
|
559
|
+
KodaXMessage, KodaXContentBlock,
|
|
560
|
+
KodaXSessionStorage, KodaXToolDefinition
|
|
561
|
+
};
|
|
562
|
+
|
|
563
|
+
// 工具
|
|
564
|
+
export { KODAX_TOOLS, KODAX_TOOL_REQUIRED_PARAMS, executeTool };
|
|
565
|
+
|
|
566
|
+
// Provider
|
|
567
|
+
export { getProvider, KODAX_PROVIDERS, KodaXBaseProvider };
|
|
568
|
+
|
|
569
|
+
// 工具函数
|
|
570
|
+
export {
|
|
571
|
+
estimateTokens,
|
|
572
|
+
getGitRoot, getGitContext, getEnvContext, getProjectSnapshot,
|
|
573
|
+
checkPromiseSignal
|
|
574
|
+
};
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
---
|
|
578
|
+
|
|
579
|
+
## 术语说明
|
|
580
|
+
|
|
581
|
+
| 术语 | 含义 | 位置 |
|
|
582
|
+
|------|------|------|
|
|
583
|
+
| **Skills** | Agent 能力(KODAX_TOOLS: read, write, bash 等)+ 扩展 Skills | Coding 层 + Skills 层 |
|
|
584
|
+
| **Commands** | CLI 快捷命令(/review, /test 等) | REPL 层 |
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## 开发
|
|
589
|
+
|
|
590
|
+
```bash
|
|
591
|
+
# 开发模式
|
|
592
|
+
npm run dev "你的任务"
|
|
593
|
+
|
|
594
|
+
# 构建
|
|
595
|
+
npm run build
|
|
596
|
+
|
|
597
|
+
# 可选:只构建 workspace packages
|
|
598
|
+
npm run build:packages
|
|
599
|
+
|
|
600
|
+
# 打包成单文件二进制(当前平台 / 全平台)
|
|
601
|
+
npm run build:binary
|
|
602
|
+
npm run build:binary:all
|
|
603
|
+
|
|
604
|
+
# 测试
|
|
605
|
+
npm test
|
|
606
|
+
|
|
607
|
+
# Eval-driven development(provider 矩阵、identity round-trip 等)
|
|
608
|
+
npm run test:eval
|
|
609
|
+
|
|
610
|
+
# 清理
|
|
611
|
+
npm run clean
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
### Repo Intelligence 缓存目录
|
|
615
|
+
|
|
616
|
+
KodaX 现在会把 Repo Intelligence 的本地缓存分成两条路径:
|
|
617
|
+
|
|
618
|
+
- `.agent/repo-intelligence/`
|
|
619
|
+
- OSS baseline 的索引、缓存和现有 task-engine 产物。
|
|
620
|
+
- `.repointel/`
|
|
621
|
+
- premium `repointel` 的 workspace 级共享缓存,供本地 daemon / native frontdoor 使用。
|
|
622
|
+
|
|
623
|
+
这样拆开的目的很明确:
|
|
624
|
+
|
|
625
|
+
- premium 不可用时,OSS fallback 仍然可以稳定工作。
|
|
626
|
+
- premium 缓存不会污染 OSS 产物目录。
|
|
627
|
+
- KodaX 和其他宿主可以共享同一份 premium workspace cache。
|
|
628
|
+
|
|
629
|
+
`.repointel/` 是本地生成目录,不应该提交到 Git。
|
|
630
|
+
|
|
631
|
+
---
|
|
632
|
+
|
|
633
|
+
## 文档
|
|
634
|
+
|
|
635
|
+
- [README.md](README.md) - 英文版 README
|
|
636
|
+
- [docs/release.md](docs/release.md) - 单文件二进制构建与发布流程
|
|
637
|
+
- [docs/PRD.md](docs/PRD.md) - 产品需求
|
|
638
|
+
- [docs/ADR.md](docs/ADR.md) - 架构决策
|
|
639
|
+
- [docs/HLD.md](docs/HLD.md) - 高层设计
|
|
640
|
+
- [docs/DD.md](docs/DD.md) - 详细设计
|
|
641
|
+
- [docs/FEATURE_LIST.md](docs/FEATURE_LIST.md) - Feature 跟踪
|
|
642
|
+
- [docs/test-guides/](docs/test-guides/) - 功能专用测试指南
|
|
643
|
+
- [CHANGELOG.md](CHANGELOG.md) - 更新日志(v0.7.0+;更早版本见 [CHANGELOG_ARCHIVE](docs/CHANGELOG_ARCHIVE.md))
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## 许可证
|
|
649
|
+
|
|
650
|
+
公共仓库当前采用:
|
|
651
|
+
|
|
652
|
+
- `Apache-2.0`
|
|
653
|
+
|
|
654
|
+
## 相关仓库
|
|
655
|
+
|
|
656
|
+
建议把公仓和私仓 clone 到同一个父目录下,例如:
|
|
657
|
+
|
|
658
|
+
- public repo: `<parent>/KodaX`
|
|
659
|
+
- private repo: `<parent>/KodaX-private`(未公开发布)
|