@zephyrdeng/pi-review 0.14.0 → 0.15.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/README.md +77 -5
- package/README.zh-CN.md +72 -3
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +22 -0
- package/dist/args.js.map +1 -1
- package/dist/child-isolation.test.js +25 -7
- package/dist/child-isolation.test.js.map +1 -1
- package/dist/classify.d.ts +36 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/classify.js +171 -0
- package/dist/classify.js.map +1 -0
- package/dist/classify.test.d.ts +2 -0
- package/dist/classify.test.d.ts.map +1 -0
- package/dist/classify.test.js +76 -0
- package/dist/classify.test.js.map +1 -0
- package/dist/cli.js +41 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/jev.d.ts +100 -0
- package/dist/jev.d.ts.map +1 -0
- package/dist/jev.js +250 -0
- package/dist/jev.js.map +1 -0
- package/dist/jev.test.d.ts +2 -0
- package/dist/jev.test.d.ts.map +1 -0
- package/dist/jev.test.js +154 -0
- package/dist/jev.test.js.map +1 -0
- package/dist/loop.d.ts +18 -1
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +39 -0
- package/dist/loop.js.map +1 -1
- package/dist/loop.test.js +36 -0
- package/dist/loop.test.js.map +1 -1
- package/dist/matcher.d.ts +16 -3
- package/dist/matcher.d.ts.map +1 -1
- package/dist/matcher.js +31 -12
- package/dist/matcher.js.map +1 -1
- package/dist/matcher.test.js +30 -6
- package/dist/matcher.test.js.map +1 -1
- package/dist/meta-footer.d.ts.map +1 -1
- package/dist/meta-footer.js +6 -2
- package/dist/meta-footer.js.map +1 -1
- package/dist/panel-cli.test.js +145 -3
- package/dist/panel-cli.test.js.map +1 -1
- package/dist/panel.d.ts.map +1 -1
- package/dist/panel.js +41 -4
- package/dist/panel.js.map +1 -1
- package/dist/pi-config.d.ts +61 -0
- package/dist/pi-config.d.ts.map +1 -0
- package/dist/pi-config.js +95 -0
- package/dist/pi-config.js.map +1 -0
- package/dist/pi-config.test.d.ts +2 -0
- package/dist/pi-config.test.d.ts.map +1 -0
- package/dist/pi-config.test.js +78 -0
- package/dist/pi-config.test.js.map +1 -0
- package/dist/review.d.ts +14 -3
- package/dist/review.d.ts.map +1 -1
- package/dist/review.js +22 -11
- package/dist/review.js.map +1 -1
- package/dist/round-compare.d.ts +23 -0
- package/dist/round-compare.d.ts.map +1 -0
- package/dist/round-compare.js +45 -0
- package/dist/round-compare.js.map +1 -0
- package/dist/round-compare.test.d.ts +2 -0
- package/dist/round-compare.test.d.ts.map +1 -0
- package/dist/round-compare.test.js +63 -0
- package/dist/round-compare.test.js.map +1 -0
- package/dist/skill-protocol.test.js +13 -0
- package/dist/skill-protocol.test.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/extensions/review.test.ts +8 -0
- package/extensions/review.ts +11 -0
- package/extensions/rv-config.test.ts +90 -0
- package/extensions/rv-config.ts +166 -0
- package/extensions/rv-prompts.ts +1 -1
- package/package.json +1 -1
- package/resources/providers/orcarouter.json +28 -0
- package/resources/providers/orcarouter.toml +11 -0
- package/skills/pi-review/SKILL.md +28 -2
- package/skills/pi-review/references/codex-tools.md +2 -0
- package/skills/pi-review/references/model-selection.md +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,55 @@ Works as a standalone CLI, a Pi package (extension + skill), or integrated into
|
|
|
14
14
|
|
|
15
15
|
- [Pi CLI](https://pi.dev) installed and configured with at least one model provider
|
|
16
16
|
|
|
17
|
+
## Run reviews on OrcaRouter
|
|
18
|
+
|
|
19
|
+
`pi-review` is model-agnostic — it runs on any model provider configured in your
|
|
20
|
+
[Pi](https://pi.dev) installation. To use [OrcaRouter](https://www.orcarouter.ai) as
|
|
21
|
+
the provider behind your reviews:
|
|
22
|
+
|
|
23
|
+
1. **Get a key** — no account yet? **Sign up with our referral link** <https://www.orcarouter.ai/ref/ref_07ca74b3e41670e5ff36> (also available from the badge below). Already have a key? Skip ahead.
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
export ORCA_KEY="sk-orca-..."
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
2. **Register the provider** — merge [`resources/providers/orcarouter.json`](./resources/providers/orcarouter.json) into `~/.pi/agent/models.json` (OpenAI-compatible), e.g.:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# jq not required; the file also works as-is when models.json doesn't exist yet
|
|
33
|
+
cp resources/providers/orcarouter.json ~/.pi/agent/models.json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"providers": {
|
|
39
|
+
"orcarouter": {
|
|
40
|
+
"baseUrl": "https://api.orcarouter.ai/v1",
|
|
41
|
+
"api": "openai-completions",
|
|
42
|
+
"apiKey": "ORCA_KEY",
|
|
43
|
+
"models": [
|
|
44
|
+
{
|
|
45
|
+
"id": "orcarouter/auto",
|
|
46
|
+
"name": "OrcaRouter Auto",
|
|
47
|
+
"reasoning": false,
|
|
48
|
+
"input": ["text"],
|
|
49
|
+
"contextWindow": 200000,
|
|
50
|
+
"maxTokens": 8192
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
3. **Pick the model** when you run a review:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pi-review --model orcarouter/orcarouter/auto -- @src/foo.ts
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
[](https://www.orcarouter.ai/ref/ref_07ca74b3e41670e5ff36)
|
|
65
|
+
|
|
17
66
|
## Features
|
|
18
67
|
|
|
19
68
|
- **Isolated review sessions** — each review runs in a clean child process with no shared state
|
|
@@ -150,6 +199,8 @@ Each round's `PI_REVIEW_META_JSON` line is the same enriched schema documented u
|
|
|
150
199
|
|
|
151
200
|
This is a **host-driven gate**: if findings remain, the host or human fixes only accepted in-scope findings and invokes `loop` again. For patch-by-patch agent closeout, `--max-rounds 1` gives the host a fix point after each review. For an explicit clean goal with a hard ceiling, use `--until clean` (default budget 10 when `--max-rounds` is omitted; never unlimited). Clean means no gate-blocking findings (single: no actionable findings; panel: no confirmed actionable clusters; advisories may remain). `loop` accepts normal review target/model/progress options but rejects `--keep-session`, `--continue`, and `--name` in v1.
|
|
152
201
|
|
|
202
|
+
**Cross-round comparison.** From round 2 onward each round is diffed against the previous round's actionable findings (`vs prev: =persisting · +new · -resolved` in the loop summary). Matching is deterministic first; with the Jev enhancement enabled, wording-drift pairs are adjudicated by Jev just like panel consensus. The comparison is advisory bookkeeping, never gate input, and a matcher failure degrades silently to no comparison. Under `--until clean`, when two consecutive rounds produce an identical actionable set (all persisting, nothing added or resolved), the loop stops early with `Stop: non_converging` — the tree does not change between rounds, so further rounds are dice rolls and the host should fix and re-invoke.
|
|
203
|
+
|
|
153
204
|
## Panel Review
|
|
154
205
|
|
|
155
206
|
Panel review runs multiple **independent** reviewers in isolated child sessions and aggregates their findings into one gate result. Reviewers cannot see one another's findings, so agreement represents independent discovery.
|
|
@@ -180,6 +231,18 @@ Singleton (uncorroborated) findings remain visible as **advisories** but do not
|
|
|
180
231
|
|
|
181
232
|
Two-phase matching: deterministic matching on stable anchors (path + normalized summary) first; only ambiguous same-path candidates go to a constrained **semantic adjudicator** (enabled with `--consensus-model`). The adjudicator clusters findings and may not invent findings, drop findings, add evidence, or act as another reviewer — it has no write tools. Low-confidence matches stay separate advisories so uncertain similarity cannot manufacture quorum.
|
|
182
233
|
|
|
234
|
+
**Adjudication engine (Jev enhancement mode).** When `TYPESAFE_API_KEY` is present (or `{ "jev": true }` is set in the config file), the adjudication decision is routed to [TypeSafe Jev](https://typesafe.ai) — a System One model that returns typed probabilities — instead of spawning a review-only Pi child. Each ambiguous finding pair becomes one Noul question ("same underlying issue?"), fanned out in a single call; the pair probability is used as the merge confidence and flows through the same threshold and provenance validation as LLM merges. This replaces a full child session with one ~100 ms typed call. Explicit `--consensus-model` keeps the Pi adjudicator; `PI_REVIEW_JEV=0` disables Jev for one run; any Jev failure falls back to the Pi adjudicator and is recorded as `adjudicationFallbackNote` in the meta. The aggregate meta carries `adjudicationEngine: "jev" | "pi"` whenever adjudication ran, and `/rv-config` shows the effective setting and key presence.
|
|
235
|
+
|
|
236
|
+
**Scope classification (`pi-review classify`).** The same Jev backend can classify a previous review's actionable findings against your frozen task baseline — the loop-closeout scope governor as a typed decision instead of a judgment call:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
pi-review classify --baseline "fix the login crash; UI polish is out of scope" --meta /tmp/last-review-meta.txt
|
|
240
|
+
# or pipe the review output directly:
|
|
241
|
+
pi-review -- @src 2>&1 | pi-review classify --baseline "..."
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Each actionable finding gets one Choice question (`in_scope_blocker` | `follow_up` | `stop_and_escalate`), all fanned out in a single call. Output is an ASCII summary plus a `PI_REVIEW_CLASSIFY_JSON` machine line on stderr; findings below confidence 0.5 are flagged as low-confidence. Classify is advisory and host-invoked — it never edits, never blocks a gate by itself, and requires `TYPESAFE_API_KEY` (exit 4 without it).
|
|
245
|
+
|
|
183
246
|
### Cost and failure
|
|
184
247
|
|
|
185
248
|
Reviewer runs = `--reviewers <n>` × `--max-rounds` (loop); one adjudication call may run per round when `--consensus-model` is set. Use `--concurrency <n>` to bound provider/machine pressure (default: reviewer count, never exceeds it). Reviewer runtime failure → `blocked`; unstructured dirty output or unresolved clarification → `needs_human`; never silently clean. Panel review rejects `--keep-session`, `--continue`, and `--name` (reviewers run `--no-session`); the host agent remains the only editor.
|
|
@@ -380,7 +443,14 @@ Session flags (`--keep-session`, `--continue`, `--name`) are unsupported by `loo
|
|
|
380
443
|
|
|
381
444
|
## Configuration
|
|
382
445
|
|
|
383
|
-
|
|
446
|
+
Persistent settings live in the review config file `~/.pi/pi-review/config.json` (override its location with `PI_REVIEW_CONFIG`). The config is advisory and forward-compatible: unknown keys are ignored, `null` counts as unset, and any other problem (wrong-typed value, invalid JSON) only prints a warning and falls back — the config never blocks core functionality, so a config written by a newer pi-review cannot brick an older one. In Pi, `/rv-config` shows the effective configuration (values, sources, warnings, resolved paths). There is deliberately no `/rv-config set` command — the preferred editor is your agent via the pi-review agent skill, which knows the config schema, keeps unknown keys, never overwrites invalid JSON, and never writes secrets (API keys stay environment variables, e.g. `TYPESAFE_API_KEY`; the config file holds flags only).
|
|
447
|
+
|
|
448
|
+
| Key | Type | Default | Description |
|
|
449
|
+
|-----|------|---------|-------------|
|
|
450
|
+
| `childExtensions` | boolean | `false` | Let review children load host Pi extensions so providers registered only through extensions are usable. Equivalent to per-run `PI_REVIEW_CHILD_EXTENSIONS=1`; `false` keeps children isolated with `--no-extensions` (issue #8). |
|
|
451
|
+
| `jev` | boolean | auto | Route panel consensus adjudication to TypeSafe Jev instead of a Pi adjudicator child. Default: enabled when `TYPESAFE_API_KEY` is set, disabled otherwise. Per-run override: `PI_REVIEW_JEV=1` / `=0`. An explicit `--consensus-model` always keeps the Pi adjudicator. |
|
|
452
|
+
|
|
453
|
+
Per-process overrides via environment variables (env wins over the config file):
|
|
384
454
|
|
|
385
455
|
| Variable | Description |
|
|
386
456
|
|----------|-------------|
|
|
@@ -391,7 +461,9 @@ Override defaults via environment variables:
|
|
|
391
461
|
| `PI_REVIEW_SYSTEM_PROMPT` | Path to system prompt file |
|
|
392
462
|
| `PI_REVIEW_SESSION_DIR` | Directory for persisted review sessions |
|
|
393
463
|
| `PI_REVIEW_META_STDOUT` | Set to `1`/`true` to print `PI_REVIEW_META_JSON` on stdout instead of stderr |
|
|
394
|
-
| `
|
|
464
|
+
| `PI_REVIEW_JEV` | Per-run override for `jev`: `1`/`true`/`on` routes panel consensus adjudication to TypeSafe Jev, any other set value (e.g. `0`) keeps the Pi adjudicator. Connection: `TYPESAFE_API_KEY` (required), optional `TYPESAFE_BASE_URL` and `PI_REVIEW_JEV_MODEL` (default `jev-latest`) |
|
|
465
|
+
| `PI_REVIEW_CHILD_EXTENSIONS` | Per-run override for `childExtensions`: `1`/`true`/`keep` enables host extensions for this process, any other set value (e.g. `0`) forces isolation; an empty value counts as unset. Persistent equivalent: `{ "childExtensions": true }` in the config file. With an explicit `--provider`, pi-review first probes the model catalog and blocks with a hint if the provider only exists via extensions |
|
|
466
|
+
| `PI_REVIEW_CONFIG` | Path to the review config file (default: `~/.pi/pi-review/config.json`) |
|
|
395
467
|
|
|
396
468
|
## Pi Package Usage
|
|
397
469
|
|
|
@@ -402,7 +474,7 @@ After installing as a Pi package, use the `/rv` slash command:
|
|
|
402
474
|
/rv --mode challenge @docs/design.md
|
|
403
475
|
```
|
|
404
476
|
|
|
405
|
-
Slash commands inject a task message for the parent agent. Strategy is selected by the command (`/rv`, `/rv-loop`, `/rv-models`); the remainder is the natural-language target. Use plain `/rv @src`, `/rv review the auth changes`, or `/rv-loop fix until clean @src` in Pi — no extra streaming flags needed for panel runs. `--continue`, `--keep-session`, loop, and explicit `--no-stream` retain the shell CLI path.
|
|
477
|
+
Slash commands inject a task message for the parent agent. Strategy is selected by the command (`/rv`, `/rv-loop`, `/rv-models`); the remainder is the natural-language target. `/rv-config` is read-only: it shows the effective configuration (config file, env overrides, resolved paths). Use plain `/rv @src`, `/rv review the auth changes`, or `/rv-loop fix until clean @src` in Pi — no extra streaming flags needed for panel runs. `--continue`, `--keep-session`, loop, and explicit `--no-stream` retain the shell CLI path.
|
|
406
478
|
|
|
407
479
|
```
|
|
408
480
|
/rv models
|
|
@@ -426,8 +498,8 @@ Completions are a hint layer only; execution remains skill-driven. When the mode
|
|
|
426
498
|
|
|
427
499
|
- Each review and every loop round runs in an isolated child Pi session
|
|
428
500
|
- Default runs use `--no-session` — no child context is stored
|
|
429
|
-
-
|
|
430
|
-
- Before spawning, pi-review probes the Pi model catalog when an explicit provider is in effect (via `--provider` or the `provider/` prefix of `--model`): if the provider only exists with host extensions loaded, the run is blocked with an actionable hint (`verdictSource: "config_error"`, meta `extensionHint`; panel runs aggregate every affected provider into `extensionHints`) instead of failing with a confusing unknown-provider error — the
|
|
501
|
+
- Children run isolated with `--no-extensions` by default so host usage HUDs / reload bridges cannot crash a reviewer via stale extension context after dispose (see issue #8). Enable host extension loading persistently with `{ "childExtensions": true }` in `~/.pi/pi-review/config.json`, or per run with `PI_REVIEW_CHILD_EXTENSIONS=1` — only when a custom provider truly must register inside the child.
|
|
502
|
+
- Before spawning, pi-review probes the Pi model catalog when an explicit provider is in effect (via `--provider` or the `provider/` prefix of `--model`): if the provider only exists with host extensions loaded, the run is blocked with an actionable hint (`verdictSource: "config_error"`, meta `extensionHint`; panel runs aggregate every affected provider into `extensionHints`) instead of failing with a confusing unknown-provider error — set `childExtensions: true` in the config file or re-run with `PI_REVIEW_CHILD_EXTENSIONS=1`. Catalog probes are cached only on success; a transient probe failure never blocks a review.
|
|
431
503
|
- On reviewer runtime failure, the panel footer and `reviewers[].runtimeError` keep a child stderr/stack tail for diagnosis
|
|
432
504
|
- `--keep-session` stores only the child review session for explicit follow-up
|
|
433
505
|
- The review session is read-only: no file edits, patches, commits, or deployments
|
package/README.zh-CN.md
CHANGED
|
@@ -21,6 +21,54 @@
|
|
|
21
21
|
|
|
22
22
|
- 已安装并配置好 [Pi CLI](https://pi.dev),且至少有一个可用模型
|
|
23
23
|
|
|
24
|
+
## 用 OrcaRouter 运行审查
|
|
25
|
+
|
|
26
|
+
`pi-review` 与模型无关——它运行在你 [Pi](https://pi.dev) 中配置的任意模型服务商之上。若要
|
|
27
|
+
把 [OrcaRouter](https://www.orcarouter.ai) 作为审查背后的服务商:
|
|
28
|
+
|
|
29
|
+
1. **获取 key**——还没有账号?**用我们的推荐链接注册** <https://www.orcarouter.ai/ref/ref_07ca74b3e41670e5ff36>(下方徽章亦可)。已有 key?直接下一步。
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
export ORCA_KEY="sk-orca-..."
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
2. **注册服务商**——把 [`resources/providers/orcarouter.json`](./resources/providers/orcarouter.json) 合并进 `~/.pi/agent/models.json`(OpenAI 兼容):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# models.json 不存在时可以直接整个使用;已有内容时用 jq 或手工合并
|
|
39
|
+
cp resources/providers/orcarouter.json ~/.pi/agent/models.json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"providers": {
|
|
45
|
+
"orcarouter": {
|
|
46
|
+
"baseUrl": "https://api.orcarouter.ai/v1",
|
|
47
|
+
"api": "openai-completions",
|
|
48
|
+
"apiKey": "ORCA_KEY",
|
|
49
|
+
"models": [
|
|
50
|
+
{
|
|
51
|
+
"id": "orcarouter/auto",
|
|
52
|
+
"name": "OrcaRouter Auto",
|
|
53
|
+
"reasoning": false,
|
|
54
|
+
"input": ["text"],
|
|
55
|
+
"contextWindow": 200000,
|
|
56
|
+
"maxTokens": 8192
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
3. **选择模型**运行审查:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pi-review --model orcarouter/orcarouter/auto -- @src/foo.ts
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
[](https://www.orcarouter.ai/ref/ref_07ca74b3e41670e5ff36)
|
|
71
|
+
|
|
24
72
|
## 安装
|
|
25
73
|
|
|
26
74
|
```bash
|
|
@@ -83,6 +131,8 @@ pi-review loop --until clean --max-rounds 10 -- @src
|
|
|
83
131
|
|
|
84
132
|
`--until clean` 声明成功目标(clean gate),但仍有硬预算:省略 `--max-rounds` 时默认为 10,**不是无限循环**。Clean 定义:单审查无 actionable finding;面板审查无 confirmed actionable cluster;advisories 可保留;`needs_human`/`blocked` 绝不算 clean。
|
|
85
133
|
|
|
134
|
+
**跨轮对比。** 从第 2 轮起,每轮 actionable finding 会与上一轮做对比(loop 摘要里的 `vs prev: =persisting · +new · -resolved`)。匹配先走确定性匹配;启用 Jev 增强时,措辞漂移的对子由 Jev 裁决,与面板共识同一套机制。该对比只是记账,绝不参与门禁;匹配失败时静默降级为无对比。在 `--until clean` 下,若连续两轮的 actionable 集合完全一致(全部 persisting,无新增无消失),loop 会以 `Stop: non_converging` 提前停止——轮次之间代码树不变,继续掷骰没有意义,host 应先修复再重新调用。
|
|
135
|
+
|
|
86
136
|
`loop` 复用普通审查的 mode/model/progress/target 参数;v1 明确不支持 `--keep-session`、`--continue`、`--name`。
|
|
87
137
|
|
|
88
138
|
每轮审查各自在 stderr 输出一条 `PI_REVIEW_META_JSON`,即[输出格式](#输出格式)里的富化 finding schema(`metaVersion`、每条 finding 的 `details`/`recommendation`/`location`、panel 轮次的 `sourceFindings`);消费者按输出顺序逐轮读取该行即可拿到完整 finding 数据,无需刮取 Markdown,逐轮摘要(`LoopRoundSummary`)保持只含计数。
|
|
@@ -117,6 +167,18 @@ pi-review loop --reviewers 3 --consensus quorum --max-rounds 2 -- @src
|
|
|
117
167
|
|
|
118
168
|
两阶段匹配:先用稳定锚点(路径 + 归一化摘要)做确定性匹配;只有路径相同、措辞不同的模糊候选才交给受限的**语义仲裁器**(用 `--consensus-model` 启用)。仲裁器只能聚类,不得发明 finding、丢弃 finding、补充证据或充当额外审查者,且没有写工具。低置信匹配保持为独立 advisory,避免靠"相似"制造虚假共识。
|
|
119
169
|
|
|
170
|
+
**裁决引擎(Jev 增强模式)。** 当环境里存在 `TYPESAFE_API_KEY`(或配置文件里设置 `{ "jev": true }`)时,共识裁决交给 [TypeSafe Jev](https://typesafe.ai)——返回 typed 概率的 System One 模型——而不再 spawn 一个 review-only 的 Pi 子进程。每对模糊 finding 变成一个 Noul 问题("是否同一问题?"),在单次调用里并行 fan-out;概率直接作为合并置信度,走与 LLM 裁决相同的阈值与溯源校验。这把一次完整子会话换成了一次约 100ms 的 typed 调用。显式 `--consensus-model` 时仍走 Pi 仲裁器;`PI_REVIEW_JEV=0` 可单次关闭;Jev 失败会自动回退 Pi 仲裁器并在 meta 里记录 `adjudicationFallbackNote`。裁决发生时聚合 meta 带 `adjudicationEngine: "jev" | "pi"`,`/rv-config` 可查看当前生效值与 key 是否存在。
|
|
171
|
+
|
|
172
|
+
**范围分类(`pi-review classify`)。** 同一个 Jev 后端还能把上一次评审的 actionable findings 对照冻结的任务基线分类——把 loop 收尾协议里的 scope governor 从 host 的主观判断变成 typed 决策:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
pi-review classify --baseline "修登录崩溃;UI 调优不在本次范围" --meta /tmp/last-review-meta.txt
|
|
176
|
+
# 或直接管道:
|
|
177
|
+
pi-review -- @src 2>&1 | pi-review classify --baseline "..."
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
每个 actionable finding 对应一个 Choice 问题(`in_scope_blocker` | `follow_up` | `stop_and_escalate`),单次调用并行 fan-out。输出为 ASCII 摘要 + stderr 上的 `PI_REVIEW_CLASSIFY_JSON` 机器行;置信度低于 0.5 的标记为 low-confidence。classify 是 advisory、由 host 主动调用——不改文件、不单独卡门禁,且必须有 `TYPESAFE_API_KEY`(缺失时 exit 4)。
|
|
181
|
+
|
|
120
182
|
### 成本与失败
|
|
121
183
|
|
|
122
184
|
审查者运行数 = `--reviewers <n>` × `--max-rounds`(loop);启用 `--consensus-model` 时每轮最多再跑一次仲裁。用 `--concurrency <n>` 限制并发(默认等于审查者数,不超过)。审查者运行时失败 → `blocked`;无法解析的脏输出或未决澄清 → `needs_human`;绝不悄悄 clean。面板审查 v1 不支持 `--keep-session`、`--continue`、`--name`(审查者用 `--no-session`);宿主 Agent 仍是唯一可编辑者。
|
|
@@ -208,14 +270,21 @@ CLI 会在 reviewer 启动前把 `PI_REVIEW_UI_URL: http://127.0.0.1:<port>/run/
|
|
|
208
270
|
|
|
209
271
|
提交代码:`npm install` 后会启用 **Husky** 钩子(`.husky/` → `ai-commit` 的 prepare-commit-msg / commit-msg / pre-commit)。也可 `git add` 后直接 `ai-commit commit`。配置见 `.ai-commit.yaml`(英文、`ai_footer: off`,需本机安装 ai-commit ≥ v0.1.45)。
|
|
210
272
|
|
|
211
|
-
|
|
273
|
+
持久化设置在评审配置文件 `~/.pi/pi-review/config.json`(可用 `PI_REVIEW_CONFIG` 覆盖其位置)中。配置是建议性的、向前兼容的:未知键被忽略,`null` 视为未设置,其它任何问题(类型错误、无效 JSON)只打印警告并回落——配置绝不阻塞核心功能,新版本写的配置不会弄坏旧版本。在 Pi 中用 `/rv-config` 查看生效配置(取值、来源、警告、解析路径)。刻意不提供 `/rv-config set` 命令——推荐的编辑器是你的 agent(走 pi-review skill):它知道配置 schema、保留未知键、坏 JSON 不覆盖,且绝不写入机密(API key 只走环境变量,如 `TYPESAFE_API_KEY`;配置文件只放开关)。
|
|
274
|
+
|
|
275
|
+
| 键 | 类型 | 默认 | 说明 |
|
|
276
|
+
|-----|------|---------|-------------|
|
|
277
|
+
| `childExtensions` | boolean | `false` | 是否让评审子进程加载宿主 Pi 扩展,以使用仅由扩展注册的 provider。等价于单次运行 `PI_REVIEW_CHILD_EXTENSIONS=1`;`false` 保持子进程隔离(`--no-extensions`,issue #8)。 |
|
|
278
|
+
| `jev` | boolean | auto | 是否把面板共识裁决交给 TypeSafe Jev 而非 Pi 仲裁子进程。默认:检测到 `TYPESAFE_API_KEY` 即开启,否则关闭。单次覆盖:`PI_REVIEW_JEV=1` / `=0`。显式 `--consensus-model` 时始终走 Pi 仲裁器。 |
|
|
279
|
+
|
|
280
|
+
环境变量提供单次进程级覆盖(env 优先于配置文件):`PI_REVIEW_HOME`、`PI_REVIEW_PRESETS`、`PI_REVIEW_PANEL_PRESETS`、`PI_REVIEW_SYSTEM_PROMPT`、`PI_REVIEW_SESSION_DIR`、`PI_REVIEW_META_STDOUT`、`PI_REVIEW_JEV`(`1`/`true`/`on` 开启 Jev 裁决、其它已设值如 `0` 保持 Pi 仲裁;连接用 `TYPESAFE_API_KEY`,可选 `TYPESAFE_BASE_URL`、`PI_REVIEW_JEV_MODEL`)、`PI_REVIEW_CHILD_EXTENSIONS`(`1`/`true`/`keep` 开启、其它已设值如 `0` 强制隔离、空值视为未设置;持久化等价写法为配置文件里 `{ "childExtensions": true }`)、`PI_REVIEW_CONFIG`。预设与审查指令文件内容均为英文。
|
|
212
281
|
|
|
213
282
|
## 安全
|
|
214
283
|
|
|
215
284
|
- 每次审查在隔离子进程中运行
|
|
216
285
|
- 默认不保留子会话;`--keep-session` 仅用于显式跟进
|
|
217
|
-
-
|
|
218
|
-
- 显式指定 provider(`--provider` 或 `--model` 的 `provider/` 前缀)时,spawn 前会先探测 Pi 模型目录:若该 provider 仅在加载宿主扩展后才存在,则直接以可执行的提示阻塞运行(`verdictSource: "config_error"`,meta 带 `extensionHint`;panel 运行会把所有受影响的 provider 聚合到 `extensionHints`),而不是抛一个令人困惑的 unknown-provider
|
|
286
|
+
- 默认子进程以 `--no-extensions` 隔离运行,避免宿主 usage HUD / reload bridge 在 dispose 后触 stale extension ctx 搞崩 reviewer(见 issue #8)。需要自定义 provider 在子进程内注册时,可在 `~/.pi/pi-review/config.json` 里持久化 `{ "childExtensions": true }`,或单次运行用 `PI_REVIEW_CHILD_EXTENSIONS=1`
|
|
287
|
+
- 显式指定 provider(`--provider` 或 `--model` 的 `provider/` 前缀)时,spawn 前会先探测 Pi 模型目录:若该 provider 仅在加载宿主扩展后才存在,则直接以可执行的提示阻塞运行(`verdictSource: "config_error"`,meta 带 `extensionHint`;panel 运行会把所有受影响的 provider 聚合到 `extensionHints`),而不是抛一个令人困惑的 unknown-provider 错误——在配置文件中设置 `childExtensions: true` 或重跑时加 `PI_REVIEW_CHILD_EXTENSIONS=1`。目录探测仅在成功时缓存,瞬时探测失败不会阻塞审查
|
|
219
288
|
- reviewer 运行时失败时,panel footer 与 `reviewers[].runtimeError` 会保留子进程 stderr/stack 尾部便于诊断
|
|
220
289
|
- 审查会话只读,不编辑、不部署
|
|
221
290
|
|
package/dist/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,KAAK,CAAC,QAAQ,SAAI,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,wBAAgB,KAAK,CAAC,QAAQ,SAAI,GAAG,KAAK,CAoEzC;AAED,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,+FAA+F;AAC/F,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,eAAe,+HACkG,CAAC;AAE/H,qBAAa,cAAe,SAAQ,KAAK;IACV,QAAQ,CAAC,QAAQ;gBAAlC,OAAO,EAAE,MAAM,EAAW,QAAQ,SAAI;CAInD;AAoBD,wDAAwD;AACxD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAmK9D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,CAKpE;AAqED,wBAAgB,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,OAAO,CAEvF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4BpD"}
|
package/dist/args.js
CHANGED
|
@@ -5,6 +5,7 @@ export function usage(exitCode = 0) {
|
|
|
5
5
|
pi-review models [search]
|
|
6
6
|
pi-review [review] [options] -- <@files|text...>
|
|
7
7
|
pi-review loop [options] -- <@files|text...>
|
|
8
|
+
pi-review classify --baseline <text|@file> [--meta <path>] Classify a previous review's findings against the frozen baseline (Jev required)
|
|
8
9
|
pi-review update Update package + agent skill content
|
|
9
10
|
pi-review install [options] Pi package + agent skills (one-shot)
|
|
10
11
|
pi-review install-skill [options] Install skill to AI agents only
|
|
@@ -348,6 +349,9 @@ export function parseArgs(argv) {
|
|
|
348
349
|
if (argv[0] === "update") {
|
|
349
350
|
return { command: "update", mode: "code", skills: [], payload: [], keepSession: false, stream: true };
|
|
350
351
|
}
|
|
352
|
+
if (argv[0] === "classify") {
|
|
353
|
+
return parseClassifyCommand(argv.slice(1));
|
|
354
|
+
}
|
|
351
355
|
try {
|
|
352
356
|
return parseReviewCommand(argv);
|
|
353
357
|
}
|
|
@@ -359,4 +363,22 @@ export function parseArgs(argv) {
|
|
|
359
363
|
usage(error.exitCode);
|
|
360
364
|
}
|
|
361
365
|
}
|
|
366
|
+
/** classify is a Jev-only post-processing command: --baseline + optional --meta, nothing else. */
|
|
367
|
+
function parseClassifyCommand(argv) {
|
|
368
|
+
const options = { command: "classify", mode: "code", skills: [], payload: [], keepSession: false, stream: true };
|
|
369
|
+
while (argv.length > 0) {
|
|
370
|
+
const arg = argv.shift();
|
|
371
|
+
switch (arg) {
|
|
372
|
+
case "--baseline":
|
|
373
|
+
options.baseline = requireValue(arg, argv);
|
|
374
|
+
break;
|
|
375
|
+
case "--meta":
|
|
376
|
+
options.metaFile = requireValue(arg, argv);
|
|
377
|
+
break;
|
|
378
|
+
default:
|
|
379
|
+
throw new ArgsParseError(`classify: unknown option ${arg}`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return options;
|
|
383
|
+
}
|
|
362
384
|
//# sourceMappingURL=args.js.map
|
package/dist/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,34 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { test } from "vitest";
|
|
3
|
-
import { CHILD_STDERR_DIAGNOSTIC_LIMIT, childIsolationArgs, formatChildRuntimeDetail, } from "./review.js";
|
|
3
|
+
import { CHILD_STDERR_DIAGNOSTIC_LIMIT, childIsolationArgs, formatChildRuntimeDetail, modelsArgs, } from "./review.js";
|
|
4
4
|
import { buildReviewerArgs } from "./panel.js";
|
|
5
5
|
test("childIsolationArgs defaults to --no-extensions for host isolation", () => {
|
|
6
|
-
assert.deepEqual(childIsolationArgs({}), ["--no-extensions"]);
|
|
7
|
-
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "" }), ["--no-extensions"]);
|
|
8
|
-
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "0" }), ["--no-extensions"]);
|
|
6
|
+
assert.deepEqual(childIsolationArgs({}, {}), ["--no-extensions"]);
|
|
7
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "" }, {}), ["--no-extensions"]);
|
|
8
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "0" }, {}), ["--no-extensions"]);
|
|
9
9
|
});
|
|
10
10
|
test("childIsolationArgs can opt back into host extensions", () => {
|
|
11
|
-
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "1" }), []);
|
|
12
|
-
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "true" }), []);
|
|
13
|
-
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "KEEP" }), []);
|
|
11
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "1" }, {}), []);
|
|
12
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "true" }, {}), []);
|
|
13
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "KEEP" }, {}), []);
|
|
14
|
+
});
|
|
15
|
+
test("childIsolationArgs honors the persistent config childExtensions key", () => {
|
|
16
|
+
assert.deepEqual(childIsolationArgs({}, { childExtensions: true }), []);
|
|
17
|
+
assert.deepEqual(childIsolationArgs({}, { childExtensions: false }), ["--no-extensions"]);
|
|
18
|
+
});
|
|
19
|
+
test("childIsolationArgs: env overrides the persistent config in both directions", () => {
|
|
20
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "0" }, { childExtensions: true }), ["--no-extensions"]);
|
|
21
|
+
assert.deepEqual(childIsolationArgs({ PI_REVIEW_CHILD_EXTENSIONS: "1" }, { childExtensions: false }), []);
|
|
22
|
+
});
|
|
23
|
+
test("modelsArgs applies the same effective isolation as review children", () => {
|
|
24
|
+
assert.deepEqual(modelsArgs(["openai"], {}, {}), ["--list-models", "--no-extensions", "openai"]);
|
|
25
|
+
assert.deepEqual(modelsArgs(["openai"], {}, { childExtensions: true }), ["--list-models", "openai"]);
|
|
26
|
+
assert.deepEqual(modelsArgs(["openai"], { PI_REVIEW_CHILD_EXTENSIONS: "1" }, {}), ["--list-models", "openai"]);
|
|
27
|
+
assert.deepEqual(modelsArgs(["openai"], { PI_REVIEW_CHILD_EXTENSIONS: "0" }, { childExtensions: true }), [
|
|
28
|
+
"--list-models",
|
|
29
|
+
"--no-extensions",
|
|
30
|
+
"openai",
|
|
31
|
+
]);
|
|
14
32
|
});
|
|
15
33
|
test("formatChildRuntimeDetail preserves a multi-line child stack tail", () => {
|
|
16
34
|
const stack = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-isolation.test.js","sourceRoot":"","sources":["../src/child-isolation.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"child-isolation.test.js","sourceRoot":"","sources":["../src/child-isolation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type JevConnection, type JevFetch } from "./jev.js";
|
|
2
|
+
import type { ParsedArgs, ReviewFinding } from "./types.js";
|
|
3
|
+
export declare const SCOPE_CLASSES: readonly ["in_scope_blocker", "follow_up", "stop_and_escalate"];
|
|
4
|
+
export type ScopeClass = (typeof SCOPE_CLASSES)[number];
|
|
5
|
+
/** Below this confidence the classification is advisory-only. */
|
|
6
|
+
export declare const CLASSIFY_CONFIDENCE_FLOOR = 0.5;
|
|
7
|
+
export interface ClassifiedFinding {
|
|
8
|
+
id: string;
|
|
9
|
+
summary: string;
|
|
10
|
+
classification: ScopeClass;
|
|
11
|
+
confidence: number;
|
|
12
|
+
/** True when confidence is below CLASSIFY_CONFIDENCE_FLOOR — treat as unclassified. */
|
|
13
|
+
uncertain: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ClassifyResult {
|
|
16
|
+
baselineChars: number;
|
|
17
|
+
findings: ClassifiedFinding[];
|
|
18
|
+
unclassified: string[];
|
|
19
|
+
model?: string;
|
|
20
|
+
usage?: {
|
|
21
|
+
inputTokens: number;
|
|
22
|
+
outputTokens: number;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/** Parse a meta file/stdin payload: a PI_REVIEW_META_JSON line or a bare meta JSON object. */
|
|
26
|
+
export declare function parseMetaFindings(text: string): ReviewFinding[];
|
|
27
|
+
/** Resolve the baseline text: @path reads the file, anything else is literal text. */
|
|
28
|
+
export declare function resolveBaseline(value: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* One Jev call: a Choice question per finding, all fanned out in parallel.
|
|
31
|
+
* The baseline is the judge's only notion of scope; Jev never sees the code.
|
|
32
|
+
*/
|
|
33
|
+
export declare function classifyFindings(connection: JevConnection, baseline: string, findings: ReviewFinding[], fetchImpl?: JevFetch): Promise<ClassifyResult>;
|
|
34
|
+
export declare function formatClassifyAscii(result: ClassifyResult): string;
|
|
35
|
+
export declare function runClassify(parsed: ParsedArgs, stdinText: string): Promise<never>;
|
|
36
|
+
//# sourceMappingURL=classify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../src/classify.ts"],"names":[],"mappings":"AAaA,OAAO,EAAyC,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5D,eAAO,MAAM,aAAa,iEAAkE,CAAC;AAC7F,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,UAAU,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAWD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAc/D;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUrD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EAAE,EACzB,SAAS,CAAC,EAAE,QAAQ,GACnB,OAAO,CAAC,cAAc,CAAC,CA4CzB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA4BlE;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CA4CvF"}
|