@kyo-so/cli 0.12.0 → 0.13.1
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 +42 -0
- package/README.ja.md +64 -34
- package/README.md +64 -34
- package/README.zh-CN.md +64 -34
- package/dist/acp/ndJsonLineLimit.d.ts +6 -0
- package/dist/acp/normalize.d.ts +1 -0
- package/dist/acp/prompts.d.ts +1 -0
- package/dist/bin/kyoso.js +12933 -11867
- package/dist/cli/pluginRuntimeContract.d.ts +8 -8
- package/dist/config/schema.d.ts +1 -0
- package/dist/core/constants.d.ts +3 -2
- package/dist/core/modelExecutionIdentity.d.ts +9 -0
- package/dist/core/requestFingerprint.d.ts +2 -2
- package/dist/core/reviewBudget.d.ts +28 -5
- package/dist/core/types.d.ts +44 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +781 -129
- package/dist/judge/anthropic.d.ts +2 -0
- package/dist/judge/openai.d.ts +2 -0
- package/dist/judge/provider.d.ts +9 -1
- package/dist/utils/env.d.ts +12 -2
- package/examples/codex-config.toml +1 -1
- package/package.json +6 -3
- package/scripts/review-budget-report.mjs +1114 -0
package/README.zh-CN.md
CHANGED
|
@@ -50,11 +50,9 @@ Kyoso 不会应用代码更改。
|
|
|
50
50
|
|
|
51
51
|
Plugin包含Skill和pin到已发布Kyoso CLI精确版本的MCP定义,但不包含CLI本体。MCP首次启动需要访问npm网络。已缓存的package可能可以offline启动,但不作保证。manifest中的`Read` capability仅是显示metadata,不会授予额外filesystem权限。
|
|
52
52
|
|
|
53
|
-
`kyoso setup ... --with-openrouter` 的输出和手动 setup 示例仍是用户管理的客户端注册模板。Marketplace Plugin `0.5.0` pin 到 `@kyo-so/cli@0.11.0`。
|
|
54
|
-
|
|
55
53
|
Plugin中的Skill将内置的`kyoso` MCP server声明为dependency,因此显式Kyoso review会通过MCP而不是CLI fallback。如果禁用内置Plugin MCP,应将Plugin Skill视为不可用:重新启用MCP,或移除Plugin并改用CLI+Skill-only。Plugin不是CLI fallback mode。
|
|
56
54
|
|
|
57
|
-
|
|
55
|
+
关于通过 Plugin 转发 OpenRouter key,请参阅 [Codex OpenRouter project opt-in](#codex-openrouter-project-opt-in)。
|
|
58
56
|
|
|
59
57
|
#### CLI+Skill-only
|
|
60
58
|
|
|
@@ -181,7 +179,7 @@ kyoso plan \
|
|
|
181
179
|
--file src/auth/callback.ts
|
|
182
180
|
```
|
|
183
181
|
|
|
184
|
-
按从上到下的顺序阅读结果:`Decision` 是 deterministic gate outcome,`Coverage` 显示已执行的必需 lenses 和 perspectives,每个 finding 的 `disposition` 说明它会 block
|
|
182
|
+
按从上到下的顺序阅读结果:`Decision` 是 deterministic gate outcome,`Coverage` 显示已执行的必需 lenses 和 perspectives,每个 finding 的 `disposition` 说明它会 block 还是仅供参考(参见 [Review contract 与 finding admission](#review-contract-与-finding-admission))。
|
|
185
183
|
|
|
186
184
|
对 patch 运行 CISA Secure by Design security review:
|
|
187
185
|
|
|
@@ -226,6 +224,18 @@ Kyoso 只暴露以下 MCP tools:
|
|
|
226
224
|
|
|
227
225
|
MCP stdout 专用于 protocol messages。Logs 会写到 stderr 或 local audit traces。
|
|
228
226
|
|
|
227
|
+
## Skill
|
|
228
|
+
|
|
229
|
+
内置的 `kyoso-review` skill 有意保持范围很窄。只有当你明确请求 Kyoso、multi-agent review、plan review、security review、CISA Secure by Design review 或 diff review 时,才应触发它。
|
|
230
|
+
|
|
231
|
+
Skill使用第一个可用路径,顺序是Kyoso MCP tools、PATH上已安装的`kyoso`、`npx -y @kyo-so/cli`、`bunx @kyo-so/cli`。package runner fallback可能需要network access,也可能发生version drift,因此MCP-less正常路径应使用已安装CLI。如果 typed [review contract](#review-contract-与-finding-admission) 包含non-goals或accepted risks且MCP不可用,CLI fallback只能保留`focus`,因此Skill会停止。
|
|
232
|
+
|
|
233
|
+
`kyoso setup codex --write --skill-only`默认将canonical Skill directory复制到`.agents/skills/kyoso-review/`。添加`--global`后复制到`~/.agents/skills/kyoso-review/`。
|
|
234
|
+
|
|
235
|
+
`kyoso setup claude-code --write --skill-only`默认复制到`.claude/skills/kyoso-review/`。添加`--global`后复制到`~/.claude/skills/kyoso-review/`。
|
|
236
|
+
|
|
237
|
+
managed install会把canonical directory digest和CLI version记录到`.kyoso-install.json`。当前或已知historical copy会被adopt并自动更新;修改过或未知的copy会报告conflict并保持不变。`--force`只替换该Skill directory,不会删除或覆盖MCP配置。
|
|
238
|
+
|
|
229
239
|
## Review contract 与 finding admission
|
|
230
240
|
|
|
231
241
|
每次 review 都包含不可移除的 safety floor:correctness、regression、security boundaries、secrets/injection、data integrity 和 public contract。Kyoso 还会根据 review 形状添加 supply chain、privacy 和 resource amplification lenses。user-global `reviewPolicy.additionalLenses` 可以添加观点评审,但不能移除 floor。
|
|
@@ -260,18 +270,6 @@ Kyoso 会重新计算每个 finding 的 evidence quality、与被审查变更的
|
|
|
260
270
|
|
|
261
271
|
只有 `gate` 和 `actionable` findings 会影响 deterministic decision。`disputed` finding 会使 completion incomplete,且不得自动修复。`coverage` 记录 required/attempted lenses、required/completed perspectives,以及是否完成 independent cross-model review。`Tests to Add` 最多包含3个具体 regression tests;generic commands 和宽泛的 test-suite 请求会被省略。
|
|
262
272
|
|
|
263
|
-
## Skill
|
|
264
|
-
|
|
265
|
-
内置的 `kyoso-review` skill 有意保持范围很窄。只有当你明确请求 Kyoso、multi-agent review、plan review、security review、CISA Secure by Design review 或 diff review 时,才应触发它。
|
|
266
|
-
|
|
267
|
-
Skill使用第一个可用路径,顺序是Kyoso MCP tools、PATH上已安装的`kyoso`、`npx -y @kyo-so/cli`、`bunx @kyo-so/cli`。package runner fallback可能需要network access,也可能发生version drift,因此MCP-less正常路径应使用已安装CLI。如果typed contract包含non-goals或accepted risks且MCP不可用,CLI fallback只能保留`focus`,因此Skill会停止。
|
|
268
|
-
|
|
269
|
-
`kyoso setup codex --write --skill-only`默认将canonical Skill directory复制到`.agents/skills/kyoso-review/`。添加`--global`后复制到`~/.agents/skills/kyoso-review/`。
|
|
270
|
-
|
|
271
|
-
`kyoso setup claude-code --write --skill-only`默认复制到`.claude/skills/kyoso-review/`。添加`--global`后复制到`~/.claude/skills/kyoso-review/`。
|
|
272
|
-
|
|
273
|
-
managed install会把canonical directory digest和CLI version记录到`.kyoso-install.json`。当前或已知historical copy会被adopt并自动更新;修改过或未知的copy会报告conflict并保持不变。`--force`只替换该Skill directory,不会删除或覆盖MCP配置。
|
|
274
|
-
|
|
275
273
|
## Configuration
|
|
276
274
|
|
|
277
275
|
### Files and precedence
|
|
@@ -297,9 +295,6 @@ Global TOML 用于 user-owned settings,包括 command 启动和 env forwarding
|
|
|
297
295
|
[agents.codex]
|
|
298
296
|
command = "bunx"
|
|
299
297
|
args = ["@agentclientprotocol/codex-acp"]
|
|
300
|
-
# 仅授权此精确 project directory 选择 `provider`,或在继承 OpenRouter 时
|
|
301
|
-
# 覆盖 model。
|
|
302
|
-
allowProjectProvider = ["/absolute/path/to/project"]
|
|
303
298
|
|
|
304
299
|
[agents.codex.env]
|
|
305
300
|
CODEX_CONFIG = '{"model":"gpt-5.5"}'
|
|
@@ -309,7 +304,7 @@ CODEX_CONFIG = '{"model":"gpt-5.5"}'
|
|
|
309
304
|
|
|
310
305
|
### Agents
|
|
311
306
|
|
|
312
|
-
Agent keys: `agents.<codex|claude>.<enabled|model|effort|role|timeoutMs>`。Codex 还支持 `agents.codex.provider`:`"openrouter"` 选择 external provider,而 `"default"` 会将继承的 OpenRouter 选择重置为正常 Codex behavior;Claude 没有 provider
|
|
307
|
+
Agent keys: `agents.<codex|claude>.<enabled|model|effort|role|timeoutMs>`。Codex 还支持 `agents.codex.provider`:`"openrouter"` 选择 external provider,而 `"default"` 会将继承的 OpenRouter 选择重置为正常 Codex behavior;Claude 没有 provider 设置。从 project 选择 provider 需要只能在 global config 中设置的 `agents.codex.allowProjectProvider` allowlist;完整规则请参阅 [Codex OpenRouter project opt-in](#codex-openrouter-project-opt-in)。`command` / `args` / `env` 也只能在 global config 中设置(参见 [Files and precedence](#files-and-precedence))。
|
|
313
308
|
|
|
314
309
|
省略 `agents.<name>.model` 或 `agents.<name>.effort` 时,会使用各 agent 自身的 default。Codex 使用 local Codex config,例如 `~/.codex/config.toml`(若已设置`CODEX_HOME`,则为`$CODEX_HOME/config.toml`);Claude 使用 adapter default。
|
|
315
310
|
|
|
@@ -353,7 +348,7 @@ model = "openai/o4-mini"
|
|
|
353
348
|
|
|
354
349
|
当 `provider = "openrouter"` 时,`model` 必须存在且不能是空白。它是 OpenRouter model ID;Kyoso 不会 validate model catalog 或该 model 是否支持 tool calling,请向 provider 确认 tool support。
|
|
355
350
|
|
|
356
|
-
`allowProjectProvider` 适用于 project `provider`,以及继承 OpenRouter 时 project 对 `model` 的覆盖;list 必须完全匹配包含已解析 project config file 的 canonical directory 的 absolute path,而不是 invocation cwd 或 lexical path。project config file(包括受信任的 `kyoso.config.ts`)与 allowlist entry 都会通过 symlink 解析到该 directory;解析到同一 directory 的 entry 会匹配,解析到其他位置或无法解析的 path 会 fail closed。user-global `provider = "openrouter"` 不需要 allowlist entry。直接选择 CLI 时,必须在同一 invocation 中同时使用 `--set agents.codex.provider=openrouter` 和 `--set agents.codex.model=<model>`;project model 不能为该 CLI provider override 补足 model。`allowProjectProvider` 不是 `--set` path,legacy boolean 值会被拒绝。
|
|
351
|
+
`allowProjectProvider` 适用于 project `provider`,以及继承 OpenRouter 时 project 对 `model` 的覆盖;list 必须完全匹配包含已解析 project config file 的 canonical directory 的 absolute path,而不是 invocation cwd 或 lexical path。不匹配子目录或 glob。project config file(包括受信任的 `kyoso.config.ts`)与 allowlist entry 都会通过 symlink 解析到该 directory;解析到同一 directory 的 entry 会匹配,解析到其他位置或无法解析的 path 会 fail closed。user-global `provider = "openrouter"` 不需要 allowlist entry。直接选择 CLI 时,必须在同一 invocation 中同时使用 `--set agents.codex.provider=openrouter` 和 `--set agents.codex.model=<model>`;project model 不能为该 CLI provider override 补足 model。`allowProjectProvider` 不是 `--set` path,legacy boolean 值会被拒绝。
|
|
357
352
|
|
|
358
353
|
当 user-global config 选择 OpenRouter 时,project 可以用 `provider = "default"` 显式 opt-out。这个 reset 不需要 model 或 authorization;除非同一 layer 明确提供普通 Codex model,它还会清除继承的 OpenRouter model,并且不会为该 project forward OpenRouter key。
|
|
359
354
|
|
|
@@ -365,9 +360,9 @@ export OPENROUTER_API_KEY="<secret>"
|
|
|
365
360
|
|
|
366
361
|
key 不会存入 `kyoso.toml`、Git 管理的 config、Audit trace 或 review output。无论它来自 Kyoso process 还是显式 `agents.codex.env`,只有选中该 provider 时,Kyoso 才会将它 forward 给 Codex child。当省略 `provider` 或设为 `provider = "default"` 时,Kyoso 会有意阻止这两种来源;非空的显式 `agents.codex.env.OPENROUTER_API_KEY` 还会产生说明其未被 forward 的 sanitized warning。由于只有被选中的 Codex OpenRouter child 能接收 key,另一个 child configuration(例如 `agents.claude.env`)中的非空 key 也会产生相同 warning。省略 `provider` 会保留现有 Codex login、`OPENAI_API_KEY`、`CODEX_API_KEY` 和 `CODEX_CONFIG` 行为;删除该行即可回到这些行为。
|
|
367
362
|
|
|
368
|
-
GUI client 可能不会继承 shell export。使用 `kyoso setup <client> --write --with-openrouter` 创建新的 manual MCP registration,重启 client 后再运行 `kyoso doctor` 检查 Kyoso process 能否检测到 key。`kyoso setup` 会保留已有 MCP entry 而不会重写,因此已有 registration 需要根据[示例](examples/codex-config.toml)手动更新 opt-in allowlist。
|
|
363
|
+
Marketplace Plugin 会向其 MCP process 暴露 `OPENROUTER_API_KEY` 变量名,但不保存 credential 值。GUI client 可能不会继承 shell export。使用 `kyoso setup <client> --write --with-openrouter` 创建新的 manual MCP registration,重启 client 后再运行 `kyoso doctor` 检查 Kyoso process 能否检测到 key。`kyoso setup` 会保留已有 MCP entry 而不会重写,因此已有 registration 需要根据[示例](examples/codex-config.toml)手动更新 opt-in allowlist。
|
|
369
364
|
|
|
370
|
-
新的 manual MCP registration 默认不包含 `OPENROUTER_API_KEY`。仅在有意选择 provider 后使用 `--with-openrouter` 添加它;已有 registration
|
|
365
|
+
新的 manual MCP registration 默认不包含 `OPENROUTER_API_KEY`。仅在有意选择 provider 后使用 `--with-openrouter` 添加它;已有 registration 永不重写。`kyoso setup ... --with-openrouter` 的输出和手动 setup 示例仍是用户管理的客户端注册模板。Claude Code registration 中的 `${OPENROUTER_API_KEY}` 必须由 client 展开;Kyoso 只会忽略完全由 `${NAME}`、`$NAME` 或 `%NAME%`(允许前后空白)构成的未展开 credential placeholder,并且只输出含变量名的 sanitized warning。含有其他文字的值会被保留。对于以 `_KEY`、`_TOKEN`、`_SECRET` 或 `_PASSWORD` 结尾的 custom credential-like name,也适用同一规则;非 credential template 会被保留。
|
|
371
366
|
|
|
372
367
|
推荐使用这种经过 user authorization 的 project-scoped opt-in。global `provider = "openrouter"` 会被 project 继承,直到 project 设置 `provider = "default"`;仅省略 `provider` 不会将其 unset。固定的 OpenRouter Responses API preset 为 beta;不开放 custom endpoint、provider routing、fallback 或 judge integration。为将 key 绑定到该 preset,OpenRouter mode 会拒绝含 top-level `profile` 或 `profiles` 的 `CODEX_CONFIG`,并会在启动 child 前拒绝非 object 的 `model_providers` value。对于 object,它会将 `model_providers` 替换为仅含固定 `kyoso-openrouter` entry 的对象,并发出只包含已丢弃 entry 数量的 sanitized warning;不会显示 provider ID 或 config value。除这些被拒绝的 field 外,它会保留 `model`、`model_provider` 和 `model_providers` 之外无关的 `CODEX_CONFIG` field,因此 foreign provider configuration 无法选择使用该 key 的 endpoint。Claude 仍使用已配置的 provider,judge 不会使用 `OPENROUTER_API_KEY`。
|
|
373
368
|
|
|
@@ -424,20 +419,40 @@ Kyoso 可以在只有 Claude 或只有 Codex 可用时运行。请在 `kyoso.tom
|
|
|
424
419
|
|
|
425
420
|
### Execution budget and review stopping
|
|
426
421
|
|
|
427
|
-
每次 review 都有 user-global hard ceiling,用于限制 model call 数、总 wall time
|
|
422
|
+
每次 review 都有 user-global hard ceiling,用于限制 model call 数、总 wall time和streaming agent text(message 和 thought chunk)。streaming text还设有更低的soft warning threshold,而每个agent的finding数是soft target。
|
|
428
423
|
|
|
429
424
|
```toml
|
|
430
425
|
[reviewBudget]
|
|
431
426
|
maxModelCalls = 4
|
|
432
|
-
maxTotalWallTimeMs =
|
|
433
|
-
|
|
427
|
+
maxTotalWallTimeMs = 660000
|
|
428
|
+
warnAgentOutputBytes = 524288
|
|
429
|
+
maxAgentOutputBytes = 1048576
|
|
434
430
|
maxFindingsPerAgent = 10
|
|
435
|
-
skipOptionalPhasesWhenTokenUsageUnknown =
|
|
431
|
+
skipOptionalPhasesWhenTokenUsageUnknown = false
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
`reviewBudget` 只能在 user-global 配置中设置;project `kyoso.toml` 和 `--set` 都不能修改它。MCP / library request 只能通过 `options.reviewBudget` 降低 ceiling,不能提高。512 KiB warning不会block,1 MiB limit会cancel call,超过10条finding target的material finding也不会被丢弃。token usage未知时默认warning并继续;只有user-global显式设为`true`时才保持严格的optional-phase skip。Kyoso 会先同时预留两个 primary reviewer,再将剩余 call 用于 verification,并把 LLM Judge 作为 advisory。默认 Judge mode 是 `deterministic_only`。
|
|
435
|
+
|
|
436
|
+
结果包含 `completion`、`executionBudget` 和 `requestFingerprint`。Markdown 与 Audit 会显示 call 数、wall time、message / thought / total output bytes,以及reported / partial / unknown token usage。已完成的model call还可显示`executionIdentity`,将Kyoso route和requested model与provider-reported identity分开;requested-only value绝不会显示为provider报告值。若 `completion.status` 为 `incomplete`,Kyoso 返回普通的 `block` 结果且 `retryable: false`:该 block 表示 review coverage 未完成,而不是已经确认 code defect。不要自动重试相同 fingerprint。对于一个 review checkpoint,bundled Skill 只允许首次评审与 material fix 后的确认评审各1次;第三次需要用户明确批准。
|
|
437
|
+
|
|
438
|
+
### Timeouts
|
|
439
|
+
|
|
440
|
+
Codex 和 Claude 的default agent timeout均为600秒;verification round 默认90秒。review-wide deadline 默认660秒(`reviewBudget.maxTotalWallTimeMs`),在default并行primary phase后保留标准的60秒finalization余量。各 phase 使用剩余 deadline 而不会延长它。`kyoso doctor` 会显示已配置的顺序phase时间,以及加入10%或60秒(取较大值)余量后的review-wide建议值。只有当judge mode允许且direct provider credential可用时,才会计入LLM judge timeout。
|
|
441
|
+
|
|
442
|
+
本repository的primary 15分钟+verification 15分钟dogfooding preset使用以下user-global override:
|
|
443
|
+
|
|
444
|
+
```toml
|
|
445
|
+
[reviewBudget]
|
|
446
|
+
maxTotalWallTimeMs = 2100000
|
|
436
447
|
```
|
|
437
448
|
|
|
438
|
-
|
|
449
|
+
Codex Plugin和新生成的manual Codex registration使用`tool_timeout_sec = 2160`,比Kyoso的35分钟deadline多保留60秒。`kyoso setup`会保留已有manual registration,因此需要手动更新。Claude Code Plugin manifest不设置client tool timeout;请用等效的毫秒值启动Claude Code,然后重启client:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
MCP_TOOL_TIMEOUT=2160000 claude
|
|
453
|
+
```
|
|
439
454
|
|
|
440
|
-
|
|
455
|
+
延长client timeout不会延长Kyoso内部的review-wide deadline。对于其他preset,请确保client timeout大于`reviewBudget.maxTotalWallTimeMs`。
|
|
441
456
|
|
|
442
457
|
### Verification
|
|
443
458
|
|
|
@@ -464,10 +479,6 @@ Judge keys: `judge.<mode|provider|timeoutMs>`。Judge LLMs 是 optional,默认
|
|
|
464
479
|
|
|
465
480
|
Judge defaults 有意使用 lightweight models。若需要更强的 judge,请将 `KYOSO_ANTHROPIC_JUDGE_MODEL` 设置为 Sonnet-class model,例如 `claude-sonnet-5`。
|
|
466
481
|
|
|
467
|
-
### Timeouts
|
|
468
|
-
|
|
469
|
-
Default agent timeouts 是 Codex 120 秒、Claude 300 秒;verification round 默认 90 秒。review-wide deadline 默认480秒,各 phase 使用剩余 deadline 而不会延长它。MCP clients 应允许 tool calls 至少运行480秒。
|
|
470
|
-
|
|
471
482
|
### Audit
|
|
472
483
|
|
|
473
484
|
在受支持的 POSIX runtime 上,Audit traces 会写入 user state base(absolute `$XDG_STATE_HOME`,否则 `$HOME/.local/state`)下:
|
|
@@ -478,6 +489,20 @@ Default agent timeouts 是 Codex 120 秒、Claude 300 秒;verification round
|
|
|
478
489
|
|
|
479
490
|
`audit.directory`是 logical relative directory(默认:`.kyoso/traces`),不是 workspace 内的 directory。现有 workspace `.kyoso/traces`不会被自动迁移或删除。
|
|
480
491
|
|
|
492
|
+
通过installed package显式指定absolute trusted trace directory,生成read-only budget report:
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
kyoso-budget-report --trace-dir /absolute/path/to/traces --json
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
在source checkout中使用package script:
|
|
499
|
+
|
|
500
|
+
```bash
|
|
501
|
+
bun run audit:budget-report -- --trace-dir /absolute/path/to/traces --json
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
report仅递归读取regular `.jsonl`文件,skip symlink,且不会推测trace path。它按agent、kind、provider route、requested model以及requested / reported identity status统计call,分别显示all-call与normal-path的nearest-rank p50 / p95 / p99 / max byte分布、token usage reporting率、output warning / limit率和completion / skip原因。只有明确具有`resultStatus = "completed"`且没有`errorCode`的event才属于normal-path;有歧义的historical event仅保留在all-call统计中。top-level byte分布和output warning / hard limit的call率仅统计primary与verifier;judge call仍保留在all-call总数及execution分组中,但不会稀释重新校准指标。warning call率只包含与相同trace / kind / agent的completed call相关联的warning event;重复或孤立的warning event会单独显示。JSON通过`inputLimits`公开固定输入上限;当file、byte、line、event、call、review、warning、group、reason或directory超限时,命令会中止而不是截断。遍历在专用worker中执行,其经过验证的current directory绑定到指定root的device / inode;recursive descent也会重新验证每个directory identity,因此替换并恢复lexical root不会改变读取目标。file使用不跟随symlink的non-blocking open,并且读取量不会超过discovery时的size;如果platform无法提供这些open capability,report会中止。metadata sanitize属于defense in depth,因此只能指定operator信任的trace directory。report不会把bytes换算为估算token或cost。重新校准时,将soft warning保持在正常路径p99的至少2倍,将hard breaker放在warning之上足够远的位置,使正常触发率接近0,并在调整policy前按provider / model检查token usage unknown率。
|
|
505
|
+
|
|
481
506
|
Raw agent output 默认禁用。`audit.includeFileContents` 是 reserved value,固定为 `false`;不会通过该设置保存 file contents。如果启用 `audit.includeRawAgentOutput`,traces 可能会保留 sensitive review output;请按照 local retention policy 删除旧 traces。在 Windows 或无法证明安全 filesystem capability 的环境中,Audit trace 写入会保持禁用,review 会返回 sanitized warning(参见 [Safety Model](#safety-model))。
|
|
482
507
|
|
|
483
508
|
## Safety Model
|
|
@@ -498,7 +523,12 @@ Windows,以及无法证明所需 filesystem capability 的环境,会 fail-cl
|
|
|
498
523
|
|
|
499
524
|
## 迁移
|
|
500
525
|
|
|
526
|
+
### 升级注意事项
|
|
527
|
+
|
|
501
528
|
- 将 project `kyoso.toml` 中的 `tools.*` 移到 user-global config。project-owned tool availability 现在会被拒绝,避免 repository content 禁用 review。
|
|
529
|
+
|
|
530
|
+
### 切换集成模式
|
|
531
|
+
|
|
502
532
|
- 从手动MCP迁移到CLI+Skill:先安装CLI和Skill,再运行`codex mcp remove kyoso`或`claude mcp remove kyoso --scope local|project|user`。
|
|
503
533
|
- 从CLI+Skill迁移到Plugin:添加Plugin并确认enabled后,再删除手动MCP注册。手动复制的Skill不会自动删除。
|
|
504
534
|
- 从Plugin迁移到CLI+Skill:先安装CLI和Skill,再运行`codex plugin remove kyoso@kyoso`。
|
|
@@ -506,7 +536,7 @@ Windows,以及无法证明所需 filesystem capability 的环境,会 fail-cl
|
|
|
506
536
|
|
|
507
537
|
## Troubleshooting
|
|
508
538
|
|
|
509
|
-
- MCP timeout:
|
|
539
|
+
- MCP timeout: client timeout应长于review-wide deadline。35分钟preset在Codex中使用2160秒,在Claude Code中使用`MCP_TOOL_TIMEOUT=2160000`。请参阅[Timeouts](#timeouts)。
|
|
510
540
|
- Fresh npm release: safe-chain 等 minimum-package-age protection 可能会在 publish 后短时间内 block `npx @kyo-so/cli` resolution。
|
|
511
541
|
- Deprecated TypeScript config: 除非传入 `--trust-config`,否则 untrusted `kyoso.config.ts` 会被 skip;新配置请使用 `kyoso.toml`。
|
|
512
542
|
- OpenRouter key missing: 确认 Codex `model` 非空、`OPENROUTER_API_KEY` 已 forward 给 Kyoso process,并已重启 client;再运行 `kyoso doctor`。Marketplace Plugin `0.4.0` 及更高版本会将此变量名 forward 给 Kyoso process,旧版本不会。setup 也不会重写已有 MCP registration。
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const MAX_ACP_NDJSON_LINE_BYTES: number;
|
|
2
|
+
export declare class AcpNdJsonLineLimitError extends Error {
|
|
3
|
+
readonly maxLineBytes: number;
|
|
4
|
+
constructor(maxLineBytes: number);
|
|
5
|
+
}
|
|
6
|
+
export declare function limitAcpNdJsonLineBytes(input: ReadableStream<Uint8Array>, maxLineBytes?: number): ReadableStream<Uint8Array>;
|
package/dist/acp/normalize.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { AgentName, AgentRole, NormalizedAgentOpinion } from "../core/types.js";
|
|
2
2
|
export declare function normalizeAgentOutput(agent: AgentName, role: AgentRole, rawText: string): NormalizedAgentOpinion;
|
|
3
|
+
export declare function parseAgentOutputStrict(agent: AgentName, role: AgentRole, rawText: string): NormalizedAgentOpinion | undefined;
|
|
3
4
|
export declare function extractFirstJsonObject(text: string): string | undefined;
|
package/dist/acp/prompts.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { AgentName, AgentRole, KyosoFinding, KyosoReviewRequest, ReviewLens
|
|
|
2
2
|
export declare function buildAgentPrompt(tool: ReviewTool, request: KyosoReviewRequest, agent: AgentName, role: AgentRole, policy?: {
|
|
3
3
|
requiredLenses?: ReviewLens[];
|
|
4
4
|
cisaEnabled?: boolean;
|
|
5
|
+
maxFindingsTarget?: number;
|
|
5
6
|
}): string;
|
|
6
7
|
export declare function buildFindingVerifierPrompt(tool: ReviewTool, request: KyosoReviewRequest, verifier: AgentName, findings: KyosoFinding[], policy?: {
|
|
7
8
|
requiredLenses?: ReviewLens[];
|