diffelens
v0.4.0
Published
Multi-lens AI PR review orchestrator using Claude Code / Codex CLI
Maintainers
Readme
Multi-lens AI PR review orchestrator using LLM CLI tools such as Claude Code / Codex CLI / Gemini.
Concept
- Lens Separation: readability / architectural / bug_risk run as separate LLM invocations
- Context Control: readability receives only the diff; architectural allows full repository exploration
- State Management: Findings tracked across rounds — comment-embedded (GitHub) or file-based (local)
- Convergence Control: Round limit + progressive severity filtering prevents endless review loops
- CLI Abstraction: Claude Code / Codex / Gemini can be swapped via adapter pattern
- Custom API Endpoints: Proxy / base URL support per-lens or global for enterprise API gateways
Quick Start
npm install
npm install -g @anthropic-ai/claude-code # or @google/gemini-cli
export ANTHROPIC_API_KEY=sk-ant-xxx
# Review current branch changes
npx tsx src/main.ts --diff-target branch
# Test a single lens
npx tsx src/test-lens.ts readabilityDocumentation
| Guide | Description | |-------|-------------| | Local Mode | CLI options, configuration, custom prompts, reading output | | GitHub Actions | Workflow setup, secrets, state management, troubleshooting |
File Structure
src/
├── main.ts # Orchestrator
├── config.ts # .diffelens.yaml loader + validation
├── options.ts # CLI arg parsing + mode detection
├── diff.ts # Diff fetching + hashing
├── lens-runner.ts # Lens execution (CLI invocation)
├── prompt-resolver.ts # Prompt resolution (builtin/custom/extended)
├── project-context.ts # Repo metadata collection
├── filters.ts # Diff filtering (glob-based exclusion)
├── severity.ts # Shared severity rank constants
├── deduplicator.ts # Finding deduplication
├── convergence.ts # Convergence logic + per-round severity filter
├── test-lens.ts # Single lens test runner
├── handle-command.ts # /diffelens dismiss command handler
├── adapters/
│ ├── types.ts # Shared interfaces
│ ├── claude-code.ts # Claude Code CLI adapter
│ ├── codex.ts # Codex CLI adapter
│ ├── gemini.ts # Gemini CLI adapter
│ └── index.ts # Factory
├── state/
│ └── review-state.ts # State management
└── output/
├── summary-renderer.ts # Markdown summary generation
├── comment-state.ts # State embedding in PR comments
└── github-client.ts # GitHub API client
prompts/
├── readability.md
├── architectural.md
└── bug_risk.md