@motivation-labs/crosscheck 0.8.0 → 0.9.0-beta.4
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 +41 -215
- package/README.zh.md +51 -176
- package/crosscheck.config.example.yml +5 -17
- package/dist/__tests__/optimize.test.js +1 -5
- package/dist/__tests__/optimize.test.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +5 -2
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/onboard.d.ts.map +1 -1
- package/dist/commands/onboard.js +19 -21
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/review.d.ts.map +1 -1
- package/dist/commands/review.js +2 -1
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +5 -8
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +1 -4
- package/dist/commands/watch.js.map +1 -1
- package/dist/config/loader.d.ts +1 -2
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +7 -10
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +24 -54
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +9 -12
- package/dist/config/schema.js.map +1 -1
- package/dist/lib/board.d.ts +7 -0
- package/dist/lib/board.d.ts.map +1 -1
- package/dist/lib/board.js +150 -57
- package/dist/lib/board.js.map +1 -1
- package/dist/lib/runner.d.ts +3 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +44 -51
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/workflow.d.ts.map +1 -1
- package/dist/lib/workflow.js +9 -2
- package/dist/lib/workflow.js.map +1 -1
- package/dist/reviewers/claude.d.ts.map +1 -1
- package/dist/reviewers/claude.js +2 -7
- package/dist/reviewers/claude.js.map +1 -1
- package/get-started.md +12 -9
- package/get-started.zh.md +420 -50
- package/package.json +1 -1
package/get-started.zh.md
CHANGED
|
@@ -9,21 +9,26 @@
|
|
|
9
9
|
- [前提条件](#前提条件)
|
|
10
10
|
- [安装](#安装)
|
|
11
11
|
- [环境变量](#环境变量)
|
|
12
|
-
- [第一步 —
|
|
12
|
+
- [第一步 — 配置 crosscheck](#第一步--配置-crosscheck)
|
|
13
13
|
- [第二步 — 用单个 PR 测试](#第二步--用单个-pr-测试)
|
|
14
14
|
- [第三步 — 选择部署模式](#第三步--选择部署模式)
|
|
15
15
|
- [第四步 — 验证运行正常](#第四步--验证运行正常)
|
|
16
16
|
- [命令](#命令)
|
|
17
17
|
- [init](#crosscheck-init)
|
|
18
|
+
- [onboard](#crosscheck-onboard)
|
|
18
19
|
- [review](#crosscheck-review-pr-url)
|
|
20
|
+
- [run](#crosscheck-run-pr-url)
|
|
19
21
|
- [watch](#crosscheck-watch)
|
|
20
22
|
- [serve](#crosscheck-serve-beta)
|
|
21
23
|
- [status](#crosscheck-status)
|
|
22
24
|
- [diagnose](#crosscheck-diagnose)
|
|
23
25
|
- [optimize](#crosscheck-optimize)
|
|
24
26
|
- [impact](#crosscheck-impact)
|
|
27
|
+
- [issue](#crosscheck-issue)
|
|
28
|
+
- [自定义根目录](#自定义根目录)
|
|
25
29
|
- [配置](#配置)
|
|
26
30
|
- [工作原理](#工作原理)
|
|
31
|
+
- [审查后自动修复](#审查后自动修复)
|
|
27
32
|
- [常见问题](#常见问题)
|
|
28
33
|
|
|
29
34
|
---
|
|
@@ -116,8 +121,7 @@ gh auth login
|
|
|
116
121
|
export GITHUB_TOKEN=ghp_...
|
|
117
122
|
```
|
|
118
123
|
|
|
119
|
-
Classic PAT 需要 `repo` 和 `admin:org_hook` 权限(Org 级别 Webhook 需要 `admin:org_hook`;仅 Repo 级别只需 `repo
|
|
120
|
-
在 [github.com/settings/tokens](https://github.com/settings/tokens) 生成。
|
|
124
|
+
Classic PAT 需要 `repo` 和 `admin:org_hook` 权限(Org 级别 Webhook 需要 `admin:org_hook`;仅 Repo 级别只需 `repo`)。在 [github.com/settings/tokens](https://github.com/settings/tokens) 生成。
|
|
121
125
|
|
|
122
126
|
如果两者都存在,crosscheck 优先使用 `gh` keyring 中的 Token(始终最新),以 `GITHUB_TOKEN` 为备选。
|
|
123
127
|
|
|
@@ -139,31 +143,23 @@ export CROSSCHECK_WEBHOOK_SECRET=your-secret
|
|
|
139
143
|
|
|
140
144
|
---
|
|
141
145
|
|
|
142
|
-
## 第一步 —
|
|
146
|
+
## 第一步 — 配置 crosscheck
|
|
143
147
|
|
|
144
148
|
```bash
|
|
145
|
-
crosscheck
|
|
149
|
+
crosscheck onboard
|
|
146
150
|
```
|
|
147
151
|
|
|
148
|
-
|
|
152
|
+
`crosscheck onboard` 是推荐的首次配置方式。它会检查你的 CLI 环境,引导你完成部署模式选择、仓库选择、审查模式和工作流流水线,然后一次性写入可用的配置。详见 [`crosscheck onboard`](#crosscheck-onboard) 命令参考。
|
|
149
153
|
|
|
150
|
-
|
|
151
|
-
crosscheck — environment check
|
|
154
|
+
完成后直接运行 `crosscheck watch` 即可,无需单独执行 init 步骤。
|
|
152
155
|
|
|
153
|
-
|
|
154
|
-
✓ claude CLI 2.1.x (Claude Code)
|
|
155
|
-
✓ gh CLI gh version 2.65.0
|
|
156
|
-
✓ GITHUB_TOKEN set (gh auth login)
|
|
157
|
-
✓ WEBHOOK_SECRET auto-managed at ~/.crosscheck/webhook-secret
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
修复所有失败项后再继续。
|
|
156
|
+
> 如果你希望跳过向导手动配置,可运行 `crosscheck init` 生成初始配置,然后直接编辑 `~/.crosscheck/config.yml`。
|
|
161
157
|
|
|
162
158
|
---
|
|
163
159
|
|
|
164
160
|
## 第二步 — 用单个 PR 测试
|
|
165
161
|
|
|
166
|
-
|
|
162
|
+
在持续运行之前,先用一个 PR 验证端到端流程:
|
|
167
163
|
|
|
168
164
|
```bash
|
|
169
165
|
crosscheck review https://github.com/owner/repo/pull/123 --reviewer codex
|
|
@@ -181,6 +177,43 @@ crosscheck review https://github.com/owner/repo/pull/123 --reviewer claude
|
|
|
181
177
|
|
|
182
178
|
## 第三步 — 选择部署模式
|
|
183
179
|
|
|
180
|
+
### 个人模式 vs 团队模式
|
|
181
|
+
|
|
182
|
+
首次运行时,`crosscheck watch`(或 `crosscheck serve`)会询问使用方式:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
How are you using crosscheck?
|
|
186
|
+
|
|
187
|
+
[1] personal — monitor all your repos and orgs; review only PRs you author
|
|
188
|
+
[2] team — monitor org repos only; review all PRs from any author
|
|
189
|
+
|
|
190
|
+
Choice [1]:
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
选择会以 `deployment: personal` 或 `deployment: team` 的形式保存到 `crosscheck.config.yml`。
|
|
194
|
+
|
|
195
|
+
**个人模式**(默认,个人开发者推荐)
|
|
196
|
+
- 监控你 GitHub 账号下的所有个人仓库 + 所属所有 Org
|
|
197
|
+
- 只审查你提交的 PR,忽略其他人的
|
|
198
|
+
- 自动将 `routing.allowed_authors` 设置为你的 GitHub 登录名
|
|
199
|
+
|
|
200
|
+
**团队模式**(共享机器推荐)
|
|
201
|
+
- 只监控你所属 Org 的仓库(不含个人仓库)
|
|
202
|
+
- 审查所有人提交的 PR,不过滤作者
|
|
203
|
+
|
|
204
|
+
单次会话覆盖已保存的选择(不修改配置):
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
crosscheck watch --personal # 本次会话使用个人模式
|
|
208
|
+
crosscheck watch --team # 本次会话使用团队模式
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
重新运行提示并永久修改选择:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
crosscheck watch --reconfigure
|
|
215
|
+
```
|
|
216
|
+
|
|
184
217
|
### Watch 模式 — 适合开发机器
|
|
185
218
|
|
|
186
219
|
启动本地服务器,通过 `localhost.run`(SSH,无需额外安装)开通公网隧道,让 GitHub 能访问你的本地机器。自动注册 Webhook,支持 Org 级或 Repo 级覆盖,终端开启期间持续运行。
|
|
@@ -319,6 +352,106 @@ crosscheck init --config /path/to/crosscheck.config.yml
|
|
|
319
352
|
|
|
320
353
|
---
|
|
321
354
|
|
|
355
|
+
### `crosscheck onboard`
|
|
356
|
+
|
|
357
|
+
推荐的首次配置命令,交互式引导完成七个步骤并写入可用配置。
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
crosscheck onboard
|
|
361
|
+
crosscheck onboard --yes # 非交互式,接受所有默认值
|
|
362
|
+
crosscheck onboard --personal # 本次会话强制使用个人模式
|
|
363
|
+
crosscheck onboard --team # 本次会话强制使用团队模式
|
|
364
|
+
crosscheck onboard --reconfigure # 即使配置已存在也重新运行设置
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**七个步骤:**
|
|
368
|
+
|
|
369
|
+
**步骤 1 — 环境检查。** 验证 codex CLI、claude CLI、gh CLI 和 GitHub Token。至少需要一个 AI CLI 已认证;gh auth 始终必须。打印 ✓/✗ 及修复提示。
|
|
370
|
+
|
|
371
|
+
**步骤 2 — 部署模式。** 选择 crosscheck 的工作范围:
|
|
372
|
+
- `personal` — 监控你的个人仓库 + 所属所有 Org;只审查你提交的 PR
|
|
373
|
+
- `team` — 只监控 Org 仓库;审查所有人提交的 PR
|
|
374
|
+
|
|
375
|
+
**步骤 3 — 仓库选择。** 列出可访问的仓库和 Org,选择要监控的目标。选择 Org 级别可用一个 Webhook 覆盖该 Org 下所有仓库。
|
|
376
|
+
|
|
377
|
+
**步骤 4 — 审查模式。** 如果两个 CLI 都可用,选择:
|
|
378
|
+
- `cross-vendor` — Claude 审查 Codex 的 PR;Codex 审查 Claude 的 PR(同时使用两个 Agent 时推荐)
|
|
379
|
+
- `single-vendor` — 一个 AI 审查所有 PR(只安装了一个 CLI 时默认)
|
|
380
|
+
|
|
381
|
+
**步骤 5 — 工作流流水线。** 选择审查后的行为:
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
[1] review only — AI 发布评论;由你处理修复
|
|
385
|
+
[2] review → fix — AI 审查,然后自动应用修复(推荐)
|
|
386
|
+
[3] review → fix → re-check — 完整闭环:审查、修复、再次审查确认
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
选择 `review → fix → re-check` 会写入包含三个流水线步骤的 `~/.crosscheck/workflow.yml`。
|
|
390
|
+
|
|
391
|
+
**步骤 6 — 连接方式。** 选择 GitHub Webhook 如何到达本地服务器:
|
|
392
|
+
- `localhost.run` — 零配置 SSH 隧道;自动重连,无需安装 *(默认)*
|
|
393
|
+
- `smee.io` — Webhook 中继;离线时事件排队,频道 URL 稳定(需要 `npm install -g smee-client` 和配置中的 `tunnel.smee_channel`)
|
|
394
|
+
|
|
395
|
+
**步骤 7 — 确认并写入配置。** 展示所有选择的摘要并写入 `~/.crosscheck/config.yml`(以及选择了 re-check 时的 `workflow.yml`)。
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
crosscheck onboard
|
|
399
|
+
|
|
400
|
+
Step 1 — environment check
|
|
401
|
+
✓ codex CLI codex-cli 0.128.0 — authenticated
|
|
402
|
+
✓ claude CLI 2.1.x (Claude Code)
|
|
403
|
+
✓ gh CLI gh version 2.65.0
|
|
404
|
+
✓ GITHUB_TOKEN set (gh auth login)
|
|
405
|
+
|
|
406
|
+
Step 2 — deployment mode
|
|
407
|
+
[1] personal [2] team
|
|
408
|
+
Choice [1]: 1
|
|
409
|
+
|
|
410
|
+
Step 3 — select repos to monitor
|
|
411
|
+
[1] motivation-labs (org · 12 repos)
|
|
412
|
+
[2] codatta (org · 5 repos)
|
|
413
|
+
[3] your-github-login (personal · 8 repos)
|
|
414
|
+
Select [all]: 1,3
|
|
415
|
+
|
|
416
|
+
Step 4 — review mode
|
|
417
|
+
[1] cross-vendor [2] single-vendor
|
|
418
|
+
Choice [1]: 1
|
|
419
|
+
|
|
420
|
+
Step 5 — workflow pipeline
|
|
421
|
+
[1] review only [2] review → fix [3] review → fix → re-check
|
|
422
|
+
Choice [2]: 3
|
|
423
|
+
|
|
424
|
+
Step 6 — connection type
|
|
425
|
+
[1] localhost.run [2] smee.io
|
|
426
|
+
Choice [1]: 1
|
|
427
|
+
|
|
428
|
+
Step 7 — review and write config
|
|
429
|
+
deployment personal
|
|
430
|
+
connection localhost.run
|
|
431
|
+
orgs motivation-labs
|
|
432
|
+
users your-github-login (8 repos)
|
|
433
|
+
mode cross-vendor
|
|
434
|
+
pipeline review-fix-recheck
|
|
435
|
+
config ~/.crosscheck/config.yml
|
|
436
|
+
|
|
437
|
+
✓ config written to ~/.crosscheck/config.yml
|
|
438
|
+
✓ workflow written to ~/.crosscheck/workflow.yml
|
|
439
|
+
|
|
440
|
+
Next: run crosscheck watch to start reviewing PRs.
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
> **`crosscheck init` vs `crosscheck onboard`** — `init` 只做轻量级环境检查(无仓库选择,无流水线提示)。适合快速健康检查或 CI 场景。`onboard` 是完整的首次配置向导。
|
|
444
|
+
|
|
445
|
+
| 参数 | 说明 |
|
|
446
|
+
|---|---|
|
|
447
|
+
| `-c, --config <path>` | 将配置写入指定路径 |
|
|
448
|
+
| `-y, --yes` | 非交互式,接受所有默认值 |
|
|
449
|
+
| `--personal` | 本次会话使用个人部署模式 |
|
|
450
|
+
| `--team` | 本次会话使用团队部署模式 |
|
|
451
|
+
| `--reconfigure` | 即使配置中已设置 `deployment` 也重新运行设置 |
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
322
455
|
### `crosscheck review <pr-url>`
|
|
323
456
|
|
|
324
457
|
手动触发对单个 PR 的审查。
|
|
@@ -336,6 +469,28 @@ crosscheck review https://github.com/owner/repo/pull/123 --reviewer claude
|
|
|
336
469
|
|
|
337
470
|
---
|
|
338
471
|
|
|
472
|
+
### `crosscheck run <pr-url>`
|
|
473
|
+
|
|
474
|
+
对单个 PR 执行完整配置的工作流:审查 → 自动修复 → 复查。`crosscheck review` 在发布评论后停止,`crosscheck run` 会完成闭环——如果发现问题,原作者 Agent 会打开修复 PR,crosscheck 随后对其进行复查。
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
crosscheck run https://github.com/owner/repo/pull/123
|
|
478
|
+
crosscheck run https://github.com/owner/repo/pull/123 --reviewer claude
|
|
479
|
+
crosscheck run https://github.com/owner/repo/pull/123 --steps review,fix
|
|
480
|
+
crosscheck run https://github.com/owner/repo/pull/123 --dry-run
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
执行的工作流从仓库根目录的 `.crosscheck/workflow.yml`(如存在)加载,否则回退到内置默认流水线(仅审查)。使用 `crosscheck run` 对真实 PR 进行端到端完整流水线测试。
|
|
484
|
+
|
|
485
|
+
| 参数 | 说明 |
|
|
486
|
+
|---|---|
|
|
487
|
+
| `-r, --reviewer codex\|claude` | 强制使用指定审查者,跳过自动检测 |
|
|
488
|
+
| `--steps <list>` | 只运行列出的步骤类型,逗号分隔:`review`、`fix`、`recheck` |
|
|
489
|
+
| `--dry-run` | 运行审查但不发布评论或应用修复 |
|
|
490
|
+
| `-c, --config <path>` | 使用指定配置文件 |
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
339
494
|
### `crosscheck watch`
|
|
340
495
|
|
|
341
496
|
本地开发模式。自动创建隧道,注册 Webhook,退出时自动清理。
|
|
@@ -448,7 +603,7 @@ crosscheck diagnose
|
|
|
448
603
|
|
|
449
604
|
Suggestions
|
|
450
605
|
→ tsc: command not found ×2 (codex)
|
|
451
|
-
add to instructions
|
|
606
|
+
add to workflow.yml review step instructions: "Do not run tsc, ts-node, or tsx."
|
|
452
607
|
→ base branch 'staging' not found ×2 — verify branch is fetched before review
|
|
453
608
|
|
|
454
609
|
Run `crosscheck optimize` to apply suggestions automatically.
|
|
@@ -463,7 +618,7 @@ crosscheck diagnose
|
|
|
463
618
|
|
|
464
619
|
### `crosscheck optimize`
|
|
465
620
|
|
|
466
|
-
内部运行 `diagnose`,选择最优 AI Agent
|
|
621
|
+
内部运行 `diagnose`,选择最优 AI Agent,为 `~/.crosscheck/workflow.yml` 中的 review 步骤生成改进指令。默认为预览模式(只显示 diff,不写入文件)。
|
|
467
622
|
|
|
468
623
|
```bash
|
|
469
624
|
crosscheck optimize # 仅显示 diff
|
|
@@ -475,7 +630,7 @@ crosscheck optimize --agent codex --apply
|
|
|
475
630
|
Running diagnose...
|
|
476
631
|
agent claude (default — both enabled, no data)
|
|
477
632
|
|
|
478
|
-
diff /Users/you/.crosscheck/
|
|
633
|
+
diff /Users/you/.crosscheck/workflow.yml (review step)
|
|
479
634
|
|
|
480
635
|
+## Constraints
|
|
481
636
|
+
|
|
@@ -483,7 +638,7 @@ crosscheck optimize --agent codex --apply
|
|
|
483
638
|
+- Do not run npm, npx, yarn, or pnpm.
|
|
484
639
|
...
|
|
485
640
|
|
|
486
|
-
Run with --apply to write changes to
|
|
641
|
+
Run with --apply to write changes to /Users/you/.crosscheck/workflow.yml (review step)
|
|
487
642
|
```
|
|
488
643
|
|
|
489
644
|
**`optimize` 使用哪个 Agent?**
|
|
@@ -497,7 +652,7 @@ crosscheck optimize --agent codex --apply
|
|
|
497
652
|
|
|
498
653
|
| 参数 | 说明 |
|
|
499
654
|
|---|---|
|
|
500
|
-
| `--apply` |
|
|
655
|
+
| `--apply` | 将改进指令写入 `~/.crosscheck/workflow.yml` 中的 review 步骤(默认为预览模式) |
|
|
501
656
|
| `--dry-run` | 显示 diff 不写入(默认行为,显式别名) |
|
|
502
657
|
| `--agent <claude\|codex>` | 强制使用指定 Agent,忽略配置和日志数据 |
|
|
503
658
|
| `--since <YYYY-MM-DD>` | 限制作为输入的 diagnose 时间窗口 |
|
|
@@ -554,19 +709,109 @@ crosscheck impact (all time · 47 reviews)
|
|
|
554
709
|
|
|
555
710
|
---
|
|
556
711
|
|
|
712
|
+
### `crosscheck issue`
|
|
713
|
+
|
|
714
|
+
读取近期错误日志,由你最优 AI Agent 起草 GitHub Issue,询问三个简短跟进问题,确认后提交到 `Motivation-Labs/crosscheck`。无需手动翻日志或手写 Issue。
|
|
715
|
+
|
|
716
|
+
```bash
|
|
717
|
+
crosscheck issue # 交互式 — 提交前确认草稿
|
|
718
|
+
crosscheck issue --dry-run # 只打印草稿,不提交
|
|
719
|
+
crosscheck issue --yes # 展示草稿后立即提交
|
|
720
|
+
crosscheck issue --since 2026-05-01
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
```
|
|
724
|
+
crosscheck issue
|
|
725
|
+
|
|
726
|
+
Scanning logs (last 3 days)...
|
|
727
|
+
Found error pattern: command_not_found: tsc ×4 (codex)
|
|
728
|
+
|
|
729
|
+
Can you reproduce this consistently?
|
|
730
|
+
[1] Every time [2] Sometimes [3] Happened once
|
|
731
|
+
Choice [1]: 1
|
|
732
|
+
|
|
733
|
+
Which command triggered this?
|
|
734
|
+
[1] watch [2] serve [3] review [4] Unknown
|
|
735
|
+
Choice [1]: 1
|
|
736
|
+
|
|
737
|
+
Is this blocking you?
|
|
738
|
+
[1] Blocked [2] Degraded [3] Cosmetic
|
|
739
|
+
Choice [2]: 2
|
|
740
|
+
|
|
741
|
+
Draft issue:
|
|
742
|
+
────────────────────────────────────────────────────────
|
|
743
|
+
TITLE: codex: command not found: tsc during review in temp clone
|
|
744
|
+
...
|
|
745
|
+
|
|
746
|
+
Submit to Motivation-Labs/crosscheck? [y/N]: y
|
|
747
|
+
✓ https://github.com/Motivation-Labs/crosscheck/issues/99
|
|
748
|
+
```
|
|
749
|
+
|
|
750
|
+
近期日志中若无错误,crosscheck 打印 `No errors found in recent logs — nothing to report` 并正常退出。
|
|
751
|
+
|
|
752
|
+
| 参数 | 说明 |
|
|
753
|
+
|---|---|
|
|
754
|
+
| `--since <YYYY-MM-DD>` | 将日志扫描限制在该日期之后(默认:最近 3 天) |
|
|
755
|
+
| `--dry-run` | 打印草稿但不提交 |
|
|
756
|
+
| `-y, --yes` | 展示草稿后立即提交(跳过确认) |
|
|
757
|
+
| `-c, --config <path>` | 配置文件路径 |
|
|
758
|
+
|
|
759
|
+
---
|
|
760
|
+
|
|
761
|
+
## 自定义根目录
|
|
762
|
+
|
|
763
|
+
`~/.crosscheck/` 是 crosscheck 所有学习成果和配置的持久化目录。迁移机器前备份该目录,重装后运行 `crosscheck onboard` 并一路回车确认即可恢复所有设置。
|
|
764
|
+
|
|
765
|
+
### `~/.crosscheck/` 中的文件
|
|
766
|
+
|
|
767
|
+
| 文件 | 由谁写入 | 由谁读取 | 用途 |
|
|
768
|
+
|---|---|---|---|
|
|
769
|
+
| `config.yml` | `onboard`、`init`、`watch`/`serve`(首次运行) | 所有命令 | 主配置——部署、仓库、模式、供应商、质量、隧道、路由、预算 |
|
|
770
|
+
| `workflow.yml` | `onboard`(仅首次) | `watch`、`serve`、`run` | 带有每步内联指令的全局流水线。首次 onboard 时写入;之后不会覆盖——可自由编辑 |
|
|
771
|
+
| `webhook-secret` | 首次使用时自动生成 | `watch`、`serve` | GitHub Webhook 签名验证的 HMAC Secret,重启后自动复用 |
|
|
772
|
+
| `logs/YYYY-MM-DD.ndjson` | `watch`、`serve` | `diagnose`、`optimize`、`impact`、`issue` | 结构化审查事件日志,每天一个文件 |
|
|
773
|
+
|
|
774
|
+
### 项目级覆盖(优先于全局文件)
|
|
775
|
+
|
|
776
|
+
| 文件 | 由谁读取 | 用途 |
|
|
777
|
+
|---|---|---|
|
|
778
|
+
| `.crosscheck/workflow.yml` *(仓库内)* | `watch`、`serve`、`run` | 项目级流水线——优先于 `~/.crosscheck/workflow.yml` |
|
|
779
|
+
| `.crosscheck/AGENT.md` *(仓库内)* | `optimize` | 项目级 Harness——优先于内置 `AGENT.md` |
|
|
780
|
+
| `AGENT.md` *(随 crosscheck 内置)* | `optimize` | 默认 Harness——随包附带,始终作为回退 |
|
|
781
|
+
|
|
782
|
+
### `crosscheck onboard` 负责的内容 vs 保留的内容
|
|
783
|
+
|
|
784
|
+
重新运行时,`onboard` 只更新它收集了答案的字段,其他内容保持不变。
|
|
785
|
+
|
|
786
|
+
**每次运行都会更新:** `deployment`、`orgs`、`repos`、`mode`、`vendors.*.enabled`、`vendors.*.effort`、`quality.tier`、`tunnel.*`、`post_review.auto_fix.*`
|
|
787
|
+
|
|
788
|
+
**首次运行初始化,之后不覆盖:** `routing.allowed_authors`、`routing.author_routes`、`routing.fallback_reviewer`
|
|
789
|
+
|
|
790
|
+
**onboard 从不修改:** `quality.focus`、`quality.custom_prompt`、`budget.*`、`branding.*`、`server.*`、`logs.*`、`backtrace.*`、`workflow.yml`(首次写入后)、Harness 文件
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
557
794
|
## 配置
|
|
558
795
|
|
|
559
|
-
crosscheck
|
|
796
|
+
crosscheck 默认将配置存储在 `~/.crosscheck/config.yml`——跨项目持久化,无需每个仓库都有配置文件。也会在以下位置查找(找到第一个为止):
|
|
560
797
|
|
|
561
798
|
1. `./crosscheck.config.yml`
|
|
562
799
|
2. `./.crosscheck.yml`
|
|
563
|
-
3. `~/.crosscheck/config.yml`
|
|
800
|
+
3. `~/.crosscheck/config.yml` ← **默认位置**
|
|
801
|
+
|
|
802
|
+
运行 `crosscheck init` 生成带完整注释的 `~/.crosscheck/config.yml`。
|
|
564
803
|
|
|
565
|
-
|
|
804
|
+
日志写入 `~/.crosscheck/logs/YYYY-MM-DD.ndjson`,默认保留 30 天。
|
|
566
805
|
|
|
567
806
|
### 完整配置参考
|
|
568
807
|
|
|
569
808
|
```yaml
|
|
809
|
+
# ── 部署 ──────────────────────────────────────────────────────────────────────
|
|
810
|
+
# 首次运行时自动设置。通过以下命令重新运行提示:crosscheck watch --reconfigure
|
|
811
|
+
# personal — 监控你的仓库 + 所属 Org;只审查你提交的 PR
|
|
812
|
+
# team — 只监控 Org 仓库;审查所有人提交的 PR
|
|
813
|
+
# deployment: personal
|
|
814
|
+
|
|
570
815
|
# ── 模式 ──────────────────────────────────────────────────────────────────────
|
|
571
816
|
# single-vendor: 由一个 AI 审查所有 PR
|
|
572
817
|
# cross-vendor: Claude ↔ Codex 互相审查
|
|
@@ -599,25 +844,43 @@ budget:
|
|
|
599
844
|
codex_monthly_usd: 20 # null = 不限;仅在 auth: api-key 时生效
|
|
600
845
|
per_review_usd: 2.00 # 传给 claude --max-budget-usd
|
|
601
846
|
|
|
602
|
-
# ── Org — 一个 Webhook 覆盖 Org 下所有仓库
|
|
603
|
-
# 同时设置时优先级高于 `repos`。
|
|
847
|
+
# ── Org — 一个 Webhook 覆盖 Org 下所有仓库 ──────────────────────────────────
|
|
604
848
|
orgs:
|
|
605
849
|
- motivation-labs
|
|
606
850
|
- codatta
|
|
607
851
|
|
|
608
|
-
# ──
|
|
609
|
-
#
|
|
852
|
+
# ── Users — 监控个人 GitHub 账号下的所有仓库(非 Org)──────────────────────
|
|
853
|
+
# 启动时 crosscheck 枚举每个用户的仓库并注册 Webhook。
|
|
854
|
+
# 与 `orgs` 和 `repos` 可叠加,所有来源均生效。
|
|
855
|
+
users:
|
|
856
|
+
- beingzy # 你的个人账号
|
|
857
|
+
# - my-agent-login # 向自己仓库推送的 bot 账号
|
|
858
|
+
|
|
859
|
+
# ── Repo — 只监控指定仓库 ────────────────────────────────────────────────────
|
|
860
|
+
# 使用 `orgs`/`users` 时可省略。三者都为空时,从 git remote 自动检测。
|
|
610
861
|
repos:
|
|
611
862
|
- owner: acme
|
|
612
863
|
name: specific-repo
|
|
613
864
|
|
|
614
865
|
# ── 路由 ───────────────────────────────────────────────────────────────────
|
|
615
866
|
routing:
|
|
867
|
+
# 来源检测使用四信号链:
|
|
868
|
+
# 1. PR 正文模式(最快)
|
|
869
|
+
# 2. Commit 消息中的 Co-Authored-By: trailer(API 调用,失败不影响流程)
|
|
870
|
+
# 3. 分支前缀(claude/ 或 codex/)
|
|
871
|
+
# 4. author_routes 配置回退(最后手段)
|
|
616
872
|
codex_reviews_patterns:
|
|
617
|
-
- "Generated with \\[Claude Code\\]"
|
|
873
|
+
- "Generated with \\[Claude Code\\]" # Claude Code 归因页脚
|
|
874
|
+
- "Co-Authored-By: Claude" # commit trailer
|
|
618
875
|
claude_reviews_patterns:
|
|
619
|
-
- "Generated with \\[OpenAI Codex\\]"
|
|
620
|
-
- "Co-Authored-By: codex"
|
|
876
|
+
- "Generated with \\[OpenAI Codex\\]" # Codex 归因页脚
|
|
877
|
+
- "Co-Authored-By: codex" # commit trailer
|
|
878
|
+
|
|
879
|
+
# 分支前缀检测(信号 3)。Claude Code 使用 claude/,Codex 使用 codex/。
|
|
880
|
+
claude_branch_prefixes:
|
|
881
|
+
- "claude/"
|
|
882
|
+
codex_branch_prefixes:
|
|
883
|
+
- "codex/"
|
|
621
884
|
|
|
622
885
|
# 将审查限制为这些 GitHub 账号提交的 PR。
|
|
623
886
|
# 由 `crosscheck init` 或首次运行 `crosscheck watch` 时自动从 gh auth 检测并填入。
|
|
@@ -625,9 +888,13 @@ routing:
|
|
|
625
888
|
allowed_authors:
|
|
626
889
|
- your-github-login # 从 gh auth 自动检测
|
|
627
890
|
|
|
891
|
+
# 基于作者的路由回退(信号 4)——当无模式或前缀匹配时使用。
|
|
892
|
+
author_routes:
|
|
893
|
+
your-github-login: claude # 你提交的 PR → 视为 Claude 所作 → Codex 审查
|
|
894
|
+
|
|
628
895
|
# ── 隧道(仅 watch 模式)──────────────────────────────────────────────────
|
|
629
|
-
# localhost.run(默认)—— SSH
|
|
630
|
-
# smee —— 通过 smee.io
|
|
896
|
+
# localhost.run(默认)—— SSH 隧道,零安装,重连后 URL 会变化。
|
|
897
|
+
# smee —— 通过 smee.io 中继;离线时事件排队。
|
|
631
898
|
# 设置:npm install -g smee-client,访问 https://smee.io/new
|
|
632
899
|
tunnel:
|
|
633
900
|
backend: localhost.run
|
|
@@ -635,12 +902,33 @@ tunnel:
|
|
|
635
902
|
# smee_channel: https://smee.io/your-channel-id
|
|
636
903
|
|
|
637
904
|
# ── Impact 报告 ──────────────────────────────────────────────────────────────
|
|
638
|
-
# 由 `crosscheck impact` 使用,计算预计节省的时间和货币价值。
|
|
639
905
|
impact:
|
|
640
906
|
assumed_human_review_minutes: 60 # 节省时间计算的基准
|
|
641
907
|
hourly_rate_usd: 150 # 用于 --money 估算
|
|
642
908
|
defect_cost_usd: 150 # 每个发现的问题,用于 --money 估算
|
|
643
909
|
|
|
910
|
+
# ── 审查后自动修复 ────────────────────────────────────────────────────────────
|
|
911
|
+
# 控制修复的交付方式。步骤排序(哪些步骤运行、何时运行、使用哪个供应商)
|
|
912
|
+
# 在 ~/.crosscheck/workflow.yml 中配置。
|
|
913
|
+
post_review:
|
|
914
|
+
auto_fix:
|
|
915
|
+
delivery:
|
|
916
|
+
mode: pull_request # pull_request | commit | comment
|
|
917
|
+
# pull_request → 修复 PR 针对原始分支;人工审批后合并
|
|
918
|
+
# commit → 直接将修复推送到原始 PR 分支
|
|
919
|
+
# comment → 仅将建议修复作为审查评论发布
|
|
920
|
+
pr_title: "fix: address CR issues in #{original_pr_title}"
|
|
921
|
+
label: cr-autofix # 应用于修复 PR 的 GitHub 标签
|
|
922
|
+
|
|
923
|
+
# ── 回溯审查 ──────────────────────────────────────────────────────────────────
|
|
924
|
+
# 启动时扫描监控范围内所有开放的 PR,对尚未收到 [crosscheck] 评论的 PR 进行审查。
|
|
925
|
+
# 默认关闭。启用方式:
|
|
926
|
+
# backtrace.enabled: true (持久——每次启动都运行)
|
|
927
|
+
# --backtrace 参数 (仅本次会话)
|
|
928
|
+
# --no-backtrace 参数 (即使 enabled: true 也抑制)
|
|
929
|
+
# backtrace:
|
|
930
|
+
# enabled: true
|
|
931
|
+
|
|
644
932
|
# ── 服务器 ────────────────────────────────────────────────────────────────────
|
|
645
933
|
server:
|
|
646
934
|
port: 7891
|
|
@@ -703,15 +991,38 @@ crosscheck webhook 服务器
|
|
|
703
991
|
▼
|
|
704
992
|
通过 GitHub API 在 PR 中发布评论
|
|
705
993
|
删除临时克隆
|
|
994
|
+
│
|
|
995
|
+
▼ post_review.auto_fix(如已启用且发现问题)
|
|
996
|
+
原作者 Agent 读取审查评论
|
|
997
|
+
│
|
|
998
|
+
├─ claude --print ... (Claude 提交了该 PR)
|
|
999
|
+
│ 或
|
|
1000
|
+
└─ codex ... (Codex 提交了该 PR)
|
|
1001
|
+
│
|
|
1002
|
+
▼
|
|
1003
|
+
打开修复 PR → fix/cr-<pr-number>-review-issues → 原始分支
|
|
1004
|
+
(你审查并合并修复 PR;原始 PR 自动更新)
|
|
706
1005
|
```
|
|
707
1006
|
|
|
708
1007
|
### PR 来源检测
|
|
709
1008
|
|
|
1009
|
+
crosscheck 使用四信号链确定 PR 是否由 Claude Code、Codex 或人工提交:
|
|
1010
|
+
|
|
1011
|
+
1. **PR 正文** — 查找归因页脚(如 `Generated with [Claude Code]`)
|
|
1012
|
+
2. **Commit 消息** — 扫描所有 commit 消息中的 `Co-Authored-By:` trailer
|
|
1013
|
+
3. **分支前缀** — `claude/` → Claude 来源;`codex/` → Codex 来源
|
|
1014
|
+
4. **`author_routes`** — 配置中按登录名的回退
|
|
1015
|
+
|
|
1016
|
+
都不匹配时,来源为 `human`,cross-vendor 模式下跳过该 PR。
|
|
1017
|
+
|
|
710
1018
|
| 默认模式 | 匹配对象 |
|
|
711
1019
|
|---|---|
|
|
712
1020
|
| `Generated with \[Claude Code\]` | Claude Code 提交的 PR |
|
|
713
1021
|
| `Generated with \[OpenAI Codex\]` | Codex CLI 提交的 PR |
|
|
714
|
-
| `Co-Authored-By:
|
|
1022
|
+
| `Co-Authored-By: Claude` | Claude Code 的 commit trailer |
|
|
1023
|
+
| `Co-Authored-By: codex` | Codex 的 commit trailer |
|
|
1024
|
+
| 分支前缀 `claude/` | Claude 提交 PR 的命名约定 |
|
|
1025
|
+
| 分支前缀 `codex/` | Codex 提交 PR 的命名约定 |
|
|
715
1026
|
|
|
716
1027
|
### 审查者分配
|
|
717
1028
|
|
|
@@ -768,11 +1079,44 @@ GitHub 可能对同一次推送同时触发 `opened` 和 `synchronize` 事件。
|
|
|
768
1079
|
|
|
769
1080
|
---
|
|
770
1081
|
|
|
1082
|
+
## 审查后自动修复
|
|
1083
|
+
|
|
1084
|
+
当 `post_review.auto_fix.enabled` 为 `true`(默认值)时,crosscheck 在每次发现问题的审查后自动完成完整闭环:
|
|
1085
|
+
|
|
1086
|
+
```
|
|
1087
|
+
Agent 打开 PR #42 → 对立 AI 审查 → 发现问题?
|
|
1088
|
+
│ 是
|
|
1089
|
+
原作者 Agent 生成修复
|
|
1090
|
+
│
|
|
1091
|
+
修复 PR #43 打开 → feat/my-feature
|
|
1092
|
+
│
|
|
1093
|
+
你审查并合并 PR #43
|
|
1094
|
+
│
|
|
1095
|
+
PR #42 更新 → 你合并到 main
|
|
1096
|
+
```
|
|
1097
|
+
|
|
1098
|
+
**关键设计决策:**
|
|
1099
|
+
|
|
1100
|
+
| 设置 | 默认值 | 原因 |
|
|
1101
|
+
|---|---|---|
|
|
1102
|
+
| `fixer: same-as-author` | 提交 PR 的供应商也负责修复 | 原作者 Agent 最了解自己的代码和风格 |
|
|
1103
|
+
| `delivery: pull_request` | 新建 PR,不直接推送 | 你始终在环——不经你审批不会有代码落地 |
|
|
1104
|
+
| `trigger: on_issues` | 只在审查者发现警告或更严重问题时触发 | 干净的 PR 跳过修复步骤 |
|
|
1105
|
+
| `min_severity: warning` | 忽略 info/仅样式的发现 | 避免为纯样式评论产生噪声修复 PR |
|
|
1106
|
+
|
|
1107
|
+
**修复 PR 分支命名:** `fix/cr-<原始 PR 编号>-review-issues`
|
|
1108
|
+
|
|
1109
|
+
**原始 PR 编号永不改变。** 修复 PR 针对原始分支;合并后,其 commit 自动出现在原始 PR 中。
|
|
1110
|
+
|
|
1111
|
+
**禁用:** 在配置中设置 `post_review.auto_fix.enabled: false`,或设置 `trigger: never`。
|
|
1112
|
+
|
|
1113
|
+
---
|
|
1114
|
+
|
|
771
1115
|
## 常见问题
|
|
772
1116
|
|
|
773
1117
|
### crosscheck 如何随时间自我改进?
|
|
774
1118
|
|
|
775
|
-
每次审查(成功或失败)都会追加到 `~/.crosscheck/logs/YYYY-MM-DD.ndjson`。运行 `crosscheck diagnose` 读取这些日志,找出规律:哪些命令失败了,哪个审查者表现不佳,哪些语言特定工具缺失。运行 `crosscheck optimize` 将该报告输入给表现最好的 AI Agent(由内置 `AGENT.md`
|
|
1119
|
+
每次审查(成功或失败)都会追加到 `~/.crosscheck/logs/YYYY-MM-DD.ndjson`。运行 `crosscheck diagnose` 读取这些日志,找出规律:哪些命令失败了,哪个审查者表现不佳,哪些语言特定工具缺失。运行 `crosscheck optimize` 将该报告输入给表现最好的 AI Agent(由内置 `AGENT.md` 指导),并更新 `~/.crosscheck/workflow.yml` 中 review 步骤的 `instructions` 字段。改进在下一个 PR 即时生效。
|
|
776
1120
|
|
|
777
1121
|
### `crosscheck optimize` 使用哪个 Agent?
|
|
778
1122
|
|
|
@@ -784,29 +1128,45 @@ GitHub 可能对同一次推送同时触发 `opened` 和 `synchronize` 事件。
|
|
|
784
1128
|
|
|
785
1129
|
`optimize` 使用的 Agent 与审查你的 PR 的 Agent 相互独立——`optimize` 的目的是改进指令,而不是审查代码。
|
|
786
1130
|
|
|
787
|
-
###
|
|
1131
|
+
### 如何自定义审查者行为?
|
|
788
1132
|
|
|
789
|
-
|
|
1133
|
+
主要入口是 workflow 文件。每个步骤都有一个 `instructions` 字段,会逐字传递给审查者或修复 Agent:
|
|
790
1134
|
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
1135
|
+
```yaml
|
|
1136
|
+
# .crosscheck/workflow.yml
|
|
1137
|
+
steps:
|
|
1138
|
+
- name: review
|
|
1139
|
+
type: review
|
|
1140
|
+
reviewer: auto
|
|
1141
|
+
instructions: |
|
|
1142
|
+
Do not suggest TypeScript patterns — this is a Rust project.
|
|
1143
|
+
Focus on memory safety and error handling.
|
|
1144
|
+
## Verdict
|
|
1145
|
+
End with: VERDICT: APPROVE | NEEDS_WORK | BLOCK
|
|
1146
|
+
- name: fix
|
|
1147
|
+
type: fix
|
|
1148
|
+
reviewer: origin
|
|
1149
|
+
when: "review.verdict != 'APPROVE'"
|
|
1150
|
+
instructions: "Only fix issues explicitly called out. Do not refactor unrelated code."
|
|
794
1151
|
```
|
|
795
|
-
下一次审查会重新用内置默认值初始化。
|
|
796
1152
|
|
|
797
|
-
|
|
1153
|
+
`crosscheck optimize --apply` 会更新 `~/.crosscheck/workflow.yml` 中 review 步骤的 `instructions` 字段,将学到的改进持久化到后续会话。
|
|
1154
|
+
|
|
1155
|
+
要将 review 步骤指令重置为默认值,删除 `~/.crosscheck/workflow.yml` 并重新运行 `crosscheck onboard`——它会用内置默认值重新生成该文件。
|
|
798
1156
|
|
|
799
|
-
|
|
1157
|
+
### 可以设置项目级工作流吗?
|
|
1158
|
+
|
|
1159
|
+
可以。在仓库根目录创建 `.crosscheck/workflow.yml`。crosscheck 会自动加载它,并以其替代内置默认流水线。这是自定义审查者行为的推荐方式——所有项目级设置都集中在一个受版本控制的文件中。
|
|
800
1160
|
|
|
801
1161
|
### `AGENT.md` 是什么?
|
|
802
1162
|
|
|
803
|
-
`AGENT.md` 是指导 AI 在 `crosscheck optimize`
|
|
1163
|
+
`AGENT.md` 是指导 AI 在 `crosscheck optimize` 期间工作的 Harness 文档,定义了输入/输出约定、语言检测规则、约束编写指南和质量原则。随 crosscheck 捆绑提供,使 `optimize` 开箱即用。
|
|
804
1164
|
|
|
805
1165
|
你可以在项目根目录或 `.crosscheck/AGENT.md` 放置本地覆盖文件。crosscheck 优先查找本地覆盖,然后回退到内置版本。这允许团队针对自己的技术栈或规范自定义优化逻辑。
|
|
806
1166
|
|
|
807
1167
|
### 为什么审查失败,提示 "command not found"?
|
|
808
1168
|
|
|
809
|
-
审查者(codex 或 claude)尝试运行一个在临时克隆中不存在的 CLI 工具(例如 `tsc`、`pytest`)。克隆是浅层 `git` checkout,没有 `node_modules` 或其他已安装的依赖。运行 `crosscheck diagnose` 查看哪些命令失败了,然后运行 `crosscheck optimize --apply` 在
|
|
1169
|
+
审查者(codex 或 claude)尝试运行一个在临时克隆中不存在的 CLI 工具(例如 `tsc`、`pytest`)。克隆是浅层 `git` checkout,没有 `node_modules` 或其他已安装的依赖。运行 `crosscheck diagnose` 查看哪些命令失败了,然后运行 `crosscheck optimize --apply` 在 `~/.crosscheck/workflow.yml` 的 review 步骤中添加相应约束,让审查者停止尝试这些命令。
|
|
810
1170
|
|
|
811
1171
|
### 为什么审查失败,提示 "no such branch"?
|
|
812
1172
|
|
|
@@ -823,7 +1183,7 @@ crosscheck 在临时克隆中获取 PR 基础分支(例如 `staging`)后再
|
|
|
823
1183
|
npm install -g smee-client
|
|
824
1184
|
```
|
|
825
1185
|
|
|
826
|
-
访问 [smee.io/new](https://smee.io/new) 并复制 Channel URL。然后在
|
|
1186
|
+
访问 [smee.io/new](https://smee.io/new) 并复制 Channel URL。然后在 `~/.crosscheck/config.yml` 中:
|
|
827
1187
|
|
|
828
1188
|
```yaml
|
|
829
1189
|
tunnel:
|
|
@@ -831,8 +1191,18 @@ tunnel:
|
|
|
831
1191
|
smee_channel: https://smee.io/your-channel-id
|
|
832
1192
|
```
|
|
833
1193
|
|
|
834
|
-
|
|
1194
|
+
crosscheck 会在首次 `watch` 启动时自动将 smee Channel URL 注册为 GitHub Webhook,无需手动注册。与 `localhost.run` 不同,重启后无需重新注册,离线期间的事件会在重连后重放。
|
|
1195
|
+
|
|
1196
|
+
### 可以禁用自动修复步骤吗?
|
|
1197
|
+
|
|
1198
|
+
可以。在配置中设置 `post_review.auto_fix.enabled: false`,或设置 `trigger: never`。也可以将 `min_severity` 提高到 `error`,将修复限制为仅阻塞性问题。
|
|
1199
|
+
|
|
1200
|
+
如需不经单独 PR 直接推送修复(跳过你的审查),切换到 `delivery: commit`。如需以审查评论形式获取建议修复而不推送任何代码,使用 `delivery: comment`。
|
|
1201
|
+
|
|
1202
|
+
### 为什么修复者使用与提交 PR 相同的供应商?
|
|
1203
|
+
|
|
1204
|
+
原作者 Agent 对自己的代码拥有最多上下文——包括原始改动背后的风格、约束和意图。使用 `fixer: same-as-author` 让反馈闭环保持紧凑:Agent 编写代码,另一个 Agent 审查,原 Agent 修复。如果你偏好其他安排,可以覆盖为 `same-as-reviewer`、`codex` 或 `claude`。
|
|
835
1205
|
|
|
836
1206
|
### optimize 会自动运行吗?
|
|
837
1207
|
|
|
838
|
-
不会——`crosscheck optimize` 始终由用户手动触发。你在需要改进指令时才运行它,没有后台守护进程或定时任务。未来版本可能会增加可选的 `--schedule` 模式,但默认值将始终是手动触发,以保持你对
|
|
1208
|
+
不会——`crosscheck optimize` 始终由用户手动触发。你在需要改进指令时才运行它,没有后台守护进程或定时任务。未来版本可能会增加可选的 `--schedule` 模式,但默认值将始终是手动触发,以保持你对 `~/.crosscheck/workflow.yml` 写入内容的掌控。
|