@seanyao/roll 4.630.2 → 4.702.2

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.
Files changed (108) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +65 -56
  3. package/conventions/global/AGENTS.md +8 -7
  4. package/dist/roll.mjs +12909 -8532
  5. package/docs/INDEX.md +32 -0
  6. package/docs/architecture.md +444 -0
  7. package/docs/difftest-freeze-paradigm.md +113 -0
  8. package/docs/live-console.md +203 -0
  9. package/docs/manifesto.md +65 -0
  10. package/docs/migration/role-taxonomy-v4.md +60 -0
  11. package/docs/verification.md +83 -0
  12. package/guide/INDEX.md +86 -0
  13. package/guide/assets/layouts/cards-2.png +0 -0
  14. package/guide/assets/layouts/cards-3.png +0 -0
  15. package/guide/assets/layouts/cards-4.png +0 -0
  16. package/guide/assets/layouts/compare.png +0 -0
  17. package/guide/assets/layouts/highlight.png +0 -0
  18. package/guide/assets/layouts/pipeline.png +0 -0
  19. package/guide/assets/layouts/plain.png +0 -0
  20. package/guide/assets/layouts/quote.png +0 -0
  21. package/guide/assets/layouts/timeline.png +0 -0
  22. package/guide/en/acceptance-evidence.md +231 -0
  23. package/guide/en/ai-agents.md +185 -0
  24. package/guide/en/backlog-github-sync.md +108 -0
  25. package/guide/en/changelog.md +66 -0
  26. package/guide/en/configuration.md +112 -0
  27. package/guide/en/consistency.md +58 -0
  28. package/guide/en/conventions.md +113 -0
  29. package/guide/en/dream.md +121 -0
  30. package/guide/en/faq.md +855 -0
  31. package/guide/en/feedback.md +31 -0
  32. package/guide/en/getting-started.md +103 -0
  33. package/guide/en/installation.md +86 -0
  34. package/guide/en/legacy-onboarding.md +195 -0
  35. package/guide/en/loop-data-layout.md +256 -0
  36. package/guide/en/loop-driven-architecture.md +186 -0
  37. package/guide/en/loop.md +1324 -0
  38. package/guide/en/methodology.md +715 -0
  39. package/guide/en/migration-2.0.md +154 -0
  40. package/guide/en/overview.md +190 -0
  41. package/guide/en/pairing.md +151 -0
  42. package/guide/en/patterns/README.md +76 -0
  43. package/guide/en/patterns/graft-pattern.md +110 -0
  44. package/guide/en/patterns/replant-pattern.md +114 -0
  45. package/guide/en/patterns/seed-pattern.md +132 -0
  46. package/guide/en/peer.md +71 -0
  47. package/guide/en/pr-review.md +62 -0
  48. package/guide/en/practices/engineering-common-sense.md +395 -0
  49. package/guide/en/pricing.md +116 -0
  50. package/guide/en/project-setup.md +126 -0
  51. package/guide/en/roll-doc-audit.md +98 -0
  52. package/guide/en/skills.md +206 -0
  53. package/guide/en/test-isolation.md +51 -0
  54. package/guide/en/testing/quality-rubric.md +340 -0
  55. package/guide/en/testing.md +123 -0
  56. package/guide/en/tools.md +173 -0
  57. package/guide/skills.md +30 -0
  58. package/guide/zh/acceptance-evidence.md +194 -0
  59. package/guide/zh/ai-agents.md +170 -0
  60. package/guide/zh/backlog-github-sync.md +105 -0
  61. package/guide/zh/changelog.md +57 -0
  62. package/guide/zh/configuration.md +99 -0
  63. package/guide/zh/consistency.md +48 -0
  64. package/guide/zh/conventions.md +96 -0
  65. package/guide/zh/dream.md +97 -0
  66. package/guide/zh/faq.md +773 -0
  67. package/guide/zh/feedback.md +30 -0
  68. package/guide/zh/getting-started.md +96 -0
  69. package/guide/zh/installation.md +83 -0
  70. package/guide/zh/legacy-onboarding.md +192 -0
  71. package/guide/zh/loop-data-layout.md +236 -0
  72. package/guide/zh/loop-driven-architecture.md +186 -0
  73. package/guide/zh/loop.md +1124 -0
  74. package/guide/zh/methodology.md +702 -0
  75. package/guide/zh/migration-2.0.md +154 -0
  76. package/guide/zh/overview.md +186 -0
  77. package/guide/zh/pairing.md +117 -0
  78. package/guide/zh/patterns/README.md +74 -0
  79. package/guide/zh/patterns/graft-pattern.md +108 -0
  80. package/guide/zh/patterns/replant-pattern.md +112 -0
  81. package/guide/zh/patterns/seed-pattern.md +130 -0
  82. package/guide/zh/peer.md +63 -0
  83. package/guide/zh/pr-review.md +54 -0
  84. package/guide/zh/practices/engineering-common-sense.md +393 -0
  85. package/guide/zh/pricing.md +97 -0
  86. package/guide/zh/project-setup.md +114 -0
  87. package/guide/zh/roll-doc-audit.md +90 -0
  88. package/guide/zh/skills.md +191 -0
  89. package/guide/zh/test-isolation.md +46 -0
  90. package/guide/zh/testing/quality-rubric.md +284 -0
  91. package/guide/zh/testing.md +116 -0
  92. package/guide/zh/tools.md +173 -0
  93. package/package.json +4 -1
  94. package/skills/README.md +1 -0
  95. package/skills/roll-.qa/SKILL.md +1 -1
  96. package/skills/roll-.review/SKILL.md +1 -1
  97. package/skills/roll-build/SKILL.md +1 -1
  98. package/skills/roll-build/references/full-contract.md +16 -13
  99. package/skills/roll-design/SKILL.md +3 -3
  100. package/skills/roll-design/references/full-contract.md +17 -13
  101. package/skills/roll-fix/SKILL.md +1 -1
  102. package/skills/roll-fix/references/full-contract.md +13 -10
  103. package/skills/roll-peer/SKILL.md +1 -1
  104. package/skills/roll-prime/SKILL.md +77 -0
  105. package/skills/roll-prime/references/explorer-annex.md +39 -0
  106. package/skills/roll-prime/references/supervisor-prompt.md +165 -0
  107. package/skills/route-cases/skills.json +10 -0
  108. package/template/AGENTS.md +3 -1
@@ -0,0 +1,112 @@
1
+ # Replant Pattern — Legacy 项目的"翻种"路径
2
+
3
+ > Roll 三种接入模式之一。另见 [graft-pattern.md](./graft-pattern.md)、[seed-pattern.md](./seed-pattern.md)。
4
+ >
5
+ > **核心精神:以现有产品为靶子,反推规格、有意识精炼、连根拔起栽新苗。**
6
+
7
+ ## 何时选这个 pattern
8
+
9
+ 适合:
10
+ - 现有项目累积包袱太重,重构成本 > 重建成本
11
+ - 想借机做一次有意识的架构跃迁(去掉冗余、调整边界、统一约定)
12
+ - 团队有能力维持"新旧并行"一段时间
13
+ - 现有项目的**测试套件足够完整**(这是反推规格的契约层)
14
+
15
+ 不适合:
16
+ - 现有项目还在快速演化(重建期间会持续漂移)
17
+ - 测试覆盖率低(反推的规格会丢掉隐性约束)
18
+ - 团队不能停下新功能开发
19
+
20
+ ## 目录结构
21
+
22
+ ```
23
+ project-builder/ 构建 v2.0 的工程项目
24
+
25
+ ├── project-v1.0/ ⓪ 原料:v1.x 完整 snapshot(只读参照物)
26
+ │ └── (按某个 tag 冻结,不随主线演化)
27
+
28
+ ├── project-rev/ ① 粗料:从 v1.0 反推的草稿
29
+ │ ├── prd-draft.md
30
+ │ ├── architecture-draft.md
31
+ │ ├── ddd-draft.md
32
+ │ └── us-list-draft.md
33
+
34
+ ├── .roll/ ② 工坊 meta(管理"构建 v2.0"这个项目)
35
+ │ ├── backlog.md
36
+ │ ├── specs/ ← 精炼后的 v2.0 权威规格
37
+ │ │ ├── prd.md
38
+ │ │ ├── architecture.md
39
+ │ │ └── ddd.md
40
+ │ ├── features/ 每条 Story 详情
41
+ │ └── decisions/ 构建过程中的 ADR
42
+
43
+ └── project-v2.0/ ③ 产物:v2.0 真身(loop 增量构建出来)
44
+ └── (bin/ lib/ ...)
45
+ ```
46
+
47
+ ## 数据流
48
+
49
+ ```
50
+ v1.0 源码 ──反推──→ project-rev/(粗料)
51
+
52
+ ▼ 精炼(保留 / 丢弃 / 新增 / 重塑)
53
+ .roll/specs/(设计权威)
54
+
55
+ ▼ Loop 按 .roll/backlog 增量构建
56
+ project-v2.0/(产物)
57
+
58
+ ▼ 发布
59
+ 覆盖 origin 仓库 @ 2.0.0
60
+ ```
61
+
62
+ ## 三层数据各自的角色
63
+
64
+ | 层 | 数据性质 | 写一次还是反复改 |
65
+ |----|---------|----------------|
66
+ | `project-v1.0/` | 不可变 snapshot | 只读 |
67
+ | `project-rev/` | AI 反推产物,反映"v1.0 实际行为" | 写一次,后续可补丁但不大改 |
68
+ | `.roll/specs/` | 人工精炼后的 v2.0 蓝图 | **反复迭代**,是设计权威 |
69
+ | `project-v2.0/` | Loop 按 specs 增量构建的代码 | Story 推进时增长 |
70
+
71
+ **关键洞察:`project-rev/` → `.roll/specs/` 不是简单 copy,是一次有意识的设计跃迁。**
72
+
73
+ 这是真正去掉 v1.0 累积包袱的窗口。粗料保留下来作为对照组(v2.0 发布时随产物归档到 `project-v2.0/.roll/specs/origins/`,作为历史档案)。
74
+
75
+ ## 执行步骤
76
+
77
+ 1. **冻结 v1.0**:选定 tag/commit,复制源码到 `project-v1.0/`,标注版本号
78
+ 2. **反推粗料**:AI 读 v1.0 源码 + 测试,产出 `project-rev/` 下的草稿
79
+ 3. **精炼规格**:人工 review 粗料,做出"保留 / 丢弃 / 新增 / 重塑"的决策,产出 `.roll/specs/`
80
+ 4. **拆解 Story**:基于 specs 写 `.roll/backlog.md`,按依赖顺序
81
+ 5. **Loop 构建**:在 `project-v2.0/` 下增量造,Story 实现时引用 `.roll/specs/` 作为权威
82
+ 6. **对照校验**:每条 Story 完成后用 v1.0 测试套验证 v2.0(如果测试可移植)
83
+ 7. **发布**:v2.0 满足验收后覆盖 origin 仓库,发布主版本号
84
+
85
+ ## 早停门
86
+
87
+ | 检查点 | 通过判据 | 不通过怎么办 |
88
+ |-------|---------|------------|
89
+ | Day 1 后 | PRD 对 v1.0 artifact 覆盖率 ≥ 90% | < 70% 停下来:项目行为已超出"可声明为产品"的范畴 |
90
+ | 第一批 Story 后 | v2.0 行为与 v1.0 一致率 ≥ 80% | < 80% 停下来:分析 gap 来自反推漏项还是 v1.0 偶然行为 |
91
+
92
+ 任一门没过 → 切换到 [graft-pattern](./graft-pattern.md),承认这个项目不适合重建。
93
+
94
+ ## 与其他 pattern 的对比
95
+
96
+ | 维度 | replant-pattern | graft-pattern | seed-pattern |
97
+ |------|----------------|---------------|--------------|
98
+ | 对原架构的态度 | 推翻重建 | 保留并嫁接 | 无原架构(从零) |
99
+ | 风险 | 高(隐性知识丢失) | 低(不动原码) | 低 |
100
+ | 上限 | 高(彻底清债) | 中(仍受历史约束) | 高(无包袱起步) |
101
+ | 适用 | 累积包袱重、可冷藏老版本 | 仍在演化、不可停下来 | 新项目、从 idea 阶段 |
102
+ | 工作量 | 大(造一个新的) | 小(接入工具链) | 中(先写 spec 再 loop) |
103
+
104
+ ## 实例:Roll 自身
105
+
106
+ Roll 项目自己用这个 pattern 从 v1.x 重建到 v2.0:
107
+ - `roll-builder/roll-v1.0/` ← v2026.518.4 snapshot
108
+ - `roll-builder/roll-rev/` ← Claude 反推的 PRD/Arch/DDD/US 草稿
109
+ - `roll-builder/.roll/specs/` ← 精炼后的 v2.0 设计权威
110
+ - `roll-builder/roll-v2.0/` ← Loop 增量构建的 v2.0 产物,发布到 `seanyao/roll`
111
+
112
+ 这是 Roll 的"自我重塑"工程,也是 replant-pattern 的 reference implementation。
@@ -0,0 +1,130 @@
1
+ # Seed Pattern — 新项目的"播种"路径
2
+
3
+ > Roll 三种接入模式之一。另见 [graft-pattern.md](./graft-pattern.md)、[replant-pattern.md](./replant-pattern.md)。
4
+ >
5
+ > **核心精神:项目从第一天就携带 Roll 基因,像一粒种子在新土里发芽,所有约定、目录、工作流原生匹配。**
6
+
7
+ ## 何时选这个 pattern
8
+
9
+ 适合:
10
+ - 从零开始的新项目
11
+ - 有明确的产品愿景,实现细节灵活
12
+ - 想从 day 1 用 Roll loop 的自治能力
13
+ - 团队愿意先写 PRD / Architecture 再动代码(即使只写最薄一层)
14
+
15
+ 不适合:
16
+ - 完全探索性项目,PRD 都写不出来 → 先用别的工具做原型,定型后再 seed 适配
17
+ - 极小项目(一个 100 行的 script),上 Roll 是过度工程
18
+
19
+ ## 目录结构
20
+
21
+ ```
22
+ my-new-project/ ← Roll 原生项目,从 day 1 就是 .roll/ 形态
23
+
24
+ ├── README.md 产品门面
25
+ ├── LICENSE
26
+ ├── AGENTS.md AI 约定(roll init 生成)
27
+ ├── CHANGELOG.md 随发版生长
28
+ ├── package.json 或其他语言对应的 manifest
29
+
30
+ ├── src/ lib/ tests/ 产品代码(最初为空,Loop 增量构建)
31
+
32
+ ├── guide/ 用户文档(最初为空,发布前生长)
33
+ │ ├── en/ zh/
34
+
35
+ └── .roll/ ← 项目管理 + 设计过程(从 day 1 存在)
36
+ ├── backlog.md 创始人写下的初始 Story 清单
37
+ ├── specs/ 初始 PRD / Architecture / DDD
38
+ │ ├── prd.md
39
+ │ ├── architecture.md
40
+ │ └── domain/
41
+ ├── features/ Story 详情
42
+ ├── briefs/ dream/ Roll 自动产出
43
+ └── decisions/ ADR
44
+ ```
45
+
46
+ ## 数据流
47
+
48
+ ```
49
+ 创始人愿景 ──写入──→ .roll/specs/(初始 PRD / Architecture)
50
+
51
+ ▼ 拆解 Story
52
+ .roll/backlog.md
53
+
54
+ ▼ Loop 增量构建
55
+ src/ lib/ tests/(产品产物)
56
+
57
+ ▼ 发布
58
+ v1.0.0
59
+ ```
60
+
61
+ 与 replant-pattern 的本质差异:**起点不同**。
62
+ - replant:从已有 v1.x 反推规格
63
+ - seed:由人直接写规格(创始人愿景作为唯一输入)
64
+
65
+ ## 三层数据角色
66
+
67
+ | 层 | 数据性质 | 何时写 |
68
+ |----|---------|------|
69
+ | `.roll/specs/` | 设计权威 | 项目启动时写第一版,演化中持续迭代 |
70
+ | `.roll/backlog.md` | 工作流入口 | specs 写完后拆解,loop 推进时增减 |
71
+ | `src/` `lib/` `tests/` | 产品产物 | Loop 按 backlog 增量构建 |
72
+
73
+ ## 执行步骤
74
+
75
+ 1. `mkdir my-new-project && cd my-new-project`
76
+ 2. `roll init` 生成 `.roll/` 骨架 + `AGENTS.md`
77
+ 3. **写第一版 specs**:用 `$roll-design` 或手写,在 `.roll/specs/` 完成 PRD / Architecture / DDD
78
+ 4. **拆解 Story**:用 `$roll-design` 把 specs 拆成 INVEST-compliant Story 写入 `.roll/backlog.md`
79
+ 5. **启动 loop**:`roll loop on`,进入自治构建
80
+ 6. 创始人持续校对、调整 specs,loop 跟着新 backlog 跑
81
+
82
+ ## 创始人的两种姿态
83
+
84
+ **姿态 A — specs-driven(重型)**
85
+ 先把 PRD / Architecture 写得相对完整再启动 loop。
86
+ - 适合:愿景清晰、有 senior 工程师、关键决策需要前置敲定
87
+ - 风险:可能过度设计、与现实脱节
88
+
89
+ **姿态 B — seed-driven(轻型)**
90
+ specs 只写最核心的 1-2 章,backlog 只列前 3 条 Story,启动 loop 边跑边写。
91
+ - 适合:愿景模糊、迭代快、容错高、Hackathon 节奏
92
+ - 风险:早期决策反复,loop 可能跑出不符合最终愿景的代码
93
+
94
+ 两种姿态对应**同一个目录结构**,差别只在 `.roll/specs/` 的初始完整度。
95
+
96
+ ## 与其他 pattern 的对比
97
+
98
+ | 维度 | seed-pattern | replant-pattern | graft-pattern |
99
+ |------|--------------------|----------------|---------------|
100
+ | 起点 | 空目录 + 愿景 | 现有 v1.x | 现有项目 |
101
+ | 规格来源 | 人写 | 反推 v1.x + 精炼 | 不需要(用现有) |
102
+ | 历史包袱 | 无 | 反推时丢弃 | 保留 |
103
+ | 上限 | 高 | 高 | 中 |
104
+ | 启动门槛 | 中(要先写 PRD) | 高(反推 + 精炼) | 低(直接加 .roll/) |
105
+ | 适用 | 新项目、从 idea 阶段 | 包袱重、可冷藏老版本 | 仍在演化、不可停下来 |
106
+
107
+ ## 实例
108
+
109
+ - 新创立的 SaaS 产品,第一天就用 Roll 管开发
110
+ - 学习型项目,"如何用 Roll 协作" 本身就是学习目标
111
+ - Hackathon 项目,48 小时内从 idea 到 demo,全程 Roll 驱动
112
+ - 个人侧项目,单人开发但想要 AI loop 的"24h 续航"能力
113
+
114
+ ## 演化路径
115
+
116
+ seed 项目的自然演化:
117
+
118
+ ```
119
+ seed 启动
120
+
121
+ ▼ 跑 3-6 个月,积累 specs + backlog
122
+ 项目进入"成熟"期
123
+
124
+ ├── 一切顺畅 → 继续 seed 节奏
125
+
126
+ ├── 发现累积了不该有的债 → 切换 replant-pattern
127
+ │ (把当前版本当 v1.x snapshot,反推清债)
128
+
129
+ └── 想拉新人/团队加入 → 文档或网站与实现不齐时,用 $roll-doc-audit 对账并补齐
130
+ ```
@@ -0,0 +1,63 @@
1
+ # $roll-peer — 结构化外部评审
2
+
3
+ `$roll-peer` 通过与 goal-mode 终审相同的结构化 adapter 运行外部 provider
4
+ reviewer。旧的顶层 peer CLI 已退役;需要这个能力时,在 agent 工作流里调用 skill。
5
+
6
+ 需要多轮协商协议,或需要从 Claude、Codex、Kimi、Pi 等已安装外部 CLI 记录 durable
7
+ reviewer fact 时,使用 `$roll-peer`。
8
+
9
+ ## Prompt 形状
10
+
11
+ ```text
12
+ $roll-peer
13
+ Review this plan and return VERDICT / REASON / FINDING lines.
14
+ ```
15
+
16
+ Reviewer 输出必须包含且只包含一行 verdict:
17
+
18
+ ```text
19
+ VERDICT: APPROVE|REQUEST_CHANGES
20
+ REASON: <short reason>
21
+ FINDING: <concrete issue>
22
+ ```
23
+
24
+ verdict 行缺失或出现多行时,adapter 保守判为 `REQUEST_CHANGES`。
25
+
26
+ ## 记录的事实
27
+
28
+ 每次采信的 review 都会向这里追加一行 JSON:
29
+
30
+ ```text
31
+ .roll/peer/runs.jsonl
32
+ ```
33
+
34
+ 如果 reviewer 进程产生了输出,transcript 也会写到:
35
+
36
+ ```text
37
+ .roll/peer/transcripts/
38
+ ```
39
+
40
+ 记录字段包括 reviewer agent、provider、command family、verdict、reason、
41
+ findings、timeout/error 状态、耗时、transcript 路径和 evidence 路径。goal-mode
42
+ 终审会在 `goal:final_review` 事件上写入同一组事实字段。
43
+
44
+ ## 解析失败
45
+
46
+ 当 reviewer 或 scorer 在 autonomous cycle 里跑了,但输出**无法解析**时,这次尝试
47
+ 不会被悄悄丢弃。原始尝试会被捕获到 `.roll/loop/peer/` 下,该 agent 在 cycle
48
+ 角色阵容里显示 `failed`,带 `cause` 和 `raw artifact:` 指针。
49
+
50
+ 读法见 [Cycle 角色可观测](./loop.md#cycle-角色可观测),排障步骤见
51
+ [排障:无法解析的 score/review](../../docs/live-console.md#故障排查)。
52
+
53
+ ## 外部 reviewer 与辅助 subagent
54
+
55
+ `$roll-peer` 面向外部 provider reviewer CLI。Codex 内部 subagent 可以辅助并行分析,
56
+ 但不等同于外部 peer review。adapter 会把 `codex-subagent:*` / `subagent:*` 身份视为
57
+ auxiliary,排除在异构 reviewer 选择之外。
58
+
59
+ ## 与 pairing 的关系
60
+
61
+ Loop pairing 是构建期 gate:自主 cycle 中风险较高的交付 diff 会被异构 peer 复查,
62
+ 并写入 cycle 证据。`$roll-peer` 是 agent 调用的结构化外部评审 skill。两者共享
63
+ provider 多样性原则,但服务不同工作流。
@@ -0,0 +1,54 @@
1
+ # Roll — PR 评审
2
+
3
+ Roll 处理完整的 PR 生命周期——从开 PR 到合入——大多数情况无需人工干预。
4
+
5
+ ## 手动评审
6
+
7
+ ```bash
8
+ roll review-pr <number> # AI 评审指定 PR
9
+ ```
10
+
11
+ 通过 `gh cli` 获取 PR 标题、描述和 diff,路由到项目配置的 AI Agent,输出结构化决议:
12
+
13
+ | 决议 | 操作 |
14
+ |------|------|
15
+ | `APPROVE` | `gh pr review --approve` |
16
+ | `REQUEST_CHANGES` | `gh pr review --request-changes` 并附理由 |
17
+ | `UNCERTAIN` | 写入 ALERT——由人决定 |
18
+
19
+ ## Loop PR Inbox
20
+
21
+ 每轮 loop cycle 在认领新故事前先处理开放 PR:
22
+
23
+ | PR 分类 | Loop 操作 |
24
+ |---|---|
25
+ | Loop 自己开的(`loop/*` 分支) | 跳过——不自我评审 |
26
+ | Bot 已 Approve | 跳过——等 auto-merge |
27
+ | Bot 要求修改 | 写 ALERT——等作者推修复 |
28
+ | Stale(CI 红 / 落后 main) | 自动 rebase 到 `main` |
29
+ | 外部 PR / 干净状态 | 调用 `roll review-pr` |
30
+
31
+ **Stale PR 熔断器**:若 rebase 在 24 小时内失败 3 次,loop 停止重试并写 ALERT,由人接手。
32
+
33
+ ## Auto-merge
34
+
35
+ Loop 自己开的 PR(`loop/*`)以 `--auto --squash --delete-branch` 创建。GitHub 在所有必需检查通过后自动合入,无需手动 `git merge`。
36
+
37
+ ## 可选:事件驱动评审(GitHub Actions)
38
+
39
+ 如需秒级反馈(而非等待 loop 下一轮调度,最多约 1 小时):
40
+
41
+ ```bash
42
+ cp templates/workflows/pr-review-event.yml .github/workflows/
43
+ ```
44
+
45
+ 此工作流在每次 PR 打开或更新时触发 `roll review-pr`。Fork PR 和正文含 `[skip-ai-review]` 的 PR 自动跳过。两种模式共存——GHA 提供即时反馈,loop 作为兜底。
46
+
47
+ ## 跳过 AI 评审
48
+
49
+ 在 PR 正文任意位置加 `[skip-ai-review]` 即可不调用 Agent,直接 Auto-approve。适用于机械性 PR(依赖升级、生成内容)。
50
+
51
+ ## 另见
52
+
53
+ - [loop.md](loop.md) — loop PR inbox 详情和 stale rebase 处理
54
+ - [ai-agents.md](ai-agents.md) — 哪个 Agent 负责评审