Skip to content

docs: add multi-review to README#109

Merged
Svtter merged 3 commits into
mainfrom
worktree-docs-multi-review-readme
May 25, 2026
Merged

docs: add multi-review to README#109
Svtter merged 3 commits into
mainfrom
worktree-docs-multi-review-readme

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented May 25, 2026

Summary

  • Add multi-review section with usage example and inputs table
  • Add multi-review to "What it includes", review comparison table, Usage list, CI section, and Publishing Checklist

Test plan

  • README renders correctly (no broken tables or formatting)

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

发现遗漏

概览

PR 新增了 README 文档,但 README 中声明的部分输入参数在 multi-review/action.yml 中并不存在,同时 action.yml 中定义的部分输入参数也未在 README 中列出。文档与实际实现之间存在多处不一致。

CRITICAL

README 文档了两个不存在的输入参数 reasoning-effortenable-thinking

  • 描述: README 的 inputs 表格中列出了 reasoning-effort(默认 max)和 enable-thinking(默认 true),且 YAML 用法示例中也包含了 reasoning-effort: max。然而 multi-review/action.yml 中并未定义这两个输入参数,代码中也未通过环境变量读取它们。用户按文档配置后会静默忽略或报错。
  • 位置: README 第 74-75 行(inputs 表格)、第 69-70 行(usage example)
  • 建议: 如果这两个参数是计划中的功能,需在 action.yml 中添加对应 inputs 定义并在执行脚本中转发为环境变量;否则应从 README 中移除。

MEDIUM

working-directory 输入参数在 action.yml 中已定义但未在 README 中列出

  • 描述: multi-review/action.yml 第 37-40 行定义了 working-directory 输入(默认 ""),并在执行脚本第 213-215 行实际使用了它。但 README 的 inputs 表格没有任何提及。用户无法从文档了解到可以使用此参数。
  • 位置: README 无此条目;对应定义在 multi-review/action.yml:37
  • 建议: 在 README inputs 表格中添加 working-directory 行。

LOW

install-dirxdg-cache-home 属于 setup-opencode 的输入,multi-review action 也定义了这两个参数,但 README 的 "setup-related inputs" 说明仅列举了部分。

  • 描述: README 末尾注明 "multi-review also accepts the setup-related inputs from setup-opencode",但仅列出了 cachecache-keyinstall-attemptsinstall-urlallow-preinstalledversion 六项,遗漏了 install-dirxdg-cache-home(这两个参数在 multi-review/action.yml 中确有定义且被使用)。
  • 位置: README inputs 表格下方说明行
  • 建议: 在列举中补上 install-dirxdg-cache-home,或简写为 "all setup inputs from setup-opencode" 避免维护不同步。

New%20session%20-%202026-05-25T02%3A31%3A27.994Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

有条件合并

PR 仅修改 README.md,新增 multi-review action 文档。架构合理,安全与性能无虞。但文档与实现存在不一致,需要在合并前修复。

阻塞项

  1. reasoning-effortenable-thinking 输入在 action.yml 中未实现 — README 输入表列出了这两个参数,但 multi-review/action.yml 并未声明,JS 源码也未读取。用户按文档使用会无效。(quality 确认,架构/安全/性能 reviewer 未涉及此层面,无冲突)

建议项

  1. README 中 setup-opencode 输入列表不完整 — 第 128 行列出了透传参数,但漏掉了 install-dirxdg-cache-homemulti-review/action.yml 中存在)。建议补全或改为引用方式避免维护不一致。(quality 提出)
  2. 明确区分透传参数 — README 中 setup-opencode 的 inputs 被直接混入 multi-review 的输入表中,建议标注哪些参数是透传自 setup-opencode 的,避免使用者混淆。(architecture 提出,与上一条互补)

…list

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

发现遗漏

概览

PR 完成了所有自述要求(在 What it includes、对比表、Usage、CI、Publishing Checklist 中补充 multi-review 引用,新增独立的 multi-review 章节),但 README 的 multi-review inputs 表格中存在文档与实际实现不一致的问题。

CRITICAL

reasoning-effortenable-thinking 仅在 README 中出现,multi-review/action.yml 中未定义且未被使用

  • 描述: README 第 119-120 行的 multi-review inputs 表格列出了 reasoning-effort(默认 max)和 enable-thinking(默认 true),但 multi-review/action.yml 中不存在这两个输入定义,执行步骤(第 186-197 行)也未将其以环境变量方式传入 JS。用户按文档配置后参数会被 GitHub Actions 静默忽略,功能完全不可用。
  • 位置: README.md:119-120(inputs 表格),第 98-108 行的 YAML 用法示例也涉及 model: zhipuai/glm-5.1(此处无误,但若用户按表格补上这两个参数则会出问题)
  • 建议: 若 multi-review 的 JS 实现 (dist/index.cjs) 需要 reasoning-effortenable-thinking 参数,需在 multi-review/action.yml 中补充对应的 inputs 定义并在 composite step 中转发为环境变量;若不需要,应从 README 中移除这两行。

: 这两个参数在 run-opencodegithub-run-opencode 的 action.yml 中确有定义,可能是在编写多 review 文档时误从其他 action 复制而来。

New%20session%20-%202026-05-25T02%3A33%3A33.243Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

综合审查报告

最终决策:有条件合并

quality 发现文档与实际 action schema 不一致的阻塞问题,security/performance 与 quality/architecture 在评审范围上存在冲突——前两者认为仅 README 变更,后两者审查了实际代码文件。以下以 quality 和 architecture 的详细审查为准。

阻塞项

  • README 声明的 input 与 action.yml 不匹配(quality):multi-review 文档 Inputs 表格列出 reasoning-effortenable-thinking,但 action.yml 未定义这两个参数,源代码也未读取。用户按文档使用将被静默忽略。

建议项

  • 手写 YAML 解析器脆弱(quality + architecture,已确认):parseYAML() 仅支持 key: valuekey: | 两种格式,不支持列表、嵌套对象。建议使用 js-yaml
  • loadReviewers()configPathteam 参数未使用(quality + architecture,已确认):接口签名包含但实现未引用,属于幽灵参数。建议移除或实现对应功能。
  • 超时逻辑余量过大(quality):remaining()Math.max(30_000, ...) 导致每个 reviewer 在全局超时后仍可继续执行至少 30 秒。建议直接归零或抛错。
  • 跨 action 的 setup 步骤重复(architecture):与其他 action 的 version 解析/path 计算/cache/install 逻辑完全重复,建议抽取为共享 composite action。
  • reviewers.ts 职责混杂(architecture):同时包含 reviewer 加载、YAML 解析、环境变量读取和 model 解析,建议拆分出独立 utils.tsenv.ts
  • 硬编码的相对路径耦合(architecture):action.yml:163 通过 ${{ github.action_path }}/../setup-opencode/... 引用 sibling action,文件结构变化会导致静默失效。
  • 静默异常处理(quality):多处 catch block 完全忽略异常,建议至少输出 debug 日志。
  • 默认 model provider 名称不一致(quality):zhipuai-coding-plan/glm-5.1 与 README 示例 zhipuai/glm-5.1 不同。
  • 构建产物管理(quality):.gitignore 未包含 dist/,当前 dist/index.cjs 已提交,建议统一策略。
  • Provider API key 输入不可扩展(architecture):为每个 provider 声明独立输入,建议改用通用 JSON 输入。
  • 缺少单元测试(quality):核心逻辑未编写测试用例。

…nable-thinking

These inputs don't exist in multi-review/action.yml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

无遗漏

PR 已完整实现其自述的所有要求:新增 multi-review 独立章节(含用法示例和 inputs 表格),并在 "What it includes"、对比表、Usage 列表、CI 说明、发布清单 5 处添加引用。文档中的 inputs 表格和 setup-opencode 透传参数说明均与 multi-review/action.ymlsetup-opencode/action.yml 的实际定义完全一致。无功能遗漏。之前的自动化评论提到的 reasoning-effortenable-thinking 属于 README 中已有的 github-run-opencode / run-opencode 章节,不属于本次 PR 变更范围。

New%20session%20-%202026-05-25T02%3A35%3A55.422Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

现在我有了完整的代码状态。让我整合报告。

综合审查报告

最终决策:有条件合并

security 和 performance reviewer 声称"仅 README.md 变更"与代码库现状不符(multi-review/ 包含 src/dist/action.yml 等代码文件),其审查基于错误的前提,故不采纳其结论。quality 和 architecture 的审查有效。

阻塞项:

  1. dist/index.cjs 被提交至仓库(architecture 已确认):构建产物(2640 行 bundle)直接入库,且 .gitignore 仅包含 node_modules/ 未忽略 dist/。CI 中无构建步骤校验 tsup 已运行,源码与 bundle 可能不同步。需将 dist/ 加入 .gitignore,CI 中在打包 action 前执行 tsup 构建。

  2. 自定义 YAML 解析器(architecture 已确认):src/reviewers.ts:33-57 手写 parseYAML() 不处理多行值、转义等标准 YAML 语法,脆弱易错。应替换为 js-yaml 等成熟库。

  3. 缺乏重试/回退机制(architecture 已确认):其他 action 均有 attemptsfallback-modelsmodel-timeout-seconds 等输入,multi-review 无任何重试或模型回退能力,生产环境模型超时/限流时将静默失败。

建议项:

  1. 冗余 catch (err) { throw err; }(quality):src/orchestrator.ts:139-141 可直接移除,无副作用。

  2. parseTeam 中 count 为 "0" 时异常(quality):src/reviewers.ts:16parseInt(count || "1", 10) || 1 在 count 为 "0" 时因 0 || 1 求值为 1,无法将某 persona 实例数设为 0。应改为显式 null/undefined 判断。

  3. 未使用的 opts.team 参数(quality):src/reviewers.ts:59-86loadReviewers 签名包含 team 参数,但在 index.ts 调用方未传入此参数,实际通过环境变量 MULTI_REVIEW_DEFAULT_TEAM 生效。建议移除参数或统一传参路径。

  4. 累计超时与底层请求不终止(quality + architecture 交叉确认):src/orchestrator.ts:109-132 中三个异步操作各自使用 coordinatorTimeoutMs 超时,总耗时可达 3 倍设置值;且 Promise.race 超时后底层 HTTP 请求仍在运行,浪费资源且可能导致后续请求被限流。建议实现累计超时或 AbortController 终止请求。

  5. 输入约定不一致(architecture):使用 MULTI_REVIEW_* 环境变量前缀,而其他 action 使用 GITHUB_RUN_OPENCODE_* 模式。缺少 reasoning-effortenable-thinking 等既有输入。

  6. default-team 默认值应声明在 action.yml(architecture):action.ymldefault-teamdefault: "",空值时回退到源码硬编码,应改为 default: "quality:1,security:1,performance:1,architecture:1"

  7. 审查者 prompt 与现有 action 同质化(architecture):reviewers/*.yaml 的 4 个 prompt 与 review/action.ymlarchitect-review/action.yml 内嵌 prompt 高度重叠,存在双份维护负担。

  8. 技术栈多样性成本(architecture):引入 TypeScript/Node 构建链(tsup、tsconfig)后,开发者需同时维护 Python Shell 和 TS Node 两条技术栈,CI 也需支持两种构建流程。

  9. PR 上下文获取方式不一致(architecture):action.yml:165-182 通过 bash 步骤 gh pr diff 预取,再通过 stdin 传给 Node 进程;其他 action 依赖 opencode github run 内部获取。

@Svtter Svtter merged commit e27a39a into main May 25, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant