@kodax-ai/kodax 0.7.78 → 0.7.80
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 +3556 -3197
- package/README.md +371 -277
- package/README_CN.md +295 -215
- package/config-templates/config.example.jsonc +24 -2
- package/config-templates/integrations/a2a.example.jsonc +23 -7
- package/dist/builtin/skill-creator/scripts/aggregate-benchmark.js +2 -1
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +4 -3
- package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/compare-runs.js +4 -3
- package/dist/builtin/skill-creator/scripts/generate-review.js +2 -1
- package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/grade-evals.js +4 -3
- package/dist/builtin/skill-creator/scripts/improve-description.js +2 -1
- package/dist/builtin/skill-creator/scripts/init-skill.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/init-skill.js +4 -3
- package/dist/builtin/skill-creator/scripts/install-skill.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/install-skill.js +4 -3
- package/dist/builtin/skill-creator/scripts/package-skill.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/package-skill.js +4 -3
- package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/quick-validate.js +4 -3
- package/dist/builtin/skill-creator/scripts/run-eval.d.ts +1 -0
- package/dist/builtin/skill-creator/scripts/run-eval.js +4 -3
- package/dist/builtin/skill-creator/scripts/run-loop.js +2 -1
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +2 -1
- package/dist/builtin/skill-creator/scripts/utils.d.ts +3 -0
- package/dist/builtin/skill-creator/scripts/utils.js +5 -1
- package/dist/chunks/agent-5PHGNFW3.js +2 -0
- package/dist/chunks/argument-completer-FXRZFMTC.js +2 -0
- package/dist/chunks/chunk-6UENDY33.js +89 -0
- package/dist/chunks/{chunk-6FOJVETH.js → chunk-BWX4YZX3.js} +7 -7
- package/dist/chunks/chunk-CDCCTM5I.js +278 -0
- package/dist/chunks/chunk-CEB5FDND.js +810 -0
- package/dist/chunks/{chunk-2CFHBKRE.js → chunk-E7C4DRD2.js} +2 -2
- package/dist/chunks/chunk-EVXIJPZ6.js +218 -0
- package/dist/chunks/chunk-FQ7NVMSU.js +319 -0
- package/dist/chunks/chunk-GC4JBMBS.js +385 -0
- package/dist/chunks/{chunk-Z3KFRTSB.js → chunk-HTVLCHWH.js} +1 -1
- package/dist/chunks/chunk-IHPH3444.js +655 -0
- package/dist/chunks/{chunk-YAZQTC2L.js → chunk-KHEFUT6O.js} +1 -1
- package/dist/chunks/{chunk-7OEBJGHK.js → chunk-PMKAG4SZ.js} +1 -1
- package/dist/chunks/chunk-RPF5RGWZ.js +479 -0
- package/dist/chunks/{chunk-UID7BLAB.js → chunk-RXXKDR6Y.js} +1 -1
- package/dist/chunks/chunk-T5U4OP2N.js +292 -0
- package/dist/chunks/chunk-TRNAWSXP.js +123 -0
- package/dist/chunks/chunk-UZSHBQER.js +30 -0
- package/dist/chunks/{chunk-TQDBTTIM.js → chunk-VECRQTSD.js} +44 -44
- package/dist/chunks/compaction-config-6J6XCBJS.js +2 -0
- package/dist/chunks/{construction-bootstrap-VQLQGWPY.js → construction-bootstrap-KPCAE3VN.js} +1 -1
- package/dist/chunks/dist-RWEVZOFK.js +2 -0
- package/dist/chunks/{dist-BFT5YIGU.js → dist-WWL2DNIJ.js} +1 -1
- package/dist/chunks/host-OGS2R5J4.js +2 -0
- package/dist/chunks/run-manager-2YMM3BOT.js +2 -0
- package/dist/chunks/{utils-SID4HW2Q.js → utils-2YHRUZYC.js} +1 -1
- package/dist/index.d.ts +21 -20
- package/dist/index.js +4 -4
- package/dist/kodax_bootstrap.js +2 -1
- package/dist/kodax_cli.js +1850 -1476
- package/dist/kodax_resume.js +570 -34
- package/dist/provider-capabilities.json +85 -50
- package/dist/runtime-worker.js +1737 -1369
- package/dist/sandbox-workspace-session.js +285 -19
- package/dist/sdk-a2a.d.ts +19 -13
- package/dist/sdk-a2a.js +8 -8
- package/dist/sdk-agent.d.ts +80 -150
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +186 -66
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +3 -3
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +7 -7
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +31 -213
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +230 -31
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +8 -8
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +283 -18
- package/dist/types-chunks/{base.d-4e74xDdy.d.ts → base.d-DxG0m09Z.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-uAe2Oqda.d.ts → bash-prefix-extractor.d-DStqKIlu.d.ts} +31 -8
- package/dist/types-chunks/{capability-learning.d-CVsdHw4j.d.ts → capability-learning.d-iPSiAmc_.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-BlSv9l3V.d.ts → capsule.d-BuFJaYxA.d.ts} +14 -21
- package/dist/types-chunks/{types.d-BA-Jwpfs.d.ts → controller.d-C2aHqzHj.d.ts} +344 -11
- package/dist/types-chunks/{guardrail.d-CXDYRgZ3.d.ts → guardrail.d-DM-OK0m3.d.ts} +187 -116
- package/dist/types-chunks/{history-retrieval.d-DtCy7x64.d.ts → history-retrieval.d-DImTKgO6.d.ts} +16 -3
- package/dist/types-chunks/{oauth-login.d-Bgb4rdLN.d.ts → oauth-login.d-6i-vidxv.d.ts} +6 -2
- package/dist/types-chunks/{public-api.d-B3AohsxN.d.ts → public-api.d-CewTvUKV.d.ts} +335 -38
- package/dist/types-chunks/{repl.d-Ie_ZXb_U.d.ts → repl.d-DvXQtgr7.d.ts} +5 -5
- package/dist/types-chunks/{resolver.d-iAQ9ocLB.d.ts → resolver.d-C9IW4fmU.d.ts} +5 -2
- package/dist/types-chunks/{run-manager.d-D1twIhF9.d.ts → run-manager.d-C6ahvZqK.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-DB9KksIx.d.ts → sdk-session-C59RUrri.d.ts} +3 -3
- package/dist/types-chunks/shell-command-sets.d-Dp4UvPLL.d.ts +297 -0
- package/dist/types-chunks/{side-query.d-DTuLPcC5.d.ts → side-query.d-CP1LiRiH.d.ts} +8 -2
- package/dist/types-chunks/{types-D3g6XUQr.d.ts → types-Bf3Y3mW-.d.ts} +1 -1
- package/dist/types-chunks/{types.d-BH0ZkTGf.d.ts → types.d-BzpPDBPV.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DIpZJKUl.d.ts → types.d-CgrXrFrq.d.ts} +16 -2
- package/dist/types-chunks/{types.d-DVDTIfB_.d.ts → types.d-yuJzE82x.d.ts} +4 -4
- package/dist/types-chunks/{utils.d-CVp6bFl9.d.ts → utils.d-BpACJmzt.d.ts} +24 -6
- package/docs/SDK_EMBEDDER_GUIDE.md +1148 -598
- package/package.json +6 -3
- package/dist/chunks/agent-ASP4MS3X.js +0 -2
- package/dist/chunks/argument-completer-JYQ7FX3W.js +0 -2
- package/dist/chunks/chunk-35PPHOQ2.js +0 -292
- package/dist/chunks/chunk-43QNNDHR.js +0 -29
- package/dist/chunks/chunk-5GO6FH7L.js +0 -458
- package/dist/chunks/chunk-5NDCSFOP.js +0 -78
- package/dist/chunks/chunk-6XM4B6K2.js +0 -48
- package/dist/chunks/chunk-6YZUE6NC.js +0 -240
- package/dist/chunks/chunk-KQLQYHWU.js +0 -386
- package/dist/chunks/chunk-NXO6GWSY.js +0 -46
- package/dist/chunks/chunk-T2XZTLYE.js +0 -316
- package/dist/chunks/chunk-VAT2QYXM.js +0 -765
- package/dist/chunks/chunk-YVRYHC4C.js +0 -655
- package/dist/chunks/compaction-config-BQSSIWK5.js +0 -2
- package/dist/chunks/dist-PCFE24YP.js +0 -2
- package/dist/chunks/host-UTFXCYYM.js +0 -2
- package/dist/chunks/run-manager-PJU3WIFJ.js +0 -2
- package/dist/types-chunks/guardrail.d-BRE_ErEj.d.ts +0 -156
package/README_CN.md
CHANGED
|
@@ -41,25 +41,26 @@
|
|
|
41
41
|
```bash
|
|
42
42
|
npm i -g @kodax-ai/kodax
|
|
43
43
|
|
|
44
|
-
# 选一个你有 API key 的 provider(`kodax setup --help` 会列出全部)
|
|
45
|
-
export ZHIPU_API_KEY=... # ANTHROPIC_API_KEY / OPENAI_API_KEY / DEEPSEEK_API_KEY /
|
|
46
|
-
# KIMI_API_KEY / KIMI_CODE_API_KEY / QWEN_API_KEY /
|
|
47
|
-
# QWEN_TOKEN_API_KEY / ZHIPU_CODING_API_KEY /
|
|
48
|
-
# ZAI_CODING_API_KEY / MINIMAX_CODING_API_KEY /
|
|
49
|
-
# MIMO_API_KEY / MIMO_CODING_API_KEY / ARK_CODING_API_KEY
|
|
44
|
+
# 选一个你有 API key 的 provider(`kodax setup --help` 会列出全部)
|
|
45
|
+
export ZHIPU_API_KEY=... # ANTHROPIC_API_KEY / OPENAI_API_KEY / DEEPSEEK_API_KEY /
|
|
46
|
+
# KIMI_API_KEY / KIMI_CODE_API_KEY / QWEN_API_KEY /
|
|
47
|
+
# QWEN_TOKEN_API_KEY / ZHIPU_CODING_API_KEY /
|
|
48
|
+
# ZAI_CODING_API_KEY / MINIMAX_CODING_API_KEY /
|
|
49
|
+
# MIMO_API_KEY / MIMO_CODING_API_KEY / ARK_CODING_API_KEY
|
|
50
50
|
|
|
51
51
|
kodax
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
就这样。进 REPL
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
`kodax setup --
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
54
|
+
就这样。进 REPL,自然语言提问。新机器第一次交互式运行 `kodax` 时,会先检查受支持
|
|
55
|
+
的 API Key 环境变量。如果一个都没有,KodaX 只显示 Windows、macOS 和 Linux 的
|
|
56
|
+
添加方法并退出,不创建配置,也不收集或保存 Key。添加后请关闭当前终端,打开新终端,
|
|
57
|
+
再运行 `kodax`。如果已经存在受支持的环境变量但尚未选择 provider,KodaX 才进入
|
|
58
|
+
provider/model 元数据设置。使用 `kodax setup` 重新运行设置,
|
|
59
|
+
使用 `kodax setup --custom` 配置自定义 provider;使用 `kodax setup --help` 或
|
|
60
|
+
REPL `/setup --help` 查看完整路径、环境变量、命令和快捷键。交互式 setup 还会检查
|
|
61
|
+
一次可选 ASRT sandbox:Windows 可能弹出一次 UAC;
|
|
62
|
+
macOS/Linux 会报告 Seatbelt/bubblewrap 所需依赖。拒绝 UAC 或缺少依赖不会破坏普通
|
|
63
|
+
权限管理,日常启动也不会反复提醒。
|
|
63
64
|
|
|
64
65
|
> **不装 Node 的目标机器**:从 [GitHub Releases](https://github.com/icetomoyo/KodaX/releases) 拿 Bun 编译的单文件二进制(Win / macOS / Linux × x64 + arm64)。详见 [docs/release.md](docs/release.md)。
|
|
65
66
|
|
|
@@ -109,111 +110,146 @@ packaged Electron 回归连续执行 20 次普通查询并检查控制台可见
|
|
|
109
110
|
澄清”,只为符合资格的 Sidecar `revise` 发布预算审批状态,并在 embedded 与
|
|
110
111
|
daemon Runtime 边界保留结构化 blocked 原因。
|
|
111
112
|
|
|
112
|
-
**v0.7.76 Kimi Code 模型目录更新**:`kimi-code` 现在默认使用官方
|
|
113
|
-
`k3-256k` Model ID,并直接发送该同名 ID。`kimi-for-coding` 继续作为 K2.7 Code
|
|
114
|
-
可选模型,同时保留 `kimi-for-coding-highspeed` 与 1M `k3` tier。K3 支持
|
|
115
|
-
`low` / `high` / `max` 思考强度,默认 `high`;256K 路由支持图片但不支持视频输入。
|
|
116
|
-
|
|
117
|
-
**v0.7.77 正式版**:AMA 现在通过现有 Actor 控制面按需组合六种具名问题解决
|
|
118
|
-
模式,不引入固定拓扑或隐藏 Workflow。可选策略元数据会形成有界、仅记录事实的
|
|
119
|
-
`PatternTrace`,现有 Sidecar 仍是唯一的终态答案质量裁决者。治理式记忆可在工具
|
|
120
|
-
失败、验证失败或已提交 compact 之后稀疏触发,在下一次 Action-LLM 请求前注入最多
|
|
121
|
-
三条 prompt-safe、低权威证据;默认路径不增加 selector 模型调用,SDK 宿主可在
|
|
122
|
-
进程内显式注入 `memoryRecallRunner`。公开 `kimi` provider 同时新增 1M
|
|
123
|
-
`kimi-k3` 路由,并继续以 K2.7 Code 为默认。详见
|
|
124
|
-
[v0.7.77 设计](docs/features/v0.7.77.md)与
|
|
125
|
-
[发布检查清单](docs/release.md#v0777-release-ready-candidate-verification)。
|
|
126
|
-
冻结的 F274/F275 付费评测已完成;F274 最终 Layer 2/Layer 3 与 F275 pilot 盲审均
|
|
127
|
-
为 `recommend-ship`,随后形成发布确定性契约的联合 `SHIP` 决策。语义记忆选择仍为
|
|
128
|
-
实验性、宿主显式启用能力;本版本不宣称任务质量、token 或延迟改善。
|
|
129
|
-
|
|
130
|
-
**v0.7.78 证据门禁学习、首次配置与权限/沙盒正式版**:后台学习遵循
|
|
131
|
-
Memory-first;只有重复且独立验证的证据,或带已验证终态证据的显式
|
|
132
|
-
preserve-as-Skill 请求,才能把低风险声明式 Skill 放入不可变、项目级的有界
|
|
133
|
-
canary。自动项目信任需要完成三次精确 revision 使用并取得独立验证成功;每个
|
|
134
|
-
revision 都可在 `/learn` 中查看、禁用、回滚、信任或拒绝。受保护/正式 Skill、
|
|
135
|
-
全局提升和 Extension 编写仍必须由用户显式决定。
|
|
136
|
-
|
|
137
|
-
### 将 learned Skill 提升到用户正式目录
|
|
138
|
-
|
|
139
|
-
自动 canary 激活和用户目录提升不是一回事:
|
|
140
|
-
|
|
141
|
-
- 独立验证成功会把项目 Learned Area 中的 `testing` 变为
|
|
142
|
-
`active_learned`;
|
|
143
|
-
- `/learn promote` 是一次显式所有权转移:它把精确 fingerprint 对应、且已审查的
|
|
144
|
-
`ready` 或 `active_learned` revision 复制到用户正式 Skill 目录,并把生命周期
|
|
145
|
-
改为 `promoted_user`。
|
|
146
|
-
|
|
147
|
-
先检查具体 revision,再按名称、slug 或精确 capability ID 提升:
|
|
148
|
-
|
|
149
|
-
```text
|
|
150
|
-
/learn show normalize-release-notes
|
|
151
|
-
/learn promote normalize-release-notes --scope user
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
`--scope user` 是目前唯一支持的 scope,也可以省略。错误 scope、未知或重复
|
|
155
|
-
option,以及多余参数都会失败且不改变目录。目标位置是所配置 KodaX home 下的
|
|
156
|
-
`skills/<slug>/SKILL.md`,通常为
|
|
157
|
-
`~/.kodax/skills/<slug>/SKILL.md`;不同内容的同名正式 Skill 永远不会被覆盖。
|
|
158
|
-
|
|
159
|
-
专属帮助入口为 `/learn promote --help`、`/learn help promote` 和
|
|
160
|
-
`/help learn promote`。在 Ink Learning Center 中可执行 `/learn`,选择一个
|
|
161
|
-
`active_learned` Skill,再选择 **Promote to user catalog**。
|
|
162
|
-
|
|
163
|
-
首次 setup 会创建并校验 core/MCP/Extensions/A2A 分离配置及带注释模板,不覆盖
|
|
164
|
-
现有配置,也不收集密钥。Auto[LLM] 在 classifier 延迟之前放行可精确建模的普通
|
|
165
|
-
读取及 workspace/temp 变更;classifier 基础设施失败只重试一次,随后按
|
|
166
|
-
Accept-edits 边界降级,绝不切换到 rules。ASRT 是可选执行期 containment,不是
|
|
167
|
-
权限裁决者;`/sandbox` 是显式诊断入口,SDK 宿主也可独立使用 `/sandbox`
|
|
168
|
-
subpath,且不可用时不会静默改为非隔离执行。KodaX 自身的 workspace containment
|
|
169
|
-
会拒绝读取常见的用户主目录凭据路径及完整的已解析 agent home,同时不把普通外部
|
|
170
|
-
读取收窄成 allowlist。详见
|
|
171
|
-
[v0.7.78 设计](docs/features/v0.7.78.md)、
|
|
172
|
-
[发布检查清单](docs/release.md#v0778-release-verification)与
|
|
173
|
-
[SDK 指南第 29–30 节](docs/SDK_EMBEDDER_GUIDE.md#29-evidence-gated-background-skill-learning-feature_263-v0778)。
|
|
174
|
-
|
|
175
|
-
本次发布收口同时保证相邻表面不扭曲意图:Edit/Plan 可加载静态 Skill 指令,但不
|
|
176
|
-
预授权其后续副作用;动态 Skill 命令必须由宿主显式控制 executor;根 AMA 使用受
|
|
177
|
-
治理的 `memory_intent` 生命周期(包括在后续取消前已捕获的显式意图);Workflow
|
|
178
|
-
Actor wait 只有在 workflow 显式设置
|
|
179
|
-
deadline 时才超时;embedded、Worker 与 daemon 的 Runtime Auto v4 均声明
|
|
180
|
-
`fallbackPersistsEngine:false`。Actor owner 还会验证 Runtime identity,而不是只看
|
|
181
|
-
PID,因此 PID 复用不会卡住已崩溃 owner。恢复 Session 选择器也改为显示宿主本地时区。
|
|
182
|
-
|
|
183
|
-
v0.7.
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
113
|
+
**v0.7.76 Kimi Code 模型目录更新**:`kimi-code` 现在默认使用官方
|
|
114
|
+
`k3-256k` Model ID,并直接发送该同名 ID。`kimi-for-coding` 继续作为 K2.7 Code
|
|
115
|
+
可选模型,同时保留 `kimi-for-coding-highspeed` 与 1M `k3` tier。K3 支持
|
|
116
|
+
`low` / `high` / `max` 思考强度,默认 `high`;256K 路由支持图片但不支持视频输入。
|
|
117
|
+
|
|
118
|
+
**v0.7.77 正式版**:AMA 现在通过现有 Actor 控制面按需组合六种具名问题解决
|
|
119
|
+
模式,不引入固定拓扑或隐藏 Workflow。可选策略元数据会形成有界、仅记录事实的
|
|
120
|
+
`PatternTrace`,现有 Sidecar 仍是唯一的终态答案质量裁决者。治理式记忆可在工具
|
|
121
|
+
失败、验证失败或已提交 compact 之后稀疏触发,在下一次 Action-LLM 请求前注入最多
|
|
122
|
+
三条 prompt-safe、低权威证据;默认路径不增加 selector 模型调用,SDK 宿主可在
|
|
123
|
+
进程内显式注入 `memoryRecallRunner`。公开 `kimi` provider 同时新增 1M
|
|
124
|
+
`kimi-k3` 路由,并继续以 K2.7 Code 为默认。详见
|
|
125
|
+
[v0.7.77 设计](docs/features/v0.7.77.md)与
|
|
126
|
+
[发布检查清单](docs/release.md#v0777-release-ready-candidate-verification)。
|
|
127
|
+
冻结的 F274/F275 付费评测已完成;F274 最终 Layer 2/Layer 3 与 F275 pilot 盲审均
|
|
128
|
+
为 `recommend-ship`,随后形成发布确定性契约的联合 `SHIP` 决策。语义记忆选择仍为
|
|
129
|
+
实验性、宿主显式启用能力;本版本不宣称任务质量、token 或延迟改善。
|
|
130
|
+
|
|
131
|
+
**v0.7.78 证据门禁学习、首次配置与权限/沙盒正式版**:后台学习遵循
|
|
132
|
+
Memory-first;只有重复且独立验证的证据,或带已验证终态证据的显式
|
|
133
|
+
preserve-as-Skill 请求,才能把低风险声明式 Skill 放入不可变、项目级的有界
|
|
134
|
+
canary。自动项目信任需要完成三次精确 revision 使用并取得独立验证成功;每个
|
|
135
|
+
revision 都可在 `/learn` 中查看、禁用、回滚、信任或拒绝。受保护/正式 Skill、
|
|
136
|
+
全局提升和 Extension 编写仍必须由用户显式决定。
|
|
137
|
+
|
|
138
|
+
### 将 learned Skill 提升到用户正式目录
|
|
139
|
+
|
|
140
|
+
自动 canary 激活和用户目录提升不是一回事:
|
|
141
|
+
|
|
142
|
+
- 独立验证成功会把项目 Learned Area 中的 `testing` 变为
|
|
143
|
+
`active_learned`;
|
|
144
|
+
- `/learn promote` 是一次显式所有权转移:它把精确 fingerprint 对应、且已审查的
|
|
145
|
+
`ready` 或 `active_learned` revision 复制到用户正式 Skill 目录,并把生命周期
|
|
146
|
+
改为 `promoted_user`。
|
|
147
|
+
|
|
148
|
+
先检查具体 revision,再按名称、slug 或精确 capability ID 提升:
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
/learn show normalize-release-notes
|
|
152
|
+
/learn promote normalize-release-notes --scope user
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`--scope user` 是目前唯一支持的 scope,也可以省略。错误 scope、未知或重复
|
|
156
|
+
option,以及多余参数都会失败且不改变目录。目标位置是所配置 KodaX home 下的
|
|
157
|
+
`skills/<slug>/SKILL.md`,通常为
|
|
158
|
+
`~/.kodax/skills/<slug>/SKILL.md`;不同内容的同名正式 Skill 永远不会被覆盖。
|
|
159
|
+
|
|
160
|
+
专属帮助入口为 `/learn promote --help`、`/learn help promote` 和
|
|
161
|
+
`/help learn promote`。在 Ink Learning Center 中可执行 `/learn`,选择一个
|
|
162
|
+
`active_learned` Skill,再选择 **Promote to user catalog**。
|
|
163
|
+
|
|
164
|
+
首次 setup 会创建并校验 core/MCP/Extensions/A2A 分离配置及带注释模板,不覆盖
|
|
165
|
+
现有配置,也不收集密钥。Auto[LLM] 在 classifier 延迟之前放行可精确建模的普通
|
|
166
|
+
读取及 workspace/temp 变更;classifier 基础设施失败只重试一次,随后按
|
|
167
|
+
Accept-edits 边界降级,绝不切换到 rules。ASRT 是可选执行期 containment,不是
|
|
168
|
+
权限裁决者;`/sandbox` 是显式诊断入口,SDK 宿主也可独立使用 `/sandbox`
|
|
169
|
+
subpath,且不可用时不会静默改为非隔离执行。KodaX 自身的 workspace containment
|
|
170
|
+
会拒绝读取常见的用户主目录凭据路径及完整的已解析 agent home,同时不把普通外部
|
|
171
|
+
读取收窄成 allowlist。详见
|
|
172
|
+
[v0.7.78 设计](docs/features/v0.7.78.md)、
|
|
173
|
+
[发布检查清单](docs/release.md#v0778-release-verification)与
|
|
174
|
+
[SDK 指南第 29–30 节](docs/SDK_EMBEDDER_GUIDE.md#29-evidence-gated-background-skill-learning-feature_263-v0778)。
|
|
175
|
+
|
|
176
|
+
本次发布收口同时保证相邻表面不扭曲意图:Edit/Plan 可加载静态 Skill 指令,但不
|
|
177
|
+
预授权其后续副作用;动态 Skill 命令必须由宿主显式控制 executor;根 AMA 使用受
|
|
178
|
+
治理的 `memory_intent` 生命周期(包括在后续取消前已捕获的显式意图);Workflow
|
|
179
|
+
Actor wait 只有在 workflow 显式设置
|
|
180
|
+
deadline 时才超时;embedded、Worker 与 daemon 的 Runtime Auto v4 均声明
|
|
181
|
+
`fallbackPersistsEngine:false`。Actor owner 还会验证 Runtime identity,而不是只看
|
|
182
|
+
PID,因此 PID 复用不会卡住已崩溃 owner。恢复 Session 选择器也改为显示宿主本地时区。
|
|
183
|
+
|
|
184
|
+
**v0.7.79 发布**:configured outbound A2A Agent 现在可持久化两项彼此独立、
|
|
185
|
+
默认拒绝的网络权限:private-address 访问与非 loopback 明文 HTTP。embedded Worker
|
|
186
|
+
与共享 daemon 会协调并执行同一份授权配置。Runtime 宿主同时获得唯一权威的
|
|
187
|
+
Session 状态、有界只读诊断、字节保持的 Session 导出、严格 transcript 观测,
|
|
188
|
+
证据约束的普通对话投影,以及通过 capability 协商并仅在 daemon 空闲时升级的
|
|
189
|
+
有界流式事件合并。standalone 子进程、Session lineage、shell 清理、发布 sidecar
|
|
190
|
+
和并行 admission 路径也完成了相应的发布加固。
|
|
191
|
+
|
|
192
|
+
OpenAI-compatible 自定义 provider 现在可在 provider 或 model 级选择 `max_tokens`
|
|
193
|
+
或 `max_completion_tokens`。DeepSeek V4 Flash/Pro 使用各自的 reasoning profile,
|
|
194
|
+
并正确标记为纯文本。详见 [v0.7.79 设计](docs/features/v0.7.79.md)与
|
|
195
|
+
[发布清单](docs/release.md#v0779-release-preparation)。FEATURE_280 已显式改期到
|
|
196
|
+
v0.7.81(2026-08-04 再改期到 v0.7.86),本版本没有把它表述为已交付。Issue 256 同样已显式改期到 v0.7.84,
|
|
197
|
+
本版本没有把它表述为已交付。
|
|
198
|
+
|
|
199
|
+
**v0.7.80 加固发布**:CLI 现在支持在 `~/.kodax/config.json` 中配置
|
|
200
|
+
`worker.configuredA2A`:嵌入式 Runtime 改为 Worker 托管,并在 Worker owner 内
|
|
201
|
+
装载 configured A2A 执行平面,因此 configured outbound Agent 会以
|
|
202
|
+
`external:<name>` 出现在 `list_dispatchable_agents` 中并可用 `spawn_agent`
|
|
203
|
+
调度。该模式会拒绝 configured MCP server 或 Extension(它们无法跨 Worker
|
|
204
|
+
边界);如需保留这些能力,请使用默认 inline Runtime。Worker 托管的嵌入式
|
|
205
|
+
CLI 会话也会像 daemon 模式一样把 run options 收敛为
|
|
206
|
+
JSON 安全的 wire DTO,而不再以 `RuntimeTransportBoundaryError` 崩溃。Auto
|
|
207
|
+
permission 分析不再把普通搜索范围与工具 metadata 当作 unresolved,
|
|
208
|
+
`max_tokens` 截断的 classifier 重试改用 1024-token 预算(Issue 275)。Managed
|
|
209
|
+
AMA 回合现在以 500 次迭代的机械 panic fuse 约束单次不间断工具循环,每次
|
|
210
|
+
idle-yield 恢复都会重置计数——它只是失控循环的熔断,绝不是累计任务预算;触发
|
|
211
|
+
熔断的 Runner 会抛出携带恢复 transcript 的结构化 `RunnerIterationLimitError`。
|
|
212
|
+
Managed-run 重复循环已被封堵,并行 review 与 delegation 指引已恢复并收紧。
|
|
213
|
+
FEATURE_278/279/282/283/285 已显式改期到 v0.7.85,因此 v0.7.80 仍是
|
|
214
|
+
debug/patch 槽位,没有把未完成特性表述为已交付。详见
|
|
215
|
+
[v0.7.80 发布清单](docs/release.md#v0780-release-preparation)。
|
|
216
|
+
|
|
217
|
+
v0.7.77 还增加了由宿主显式配置的 Shell Execution Contract。Runtime Session
|
|
218
|
+
设置或单次 Run 可以选择 `pwsh`、Windows PowerShell、`cmd`、`bash`、`zsh`
|
|
219
|
+
或 Git Bash 的绝对路径;KodaX 会在实际项目 cwd 中解析 shell 环境,再通过同一
|
|
220
|
+
解释器执行命令。环境缓存按 contract 与 cwd 隔离,使用有界 TTL,也可由宿主显式
|
|
221
|
+
刷新。Provider 凭据与执行控制变量会在加载 profile/setup 前以及实际执行前分别
|
|
222
|
+
过滤;旧的 platform-shell 路径同样会过滤凭据型变量。用户级 `sandbox.envPass`
|
|
223
|
+
明确列出的变量只会在最终命令目标中恢复。没有配置 `shellExecution` 时仍保持原有
|
|
224
|
+
解释器路径。详见
|
|
225
|
+
[SDK Embedder Guide 第 28 节](docs/SDK_EMBEDDER_GUIDE.md#28-host-configurable-shell-execution-contract-v0777)
|
|
226
|
+
与 [Issue 214 回归指南](docs/test-guides/ISSUE_214_v0.7.77_REGRESSION_GUIDE.md)。
|
|
227
|
+
|
|
228
|
+
Kimi Code 请求现在还会携带由 Runtime 逻辑上下文派生的稳定、不透明 Prompt Cache
|
|
229
|
+
affinity key。它会在跨 Run、重试、fallback、恢复与压缩时复用;递归子 Agent 则按
|
|
230
|
+
规范 Agent 路径获得与 root 和临时 transcript Session 隔离的 key。公开 Kimi 与
|
|
231
|
+
官方 OpenAI 使用对应的 `prompt_cache_key`;其他兼容网关保持显式 opt-in,因为
|
|
232
|
+
部分严格端点会拒绝未知字段。该能力提高缓存路由稳定性,但不能绕过 Provider TTL
|
|
233
|
+
或缓存分片。详见
|
|
234
|
+
[Issue 215 回归指南](docs/test-guides/ISSUE_215_v0.7.77_REGRESSION_GUIDE.md)。
|
|
235
|
+
Codex CLI 的缓存读取/写入与 Gemini CLI 的缓存读取现在会原样贯穿 CLI bridge
|
|
236
|
+
和 Runtime diagnostics,不做估算;Provider 明确报告的 `0` 与未报告字段保持
|
|
237
|
+
可区分。详见
|
|
238
|
+
[Issue 216 回归指南](docs/test-guides/ISSUE_216_v0.7.77_REGRESSION_GUIDE.md)。
|
|
239
|
+
CLI bridge 还会让首个原生 CLI turn 以 fresh 模式启动,只恢复 CLI 自己报告的
|
|
240
|
+
原生 session ID;无 conversation ID 的 stateless 调用每次创建独立 ACP Session,
|
|
241
|
+
非零 CLI 退出会显式失败。用户主动取消保持安静,hard/idle timeout 的 Abort 则会
|
|
242
|
+
作为失败进入 Runtime 恢复路径,不再伪装成空成功;已经报告成功但迟迟不退出的
|
|
243
|
+
CLI 也会在配置的 deadline 被终止。详见
|
|
244
|
+
[Issue 217 回归指南](docs/test-guides/ISSUE_217_v0.7.77_REGRESSION_GUIDE.md)。
|
|
245
|
+
|
|
246
|
+
**v0.7.72–v0.7.73 Runtime 权限契约:**Auto Mode 的权限决策由 Runtime Session 持有,
|
|
247
|
+
不再由 UI hook 抢先决定。Runtime 会跨 turn 复用 LLM/rules guardrail,先分类、
|
|
248
|
+
仅在 `escalate` 时创建共享 permission 请求,并持久化显式选择的 engine。
|
|
249
|
+
Session 也可设置 classifier model 和有界 timeout;`auto` 默认使用 LLM
|
|
250
|
+
分类,没有有效 classifier model 时会在调用 provider 或创建审批前返回可恢复配置错误,
|
|
251
|
+
绝不静默退回 rules。v0.7.78 中 classifier 失败会重试一次,再按 Accept-edits
|
|
252
|
+
安全边界降级,绝不把 engine 改为 rules。Runtime 权限请求可给出由 Runtime 生成的精确作用域建议:一次允许、
|
|
217
253
|
本 Session 允许,或(仅安全场景)持久允许;客户端只能回传不透明 suggestion id,不能从
|
|
218
254
|
预览内容自行扩大范围。持久授权由 daemon 持有并通过 revision 管理。没有宿主审批回调时,
|
|
219
255
|
不会向模型暴露 `exit_plan_mode`。完整 SDK 接入见
|
|
@@ -222,9 +258,9 @@ Session 也可设置 classifier model 和有界 timeout;`auto` 默认使用 LL
|
|
|
222
258
|
**v0.7.74 Auto 切换可靠性:**默认用 `Shift+Tab` 在 `Plan -> Edits -> Auto`
|
|
223
259
|
之间循环,`Shift+Enter` 仍用于换行。进入 Auto 时状态栏会立即显示已解析的
|
|
224
260
|
`Auto[LLM]` 或 `Auto[RULES]`,同一 Session 的 Runtime 设置按键入顺序串行提交,
|
|
225
|
-
快速循环不会让较早的异步结果覆盖最后一次选择。`Auto[RULES]` 是手动选择后的
|
|
226
|
-
合法粘性状态;从 v0.7.78 起它只由显式/持久化选择产生。使用
|
|
227
|
-
`/auto-engine llm` 可显式选择 LLM 分类。
|
|
261
|
+
快速循环不会让较早的异步结果覆盖最后一次选择。`Auto[RULES]` 是手动选择后的
|
|
262
|
+
合法粘性状态;从 v0.7.78 起它只由显式/持久化选择产生。使用
|
|
263
|
+
`/auto-engine llm` 可显式选择 LLM 分类。
|
|
228
264
|
|
|
229
265
|
## 为什么用 KodaX
|
|
230
266
|
|
|
@@ -307,61 +343,83 @@ kodax
|
|
|
307
343
|
|
|
308
344
|
可以先运行不会收集 Key 的交互配置:
|
|
309
345
|
|
|
310
|
-
```bash
|
|
311
|
-
kodax setup
|
|
312
|
-
|
|
313
|
-
# 交互配置自定义 OpenAI/Anthropic-compatible provider
|
|
314
|
-
kodax setup --custom
|
|
315
|
-
|
|
316
|
-
# 只显示完整指导,不修改文件
|
|
317
|
-
kodax setup --help
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
setup 会检查以下活跃文件以及对应的 `*.example.jsonc` 注释模板:
|
|
321
|
-
|
|
322
|
-
- `~/.kodax/config.json` 与 `~/.kodax/config.example.jsonc`
|
|
323
|
-
- `~/.kodax/integrations/mcp.json`
|
|
324
|
-
- `~/.kodax/integrations/extensions.json`
|
|
325
|
-
- `~/.kodax/integrations/a2a.json`
|
|
326
|
-
|
|
327
|
-
活跃 `config.json` 仍是严格 JSON;`config.example.jsonc` 第一行指向全部分离配置,
|
|
328
|
-
并注释说明所有受支持的 core 配置项。setup 不覆盖已有文件;创建空的权威分离配置
|
|
329
|
-
前会先保全可读取的旧 `config.json#mcpServers` / `config.json#extensions`。命令会
|
|
330
|
-
先验证已有活动配置;发现无效文件时会报告并停止,不创建或覆盖任何配置。随后才会
|
|
331
|
-
保存 provider/model
|
|
346
|
+
```bash
|
|
347
|
+
kodax setup
|
|
348
|
+
|
|
349
|
+
# 交互配置自定义 OpenAI/Anthropic-compatible provider
|
|
350
|
+
kodax setup --custom
|
|
351
|
+
|
|
352
|
+
# 只显示完整指导,不修改文件
|
|
353
|
+
kodax setup --help
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
setup 会检查以下活跃文件以及对应的 `*.example.jsonc` 注释模板:
|
|
357
|
+
|
|
358
|
+
- `~/.kodax/config.json` 与 `~/.kodax/config.example.jsonc`
|
|
359
|
+
- `~/.kodax/integrations/mcp.json`
|
|
360
|
+
- `~/.kodax/integrations/extensions.json`
|
|
361
|
+
- `~/.kodax/integrations/a2a.json`
|
|
362
|
+
|
|
363
|
+
活跃 `config.json` 仍是严格 JSON;`config.example.jsonc` 第一行指向全部分离配置,
|
|
364
|
+
并注释说明所有受支持的 core 配置项。setup 不覆盖已有文件;创建空的权威分离配置
|
|
365
|
+
前会先保全可读取的旧 `config.json#mcpServers` / `config.json#extensions`。命令会
|
|
366
|
+
先验证已有活动配置;发现无效文件时会报告并停止,不创建或覆盖任何配置。随后才会
|
|
367
|
+
保存 provider/model,告诉你准确的环境变量名,然后退出以便重启终端。配置自定义
|
|
368
|
+
provider 时,setup 要求填写的 `apiKeyEnv` 是环境变量名(例如
|
|
369
|
+
`MY_LLM_API_KEY`),不是 API Key 本身;`config.json` 只保存这个名字。setup 完成后,
|
|
370
|
+
必须把该 provider 的真实 API Key 设置为这个同名环境变量的值;KodaX 不会代为写入
|
|
371
|
+
系统环境变量。也可以直接设置:
|
|
332
372
|
|
|
333
373
|
```bash
|
|
334
374
|
# macOS / Linux
|
|
335
375
|
export ZHIPU_API_KEY=your_api_key
|
|
336
376
|
|
|
337
377
|
# PowerShell
|
|
338
|
-
$env:ZHIPU_API_KEY="your_api_key"
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### 2.1 激活可选 sandbox
|
|
342
|
-
|
|
343
|
-
`kodax setup` 与首次安装 setup 会检查 sandbox。也可以显式检查或激活:
|
|
344
|
-
|
|
345
|
-
```bash
|
|
346
|
-
kodax sandbox doctor
|
|
347
|
-
kodax sandbox setup
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
- Windows 使用受限 sandbox 账户和网络策略。普通 Terminal 即可,按提示同意一次
|
|
351
|
-
UAC;不必先以管理员身份启动 Terminal。
|
|
352
|
-
- macOS 使用 Seatbelt/`sandbox-exec`,需要 ripgrep:
|
|
353
|
-
`brew install ripgrep`。
|
|
354
|
-
- Linux 使用 bubblewrap,需要 `bubblewrap`、`socat` 和 `ripgrep`,请根据发行版用
|
|
355
|
-
`apt`、`dnf` 或 `pacman` 安装。
|
|
356
|
-
|
|
357
|
-
KodaX 不会自动运行 `sudo` 或系统包管理器。sandbox 未激活时,确定性安全操作与
|
|
358
|
-
Auto[LLM] 的权限体验保持一致,只缺少 OS 级 containment;普通运行不会反复打扰。
|
|
359
|
-
在 REPL 中,`/sandbox` 会刷新 ready 状态与诊断,但不会激活 backend 或请求提权。
|
|
360
|
-
逐命令 sandbox 路由属于内部机制,不显示在普通命令历史中。SDK 嵌入方还可通过
|
|
361
|
-
`@kodax-ai/kodax/sandbox` 在 Auto[LLM] 之外独立使用该能力,
|
|
362
|
-
见 [SDK sandbox 指南](docs/SDK_EMBEDDER_GUIDE.md#30-standalone-sandbox-sdk-v0778)。
|
|
363
|
-
|
|
364
|
-
|
|
378
|
+
$env:ZHIPU_API_KEY="your_api_key"
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
### 2.1 激活可选 sandbox
|
|
382
|
+
|
|
383
|
+
`kodax setup` 与首次安装 setup 会检查 sandbox。也可以显式检查或激活:
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
kodax sandbox doctor
|
|
387
|
+
kodax sandbox setup
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
- Windows 使用受限 sandbox 账户和网络策略。普通 Terminal 即可,按提示同意一次
|
|
391
|
+
UAC;不必先以管理员身份启动 Terminal。
|
|
392
|
+
- macOS 使用 Seatbelt/`sandbox-exec`,需要 ripgrep:
|
|
393
|
+
`brew install ripgrep`。
|
|
394
|
+
- Linux 使用 bubblewrap,需要 `bubblewrap`、`socat` 和 `ripgrep`,请根据发行版用
|
|
395
|
+
`apt`、`dnf` 或 `pacman` 安装。
|
|
396
|
+
|
|
397
|
+
KodaX 不会自动运行 `sudo` 或系统包管理器。sandbox 未激活时,确定性安全操作与
|
|
398
|
+
Auto[LLM] 的权限体验保持一致,只缺少 OS 级 containment;普通运行不会反复打扰。
|
|
399
|
+
在 REPL 中,`/sandbox` 会刷新 ready 状态与诊断,但不会激活 backend 或请求提权。
|
|
400
|
+
逐命令 sandbox 路由属于内部机制,不显示在普通命令历史中。SDK 嵌入方还可通过
|
|
401
|
+
`@kodax-ai/kodax/sandbox` 在 Auto[LLM] 之外独立使用该能力,
|
|
402
|
+
见 [SDK sandbox 指南](docs/SDK_EMBEDDER_GUIDE.md#30-standalone-sandbox-sdk-v0778)。
|
|
403
|
+
|
|
404
|
+
模型发起的 shell 命令默认会过滤名称形似凭据的环境变量。若要把指定宿主变量
|
|
405
|
+
透传给命令目标(包括 ASRT),只需在用户级 core 配置中列出变量名:
|
|
406
|
+
|
|
407
|
+
```json
|
|
408
|
+
{
|
|
409
|
+
"sandbox": {
|
|
410
|
+
"envPass": ["GH_TOKEN", "GITHUB_TOKEN", "OPENAI_API_KEY"]
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
默认列表为空;`config.json` 只保存变量名,不保存值,项目配置也不能扩大该列表。
|
|
416
|
+
变量名精确匹配(Windows 不区分大小写),`NODE_OPTIONS`、`BASH_ENV` 等执行控制
|
|
417
|
+
变量即使列入仍会被阻止。修改宿主环境变量或该配置后需重启 KodaX;若使用常驻
|
|
418
|
+
daemon,还需先停止并重新启动 daemon,让它获取新的环境与配置。
|
|
419
|
+
SDK 调用方可按 Run 传入同结构的 `KodaXOptions.sandbox`,并发 Run 无需修改全局配置,
|
|
420
|
+
也可以各自使用不同的变量名列表。
|
|
421
|
+
|
|
422
|
+
Qwen Token Plan 需要选择 `qwen-token-plan` 并使用单独的凭据;`QWEN_API_KEY`
|
|
365
423
|
不能用于该路由:
|
|
366
424
|
|
|
367
425
|
```bash
|
|
@@ -426,14 +484,14 @@ import { createImageArtifactFromPath } from '@kodax-ai/kodax/media'; // 输入 a
|
|
|
426
484
|
import { SkillRegistry } from '@kodax-ai/kodax/skills'; // 零依赖 skill loader
|
|
427
485
|
import { loadConfig } from '@kodax-ai/kodax/repl'; // REPL 配置 / session 工具
|
|
428
486
|
import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager(v0.7.42 起)
|
|
429
|
-
import { listSessions } from '@kodax-ai/kodax/session'; // session 历史工具
|
|
430
|
-
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/Worker/daemon 宿主 API
|
|
431
|
-
import { runKodaXSandboxed } from '@kodax-ai/kodax/sandbox'; // 独立 ASRT 受控执行
|
|
432
|
-
import { createKodaXA2AServer } from '@kodax-ai/kodax/a2a'; // A2A 1.0 双向接入
|
|
433
|
-
import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-in 实验性记忆 SDK
|
|
434
|
-
```
|
|
435
|
-
|
|
436
|
-
13 个 SDK 入口(root + 12 subpath)通过 ESM 共享 chunk 复用底层代码 —— 只 import `/agent` 不会把 `/repl` 的 Ink + React 一起拉进来。
|
|
487
|
+
import { listSessions } from '@kodax-ai/kodax/session'; // session 历史工具
|
|
488
|
+
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/Worker/daemon 宿主 API
|
|
489
|
+
import { runKodaXSandboxed } from '@kodax-ai/kodax/sandbox'; // 独立 ASRT 受控执行
|
|
490
|
+
import { createKodaXA2AServer } from '@kodax-ai/kodax/a2a'; // A2A 1.0 双向接入
|
|
491
|
+
import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-in 实验性记忆 SDK
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
13 个 SDK 入口(root + 12 subpath)通过 ESM 共享 chunk 复用底层代码 —— 只 import `/agent` 不会把 `/repl` 的 Ink + React 一起拉进来。
|
|
437
495
|
|
|
438
496
|
完整的宿主集成契约——包括 embedded/Worker/daemon 所有权、外部 Agent 注册与任务控制、session cursor 分页、workflow 模型分层和效率遥测——见 [SDK Embedder Integration Guide](docs/SDK_EMBEDDER_GUIDE.md)。
|
|
439
497
|
|
|
@@ -463,6 +521,10 @@ import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-
|
|
|
463
521
|
}
|
|
464
522
|
```
|
|
465
523
|
|
|
524
|
+
这里的 `"apiKeyEnv": "MY_LLM_API_KEY"` 表示环境变量名,不是 API Key 值。
|
|
525
|
+
请把自定义 provider 的真实 API Key 设置到 `MY_LLM_API_KEY` 环境变量中,然后关闭
|
|
526
|
+
当前终端、打开新终端,再运行 `kodax`。
|
|
527
|
+
|
|
466
528
|
`userAgentMode` 默认 `"compat"`(发送 `KodaX` 而非上游 SDK 的 User-Agent);如果你的网关要求原生 SDK header,再切到 `"sdk"`。
|
|
467
529
|
|
|
468
530
|
自定义 reasoning 模型优先使用 v0.7.57 的 `reasoning: { efforts, default }`;无 thinking 能力的模型使用 `"reasoning": "none"`。SDK 宿主的 effort 选择器应从 `reasoningProfile.supportedEfforts` / `defaultEffort` 动态生成,不要假定固定五档。
|
|
@@ -480,31 +542,39 @@ import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-
|
|
|
480
542
|
"baseUrl": "https://example.com/v1",
|
|
481
543
|
"apiKeyEnv": "MY_DEEPSEEK_API_KEY",
|
|
482
544
|
"model": "deepseek-v4-flash",
|
|
483
|
-
"
|
|
545
|
+
"maxOutputTokensField": "max_tokens",
|
|
546
|
+
"reasoningPreset": "deepseek-v4-flash-openai",
|
|
484
547
|
"replayReasoningContent": true
|
|
485
548
|
}
|
|
486
549
|
]
|
|
487
550
|
}
|
|
488
551
|
```
|
|
489
552
|
|
|
490
|
-
|
|
553
|
+
DeepSeek Chat Completions 使用 `max_tokens`,OpenAI proper 默认使用
|
|
554
|
+
`max_completion_tokens`。如果网关同时代理两者,建议对这两个字段都使用
|
|
555
|
+
per-model override,避免把 `reasoning_content` 或不兼容的 token 字段发给错误模型:
|
|
491
556
|
|
|
492
557
|
```json
|
|
493
558
|
{
|
|
494
559
|
"models": [
|
|
495
|
-
{
|
|
560
|
+
{
|
|
561
|
+
"id": "deepseek-v4-flash",
|
|
562
|
+
"maxOutputTokensField": "max_tokens",
|
|
563
|
+
"reasoningPreset": "deepseek-v4-flash-openai",
|
|
564
|
+
"replayReasoningContent": true
|
|
565
|
+
},
|
|
496
566
|
{ "id": "gpt-5", "replayReasoningContent": false }
|
|
497
567
|
]
|
|
498
|
-
}
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
如果已确认自定义端点支持缓存 affinity 路由,可以设置
|
|
502
|
-
`"promptCacheAffinity": true`。Anthropic-compatible 请求会把不透明逻辑上下文
|
|
503
|
-
key 写入 `metadata.user_id`,OpenAI-compatible 请求写入 `prompt_cache_key`。
|
|
504
|
-
默认值为 `false`,因为部分严格兼容网关会拒绝未知请求字段;不要只因端点宣称协议
|
|
505
|
-
兼容就开启。
|
|
506
|
-
|
|
507
|
-
Sidecar verifier 的结构化裁决请求会优先使用 provider 级 `tool_choice` 强制工具调用;如果某个兼容端点明确拒绝 `tool_choice` 参数,KodaX 会对该 verifier 请求自动重试一次“不强制但仍带 tools”的兼容模式,并保持 fail-open,不会阻塞主 Worker。
|
|
568
|
+
}
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
如果已确认自定义端点支持缓存 affinity 路由,可以设置
|
|
572
|
+
`"promptCacheAffinity": true`。Anthropic-compatible 请求会把不透明逻辑上下文
|
|
573
|
+
key 写入 `metadata.user_id`,OpenAI-compatible 请求写入 `prompt_cache_key`。
|
|
574
|
+
默认值为 `false`,因为部分严格兼容网关会拒绝未知请求字段;不要只因端点宣称协议
|
|
575
|
+
兼容就开启。
|
|
576
|
+
|
|
577
|
+
Sidecar verifier 的结构化裁决请求会优先使用 provider 级 `tool_choice` 强制工具调用;如果某个兼容端点明确拒绝 `tool_choice` 参数,KodaX 会对该 verifier 请求自动重试一次“不强制但仍带 tools”的兼容模式,并保持 fail-open,不会阻塞主 Worker。
|
|
508
578
|
|
|
509
579
|
调试 Worker 结束后的 verifier 行为时可设置:
|
|
510
580
|
|
|
@@ -522,7 +592,7 @@ Verifier 的 `revise` / `blocked` 可执行消息;JSONL 输出使用同形
|
|
|
522
592
|
|
|
523
593
|
#### 给自定义 provider 开图片 / vision 输入(FEATURE_134 v0.7.40)
|
|
524
594
|
|
|
525
|
-
如果你的自定义 provider 后面的模型支持 vision,加 `capabilityProfile.multimodalSupport: "image-input"` 显式开启,KodaX 的 SA-path policy gate 就不会人为拦截多模态请求。内置 vision-capable alias(Anthropic、OpenAI、
|
|
595
|
+
如果你的自定义 provider 后面的模型支持 vision,加 `capabilityProfile.multimodalSupport: "image-input"` 显式开启,KodaX 的 SA-path policy gate 就不会人为拦截多模态请求。内置 vision-capable alias(Anthropic、OpenAI、Kimi、Qwen、Zhipu、MiniMax、MiMo、Ark,以及通过 CLI `@<path>` file-include 语法传图的 Gemini-CLI)已经默认开了这个 flag。DeepSeek V4 和 Codex-CLI 是纯文本模型;自定义 provider 在底层模型支持图片输入时需要手动 opt-in。
|
|
526
596
|
|
|
527
597
|
```json
|
|
528
598
|
{
|
|
@@ -664,7 +734,7 @@ dist/binary/linux-x64/
|
|
|
664
734
|
| kimi | `KIMI_API_KEY` | Native | kimi-k2.7-code(262,144 token;可 `/model` 切换 `kimi-k3`〔1M〕/ `kimi-k2.7-code-highspeed` / `kimi-k2.6` / `kimi-k2.5`) |
|
|
665
735
|
| kimi-code | `KIMI_CODE_API_KEY` | Native | k3-256k(Moderato+,256K,直接请求同名上游模型;可 `/model` 切换 `k3`〔Allegretto+,1M〕/ `kimi-for-coding`〔K2.7 Code〕/ `kimi-for-coding-highspeed`) |
|
|
666
736
|
| qwen | `QWEN_API_KEY` | Native | qwen3.5-plus |
|
|
667
|
-
| qwen-token-plan | `QWEN_TOKEN_API_KEY` | Native | qwen3.8-max
|
|
737
|
+
| qwen-token-plan | `QWEN_TOKEN_API_KEY` | Native | qwen3.8-max(Anthropic 协议;可 `/model` 切换兼容项 `qwen3.8-max-preview` 及 `qwen3.7-max` / `qwen3.7-plus` / `qwen3.6-flash` / `glm-5.2` / `deepseek-v4-pro`;均为 1M ctx;两个 Qwen 3.8 ID / 3.7 Plus / 3.6 Flash 支持图片理解) |
|
|
668
738
|
| zhipu | `ZHIPU_API_KEY` | Native | glm-5(可 `/model` 切换 `glm-5.2` 1M ctx / `glm-5.1` / `glm-5-turbo`) |
|
|
669
739
|
| zhipu-coding | `ZHIPU_CODING_API_KEY` | Native | glm-5.2(1M ctx;仍可通过 `/model` 显式选择兼容模型 `glm-5.1` / `glm-5-turbo`) |
|
|
670
740
|
| zai-coding | `ZAI_CODING_API_KEY` | Native | glm-5.2(GLM Coding Plan 海外站,通过 `api.z.ai` 接入,Anthropic 协议 — 模型清单和 `zhipu-coding` 完全一致) |
|
|
@@ -673,8 +743,8 @@ dist/binary/linux-x64/
|
|
|
673
743
|
| mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo Token Plan,Anthropic 协议) |
|
|
674
744
|
| ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.2(火山方舟 Coding Plan — GLM-5.2(别名 `glm-latest`) · Kimi K2.7 Code / K2.6 · MiniMax M3 / M2.7 · DeepSeek V4 Pro / V4 Flash · Doubao Seed 2.0 Code / Pro / Lite · Doubao Seed Code) |
|
|
675
745
|
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-v4-flash(可 `/model` 切换 `deepseek-v4-pro`) |
|
|
676
|
-
| gemini-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 gemini CLI) |
|
|
677
|
-
| codex-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 codex CLI) |
|
|
746
|
+
| gemini-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 gemini CLI) |
|
|
747
|
+
| codex-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 codex CLI) |
|
|
678
748
|
|
|
679
749
|
> 不在表里的端点:用上面"自定义 Provider"那一节加进来即可。
|
|
680
750
|
|
|
@@ -757,29 +827,29 @@ kodax --repo-intelligence full --repo-intelligence-trace
|
|
|
757
827
|
|
|
758
828
|
## 仓库结构
|
|
759
829
|
|
|
760
|
-
KodaX 是基于 npm workspaces 的 TypeScript monorepo,**源码层 4 个 workspace 包**(FEATURE_194 v0.7.43 包合并 — 9 → 4,ADR-036),npm 上以单 bundle 包 `@kodax-ai/kodax` 发布 + 12 个 SDK subpath exports(`/agent`、`/llm`、`/coding`、`/media`、`/repl`、`/skills`、`/mcp`、`/session`、`/runtime`、`/sandbox`、`/a2a`、`/experimental-memory`;ADR-024 + ADR-032 + ADR-038)。核心包:
|
|
830
|
+
KodaX 是基于 npm workspaces 的 TypeScript monorepo,**源码层 4 个 workspace 包**(FEATURE_194 v0.7.43 包合并 — 9 → 4,ADR-036),npm 上以单 bundle 包 `@kodax-ai/kodax` 发布 + 12 个 SDK subpath exports(`/agent`、`/llm`、`/coding`、`/media`、`/repl`、`/skills`、`/mcp`、`/session`、`/runtime`、`/sandbox`、`/a2a`、`/experimental-memory`;ADR-024 + ADR-032 + ADR-038)。核心包:
|
|
761
831
|
|
|
762
832
|
| Workspace 包 | 作用 | 主要依赖 |
|
|
763
833
|
|----|------|---------|
|
|
764
834
|
| `@kodax-ai/llm` | LLM 抽象层(16 个内置 provider alias + 自定义 provider 注册),可独立使用 | `@anthropic-ai/sdk`, `openai` |
|
|
765
|
-
| `@kodax-ai/agent` | 通用 Agent 框架 —— Runner / runFanOut / runWithIdleYield / AgentActorController / AgentTurnScheduler + media/input artifacts + 会话管理 + tokenization + 面向自定义 loop 的可插拔 compaction primitive(不关闭 KodaX coding runtime 的始终开启策略)+ **inline 后**:session-lineage 子树 + capabilities (mcp + skills + builtin) + tracing(subpaths: `/media`、`/session-lineage`、`/capabilities/mcp`、`/capabilities/skills`、`/tracing`) | `@kodax-ai/llm`, `
|
|
835
|
+
| `@kodax-ai/agent` | 通用 Agent 框架 —— Runner / runFanOut / runWithIdleYield / AgentActorController / AgentTurnScheduler + media/input artifacts + 会话管理 + tokenization + 面向自定义 loop 的可插拔 compaction primitive(不关闭 KodaX coding runtime 的始终开启策略)+ **inline 后**:session-lineage 子树 + capabilities (mcp + skills + builtin) + tracing(subpaths: `/media`、`/session-lineage`、`/capabilities/mcp`、`/capabilities/skills`、`/tracing`) | `@kodax-ai/llm`, `fflate`, `jimp`, `yaml` |
|
|
766
836
|
| `@kodax-ai/coding` | Coding Agent:50+ 工具(含 canonical Actor 协作工具)、role prompts、agent loop、auto-continue + repo-intelligence protocol(v0.7.43 inline) | `@kodax-ai/llm`, `@kodax-ai/agent` |
|
|
767
837
|
| `@kodax-ai/repl` | 完整交互式终端 UI(Ink / React、权限模式、命令系统、流式渲染) | `@kodax-ai/coding`, `ink`, `react` |
|
|
768
838
|
|
|
769
|
-
根目录 `src/kodax_cli.ts` 是 CLI 入口;`src/sdk-{agent,llm,coding,media,repl,skills,mcp,session,runtime,sandbox,a2a,experimental-memory}.ts` 是 SDK subpath 入口;构建产物在 `dist/`,单文件二进制在 `dist/binary/<target>/`。
|
|
839
|
+
根目录 `src/kodax_cli.ts` 是 CLI 入口;`src/sdk-{agent,llm,coding,media,repl,skills,mcp,session,runtime,sandbox,a2a,experimental-memory}.ts` 是 SDK subpath 入口;构建产物在 `dist/`,单文件二进制在 `dist/binary/<target>/`。
|
|
770
840
|
|
|
771
841
|
### 源码层 vs npm 发布层
|
|
772
842
|
|
|
773
843
|
KodaX 有两层结构,SDK 用户需要分开理解:
|
|
774
844
|
|
|
775
845
|
- **源码层**:上面 4 个 workspace 包(开发者读代码时看到的物理结构)。
|
|
776
|
-
- **npm 发布层**:单个 bundled 包 `@kodax-ai/kodax`,对外暴露 12 个 SDK subpath(SDK 消费者 `import` 时看到的接口)。subpath 分两种角色:
|
|
846
|
+
- **npm 发布层**:单个 bundled 包 `@kodax-ai/kodax`,对外暴露 12 个 SDK subpath(SDK 消费者 `import` 时看到的接口)。subpath 分两种角色:
|
|
777
847
|
- **完整包 subpath**(`/agent`、`/llm`、`/coding`、`/repl`)—— 每个 1:1 对应一个源码包,暴露完整公开 API。
|
|
778
|
-
- **集成与窄子集 subpath**(`/media`、`/skills`、`/mcp`、`/session`、`/runtime`、`/sandbox`、`/a2a`、`/experimental-memory`)—— 聚焦能力或宿主集成边界;`/experimental-memory` 明确为 opt-in 不稳定接口。
|
|
848
|
+
- **集成与窄子集 subpath**(`/media`、`/skills`、`/mcp`、`/session`、`/runtime`、`/sandbox`、`/a2a`、`/experimental-memory`)—— 聚焦能力或宿主集成边界;`/experimental-memory` 明确为 opt-in 不稳定接口。
|
|
779
849
|
|
|
780
850
|
| 源码包 | npm subpath | 类型 | 内容 | 典型消费者 |
|
|
781
851
|
|---|---|---|---|---|
|
|
782
|
-
| `packages/llm` | `@kodax-ai/kodax/llm` | 完整包 | 16-alias LLM 抽象 (108 exports) | 独立 LLM 客户端 |
|
|
852
|
+
| `packages/llm` | `@kodax-ai/kodax/llm` | 完整包 | 16-alias LLM 抽象 (108 exports) | 独立 LLM 客户端 |
|
|
783
853
|
| `packages/agent` | `@kodax-ai/kodax/agent` | 完整包 | Runner / fan-out / 外部 Agent plane / session-lineage / capabilities / tracing (331 exports) | 自定义 agent 框架 |
|
|
784
854
|
| `packages/agent` | `@kodax-ai/kodax/skills` | **窄子集** | 仅 Skills 系统 —— `SkillRegistry` / `loadFullSkill` / `expandSkillForLLM` 等 (26 exports = v0.7.43 之前 `@kodax-ai/skills` 完整 API) | Skill 加载器、IDE 插件 |
|
|
785
855
|
| `packages/agent` | `@kodax-ai/kodax/mcp` | **窄子集** | 仅 MCP —— `McpCapabilityProvider` / `createMcpTransport` / `searchMcpCatalog` 等 (23 exports) | MCP server 宿主 |
|
|
@@ -787,10 +857,10 @@ KodaX 有两层结构,SDK 用户需要分开理解:
|
|
|
787
857
|
| `packages/agent` | `@kodax-ai/kodax/experimental-memory` | **实验性子集** | F228-backed `MemoryAgent` / `MemorySession` scope、recall、query、observation、outcome 契约 | 显式评估 FEATURE_260 的 SDK 宿主 |
|
|
788
858
|
| `packages/coding` | `@kodax-ai/kodax/coding` | 完整包 | Coding agent + 50+ 工具 + repo-intelligence (505 exports) | 构建 Claude Code 形态产品 |
|
|
789
859
|
| `packages/repl` | `@kodax-ai/kodax/repl` | 完整包 | Ink TUI + 权限模式 + 命令系统 (217 exports) | 终端 UI 消费者 |
|
|
790
|
-
| `packages/repl` | `@kodax-ai/kodax/session` | **窄子集** | 仅会话管理 —— `listSessions` / `loadFullTranscript` / `appendClientNotice` / `forkSession` / `compactSession` / `watchSessions` 等 (17 exports) | 读取 session 历史的 IDE 插件和桌面宿主 |
|
|
791
|
-
| `src` | `@kodax-ai/kodax/runtime` | 宿主 API | Embedded/Worker/daemon facade,含 sessions/runs/events/permissions/catalog/MCP/artifacts/diagnostics/外部 Agent 和 daemon schema (10 exports) | SDK 宿主、Space/IDE、daemon client |
|
|
792
|
-
| `src` | `@kodax-ai/kodax/sandbox` | 宿主 API | 显式 ASRT capability/doctor/setup 与宿主自有受控命令执行;不可用时绝不静默普通执行 | 需要独立进程 containment 的 SDK 宿主 |
|
|
793
|
-
| `src` | `@kodax-ai/kodax/a2a` | 集成边界 | A2A 1.0 Agent Card 发现、JSON-RPC/SSE F258 executor、安全 fetch 与鉴权 Runtime Agent server | Agent 编排器和 KodaX 宿主 |
|
|
860
|
+
| `packages/repl` | `@kodax-ai/kodax/session` | **窄子集** | 仅会话管理 —— `listSessions` / `loadFullTranscript` / `appendClientNotice` / `forkSession` / `compactSession` / `watchSessions` 等 (17 exports) | 读取 session 历史的 IDE 插件和桌面宿主 |
|
|
861
|
+
| `src` | `@kodax-ai/kodax/runtime` | 宿主 API | Embedded/Worker/daemon facade,含 sessions/runs/events/permissions/catalog/MCP/artifacts/diagnostics/外部 Agent 和 daemon schema (10 exports) | SDK 宿主、Space/IDE、daemon client |
|
|
862
|
+
| `src` | `@kodax-ai/kodax/sandbox` | 宿主 API | 显式 ASRT capability/doctor/setup 与宿主自有受控命令执行;不可用时绝不静默普通执行 | 需要独立进程 containment 的 SDK 宿主 |
|
|
863
|
+
| `src` | `@kodax-ai/kodax/a2a` | 集成边界 | A2A 1.0 Agent Card 发现、JSON-RPC/SSE F258 executor、安全 fetch 与鉴权 Runtime Agent server | Agent 编排器和 KodaX 宿主 |
|
|
794
864
|
|
|
795
865
|
**经验法则**:需要 Runner / Agent / fan-out 时从 `/agent` 引入;只需要 skills 或 mcp API 时从 `/skills` 或 `/mcp` 引入,bundle 更小。窄子集是完整包的真子集 —— **不会**有额外符号。
|
|
796
866
|
|
|
@@ -808,7 +878,7 @@ runtime、消息、UI 历史、lineage、artifact、extension 状态、标题、
|
|
|
808
878
|
|
|
809
879
|
**实验性 Memory Agent SDK(FEATURE_260,v0.7.68)**:`/experimental-memory` 暴露基于既有 F228 治理平面的薄 `MemoryAgent` 与 scoped `MemorySession`。被动 recall 零等待,`query()` 只读且由主 Action LLM 主动选择;持久化仍必须经过 proposal/preview/fingerprint/apply。召回内容保持低权限,安全与 scope 边界仍由确定性代码门禁承担。直接 session 示例与宿主边界见 [SDK Embedder Guide §21](docs/SDK_EMBEDDER_GUIDE.md#21-experimental-governed-memory--experimental-memory-feature_260-v0768)。
|
|
810
880
|
|
|
811
|
-
**双向 A2A 1.0(FEATURE_267,v0.7.69)**:`/a2a` 可发现 allowlist 内的 Agent Card,并通过既有 F258 plane 安装 JSON-RPC/SSE executor。配置中的出站 Agent 还会作为 `external:<name>` 自动注册到 embedded CLI 与用户 daemon Runtime,因此主 Agent 无需宿主代码即可编排。一个 `a2a.json` 可保存多个出站注册,但最多只有一个入站 server;入站可发布 Runtime 默认 Agent,或发布一个经过验证的 `~/.kodax/agents/*.md` Agent。内置 listener 仅允许 loopback,且不会返回 Fetch 兼容客户端禁止的端口;公网部署必须由宿主用 TLS、鉴权和授权包住 `handle()`。不宣称支持 A2A 0.3、gRPC、HTTP+JSON、push notification,也不会自动把本地 Agent 暴露到网络。详见 [SDK Embedder Guide §22](docs/SDK_EMBEDDER_GUIDE.md#22-bidirectional-a2a-10--a2a-feature_267-v0769)。
|
|
881
|
+
**双向 A2A 1.0(FEATURE_267,v0.7.69)**:`/a2a` 可发现 allowlist 内的 Agent Card,并通过既有 F258 plane 安装 JSON-RPC/SSE executor。配置中的出站 Agent 还会作为 `external:<name>` 自动注册到 embedded CLI 与用户 daemon Runtime,因此主 Agent 无需宿主代码即可编排。一个 `a2a.json` 可保存多个出站注册,但最多只有一个入站 server;入站可发布 Runtime 默认 Agent,或发布一个经过验证的 `~/.kodax/agents/*.md` Agent。内置 listener 仅允许 loopback,且不会返回 Fetch 兼容客户端禁止的端口;公网部署必须由宿主用 TLS、鉴权和授权包住 `handle()`。不宣称支持 A2A 0.3、gRPC、HTTP+JSON、push notification,也不会自动把本地 Agent 暴露到网络。详见 [SDK Embedder Guide §22](docs/SDK_EMBEDDER_GUIDE.md#22-bidirectional-a2a-10--a2a-feature_267-v0769)。
|
|
812
882
|
|
|
813
883
|
**A2A 互操作与认证加固**:发现得到的 interface 必须与受信 Agent Card 同源,且只有
|
|
814
884
|
完整满足 Card/Skill 的一个 security requirement 时才会携带凭据。无代码 client
|
|
@@ -837,6 +907,10 @@ kodax a2a add research https://agent.example/.well-known/agent-card.json --effec
|
|
|
837
907
|
kodax a2a test research
|
|
838
908
|
kodax a2a call research "总结这个主题"
|
|
839
909
|
|
|
910
|
+
# 显式授权私网明文端点(可用时仍应优先 HTTPS)
|
|
911
|
+
kodax a2a add intranet http://10.20.30.40/.well-known/agent-card.json \
|
|
912
|
+
--allow-private --allow-insecure-http --effect read
|
|
913
|
+
|
|
840
914
|
# 先保存受 OAuth 保护的 Agent,再热启用/停用
|
|
841
915
|
export RESEARCH_A2A_CLIENT_SECRET='由你的授权服务器分配'
|
|
842
916
|
# PowerShell:$env:RESEARCH_A2A_CLIENT_SECRET='由你的授权服务器分配'
|
|
@@ -858,9 +932,9 @@ kodax a2a expose # 或:kodax a2a expose document-agent
|
|
|
858
932
|
kodax a2a serve # 仅监听 http://127.0.0.1:8765
|
|
859
933
|
```
|
|
860
934
|
|
|
861
|
-
MCP、A2A、Extension 分别使用 `~/.kodax/integrations/` 下的一个用户级文件。
|
|
862
|
-
可以通过 `kodax config paths` 查看全部活跃/模板路径,通过
|
|
863
|
-
`kodax config template <core|mcp|a2a|extensions>` 查看模板,通过
|
|
935
|
+
MCP、A2A、Extension 分别使用 `~/.kodax/integrations/` 下的一个用户级文件。
|
|
936
|
+
可以通过 `kodax config paths` 查看全部活跃/模板路径,通过
|
|
937
|
+
`kodax config template <core|mcp|a2a|extensions>` 查看模板,通过
|
|
864
938
|
`kodax integrations migrate --apply` 迁移旧配置,并用 `kodax mcp`、
|
|
865
939
|
`kodax a2a`、`kodax extensions` 管理。迁移只导入旧
|
|
866
940
|
`config.json#mcpServers` 与 `config.json#extensions`;A2A 没有旧来源,且不会
|
|
@@ -874,7 +948,13 @@ MCP、A2A、Extension 分别使用 `~/.kodax/integrations/` 下的一个用户
|
|
|
874
948
|
确认。`a2a add --disabled` 默认仍会校验 Card,除非显式使用 `--no-test`;`a2a test`
|
|
875
949
|
只做 discovery/security planning,不会申请 OAuth token。示例中的固定
|
|
876
950
|
`KODAX_A2A_TOKEN` 是运维侧预先提供的兼容凭据,并非 KodaX 自行生成或签发。
|
|
877
|
-
|
|
951
|
+
停用条目可随时重新启用。私网地址访问与非 loopback 明文 HTTP 是两项独立、
|
|
952
|
+
持久化且默认拒绝的权限(`--allow-private` 与 `--allow-insecure-http`);精确
|
|
953
|
+
loopback HTTP 无需这两项授权。OAuth token endpoint 仍保持更严格的
|
|
954
|
+
HTTPS 或精确 loopback 规则。Worker-hosted SDK Runtime 可通过
|
|
955
|
+
`worker: { configuredA2A: true }` 让 Worker owner 装载同一配置执行平面。
|
|
956
|
+
CLI 同样支持在 `~/.kodax/config.json` 中配置 `"worker": { "configuredA2A": true }`,
|
|
957
|
+
将嵌入式运行时改为 Worker 托管并装载配置的 A2A 执行平面。
|
|
878
958
|
`a2a serve` 会在监听前装载已配置的 MCP/Extension 能力并固定执行权威,同时热加载
|
|
879
959
|
公开信息、鉴权和限额。Agent、Skill、Extension 工具权威、工作区、tool policy
|
|
880
960
|
或任务存储变更必须显式重启服务。
|
|
@@ -928,11 +1008,11 @@ KodaX/ # 4 workspace packages(FEATURE_194 v0.7.43)
|
|
|
928
1008
|
│ └── repl/ # @kodax-ai/repl —— Ink TUI
|
|
929
1009
|
├── src/
|
|
930
1010
|
│ ├── kodax_cli.ts # CLI 主入口(bin: `kodax`)
|
|
931
|
-
│ └── sdk-*.ts # SDK subpath 入口 → @kodax-ai/kodax/{agent,llm,coding,media,repl,skills,mcp,session,runtime,sandbox,a2a,experimental-memory}
|
|
1011
|
+
│ └── sdk-*.ts # SDK subpath 入口 → @kodax-ai/kodax/{agent,llm,coding,media,repl,skills,mcp,session,runtime,sandbox,a2a,experimental-memory}
|
|
932
1012
|
├── scripts/
|
|
933
|
-
│ ├── build-bundle.mjs # esbuild 单 bundle 多 entry 打包(CLI + root + 12 SDK subpath + chunks)
|
|
1013
|
+
│ ├── build-bundle.mjs # esbuild 单 bundle 多 entry 打包(CLI + root + 12 SDK subpath + chunks)
|
|
934
1014
|
│ ├── build-binary.mjs # Bun --compile 单文件二进制打包
|
|
935
|
-
│ └── release.mjs # 构建/审计后仅临时切换 private 以 pack/publish
|
|
1015
|
+
│ └── release.mjs # 构建/审计后仅临时切换 private 以 pack/publish
|
|
936
1016
|
└── .github/workflows/
|
|
937
1017
|
└── release.yml # 推 v* tag 自动发布 GitHub Release
|
|
938
1018
|
```
|