From 1c401023494a7b551be90458a2575b3e02c62c43 Mon Sep 17 00:00:00 2001 From: svtter Date: Mon, 25 May 2026 10:30:50 +0800 Subject: [PATCH 1/3] docs: add multi-review to README Co-Authored-By: Claude Opus 4.7 --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c9cc426..b57b2e0 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ npx skills add sun-praise/opencode-actions ## What it includes - `review`: opinionated PR review wrapper with built-in prompt and model defaults +- `multi-review`: multi-agent parallel review using OpenCode SDK — multiple reviewers run concurrently, a coordinator synthesizes findings into one PR comment - `architect-review`: architecture-level PR review focusing on coupling, layering, and structural concerns - `feature-missing`: audits PR implementation against linked issue spec to find missing features - `spec-coverage`: cross-references project spec/task files against PR implementation to find planned but unimplemented features @@ -84,6 +85,48 @@ Use this when you want the simplest PR review setup. When `fallback-models` is set, the wrapper keeps `model` as the first choice and only rotates to the next candidate when the current model times out or emits a timeout-like error. Candidates whose provider key is unavailable are skipped automatically. +## multi-review + +Use this when you want multiple AI reviewers to analyze a PR in parallel, with a coordinator that synthesizes all findings into a single comment. + +- spawns N reviewer sessions in parallel via the OpenCode SDK (`@opencode-ai/sdk`) +- built-in reviewer personas: quality, security, performance, architecture +- a coordinator session reads all reviewer outputs and produces a deduplicated synthesis +- each reviewer's detailed output is included in a collapsible `
` section +- single `opencode serve` instance shared across all sessions (one MCP cold start) + +```yaml +- name: Run OpenCode multi-review + uses: sun-praise/opencode-actions/multi-review@v2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + model: zhipuai/glm-5.1 + default-team: "quality:1,security:1,performance:1" + timeout-seconds: "900" + coordinator-timeout-seconds: "300" + zhipu-api-key: ${{ secrets.ZHIPU_API_KEY }} +``` + +### Inputs + +| Input | Default | Description | +| --- | --- | --- | +| `model` | empty | Model for all reviewers and coordinator (format: `provider/model`) | +| `default-team` | empty | Comma-separated team definition (e.g. `"quality:1,security:1,performance:1"`) | +| `timeout-seconds` | `900` | Global timeout for all reviewers in seconds | +| `coordinator-timeout-seconds` | `300` | Timeout for the coordinator synthesis step | +| `coordinator-prompt` | empty | Custom coordinator prompt; use `{{REVIEWS}}` as placeholder | +| `reasoning-effort` | `max` | Reasoning effort level (`low`, `medium`, `high`, `max`) | +| `enable-thinking` | `true` | Enable thinking mode for the model agent | +| `github-token` | empty | GitHub token for posting PR comments | +| `zhipu-api-key` | empty | Zhipu AI API key | +| `opencode-go-api-key` | empty | OpenCode Go API key | +| `deepseek-api-key` | empty | DeepSeek API key | +| `extra-env` | empty | Extra environment variables (multi-line `KEY=VALUE` pairs) | +| `cleanup-error-comments` | `true` | Auto-delete error comments after a failed run | + +`multi-review` also accepts the setup-related inputs from `setup-opencode` (`cache`, `cache-key`, `install-attempts`, `install-url`, `allow-preinstalled`, `version`). + ## architect-review Use this alongside `review` to evaluate PR changes from an architecture perspective. @@ -147,6 +190,7 @@ Unlike `feature-missing` (which checks PR self-described scope), `spec-coverage` | Action | Scope source | What it catches | | --- | --- | --- | | `review` | PR diff | Code quality, security, bugs | +| `multi-review` | PR diff (multiple parallel reviewers) | Quality, security, performance, architecture — coordinator synthesizes | | `architect-review` | PR diff + project conventions | Coupling, layering, module placement, structural concerns | | `feature-missing` | PR title/body + linked issues | PR self-described scope completeness | | `spec-coverage` | Project spec/task files | Full planned scope vs implementation | @@ -202,6 +246,7 @@ Public consumers should reference the subdirectory action path: ```yaml uses: sun-praise/opencode-actions/review@v2 +uses: sun-praise/opencode-actions/multi-review@v2 uses: sun-praise/opencode-actions/architect-review@v2 uses: sun-praise/opencode-actions/feature-missing@v2 uses: sun-praise/opencode-actions/spec-coverage@v2 @@ -239,7 +284,7 @@ This repository includes a CI workflow that: - runs `shellcheck` on every bundled shell script - runs the local shell-based regression suite -- smoke-tests all actions through `uses: ./setup-opencode`, `uses: ./run-opencode`, `uses: ./github-run-opencode`, `uses: ./review`, `uses: ./feature-missing`, `uses: ./spec-coverage`, and `uses: ./architect-review` +- smoke-tests all actions through `uses: ./setup-opencode`, `uses: ./run-opencode`, `uses: ./github-run-opencode`, `uses: ./review`, `uses: ./multi-review`, `uses: ./feature-missing`, `uses: ./spec-coverage`, and `uses: ./architect-review` ## Release Policy @@ -254,7 +299,7 @@ This repository includes a CI workflow that: 2. Verify `CI` passes on `main`. 3. Create a GitHub release with a semver tag such as `v1.0.0`. 4. Confirm the `Update Major Tag` workflow moved `v1` to that release. -5. Use `owner/repo/review@v2` for the simplest review setup, `owner/repo/architect-review@v2` for architecture review, `owner/repo/feature-missing@v2` for PR scope audit, `owner/repo/spec-coverage@v2` for spec coverage audit, `owner/repo/github-run-opencode@v2` for generic `github run`, or `owner/repo/setup-opencode@v2` plus `owner/repo/run-opencode@v2` for more control. +5. Use `owner/repo/review@v2` for the simplest review setup, `owner/repo/multi-review@v2` for multi-agent parallel review, `owner/repo/architect-review@v2` for architecture review, `owner/repo/feature-missing@v2` for PR scope audit, `owner/repo/spec-coverage@v2` for spec coverage audit, `owner/repo/github-run-opencode@v2` for generic `github run`, or `owner/repo/setup-opencode@v2` plus `owner/repo/run-opencode@v2` for more control. The initial release-notes template lives at `docs/releases/v1.0.0.md`. From a873f7a42b263a46625e0e9e9b596b58b1f02dfe Mon Sep 17 00:00:00 2001 From: svtter Date: Mon, 25 May 2026 10:33:11 +0800 Subject: [PATCH 2/3] docs(multi-review): add working-directory input and fix setup inputs list Co-Authored-By: Claude Opus 4.7 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b57b2e0..e546fb6 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ Use this when you want multiple AI reviewers to analyze a PR in parallel, with a | `coordinator-prompt` | empty | Custom coordinator prompt; use `{{REVIEWS}}` as placeholder | | `reasoning-effort` | `max` | Reasoning effort level (`low`, `medium`, `high`, `max`) | | `enable-thinking` | `true` | Enable thinking mode for the model agent | +| `working-directory` | empty | Optional working directory before running review | | `github-token` | empty | GitHub token for posting PR comments | | `zhipu-api-key` | empty | Zhipu AI API key | | `opencode-go-api-key` | empty | OpenCode Go API key | @@ -125,7 +126,7 @@ Use this when you want multiple AI reviewers to analyze a PR in parallel, with a | `extra-env` | empty | Extra environment variables (multi-line `KEY=VALUE` pairs) | | `cleanup-error-comments` | `true` | Auto-delete error comments after a failed run | -`multi-review` also accepts the setup-related inputs from `setup-opencode` (`cache`, `cache-key`, `install-attempts`, `install-url`, `allow-preinstalled`, `version`). +`multi-review` also accepts all setup-related inputs from `setup-opencode` (`install-url`, `install-dir`, `xdg-cache-home`, `cache`, `cache-key`, `install-attempts`, `allow-preinstalled`, `version`). ## architect-review From b8875ed6bc131134a8b124b4e509036cc9079106 Mon Sep 17 00:00:00 2001 From: svtter Date: Mon, 25 May 2026 10:35:32 +0800 Subject: [PATCH 3/3] docs(multi-review): remove non-existent inputs reasoning-effort and enable-thinking These inputs don't exist in multi-review/action.yml. Co-Authored-By: Claude Opus 4.7 --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index e546fb6..6342e29 100644 --- a/README.md +++ b/README.md @@ -116,8 +116,6 @@ Use this when you want multiple AI reviewers to analyze a PR in parallel, with a | `timeout-seconds` | `900` | Global timeout for all reviewers in seconds | | `coordinator-timeout-seconds` | `300` | Timeout for the coordinator synthesis step | | `coordinator-prompt` | empty | Custom coordinator prompt; use `{{REVIEWS}}` as placeholder | -| `reasoning-effort` | `max` | Reasoning effort level (`low`, `medium`, `high`, `max`) | -| `enable-thinking` | `true` | Enable thinking mode for the model agent | | `working-directory` | empty | Optional working directory before running review | | `github-token` | empty | GitHub token for posting PR comments | | `zhipu-api-key` | empty | Zhipu AI API key |