sun-praise/Pi Review Agent

AI code review: N personas in parallel + coordinator, cross-runner resume, inline review comments. LiteLLM/DeepSeek.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
github-tokenGitHub token used to fetch the PR diff and post the review comment. Defaults to `github.token`. Needs `pull-requests: write` scope to post the comment. no${{ github.token }}
prPR number. Auto-detected from `GITHUB_REF` on `pull_request` events. Set explicitly for other triggers (workflow_dispatch, schedule). no""
teamMulti-persona mode. Comma-separated list of `persona:count` pairs. Built-in personas: quality, security, performance, architecture, regression-test, test-value. Custom personas can be added via `.github/reviewers/*.{yml,yaml}` in the target repo. Each persona runs in parallel as its own session; a coordinator then synthesizes all outputs into a single verdict (CAN MERGE / CONDITIONAL MERGE / CANNOT MERGE) and posts one PR comment. Example: `quality:1,security:1,performance:1` Count >1 is accepted for spec compatibility with opencode-actions but currently runs as 1. no""
personaSingle-persona mode (used when `team` is empty). Runs one reviewer with no coordinator and no PR comment (output goes to step summary only). Default "quality". noquality
skip-coordinatorSkip the coordinator synthesis step. Only affects team mode. When true, the verdict output falls back to persona severity vote. nofalse
languageOutput language for review prose (summary, findings, suggestions). Accepts short codes (zh, en, ja, ko, fr, de, es, ru) or full names (中文, English, 日本語). Default "zh" (中文). The verdict keywords (CAN MERGE / CONDITIONAL MERGE / CANNOT MERGE) always stay in English uppercase — they are parsed by machine and never translated. nozh
litellm-urlBase URL of a LiteLLM proxy or any OpenAI-compatible chat completions endpoint. Trailing `/v1` is optional. Example: `https://llm.example.com` or `https://llm.example.com/v1`. no""
litellm-api-keyAPI key for the LiteLLM / OpenAI-compatible endpoint.no""
modelModel id to request from the endpoint. Defaults to `deepseek-v4-flash`. Change this if your proxy routes a different model name. nodeepseek-v4-flash
fallback-modelsComma-separated fallback model ids to try when the primary model fails permanently (non-transient error). Tried in order; first success wins. Default "mimo-v2.5". Set to empty string to disable fallback. nomimo-v2.5
sessions-rootDirectory used to persist per-PR review sessions across runs (the resume cache). Defaults to a runner-temp path; override to point at a mounted volume if you skip `actions/cache`. no""
working-directoryRepository checkout path for the reviewer's read/grep tools. Defaults to `github.workspace`. no""
timeout-secondsPer-reviewer hard timeout in seconds. On expiry the attempt fails and, if the error is transient (network blip), retries. Set 0 to disable (not recommended). Default 600. no600
max-attemptsMax attempts per reviewer. A transient upstream error triggers a fresh-session retry with exponential backoff + jitter. Default 3. no3
retry-backoff-msBase milliseconds for exponential backoff between retries. Backoff = base * 2^(attempt-1) + jitter[0, base]. Default 1000. no1000
diff-excludeComma-separated glob patterns for additional files to exclude from the review diff (e.g. "*.generated.ts,vendor/**"). Lock files are always excluded automatically. Patterns without "/" match the file basename; patterns with "/" match the full file path (gitignore convention). no""
diff-max-size-kbMaximum diff size in kilobytes after filtering. If exceeded, only the leading file sections are kept and a truncation notice is appended. Default 200 (200 KB) �� large enough for normal PRs but small enough to stay under LLM proxy body limits (HTTP 413). Set 0 to disable. no200
diff-include-build-artifactsKeep build artifacts (dist/, build/, out/, lib/, .next/, *.min.js, …) in the review diff instead of excluding them by default. Defaults to "false" — generated output has no review value and is the usual cause of HTTP 413 when a repo commits its bundle (this one does). Set "true" only if you genuinely review generated files. nofalse
fail-on-severityControl the action exit code based on review severity. Allowed values: "none" (default — always exit 0), "blocking" (exit 1 if blocking issues found), "warning" (exit 1 if warning or blocking issues found). Fail-closed: unparseable coordinator output or a missing reviewer forces failure whenever the gate is armed. nonone
include-pr-contextFetch PR metadata (title, body, comments, prior reviews) and prepend it to every reviewer's prompt, so reviewers see *why* the PR exists and what humans/bots already said — not just the diff. Self-authored comments (from this agent) are filtered out to avoid feedback loops. Default "true". Needs the github-token to have pull-requests: read (the default github.token has it). Set "false" to disable. notrue
style-guidePath to a repository style-guide file. When set, this file is used instead of auto-detecting STYLE_GUIDE.md, .github/STYLE_GUIDE.md, docs/style-guide.md, or .github/style-guide.md. The guide is appended to the prompts of the `style` and `quality` personas (and any custom persona with `use-style-guide: true`). no""
skip-related-contextSkip the related-files context computation. When enabled (default), the action builds an import graph over the repo and pushes the files that import the PR's changed files (reverse edges) into every reviewer's prompt, so reviewers see the blast radius without grepping. Set "true" to disable and review the diff only. nofalse
namedescription
verdictFinal review verdict: `CAN MERGE`, `CONDITIONAL MERGE`, `CANNOT MERGE`, or `UNKNOWN`. In team mode this is the coordinator's verdict (with persona severity vote as fallback). In single mode it echoes the reviewer's first line.
cacheReadTotal `cacheRead` tokens across all reviewers and coordinator for this run. Non-zero means the upstream's prompt cache was hit (discounted billing).
totalCostTotal USD cost across all reviewers and coordinator.