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, 二进制发布, 公开排行榜, 区块链安全, 反取证, 安全评估, 开源工具, 排行榜, 数据导入, 数据库管理, 智能合约安全, 测试用例, 用户认证, 管理工具, 自动化攻击