@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,186 @@
1
+ # Loop 驱动的 Agent 架构
2
+
3
+ > 为什么 Roll 用独立 Loop 而不是 DAG 多 Agent 编排——以及这对构建可靠的 AI 软件交付系统意味着什么。
4
+
5
+ ---
6
+
7
+ ## 主流方案:DAG + 编排(Orchestration)
8
+
9
+ 当前大多数 AI Agent 框架遵循相似的模式:规划器将目标拆解为有向无环图(DAG),将每个节点分配给专职 Agent,由编排器按依赖顺序驱动执行:
10
+
11
+ ```
12
+ 目标:"实现功能 X"
13
+
14
+ 规划器
15
+
16
+ ┌────┴────┐
17
+ Agent A Agent B ← 并行执行
18
+ │ │
19
+ └────┬────┘
20
+ Agent C ← 依赖 A + B
21
+
22
+ 输出
23
+ ```
24
+
25
+ 这个模型符合人类对项目管理的直觉,易于可视化和解释,在演示中表现良好。LangGraph、AutoGen、CrewAI 等框架都在推广这种模式。
26
+
27
+ **问题所在:**
28
+
29
+ - **脆弱性**:Agent B 中途失败,整个图就卡住了。恢复逻辑难写,更难测试。
30
+ - **全知假设**:构建 DAG 要求在执行前就知道所有依赖关系。真实软件开发不是这样的——约束是在过程中才发现的。
31
+ - **同步耦合**:所有 Agent 必须同时在线。一个慢的 Agent 会阻塞整条流水线。
32
+ - **状态不透明**:执行状态存在编排器内部。出问题时,trace 是一张抽象的图——不是人类能直接审查和推理的东西。
33
+
34
+ 这些问题对于一次性任务("总结这份文档"、"生成这份报告")影响不大。但对于**持续软件交付**来说影响很大——工作是持续的,需求在演变,人类需要始终在回路中。
35
+
36
+ ---
37
+
38
+ ## Roll 的方案:独立 Loop 作为 Daemon
39
+
40
+ Roll 采用不同的协调方式。没有中心规划器,没有共享执行图,而是**独立 Loop**——每个 Loop 是一个职责单一的 daemon,按自己的节奏运行,从共享 artifact 中读取并写回:
41
+
42
+ ```
43
+ BACKLOG ←──────── 共享状态 ────────→ git / PR / alert
44
+
45
+ ┌───────┼────────┬──────────┐
46
+ ▼ ▼ ▼ ▼
47
+ 主 loop PR loop dream brief
48
+ 30min 5min daily daily
49
+ 交付 heal + 扫描 摘要
50
+ story rebase + 代码
51
+ merge
52
+ ```
53
+
54
+ 每个 Loop:
55
+ 1. **轮询**特定 artifact(BACKLOG、open PR、alert 文件)
56
+ 2. **行动**(写代码、heal CI、合 PR)
57
+ 3. **写回**共享 artifact(提交、PR 评论、BACKLOG 更新)
58
+ 4. **休眠**直到下一个周期
59
+
60
+ Loop 之间从不直接调用对方。完全通过 artifact 协调。
61
+
62
+ ---
63
+
64
+ ## 这是编舞(Choreography),不是编排(Orchestration)
65
+
66
+ 这个区别很关键。**编排**中,中央权威告诉每个参与者做什么、什么时候做。**编舞**中,每个参与者知道自己的职责,并对共享环境中的事件做出反应。
67
+
68
+ | | 编排(DAG) | 编舞(Loop) |
69
+ |--|--|--|
70
+ | 协调方式 | 中心规划器 | 共享 artifact |
71
+ | 故障域 | 整张图 | 单个 Loop |
72
+ | 状态位置 | 编排器内存 | git + BACKLOG + PR |
73
+ | 人类可见性 | 抽象任务图 | `git log`、PR 列表 |
74
+ | 人类干预 | 难——必须打断规划器 | 容易——编辑 BACKLOG |
75
+ | Agent 可用性 | 必须同时在线 | 各自独立运行 |
76
+
77
+ 编舞是 Unix pipeline、微服务事件总线和分布式数据库背后的模式。Roll 将它应用到 AI 软件交付领域。
78
+
79
+ ---
80
+
81
+ ## 实际效果对比
82
+
83
+ **DAG 方案**——"新增 Agent":
84
+
85
+ ```
86
+ 规划器拆解:
87
+ → Agent 1:修改 CLI dispatch
88
+ → Agent 2:更新英文文档
89
+ → Agent 3:更新中文文档 ← 依赖 Agent 2
90
+ → Agent 4:写测试
91
+ → Agent 5:验证 CI ← 依赖 1–4
92
+ → 编排器:开 PR
93
+ ```
94
+
95
+ 如果 Agent 3 超时,Agent 4 和 5 就等着。编排器必须决定:重试?跳过?失败?
96
+
97
+ **Loop 方案**——同一个任务:
98
+
99
+ ```
100
+ 主 loop 触发:
101
+ → 读 BACKLOG → 选 "US-AI-004: 新增 agent"
102
+ → TCR 微步骤写代码(每步:测试 → 提交 或 回滚)
103
+ → 开 PR
104
+
105
+ PR loop 触发(5 分钟后):
106
+ → 发现 PR 是 open,CI 还在跑 → 跳过
107
+
108
+ PR loop 再次触发(5 分钟后):
109
+ → CI 绿,可合并 → 合 PR → 完成
110
+ ```
111
+
112
+ 没有编排器,没有依赖图。每个 Loop 在合适的时机做自己的事。
113
+
114
+ ---
115
+
116
+ ## 为什么 Loop 更适合持续交付
117
+
118
+ 软件交付不是一次性任务,而是持续进行的过程:
119
+
120
+ - BACKLOG 里不断有新 story
121
+ - 生产环境暴露 bug
122
+ - 依赖包过期
123
+ - CI 变慢
124
+ - PR 积压
125
+
126
+ DAG 被设计为执行一次后终止。Loop 被设计为永远运行,在条件合适时做有价值的工作。持续交付需要 Loop。
127
+
128
+ **韧性**:Loop 相互隔离。CI loop 崩了,PR 仍然能被 review。主交付 loop 卡在冲突上,PR loop 仍然能合其他已就绪的 PR。
129
+
130
+ **可观测性**:Loop 的每一个动作都会产生一个 git commit、一条 PR 评论或一次 BACKLOG 更新。系统的历史就是 git log——人类可读、可 diff、可回滚。
131
+
132
+ **人类控制**:想暂停交付?在 BACKLOG 里设个标志。想优先处理某个 story?编辑优先级。想停掉某个 Loop?删掉对应的 launchd plist。不需要打断一个运行中的编排器或取消正在飞行中的 Agent 链。
133
+
134
+ **增量正确性**:TCR(Test-Commit-Revert)确保每个微步骤要么将代码库推进到绿色状态,要么干净地回滚。Loop 在两次 cycle 之间绝不留下损坏的仓库状态。
135
+
136
+ ---
137
+
138
+ ## 专职 Loop 架构
139
+
140
+ 随着系统成熟,Loop 越来越专职化:
141
+
142
+ | Loop | 节奏 | 职责 |
143
+ |------|------|------|
144
+ | **主 loop** | 30 分钟 | 读 BACKLOG → 写代码 → 开 PR |
145
+ | **PR loop** | 5 分钟 | 合绿色 PR,关陈旧 PR,rebase 落后 PR |
146
+ | **CI loop** | 5 分钟 | 检测 flaky 测试,收集耗时数据,重跑失败 |
147
+ | **alert loop** | 1 分钟 | 聚合 `_LOOP_ALERT`,发送通知 |
148
+ | **bug loop** | 1 小时 | 扫描日志和错误模式,开 FIX story |
149
+ | **dep loop** | 1 天 | 检查过期依赖和 CVE,开升级 story |
150
+ | **doc loop** | 1 天 | 检测代码/文档偏差,开文档 PR |
151
+ | **dream loop** | 每晚 | 反思近期工作,优化 BACKLOG 优先级 |
152
+
153
+ 每个 Loop 只读写自己的 domain。它们之间的协调完全是涌现的——没有任何一个 Loop 知道其他 Loop 的存在。
154
+
155
+ ---
156
+
157
+ ## 取舍:什么时候用哪种方案
158
+
159
+ Roll 的架构并非放之四海而皆准。根据问题选择方案:
160
+
161
+ **用 DAG/编排,当:**
162
+ - 任务有明确的、有限的范围("从头构建这个服务")
163
+ - 所有依赖关系在执行前都可以确定
164
+ - 需要严格的顺序控制(步骤 N 的输出是步骤 N+1 的精确输入)
165
+ - 任务执行一次后终止
166
+
167
+ **用 Loop/编舞,当:**
168
+ - 工作是持续和持久的(软件交付、监控、维护)
169
+ - 依赖关系在运行时才被发现
170
+ - 韧性比紧耦合更重要
171
+ - 人类需要观察和干预
172
+ - 系统应该在某些组件失败时继续运行
173
+
174
+ 大多数真实的软件交付系统属于第二种。这就是为什么 Roll 基于 Loop 构建。
175
+
176
+ ---
177
+
178
+ ## 更深的洞察
179
+
180
+ DAG 模型假设智能集中在规划器中——那个负责拆解目标的 Agent。Loop 模型假设智能是分布式的——每个 Loop 深度了解自己的 domain,并自主行动。
181
+
182
+ 实际上,"提前规划好一切"在现实偏离计划的那一刻就开始失效。Loop 没有可以偏离的计划。它们观察世界的当前状态(BACKLOG、open PR、CI 状态),并据此行动。如果 PR 有冲突,Loop 就 rebase。如果 CI 是红的,Loop 就重跑。如果 story 被 block,Loop 就跳过去做下一个。
183
+
184
+ 这更接近有经验的工程师实际工作的方式:不是执行一个预先承诺的计划,而是持续扫描环境,做当前最有价值的可行动作,并让一切保持干净的状态。
185
+
186
+ Roll 将这种行为编码为 Loop。