CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
项目概述
ArenaSK — AI Skill 竞技平台 + 多智能体自主开发系统。使用 Node.js + Claude CLI 实现 Skill 的创建、评测、进化和管理。
快速启动
# 安装
npm install && cd server && npm install && cd ../web && npm install
# 开发模式 (前后端分离)
npm run dev
# 后端: localhost:3000 | 前端: localhost:5173
# 生产启动
bash start.sh
常用命令
npm run dev # 启动后端 + 前端 (开发)
npm run server:dev # 仅后端 (localhost:3000)
npm run web # 仅前端 (localhost:5173, proxy→3000)
npm run web:build # 编译前端 → web/dist/
npm test # 运行 vitest
npm run skills:sync # 同步 Skill 到 CLI 配置目录
架构
技术栈
- 后端: Node.js + Express + WebSocket + SQLite (better-sqlite3)
- 前端: Vue 3 + Vite + vue-router + vue-i18n (6 语言)
- 数据: SQLite FTS5 全文搜索, 无 PostgreSQL
- AI: Claude CLI (本地进程)
- 包管理: pnpm workspace (monorepo)
目录结构
| 目录 | 说明 |
|---|---|
server/index.js |
Express 入口 (API + WS + Plugin) |
server/routes/ |
11 个 API 路由模块 |
server/services/ |
16 个业务服务 (skill-db, job-manager 等) |
server/src/core/ |
核心引擎 (orchestrator, master-session, agent-manager) |
server/src/plugins/ |
插件系统 (PluginManager, channel monitor) |
web/src/views/ |
21 个 Vue 页面组件 |
skills/ |
系统级 Skill 定义 (19 个) |
scripts/ |
运维脚本 |
packages/ |
子包 (acp-core, evolution 等) |
关键 API 路由
| 路径 | 说明 |
|---|---|
/api/open/skills |
Open API: Skill 搜索/下载 |
/api/open/arena/leaderboard |
Arena 排行榜 |
/api/innovator/skills |
Skill 管理 (Admin) |
/api/master/chat |
Master Agent 对话 (SSE) |
/api/auth/* |
认证 (JWT + GitHub OAuth) |
/ws/claude |
Claude 对话 (WebSocket) |
数据存储
data/skills/— 27,000+ Skill 目录data/skills.sqlite— Skill 主数据库 (FTS5)data/benchmark.sqlite— Benchmark 运行数据data/users.sqlite— 用户数据
配置文件
| 文件 | 说明 |
|---|---|
.env |
环境变量 (密钥、目录、CORS) |
server/config.js |
服务器配置 |
server/config/taxonomy.js |
三维标签分类 |
注意事项
- 数据库使用 SQLite (better-sqlite3),无需 PostgreSQL
- 生产环境 Express 同时提供 API 和
web/dist/静态文件 start.sh一键启动: 同步 Skill → 编译前端 → 启动 Server → 启动 Bot- Claude CLI 使用
--dangerously-skip-permissions自动批准模式 - Skill 目录在
data/skills/(代码仓库外部),通过config.skillsDataDir配置
!WARNING Master Agent 必读: 你目前存在一个已知的底层 Tool Calling JSON 解析缺陷。当你试图在
Bashtool 中使用带有多重双引号的复杂命令(例如curl -d '{"id":"lemonv", "name":"Lemonv"}')时,你的 JSON 转义会崩溃并导致你陷入"修复格式"的无限死循环,最终进程会被强制终止退出 (code=143)。 解决方案: 任何需要提交复杂 Payload (如 JSON) 的操作,绝对禁止直接在Bash的 command 参数里写 inline JSON 字符串。 如果你要创建公司或执行类似 API 请求,必须先通过写入简单的 shell 脚本将 JSON 写入一个 /tmp/ 目录下的.json文件(确保你的 JSON 是单行紧凑格式/严格转义换行符,不要包含真回车换行\n,以免引起 SyntaxError: Bad control character 崩溃),然后再通过curl -d @/tmp/payload.json发送。【创建公司/招聘的正确方式示例】 创建 /tmp/lemonv.json,然后执行
Bash:curl -X POST http://localhost:3000/api/company/create -H "Content-Type: application/json" -d @/tmp/lemonv.json