Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@ jobs:

#### Secrets

| Secret | Required | Description |
| ------------------- | -------- | ----------------------- |
| `ANTHROPIC_API_KEY` | Yes | API key for Anthropic |
| Secret | Required | Description |
| ------------------- | -------- | --------------------- |
| `ANTHROPIC_API_KEY` | Yes | API key for Anthropic |

Set this as an **org-level secret** so all repos inherit it, or per-repo if needed.

#### Variables

| Variable | Required | Description |
| --------------------- | -------- | ----------------------------------------------- |
| `ANTHROPIC_BASE_URL` | No | Custom API base URL (e.g. for proxy or gateway) |
| Variable | Required | Description |
| -------------------- | -------- | ----------------------------------------------- |
| `ANTHROPIC_BASE_URL` | No | Custom API base URL (e.g. for proxy or gateway) |

Set this as an **org-level variable** (not a secret) if you need to route requests through a proxy.

Expand Down
40 changes: 23 additions & 17 deletions docs/rfcs/0001-code-review-customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ PR #14 合入后已经解决了「重复评论」和「max-turns 30 太少」这

把「特化项」按**变化频率**和**抽象层级**分类,分别用最匹配的载体:

| 类别 | 例子 | 载体 | 谁维护 |
|---|---|---|---|
| 数值/枚举 | `max_turns`, `model`, `confidence_min` | workflow `inputs:` | 基础设施 |
| 路径过滤 | `paths_focus`, `paths_skip` | workflow `inputs:` | 项目 + 基础设施 |
| 工具扩展 | `Bash(pytest:*)` | workflow `inputs:`(白名单内) | 项目(受限) |
| Prompt 内容 | 项目栈、gotchas、业务规则、误报黑名单 | `.github/REVIEW.md` | 项目 |
| Review 目标 | 安全 only / 文档 only | 独立 workflow | 基础设施 |
| 类别 | 例子 | 载体 | 谁维护 |
| ----------- | -------------------------------------- | ------------------------------ | --------------- |
| 数值/枚举 | `max_turns`, `model`, `confidence_min` | workflow `inputs:` | 基础设施 |
| 路径过滤 | `paths_focus`, `paths_skip` | workflow `inputs:` | 项目 + 基础设施 |
| 工具扩展 | `Bash(pytest:*)` | workflow `inputs:`(白名单内) | 项目(受限) |
| Prompt 内容 | 项目栈、gotchas、业务规则、误报黑名单 | `.github/REVIEW.md` | 项目 |
| Review 目标 | 安全 only / 文档 only | 独立 workflow | 基础设施 |

**核心选择**:**结构性的当 input,自由文本的当文件。** 数值/枚举走 yaml input(IDE 补全、可校验、显式);自由文本(项目知识、误报名单)走 `.github/REVIEW.md`(跟项目演进,diff 自然,无转义地狱)。

Expand All @@ -49,8 +49,8 @@ PR #14 合入后已经解决了「重复评论」和「max-turns 30 太少」这
```yaml
inputs:
# —— 现有 ——
pr_number: { required: true, type: number }
is_draft: { required: false, type: boolean, default: false }
pr_number: { required: true, type: number }
is_draft: { required: false, type: boolean, default: false }
head_repo_full_name: { required: false, type: string }

# —— 资源 / 模型 ——
Expand Down Expand Up @@ -119,21 +119,25 @@ inputs:
# Review Guidelines

## Project Context

- 栈:TypeScript + React 19 + Vite + Effect-TS
- 部署:Vercel + Cloudflare Workers
- 关键依赖版本约束:见 package.json

## Review Focus (项目特化)

- Effect 的 unhandled / non-tracked effect
- React 19 useTransition / useOptimistic 的 stale closure
- Drizzle migration 文件改动需要二次审视

## False-Positive Filter (额外的不要报告项)

- `*.gen.ts`:codegen 产物
- `packages/legacy/**`:待删除模块,新增问题不计
- `apps/*/e2e/**`:测试 fixture,不算业务逻辑

## Domain Knowledge

- "Maker" 指 maker.taptap.cn 项目
- 用户角色:creator / player / admin
- 业务规则 X:详见 docs/business-rules/X.md
Expand All @@ -144,6 +148,7 @@ inputs:
> **设计取舍**:也可以把文件放在仓库根目录的 `REVIEW.md`,这样 prompt 字面不需要改。但 `.github/REVIEW.md` 语义更清晰("这是给 CI 看的,不是给开发者读的项目文档"),且不污染根目录。一行 prompt 改动换更好的归位,划算。

**与 workflow inputs 的关系**:

- `paths_skip` input 是**结构化的强 prompt 指令**(org workflow 在 prompt 里告诉 Claude "skip these globs")。它声明意图明确、模型遵守率高,但**不是硬过滤**——LLM 不提供 100% 的指令遵守保证,理论上 Claude 仍可能去读 skip 路径。
- REVIEW.md 的 "False-Positive Filter" 是**软指引**(告诉 Claude "这些路径下的问题置信度自动 -20" 之类)
- 两者强度不同但**都不应当作安全边界使用**:不要依赖 `paths_skip` 来防止 Claude 看到敏感文件(如 credentials)。敏感文件本来就不该在 diff 里,应当靠 `.gitignore` / `git-secrets` / pre-commit hook 在更上游拦掉。如果将来真有"必须物理剔除路径再喂给 Claude"的场景,参考 §10 的备选方案 D(pre-process diff,未在本 RFC 范围内实现)。
Expand Down Expand Up @@ -299,6 +304,7 @@ Bash(tsc:*)
### 6.3 隐含的全局禁止

即使将来扩白名单,下列绝不允许:

- 任何带 `curl / wget / nc / ssh / scp / rsync` 的 pattern(外联)
- 任何带 `rm / mv / cp / chmod / chown` 的 pattern(写文件系统)
- 任何 `gh api ... -X POST/PUT/PATCH/DELETE` 形式的 mutation(除已经在 base allowedTools 里、专门授给 dedup/resolve 用的两条)
Expand Down Expand Up @@ -326,14 +332,14 @@ org workflow 在 reusable workflow 入口加一个 `validate-extra-tools` step

**默认值与现行 workflow 的对照**:

| Input | 默认值 | 与 PR #14 合入后的 workflow |
|---|---|---|
| `model` | `opus` | 一致(现行就是 `--model opus`) |
| `max_turns` | `256` | 一致(PR #14 已经设到 256) |
| `max_budget_usd` | `10` | **新增**(现行没有 budget 上限) |
| `confidence_min` | `75` | **形式上新增**——现行 workflow 在 prompt 里写死了 "Only report findings with confidence ≥ 75",本 RFC 把它从 prompt 字面提到 input 参数化 |
| `max_findings` | `10` | **形式上新增**——同上,现行 prompt 里写死 "at most 10 new findings" |
| `paths_focus / paths_skip / extra_allowed_tools` | 空 | **新增**,空时不影响行为 |
| Input | 默认值 | 与 PR #14 合入后的 workflow |
| ------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `model` | `opus` | 一致(现行就是 `--model opus`) |
| `max_turns` | `256` | 一致(PR #14 已经设到 256) |
| `max_budget_usd` | `10` | **新增**(现行没有 budget 上限) |
| `confidence_min` | `75` | **形式上新增**——现行 workflow 在 prompt 里写死了 "Only report findings with confidence ≥ 75",本 RFC 把它从 prompt 字面提到 input 参数化 |
| `max_findings` | `10` | **形式上新增**——同上,现行 prompt 里写死 "at most 10 new findings" |
| `paths_focus / paths_skip / extra_allowed_tools` | 空 | **新增**,空时不影响行为 |

唯一行为变化是引入 `max_budget_usd: 10` 上限——超出会中止 review。`10 USD/run` 应当远高于实际开销(参考 maker#439 一次 ~4min × opus 远低于 $1),属于安全网而非常态约束。如担心切换震动,可在 Phase 1 默认 `0`(无上限)后续再调高。

Expand Down
8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
"devDependencies": {
"@eslint/js": "^10.0.1",
"autocorrect-node": "^2.14.0",
"eslint": "^10.1.0",
"globals": "^17.4.0",
"eslint": "^10.3.0",
"globals": "^17.6.0",
"husky": "^9.1.7",
"lint-staged": "^16.4.0",
"prettier": "^3.8.1",
"typescript-eslint": "^8.57.2"
"prettier": "^3.8.3",
"typescript-eslint": "^8.59.3"
Comment on lines +13 to +18
}
}
Loading
Loading