AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A terminal dashboard for human-directed AI code reviews on GitHub.
Keep track of what each pull request needs next: AI review, your review, or author changes. Start an AI review, discuss its findings in the agent's own session, and finish your review in the browser.
Install uv and Git, then install DiffButler from PyPI:
uv tool install --python 3.14 diffbutler
uv manages Python and dependencies in an isolated environment. No virtual environment
activation is needed. If diffbutler is not on your PATH, run uv tool update-shell
and restart your shell.
To upgrade a PyPI installation:
uv tool upgrade diffbutler
To install from a local checkout of this repository instead, run from its root:
uv tool install --python 3.14 .
Install and sign in to Codex CLI or Claude Code before requesting AI reviews. The native presets support Codex CLI or Claude Code on Linux and macOS without version checks. Reviews use your normal agent settings, including model and reasoning effort, with background permission and output overrides. New conversations remain in the agent’s own history after DiffButler cleans up its workspaces; existing private sessions retain their original home for resume. See supported agents and validation for details.
Use authenticated GitHub access, including for public repositories. If you already
use gh auth login, export its token before launching DiffButler:
export GITHUB_TOKEN="$(gh auth token)"
Alternatively, create a fine-grained personal access token
for the repositories you want to review with Pull requests: Read-only permission,
and set it as GITHUB_TOKEN. Anonymous access is a last resort for public repositories;
its low API quota makes it unsuitable for regular polling. See the
authentication guide for host/account selection,
HTTPS versus SSH Git setup, and token permissions.
From the GitHub repository you want to review, launch:
diffbutler
First-run setup detects the local repository and asks whether to monitor just that
repository or all repositories belonging to the same owner. It looks up your GitHub
username using the selected token, asks for your preferred agent, and saves your choices.
If username detection is unavailable, setup asks for it. Choose the recommended token
access for public repositories; private repositories require it. Setup asks for the
token's environment variable name and validates access. It never saves the token.
New configs silently enable both Codex and Claude when found in PATH; setup asks
only which detected agent should be the default. Missing agents get commented-out
entries you can enable after installation.
Later launches reuse your configuration.
Repository filters accept exact names such as heikkitoivonen/diffbutler or
heikkitoivonen/* for all accessible repositories owned by that account.
The dashboard shows active reviews, including followed PRs whose GitHub review
requests have disappeared after you posted feedback. Waiting-for-author reviews
stay visible across refreshes and restarts. If an approved PR receives new commits,
it reappears as done+ at the end of the queue without starting another AI review.
Authenticated polling slows when API quota is scarce and speeds back up when it
recovers, accounting for refresh cost and time until the quota resets.
Select a PR with the arrow keys, then work through the review:
n to change the current configured AI reviewer for all PRs.
Press r to start a background AI review. Reviews start only when you request them.
The agent is instructed to read the PR description, discussion, and earlier review
threads and replies before reviewing the local code, reporting any unavailable context.
DiffButler caches full Git history and reviews changes from the PR merge base
to its head, excluding unrelated changes made later on the target branch.approve only when the AI explicitly reports no findings;
otherwise it shows check. Press Enter to read the results, or c to resume
the saved agent conversation.
If the agent exits normally but DiffButler cannot parse its output, the task also
shows check; use c to inspect the saved conversation or L for captured output.
Changing reviewers leaves that conversation available through c; pressing r
starts a new run with the current reviewer and replaces the current review details.
Ask questions and explicitly tell the agent which comments to post, if any.w if you are waiting for author changes, or o to review in your browser.m to mark the task complete locally. DiffButler
also detects your approval, closure, or merge and cleans up owned session resources
while retaining review history.Space performs the selected PR's next action: start a review, discuss findings,
or open the browser. For check and author, it resumes the saved agent conversation,
just like c. An AI review never counts as your approval. Background analysis
uses the agent's native permission controls
and read-only review instructions; source sent to the agent may go to its model provider.
/: Filter the queue.a: Toggle monitoring all open PRs in configured repositories.b: Browse accessible PRs and follow one.R: Find and add a PR by link or number, then review it; choose a repository if
the number is ambiguous. Explicitly selected PRs bypass queue visibility filters.Ctrl+R: Refresh from GitHub.k: Stop the selected PR's review and reset its local tracking and owned resources.
It disappears until a forge refresh rediscovers it; review history is retained.h: View completed review history.?: Show all keyboard shortcuts.q: Quit.See the dashboard guide for all actions and configuration guide for settings.
Your own PRs are hidden from the review queue by default, including direct and team
requests. Use R to select one explicitly, or set include_own_prs = true in [ui]
to show them all, such as PRs an agent created using your account.
PRs assigned to you are also hidden by default, even when
you are requested directly or through a team. Set include_assigned_prs = true in
[ui] to include them, or select one with R.
Close running DiffButler sessions, then run:
diffbutler reset
DiffButler refuses a second command or dashboard using the same data home, including
reset, while another instance is running. Its instance lock releases on process
exit; a leftover PID file does not block startup. See the
locking details before handling Git lock files
or resetting after a crash.
After confirmation, this permanently removes DiffButler's standard configuration,
data, and state directories, including review history, saved sessions, and diagnostic
logs. Custom files outside those directories are preserved. Use diffbutler reset --force
to skip confirmation. Run diffbutler again to repeat first-run setup.
Remove the uv-installed command and its isolated environment:
uv tool uninstall diffbutler
This keeps your DiffButler configuration, review history, and diagnostic logs.
To remove those too, run diffbutler reset before uninstalling; see
Reset for what it deletes.
See CONTRIBUTING.md for development setup and checks.
MIT.