@weotro/dx 0.1.8 → 0.1.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weotro/dx",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -5,7 +5,7 @@ description: 仅在用户显式调用 $oo-ship-issue-pr、/oo-ship-issue-pr 或
5
5
 
6
6
  # OO Ship Issue PR
7
7
 
8
- Codex 入口:主进程执行轻改动,Claude Fable 5 优先承接重改动的方案讨论、实现与独立审查;Fable 额度不足时回退 Claude Opus 5,Claude 通道不可用时改派 fresh Codex subagent,不中断交付链。
8
+ Codex 入口:主进程执行轻改动,直接派出 fresh Codex subagent 承接重改动的方案讨论、实现与独立审查;subagent 不可用时由主进程降级接管并如实记录。
9
9
 
10
10
  ## 步骤一:加载共享流程
11
11
 
@@ -18,7 +18,7 @@ test -f "$SHIP_CORE"
18
18
  完整读取 `SHIP_CORE` 后执行全部阶段。运行时映射如下:
19
19
 
20
20
  - 主进程:当前 Codex。
21
- - 外部专家:优先 Claude Fable 5;仅在 Fable 额度不足时回退 Claude Opus 5;Claude 通道不可用时改派 fresh Codex subagent
21
+ - 外部专家:fresh Codex subagent;每个专家阶段新建独立上下文,不复用方案讨论、实现或修复 agent 执行审查。
22
22
  - 入口显示名:`OO Ship Issue PR`。
23
23
  - Follow-up:Codex `spawn_agent` 的 `worker` 角色。
24
24
 
@@ -2,90 +2,49 @@
2
2
 
3
3
  仅在共享流程进入外部专家或 follow-up 分支时读取。
4
4
 
5
- ## Claude 专家通道
5
+ ## Fresh Codex subagent 专家通道
6
6
 
7
- ### 可用性探测与会话级熔断
7
+ 共享流程中的“外部专家”在本入口指独立上下文的 Codex subagent,不要求跨模型或第三方 CLI。每个专家阶段直接调用 Codex `spawn_agent` 创建全新的 `worker`,不复用此前 agent,尤其不让实现或修复 agent 审查自己的改动。使用 `fork_turns: "none"`;若当前工具不提供该参数,使用其支持的新会话方式且不传已有会话 ID,在 prompt 中完整提供任务上下文。
8
8
 
9
- 第一次需要外部专家时运行 `command -v claude` 和 `claude --version`,分别保留退出码、stdout 和 stderr。该探测不是交付硬门禁:任一命令非零、不可执行或超时,都把 Claude 通道标记为“本次不可用”,立即由 fresh Codex subagent 接管当前阶段;不得退出、输出阻塞或停止共享流程。
9
+ ### 派发上下文与权限
10
10
 
11
- “本次不可用”状态持续到当前顶层 `oo-ship-issue-pr` 调用结束,覆盖后续方案讨论、实现、review、修复和回收阶段。状态一旦设置,后续不再探测或调用 Claude,每个需要外部专家的阶段都直接创建 fresh Codex subagent;subagent 也不可用时由 Codex 主进程降级接管。新的顶层 `oo-ship-issue-pr` 调用才重新探测 Claude。
11
+ 每次 prompt 必须包含:
12
12
 
13
- 探测通过后,所有调用从当前 worktree 根目录执行,固定使用 `--effort medium --no-session-persistence`。首选模型是 Claude Fable 5(`--model fable`);仅在该次调用明确因 Fable 额度不足失败时,以完全相同的 prompt、权限模式和工具集合重试一次 Claude Opus 5(`--model opus`)。Claude 只写工作树;Git 历史、GitHub、权威验证和最终事实核验由 Codex 主进程负责。
14
-
15
- ### 模型额度回退
16
-
17
- Claude 通道未被标记为“本次不可用”时,每次外部专家调用都重新从 Fable 开始,不因上一轮曾回退而直接选择 Opus。保留每次尝试的退出码、stdout 和 stderr,并按以下顺序处理:
18
-
19
- 1. Fable 返回 0:接受结果,不调用 Opus。
20
- 2. Fable 非零,且输出明确表示当前模型的使用额度、配额或 credits 已耗尽(例如 `hit your limit`、`usage limit`、`quota exceeded`、`credit balance is too low`、`insufficient credits` 或带重置时间的额度提示):只重试一次 Opus。
21
- 3. Fable 的失败属于未登录、认证、网络、超时、无效模型、参数、权限、工具或其他非额度错误:保留原错误,不调用 Opus,把 Claude 通道标记为“本次不可用”,立即进入 fresh subagent 回退。
22
- 4. Opus 返回 0:接受 Opus 结果,并在阶段报告中记录本轮实际模型为 `Claude Opus 5`。
23
- 5. Opus 失败:记录 Fable 与 Opus 两次证据,把 Claude 通道标记为“本次不可用”,停止 Claude 重试并立即进入 fresh subagent 回退。不得继续循环或换用其他 Claude 模型。
24
-
25
- 下面命令块中的 `fable` 是首选尝试。命令非零时同时检查 stdout 与 stderr;只有命中上述额度回退条件,才将 `--model fable` 替换为 `--model opus` 原样重跑一次。重试前清空或更换 `RESULT_FILE`,避免把 Fable 的部分输出混入 Opus 结果。
13
+ - 当前 worktree 的绝对路径,以及只在该 worktree 工作。
14
+ - 当前阶段是只读方案讨论、只读 review、adversarial review、实现还是修复;只承接这一阶段,不运行完整 `oo-ship-issue-pr`。
15
+ - Issue 原文、逐条验收标准、base、主进程初步方案或最终方案,以及该阶段所需的 diff、已确认问题和验证上下文。
16
+ - 先读取根与涉及目录的 `AGENTS.md`;它不是代码库中唯一执行者,保护已有未提交改动,不回退其他人的修改。
17
+ - 只读阶段保持工作树不变;实现或修复阶段的所有权限定为 prompt 列出的验收范围和涉及文件,改动留在工作树。
18
+ - 不 commit、不 push、不操作 GitHub、不递归委派;最后返回证据、结论、修改路径和未运行验证。
26
19
 
27
20
  ### 只读讨论、review 与 adversarial review
28
21
 
29
- Issue、验收标准、base、方案或已确认问题写入本次任务唯一的 `PROMPT_FILE`:
22
+ prompt 明确要求只读、不执行任何写操作,并直接读取源码和 `git diff <base>...HEAD` 取证。
30
23
 
31
- ```bash
32
- claude -p \
33
- --model fable \
34
- --effort medium \
35
- --permission-mode plan \
36
- --tools "Read,Grep,Glob,Bash" \
37
- --no-session-persistence \
38
- < "$PROMPT_FILE" > "$RESULT_FILE"
39
- ```
40
-
41
- prompt 要求只读、不修改文件、不执行 Git/GitHub 写操作、不递归委派,并直接读取源码和 `git diff <base>...HEAD` 取证。
42
-
43
- - 普通 review 以 findings 为主,按严重级排序;每项包含严重级、`文件:行号`、证据、影响和具体修法。
44
- - adversarial review 先挑战方案假设、构造反例和失败路径,再输出同样格式的 findings;没有证据的问题不进入报告。
24
+ - 方案讨论:围绕主进程初步方案、备选与取舍、希望裁决的具体问题返回建议;最终方案由主进程拍板。
25
+ - 普通 review:以 findings 为主,按严重级排序;每项包含严重级、`文件:行号`、证据、影响和具体修法。
26
+ - adversarial review:先挑战方案假设、构造反例和失败路径,再输出同样格式的 findings;没有证据的问题不进入报告。
45
27
 
46
28
  ### 重改动实现与修复
47
29
 
48
- ```bash
49
- claude -p \
50
- --model fable \
51
- --effort medium \
52
- --permission-mode acceptEdits \
53
- --tools "Read,Grep,Glob,Edit,Write,Bash" \
54
- --no-session-persistence \
55
- < "$PROMPT_FILE" > "$RESULT_FILE"
56
- ```
57
-
58
- prompt 必须包含 Issue、逐条验收标准、最终方案、涉及目录和 `AGENTS.md` 路由,并要求只改验收范围、不 commit、不 push、不碰 GitHub、不递归委派、保护已有未提交改动,最后报告修改路径和未运行验证。
59
-
60
- ## Claude 不可用时的 fresh subagent
61
-
62
- 可用性探测失败、当前调用在模型额度回退后仍无有效结果,或因安装、登录、认证、网络、超时、参数、权限、工具等原因无法使用 Claude 时,主进程立即调用 Codex `spawn_agent` 创建一个全新的 `worker` subagent 接管当前外部专家阶段。Claude 通道同时进入“本次不可用”状态,后续外部专家阶段直接走本节,不再尝试 Claude。每次回退都新建 agent,不复用此前 agent;使用 `fork_turns: "none"`,在 prompt 中完整提供任务上下文。
63
-
64
- fallback prompt 必须包含:
65
-
66
- - 当前 worktree 的绝对路径,以及只在该 worktree 工作。
67
- - 当前阶段是只读方案讨论、只读 review、adversarial review、实现还是修复;只承接这一阶段,不运行完整 `oo-ship-issue-pr`。
68
- - Issue 原文、逐条验收标准、base、主进程初步方案或最终方案,以及该阶段所需的 diff、已确认问题和验证上下文。
69
- - 先读取根与涉及目录的 `AGENTS.md`;它不是代码库中唯一执行者,保护已有未提交改动,不回退其他人的修改。
70
- - 只读阶段保持工作树不变;实现或修复阶段的所有权限定为 prompt 列出的验收范围和涉及文件,改动留在工作树。
71
- - 不 commit、不 push、不操作 GitHub、不调用 Claude、不递归委派;最后返回证据、结论、修改路径和未运行验证。
72
-
73
- 主进程等待 fresh subagent 返回后按外部专家的同一标准逐条复核,再继续共享流程。`spawn_agent` 本身不可用或派发失败时,主进程直接完成同一阶段并记录 `Codex 主进程降级`;Claude 通道不可用和 subagent 派发失败都不得单独中断交付链。
30
+ prompt 附最终方案原文,要求只改验收范围,最后报告修改路径、已运行验证和未运行验证及原因。Git 历史、GitHub、权威验证和最终事实核验始终由 Codex 主进程负责。
74
31
 
75
32
  ## 结果、等待与补跑
76
33
 
77
- Claude CLI 是前台同步调用。命令返回、成功模型的 `RESULT_FILE` 可完整读取且工作树稳定即算返回;非零退出按模型额度回退和会话级熔断规则处理,卡住时记录命令与原因,把 Claude 通道标记为“本次不可用”,然后进入 fresh subagent 回退。
34
+ 通过当前运行时提供的等待/结果工具等待本次 agent 完成并读取完整报告;派发成功或拿到 agent ID 不算阶段完成。可写 agent 执行期间主进程不并发修改其所有权范围内的文件,返回且确认不再写入后才接管。
35
+
36
+ `spawn_agent` 不可用、派发失败、执行失败或超时时,记录 agent ID(如有)与原因;若已启动,先终止或确认 agent 已停止,检查部分改动后,再由主进程完成同一阶段并记录 `Codex 主进程降级`。无法确认可写 agent 已停止时,报告阻塞,避免并发覆盖。单纯的 subagent 不可用不应中断交付链,但主进程自审不得冒充独立审查。
78
37
 
79
- Claude 通道不可用时由 fresh subagent 继续当前阶段;subagent 也不可用时由 Codex 主进程直接接管。Claude 或 subagent 执行过的验证只作参考,阶段五及后续轮次要求的全部权威验证由 Codex 主进程重新执行并阅读最新输出。
38
+ subagent 执行过的验证只作参考;prompt 必须附本阶段主进程需补跑的验证清单,要求 subagent 列出因沙箱、权限或依赖限制未运行的项目。阶段五及后续轮次要求的全部权威验证由 Codex 主进程重新执行并阅读最新输出。
80
39
 
81
- Claude 或 fresh subagent 返回后,Codex 主进程逐条直读源码复核,合并重复项并记录拒绝依据。
40
+ fresh subagent 返回后,Codex 主进程逐条直读源码和 diff 复核,合并重复项并记录拒绝依据,再继续共享流程。
82
41
 
83
42
  ## 阶段与报告映射
84
43
 
85
- - 阶段四方案讨论:只读外部专家,记录实际使用的 Fable 5、Opus 5、fresh Codex subagent 或 Codex 主进程降级。
86
- - 阶段四实现与阶段 7.4 重修复:可写外部专家,记录实际使用的 Fable 5、Opus 5、fresh Codex subagent 或 Codex 主进程降级。
87
- - 阶段 7.3:复杂度门禁命中且本 PR 尚未用过外部专家审查时执行 review;需要挑战方案时执行 adversarial review。成功返回的 fresh Codex subagent 计入本 PR 唯一一次外部专家审查,Codex 主进程降级不计入。
88
- - reviewer:`Codex 主进程自审 / Claude Fable 5 review / Claude Fable 5 adversarial review / Claude Opus 5 review / Claude Opus 5 adversarial review / fresh Codex subagent review / fresh Codex subagent adversarial review / Codex 主进程降级 review / Codex 主进程降级 adversarial review`,按本轮实际执行者填写。
44
+ - 阶段四方案讨论:只读 fresh Codex subagent
45
+ - 阶段四实现与阶段 7.4 重修复:可写 fresh Codex subagent
46
+ - 阶段 7.3:复杂度门禁命中且本 PR 尚未用过外部专家审查时执行 review;需要挑战方案时执行 adversarial review。成功返回的 fresh Codex subagent 计入本 PR 唯一一次外部专家审查,Codex 主进程降级不计入;已有报告中的历史外部专家审查仍按共享流程计数。
47
+ - reviewer:`Codex 主进程自审 / fresh Codex subagent review / fresh Codex subagent adversarial review / Codex 主进程降级 review / Codex 主进程降级 adversarial review`,按本轮实际执行者填写;其他专家阶段同样记录实际使用 fresh Codex subagent Codex 主进程降级。
89
48
 
90
49
  ## Follow-up
91
50