Cross-Model Review
A VS Code extension prototype: instead of having the model that wrote a piece
of code also review it, this routes the review to a different model —
because models tend to miss the exact mistakes they're prone to making
themselves.
How it decides who reviews what
Detect the author. It looks for a marker comment near the top of the
file/selection:
// Generated-By: claude
# generated-by: gpt-4o
This is deliberately simple — trying to fingerprint unmarked code by
writing style alone is unreliable and gives false confidence. If your
AI coding tool can drop a one-line comment like this when it generates
code, detection becomes trivial and trustworthy.
Fall back to a default, if you set crossModelReview.defaultAuthorModel
to claude or gpt instead of auto.
If still unknown, it either runs both reviewers (default) or asks you
once via a quick pick, depending on crossModelReview.dualReviewWhenUnknown.
Pick the reviewer(s). Claude-written code → reviewed by GPT.
GPT-written code → reviewed by Claude. Unknown → both (or your choice).
Distinct reasoning styles per reviewer, not just a generic "review this"
prompt:
- Claude's prompt: understand intent and trace data flow end-to-end first,
then do a correctness pass.
- GPT's prompt: line-by-line / function-by-function checks first, then
zoom out to design-level issues.
These are starting points in src/reviewPrompts.ts — tune them based on
what actually catches bugs in your codebase.
Setup
npm install
npm run compile
Then in VS Code: press F5 (or use "Run Extension" in the Debug panel) to
launch an Extension Development Host with this extension loaded.
Set your API keys (stored via VS Code's encrypted SecretStorage, not in
settings.json):
Cross-Model Review: Set Anthropic API Key
Cross-Model Review: Set OpenAI API Key
(Command Palette: Cmd/Ctrl+Shift+P)
Usage
Cross-Model Review: Review Active File — reviews the whole open file.
Cross-Model Review: Review Selection — reviews just the selected code
(also available by right-clicking a selection).
Results open in a panel beside your editor, one section per reviewer.
Settings
| Setting |
Default |
Description |
crossModelReview.defaultAuthorModel |
auto |
auto, claude, or gpt — used when no marker comment is found |
crossModelReview.dualReviewWhenUnknown |
true |
Run both reviewers when the author can't be determined |
crossModelReview.claudeModel |
claude-sonnet-4-6 |
Anthropic model ID used as reviewer |
crossModelReview.gptModel |
gpt-4o |
OpenAI model ID used as reviewer |
What this is (and isn't)
This is a working prototype, not a polished product. Things worth doing
before relying on it day-to-day:
- Add real markdown rendering in the webview (currently a minimal hand-rolled
renderer — headings, bold, code fences, paragraphs only).
- Add caching/diffing so re-reviewing an unchanged file doesn't re-spend
tokens.
- Add a third "arbiter" pass when both reviewers disagree — disagreement
between reviewers is itself a useful signal that something's ambiguous or
risky.
- Wire generator-detection into your actual pipeline (e.g. have your AI
coding agent auto-insert the
Generated-By: marker comment when it writes
code, rather than relying on it existing by convention).
- Handle very large files (chunking / only reviewing diffs against git HEAD).
Packaging
To produce an installable .vsix:
npm install -g @vscode/vsce
vsce package