PR #103 已合并,实现基于 @opencode-ai/sdk 的 multi-review 重写。CI 评审中提出的阻塞项已全部修复,以下为剩余的建议项,按优先级排列。
MEDIUM
1. reasoning-effort / enable-thinking 配置链路隐式
action.yml bash step 写入 opencode.json,但 createOpencode() 只传 model,未显式传入 reasoningEffort / enableThinking。配置是否生效取决于 SDK 是否自动读取 opencode.json。
建议:在 createOpencode() config 中显式读取 MULTI_REVIEW_REASONING_EFFORT / MULTI_REVIEW_ENABLE_THINKING 环境变量并传入,同时移除 bash step 中 opencode.json 写入逻辑。
2. 缺少请求重试/退避机制
所有 SDK 调用(session.create、session.prompt、session.messages)均无重试逻辑。API 限流或网络抖动会导致整个 review 失败。
建议:为核心调用添加 1-2 次指数退避重试。
3. withTimeout() 不取消底层 SDK 请求(资源泄漏)
Promise.race 超时后仅 reject 外层 promise,底层 HTTP 请求仍在后台运行。大量超时可能堆积后台连接。
建议:确认 SDK 是否支持 AbortSignal,若支持则传入 signal 以实际取消请求。
LOW
4. gh pr diff 错误被 2>/dev/null 静默
action.yml 中 diff 获取失败时错误完全不可见,下游 reviewer 收到空 diff。建议至少输出错误到 stderr。
5. 自定义 YAML 解析器脆弱
parseYAML() 仅支持极简 YAML 子集,无法处理引号、转义、注释、嵌套。建议使用 js-yaml 库替代。
6. SDK 版本范围 ^1.0.0 过于宽松
建议锁定到具体版本,避免 minor/patch 自动升级导致行为不一致。
7. PR number 解析逻辑重复
comment.ts:resolvePRNumber() 和 action.yml:pr-context step 各自独立解析 GITHUB_REF。建议复用 action.yml 的输出,消除重复。
8. comment.ts 冗余条件检查
第 63 行 if (!comment.body) continue; 已保证 body 非空,第 64 行 !comment.body.includes(...) 中的 body 非空检查冗余。
架构级(需团队讨论)
9. 架构范式分歧 — Node.js/TypeScript 维护轴
multi-review 是代码库中唯一使用 TypeScript + tsup + SDK 的 action,其他 7 个均为 bash + Python + CLI subprocess。需团队确认是否接受此分歧,或规划逐步迁移到 SDK 模式。
PR #103 已合并,实现基于
@opencode-ai/sdk的 multi-review 重写。CI 评审中提出的阻塞项已全部修复,以下为剩余的建议项,按优先级排列。MEDIUM
1.
reasoning-effort/enable-thinking配置链路隐式action.ymlbash step 写入opencode.json,但createOpencode()只传model,未显式传入reasoningEffort/enableThinking。配置是否生效取决于 SDK 是否自动读取opencode.json。建议:在
createOpencode()config 中显式读取MULTI_REVIEW_REASONING_EFFORT/MULTI_REVIEW_ENABLE_THINKING环境变量并传入,同时移除 bash step 中opencode.json写入逻辑。2. 缺少请求重试/退避机制
所有 SDK 调用(
session.create、session.prompt、session.messages)均无重试逻辑。API 限流或网络抖动会导致整个 review 失败。建议:为核心调用添加 1-2 次指数退避重试。
3.
withTimeout()不取消底层 SDK 请求(资源泄漏)Promise.race超时后仅 reject 外层 promise,底层 HTTP 请求仍在后台运行。大量超时可能堆积后台连接。建议:确认 SDK 是否支持
AbortSignal,若支持则传入 signal 以实际取消请求。LOW
4.
gh pr diff错误被2>/dev/null静默action.yml中 diff 获取失败时错误完全不可见,下游 reviewer 收到空 diff。建议至少输出错误到 stderr。5. 自定义 YAML 解析器脆弱
parseYAML()仅支持极简 YAML 子集,无法处理引号、转义、注释、嵌套。建议使用js-yaml库替代。6. SDK 版本范围
^1.0.0过于宽松建议锁定到具体版本,避免 minor/patch 自动升级导致行为不一致。
7. PR number 解析逻辑重复
comment.ts:resolvePRNumber()和action.yml:pr-contextstep 各自独立解析GITHUB_REF。建议复用 action.yml 的输出,消除重复。8.
comment.ts冗余条件检查第 63 行
if (!comment.body) continue;已保证 body 非空,第 64 行!comment.body.includes(...)中的 body 非空检查冗余。架构级(需团队讨论)
9. 架构范式分歧 — Node.js/TypeScript 维护轴
multi-review 是代码库中唯一使用 TypeScript + tsup + SDK 的 action,其他 7 个均为 bash + Python + CLI subprocess。需团队确认是否接受此分歧,或规划逐步迁移到 SDK 模式。