ppaksu/bench-board
GitHub: ppaksu/bench-board
这是一个面向LLM代理的智能合约安全基准测试平台,提供公共排行榜和管理工具。
Stars: 0 | Forks: 0
# 基准测试/看板
面向 LLM 代理的智能合约安全基准测试 — 公共排行榜 + 管理工具。
技术栈:Next.js (App Router) · Postgres · Drizzle ORM · Auth.js (GitHub OAuth)。
## 快速开始
```
pnpm install
cp .env.example .env.local
# 填写 DATABASE_URL, AUTH_SECRET, AUTH_GITHUB_ID/SECRET, ADMIN_GITHUB_LOGINS
pnpm db:push # create tables in your Postgres
pnpm db:seed # load the original prototype data as run v1.0
pnpm dev
```
打开 `http://localhost:3000/` 访问公共排行榜,访问 `/admin` 进行登录。
## 环境变量
| 变量 | 备注 |
|---|---|
| `DATABASE_URL` | 任意 Postgres URL — Neon、Supabase、本地 Docker、RDS 均可。 |
| `AUTH_SECRET` | `openssl rand -base64 32`。 |
| `AUTH_GITHUB_ID` / `AUTH_GITHUB_SECRET` | 在 https://github.com/settings/developers 创建 — 回调地址 `http://localhost:3000/api/auth/callback/github`。 |
| `ADMIN_GITHUB_LOGINS` | 允许进入 `/admin` 的 GitHub 用户名,以逗号分隔。 |
## 管理工作流
1. 在 `/login` (GitHub) 登录 — 你的用户名必须在 `ADMIN_GITHUB_LOGINS` 列表中。
2. **代理** (`/admin/agents`) — 增删改模型。`id` 是所有结果表使用的外键;导入后请勿重命名。
3. **导入运行** (`/admin/runs/new`) — 粘贴完整的 JSON 负载。新的 `runId` 会创建一次新运行;现有的 `runId` 将替换其结果行。`/` 页面显示的是最新的公共运行。
## 托管
此技术栈具有可移植性。不依赖 Vercel 专属包 — 使用 `postgres` 驱动而非 `@vercel/postgres`。开箱即用的部署目标:
- **Vercel + Neon** — 通过 Vercel Marketplace 连接,环境变量自动设置。
- **Railway / Render / Fly** — 手动设置相同的环境变量。
- **自托管** — 在任何兼容 Node 的运行时后执行 `pnpm build && pnpm start`。
## 数据库
Drizzle schema 位于 [src/db/schema.ts](src/db/schema.ts)。进行迁移:
```
pnpm db:generate # write a migration to ./drizzle
pnpm db:migrate # apply it
# 或用于原型设计:
pnpm db:push # sync schema directly without a migration file
pnpm db:studio # GUI browser
```
## 文件结构
```
app/
page.tsx public leaderboard
layout.tsx root (fonts, aurora bg)
globals.css extracted styles from the original prototype
components/ Header, Hero, Leaderboard, ParetoChart, FpAnalysis, …
login/ GitHub sign-in
admin/
layout.tsx auth wall + admin nav
page.tsx dashboard
agents/page.tsx agent CRUD
runs/new/page.tsx JSON import
api/auth/[...nextauth]/ Auth.js handlers
src/
auth.ts Auth.js v5 config + isAdmin helper
middleware.ts redirect /admin/* if unauth'd
db/ Drizzle schema + client
lib/
leaderboard.ts server-side fetch for the public page
actions.ts server actions (upsertAgent, importRunFromJson, …)
scripts/
seed.ts loads the original prototype JSON as run v1.0
bench-clear-leaderboard.html original static prototype (kept for reference)
```
标签:AI安全, Auth.js, Chat Copilot, Drizzle ORM, GitHub OAuth, LLM代理, Postgres, 二进制发布, 公开排行榜, 区块链安全, 反取证, 安全评估, 开源工具, 排行榜, 数据导入, 数据库管理, 智能合约安全, 测试用例, 用户认证, 管理工具, 自动化攻击