@zhushanwen/pi-subagent-workflow 3.0.0 → 5.0.0-dev.0

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.
@@ -191,6 +191,7 @@ export function buildWorkerScript(userScript: string): string {
191
191
  ' model: (secondArg && typeof secondArg === "object" && secondArg.model) || undefined,',
192
192
  ' scene: (secondArg && typeof secondArg === "object" && secondArg.scene) || undefined,\n' +
193
193
  ' phase: (secondArg && typeof secondArg === "object" && secondArg.phase) || undefined,',
194
+ ' thinkingLevel: (secondArg && typeof secondArg === "object" && secondArg.thinkingLevel) || undefined,',
194
195
  ' };',
195
196
  ' } else if (typeof firstArg === "object" && firstArg !== null) {',
196
197
  ' if (firstArg.prompt) {',
@@ -211,6 +212,7 @@ export function buildWorkerScript(userScript: string): string {
211
212
  ' fork: firstArg.fork,',
212
213
  ' worktree: firstArg.worktree,',
213
214
  ' returnMeta: firstArg.returnMeta,',
215
+ ' thinkingLevel: firstArg.thinkingLevel,',
214
216
  ' };',
215
217
  ' } else {',
216
218
  ' opts = firstArg;',
@@ -220,10 +222,10 @@ export function buildWorkerScript(userScript: string): string {
220
222
  ' }',
221
223
  '',
222
224
  ' // Validate known agent() fields to catch API misuse early',
223
- ' const _knownFields = new Set(["prompt", "description", "schema", "model", "scene", "label", "task", "agent", "phase", "skill", "timeoutMs", "cwd", "fork", "worktree", "returnMeta"]);',
225
+ ' const _knownFields = new Set(["prompt", "description", "schema", "model", "scene", "label", "task", "agent", "phase", "skill", "timeoutMs", "cwd", "fork", "worktree", "returnMeta", "thinkingLevel"]);',
224
226
  ' const _unknownFields = Object.keys(opts).filter((k) => !_knownFields.has(k));',
225
227
  ' if (_unknownFields.length > 0) {',
226
- ' _pushWorkerLog("warn", ["[workflow] agent() received unknown fields: " + _unknownFields.join(", ") + ". Known fields: prompt, description, schema, model, scene, label, task, agent, phase, skill, timeoutMs, cwd, fork, worktree, returnMeta"]);',
228
+ ' _pushWorkerLog("warn", ["[workflow] agent() received unknown fields: " + _unknownFields.join(", ") + ". Known fields: prompt, description, schema, model, scene, label, task, agent, phase, skill, timeoutMs, cwd, fork, worktree, returnMeta, thinkingLevel"]);',
227
229
  ' }',
228
230
  '',
229
231
  ' const callId = _callIdCounter;',
@@ -10,6 +10,9 @@
10
10
  | `parallel.js` | 多视角并行分析 → 聚合汇总 | `target`(可选 `perspectives`) | 多维度评估同一目标(安全/性能/可维护性等) |
11
11
  | `scatter-gather.js` | scatter 拆分 → parallel 处理 → gather 合并 | `task` | 大任务先拆成子任务再并行处理 |
12
12
  | `map-reduce.js` | parallel map → reduce 归约 | `items`/`itemsJson` + `operation` | 对已知数组批量变换后归约成单一结果 |
13
+ | `review-fix-loop.js` | 多批串行(批内并行 review → aggregate → fix → 重审) | `targetType` + `target`(可选 `batch1..batchN`) | 代码/文档审查并修复直到 clean;前置检查先行(fallow 等) |
14
+
15
+ > ⚠️ **review-fix-loop 是唯一带写操作的内置 workflow**(fix 阶段修改文件,`autoCommit=true` 才 commit)。其他 4 个均为只读分析。
13
16
 
14
17
  ## 用法
15
18
 
@@ -49,6 +52,24 @@ workflow run map-reduce --args itemsJson=/path/to/items.json --args operation=".
49
52
 
50
53
  `items` 直接传 JSON 数组,或 `itemsJson` 传 JSON 文件路径(二选一)。`parallel()` 对每个 item 并行执行 `operation` → reduce 阶段用 `agent()` 把各 item 的 map 结果归约成单一结论(LLM 归约,非纯代码拼接)。
51
54
 
55
+ ### review-fix-loop — 多批审查-修复循环
56
+
57
+ ```
58
+ workflow run review-fix-loop --args targetType=git-diff target=main \
59
+ --args batch1=fallow-scan --args batch2=reviewer --args autoCommit=true
60
+ workflow run review-fix-loop --args targetType=file target=/path/to/doc.md \
61
+ --args batch1=doc-reviewer
62
+ ```
63
+
64
+ - `targetType` 枚举:`git-diff`(target=base ref)/ `file`(target=路径)/ `dir`(target=目录)/ `text`(target=自由描述)
65
+ - `batch1..batchN`:批串行,批内并行 review → aggregate → fix → 重审直到 clean;批次用于前置依赖(如 `fallow-scan` 静态分析先行,后续审查才有意义)
66
+ - 批内某 agent 无 must-fix 后后续轮跳过(`skipCleanAgents` 默认 true + `recheckAfterFix` 默认 false):clean agent 下轮跳过不重派;显式传 `recheckAfterFix=true` 启用强回归模式——fix 后重派全批,clean agent 走限定 prompt(只审 modifiedFiles ∪ 自检关联点,不诱导全量重扫)
67
+ - agent 项支持:AgentRegistry 名(如 `reviewer`)/ 自定义 .md 文件路径(如 `batch1=/path/to/reviewer.md`)/ 内置 `fallow-scan` / **内置 `doc-reviewer`**(文档场景推荐:`targetType=file/dir` + `batch1=doc-reviewer`,四遍审查方法论:事实锚点核实/逻辑断言验证/落地清单完备性/边界与迁移;无 write 工具,报告经 schema 返回由 workflow 落盘)
68
+ - `fixAgent`(可选):fix 阶段加载指定 agent(内置名或 .md 路径);代码场景可在该 agent.md 内写 verify 命令(typecheck/test 实测)当轮拦截编译类回归。⚠️ agent.md 内写的 verify 命令**必须确认能在目标项目可运行**(target 的包管理器/目录结构未知),否则命令失败会误报 fix 状态
69
+ - `maxFixAttempts`(可选,默认 2):needs-redesign 阈值。问题经 maxFixAttempts 次修复仍未收敛(regressed)→ 终止该批,terminated="needs-redesign"(结构性问题需人工介入,非继续补丁能解决)
70
+ - `convergeNewIssues`(可选,默认 1)+ `convergeRounds`(可选,默认 2):新发现率收敛阈值。连续 convergeRounds 轮新发现问题 ≤ convergeNewIssues **且**无 open/regressed 活跃条目 → terminated="converged"(推进下一批)。收敛不等于问题全清——需同时满足无活跃条目才终止
71
+ - ⚠️ **fix 阶段会修改文件;`autoCommit` 默认 false(不 commit)**,需要提交时显式 `autoCommit=true`
72
+
52
73
  ## 编排 API
53
74
 
54
75
  这些 workflow 内部使用的编排函数(`agent()` / `parallel()` / `pipeline()` / `workflow()`)由 worker 线程注入,完整 API 参考见 `skills/workflow-script-format/SKILL.md`。