Skip to content

Commit 3903077

Browse files
committed
feat: build trusted review evaluation loop
1 parent 5735304 commit 3903077

258 files changed

Lines changed: 15784 additions & 1313 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
11
DATABASE_URL="postgresql://agentcode:agentcode@localhost:5432/agentcode?schema=public"
2+
AUTH_SECRET="replace-with-at-least-32-random-characters"
3+
AUTH_GITHUB_ID="github-oauth-app-client-id"
4+
AUTH_GITHUB_SECRET="github-oauth-app-client-secret"
5+
AUTH_TRUST_HOST="true"
6+
REVIEW_ADMIN_ENABLED="false"
7+
REVIEWER_GITHUB_IDS="12345678"
8+
REVIEW_PERSISTENCE_ENABLED="false"
9+
REVIEW_EVALUATOR_MODE="v2"
10+
TASK_RUNNER_ENABLED="false"

.github/workflows/deploy.yml

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- name: Setup pnpm
2323
uses: pnpm/action-setup@v4
2424
with:
25-
version: 9
25+
version: 11.11.0
2626

2727
- name: Setup Node.js
2828
uses: actions/setup-node@v4
@@ -35,21 +35,37 @@ jobs:
3535
uses: actions/cache@v4
3636
with:
3737
path: .next/cache
38-
key: ${{ runner.os }}-next-${{ hashFiles('package.json', 'pnpm-lock.yaml') }}-${{ hashFiles('src/**/*', 'next.config.*', 'tsconfig.json') }}
38+
key: ${{ runner.os }}-next-${{ hashFiles('package.json', 'pnpm-lock.yaml') }}-${{ hashFiles('src/**/*', 'challenges/**/*', 'scripts/challenges/**/*', 'prisma/**/*', 'task-worker/**/*', 'tests/**/*', 'next.config.*', 'tsconfig.json', 'vitest.config.ts') }}
3939
restore-keys: |
4040
${{ runner.os }}-next-${{ hashFiles('package.json', 'pnpm-lock.yaml') }}-
4141
4242
- name: Install dependencies
4343
run: pnpm install --frozen-lockfile
4444

45+
- name: Validate Prisma schema
46+
env:
47+
DATABASE_URL: postgresql://agentcode:agentcode@127.0.0.1:5432/agentcode?schema=public
48+
run: |
49+
pnpm exec prisma validate
50+
pnpm exec prisma generate
51+
52+
- name: Validate challenge assets
53+
run: pnpm challenge:validate
54+
55+
- name: Run evaluator fixtures
56+
run: pnpm challenge:fixtures
57+
58+
- name: Test
59+
run: pnpm test
60+
4561
- name: Typecheck
46-
run: npm run typecheck
62+
run: pnpm typecheck
4763

4864
- name: Lint
49-
run: npm run lint
65+
run: pnpm lint
5066

5167
- name: Build
52-
run: npm run build
68+
run: pnpm build
5369

5470
deploy:
5571
name: Deploy
@@ -76,4 +92,4 @@ jobs:
7692
-o IdentitiesOnly=yes \
7793
-o StrictHostKeyChecking=yes \
7894
"${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" \
79-
"sudo -u agentcode /usr/bin/bash /opt/agentcode/scripts/deploy.sh"
95+
"sudo /usr/bin/bash -c 'set -a; source /etc/agentcode.env; set +a; exec sudo --preserve-env=DATABASE_URL -u agentcode /usr/bin/bash /opt/agentcode/scripts/deploy.sh'"

README.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ V0 正在构建中,目前仓库已经包含:
6666
- Review Mode 首页、题目详情页和结构化 review 提交表单。
6767
- 20 道真实来源改编的 Review Mode 题,覆盖安全、框架、HTTP、数据语义和测试质量。
6868
- 可版本化的题库资产结构:题面、metadata、AI diff、expected findings、rubric。
69+
- Review Evaluator V2:物理文件/行号校验、一对一 finding 匹配、结构化扣分和 100 个回归 fixtures。
70+
- 匿名提交、24 小时人工终审、GitHub 白名单 reviewer 后台、能力画像与下一题推荐。
71+
- 默认关闭的 TypeScript/Node Task Runner Alpha,只有满足稳定性与安全门禁后才允许启用。
6972
- 评估设计、V0 架构、产品方向和首批题库规划文档。
7073

7174
题库入口:
@@ -88,6 +91,9 @@ pnpm dev
8891
```bash
8992
pnpm lint
9093
pnpm typecheck
94+
pnpm test
95+
pnpm challenge:validate
96+
pnpm challenge:fixtures
9197
pnpm build
9298
```
9399

@@ -96,10 +102,10 @@ pnpm build
96102
```bash
97103
cp .env.example .env
98104
pnpm db:generate
99-
pnpm db:push
105+
pnpm db:migrate
100106
```
101107

102-
当前 V0 前端仍以题库原型和本地 review 反馈为主;Task Mode runner 尚未执行用户代码,后续会引入隔离容器、隐藏测试和结构化评估结果
108+
Review 持久化需要 PostgreSQL,并由 `REVIEW_PERSISTENCE_ENABLED=true` 显式开启。人工终审后台使用 Auth.js GitHub OAuth 和 `REVIEWER_GITHUB_IDS` 数字 ID 白名单。Task Runner 代码默认关闭;启用前必须使用独立 rootless Docker worker,并通过仓库定义的产品与安全门禁
103109

104110
## 题库资产
105111

@@ -144,7 +150,8 @@ AgentCode V0 先聚焦 20 道高质量题,而不是堆功能数量。当前已
144150
- **UI 原型**:题库列表、训练模式筛选、Review 题详情、结构化提交表单
145151
- **Data model**:Prisma schema
146152
- **Challenge assets**:Markdown、JSON、diff、rubric
147-
- **Runner 方向**:Docker 隔离执行、公开测试、隐藏测试、日志和 verdict
153+
- **Review data**:PostgreSQL、匿名 HttpOnly session、Prisma migrations、结构化人工终审
154+
- **Runner Alpha**:patch-only、PostgreSQL 队列、独立 rootless Docker worker、公开/隐藏测试、结构化 verdict
148155

149156
V0 最重要的工程边界是隔离:平台可信代码和用户提交的不可信代码必须分开执行。
150157

0 commit comments

Comments
 (0)