Merit Protocol 是一个把 Agent skills 变成可审核、可计量、可交易的 Skills Tokens 市场协议:创作者或 Agent 提交符合 agentskills.io 标准的 skill package,平台完成安全审核与访问结算,交易者围绕底层 skill 的调用需求和市场信号交易对应的 Skills Token。
当前仓库是 Solana + Next.js + Fastify + Prisma 的 monorepo,已经打通 web、api、shared、SQLite demo 数据和 Anchor 链上程序的本地联调链路。这版 README 重点说明本地启动、数据库初始化、demo 演示路径和主要 API 入口。
| 路径 | 作用 |
|---|---|
apps/web |
Next.js App Router 前端 demo,包含首页、市场、详情、上传、创作者页、管理台 |
apps/api |
Fastify API,负责 health、solana 配置、auth、skills、creator、admin 路由 |
packages/shared |
前后端共享类型、常量和 API contract |
prisma/schema.prisma |
Prisma schema,默认使用 SQLite,client 输出到 apps/api/generated/prisma |
prisma/dev.db |
本地 SQLite 数据库文件 |
programs/merit_protocol |
Anchor 链上程序 |
examples/merit-agent-access |
Merit 自己的 agentskills.io 接入 skill,内含 Node.js CLI,可供 Agent 安装后自动上传、发现、使用和下载 packages |
docs |
设计、任务拆分和本地演示说明 |
- 后续 Agent 项目 Brief
- 项目简短描述
- Agent Access Layer 与交付模式
- 本地启动与 Demo Runbook
- 本地完整重新部署 Runbook
- Demo 设计稿
- 任务拆分
- 前端 UX 重设计决策
- 首页分页设计
- 推荐
Node.js 24+与npm 11+ - 当前仓库已在
Node v24.12.0、npm 11.6.2环境下核对过安装与 Prisma 初始化命令 - 只有在你要跑 Anchor/链上测试时,才需要额外安装 Rust、Solana CLI、Anchor CLI
npm installcp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env.localapps/api/.env 里最重要的几个字段:
| 变量 | 默认值 | 说明 |
|---|---|---|
HOST |
0.0.0.0 |
API 监听地址 |
PORT |
4000 |
API 端口 |
DATABASE_URL |
留空 | 可选覆盖;默认直接使用 prisma/schema.prisma 里定义的 prisma/dev.db |
DEMO_ADMIN_WALLETS |
空字符串 | 本地 demo 可留空;留空时开发环境允许自动 bootstrap 一个 admin |
SOLANA_CLUSTER |
devnet |
返回给前端的 cluster 配置 |
PROGRAM_ID |
示例 Program ID | 前后端展示使用 |
apps/web/.env.local 里最重要的几个字段:
| 变量 | 默认值 | 说明 |
|---|---|---|
NEXT_PUBLIC_API_URL |
http://localhost:4000 |
Web 调用 API 的基地址 |
NEXT_PUBLIC_SOLANA_CLUSTER |
devnet |
前端展示与钱包连接使用 |
NEXT_PUBLIC_PROGRAM_ID |
示例 Program ID | 前端展示使用 |
npm run db:generate -w @merit/api
npm run db:push -w @merit/api
npm run db:seed -w @merit/api说明:
- Prisma schema 固定在
prisma/schema.prisma - Prisma Client 会生成到
apps/api/generated/prisma - 本地数据库文件默认是
prisma/dev.db db:push负责同步表结构,db:seed会写入一套可直接演示的 marketplace 数据
常用补充命令:
npm run db:studio -w @merit/api
npm run db:migrate -w @merit/apidb:migrate 适合你自己修改 schema 后创建新迁移;只想把现有 schema 同步到本地 demo 库时,优先用 db:push。
推荐开两个终端分别启动,排查日志会更方便:
npm run dev -w @merit/apinpm run dev -w @merit/web也可以直接在根目录一起启动:
npm run dev默认入口:
- Web: http://localhost:3000
- API Health: http://localhost:4000/health
- Solana Config: http://localhost:4000/v1/solana/config
仓库内已经提供一个符合 agentskills.io 基础结构的 Merit 接入 skill:
examples/merit-agent-access
examples/merit-agent-access.zip这个 skill 内置 scripts/merit-agent.js,可在 Node.js 环境中调用当前 Merit API:
node examples/merit-agent-access/scripts/merit-agent.js list --limit 10
node examples/merit-agent-access/scripts/merit-agent.js submit-package ./my-skill.zip
node examples/merit-agent-access/scripts/merit-agent.js use repo-review-copilot --merit 0.1本地开发环境可以用 login --wallet <wallet> 获取 demo session;生产环境需要使用真实钱包签名登录得到的 MERIT_SESSION_TOKEN。Node.js Skills 插件仓库的上传发布由后续发布流程处理。
如果你只启动 apps/web,或者 Web 访问不到 API,前端会自动退回本地 demo 数据,适合快速看视觉、页面结构和产品叙事。
推荐直接访问这些页面:
//market/skills/repo-review-copilot/creator/upload/admin
如果你在初始化数据库后额外执行了 npm run db:seed -w @merit/api,前端会直接展示预置的 creators 和 6 个 listed developer skills。当前 seeded skills 和上传示例统一使用 0.1 MERIT 作为 usage fee。
推荐按这条路径演示:
- 打开
/market,确认 seeded 的 developer skills 已出现 - 打开
/creator,查看预置 creator portfolio - 打开
/admin,确认管理台能读取真实 API 数据 - 打开
/skills/repo-review-copilot或/skills/solana-tx-debugger - 在详情页右侧动作面板模拟一次
use - 如果正在跑 localnet,调用
POST /v1/skills/sync-listed-pools,让 seeded skills 重新注册链上池子并开启交易报价
补充说明:
- 上传页现在只要求提交 agentskills package。选择
.zip后,前端会在浏览器本地解析SKILL.md生成即时 metadata 预览;点击提交安全审核时才触发钱包签名、上传 package,并由后端重新解析和安全校验。 - package upload 和 create skill 都需要钱包 session。开发环境的 API 仍支持 demo verify,方便用脚本拿 session token 做 smoke test。
- 管理台默认用内置 demo admin wallet 调 review / buyout;如果
DEMO_ADMIN_WALLETS留空,本地开发环境会自动允许这个 admin 身份 - 详情页动作面板的 wallet 输入框是可选的,不填时会使用内置 demo user wallet
- 当前
/admin的 buyout 看板只会显示Buyout Watch、Public或累计使用量足够高的 skill;刚新建的 skill 通常不会立刻出现在这个列表里 - 如果你跳过
db:seed,Web 仍然会优先展示真实 API 的空库结果;这时可以改走“上传一条 skill 再审核”的空库演示路径
| 页面 | 路径 | 说明 |
|---|---|---|
| 首页 | / |
分页式协议叙事:Merit Protocol、知识流动性、接入方式、市场概览、精选 Skills Tokens |
| 市场页 | /market |
浏览和筛选可交易 Skills Token 标的 |
| Skill 详情 | /skills/[id] |
价格和买卖优先,展示底层 skill 基本面与 skill ID |
| 创作者页 | /creator |
查看当前钱包 portfolio、收益和状态,属于辅助界面 |
| 上传页 | /upload |
临时人工提交入口;只提交 agentskills package,metadata 从 package 内 SKILL.md 自动提取 |
| 管理台 | /admin |
安全审核关口,重点查看 package、checksum、描述清晰度,并批准/拒绝 |
所有 API 入口都在 apps/api/src/routes。
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/health |
API 健康检查 |
GET |
/v1/solana/config |
返回 cluster、programId、rpcUrl |
POST |
/v1/auth/challenge |
生成钱包登录 challenge |
POST |
/v1/auth/verify |
校验 challenge;开发环境允许 demo 模式不带签名 |
GET |
/v1/skills |
列出 skills,支持 status、category、creatorWallet、q、limit、offset |
GET |
/v1/skills/:idOrSlug |
skill 详情 |
POST |
/v1/skills/package-upload |
钱包 session 下上传 .zip / .tgz / .tar.gz package,后端校验 agentskills.io 结构并生成临时 manifest |
POST |
/v1/skills |
用 packageUploadId 创建待审核 skill;name、description、category、token symbol 以后端解析的 SKILL.md 为准 |
GET |
/v1/skills/:idOrSlug/package |
package download 交付入口;需要 creator/admin 或已结算 usage access |
POST |
/v1/skills/:idOrSlug/review |
审核 skill,支持 approve、reject、pause、list |
POST |
/v1/skills/:idOrSlug/use |
记录一次 skill 使用并完成 demo 分账 |
POST |
/v1/skills/:idOrSlug/buyout |
执行 demo buyout,把 skill 切到公共模式 |
GET |
/v1/creators |
列出已有作品的 creators |
GET |
/v1/creators/:walletAddress/dashboard |
查询某个 creator 的 dashboard |
GET |
/v1/admin/reviews |
查询管理员审核队列 |
admin 相关补充:
GET /v1/admin/reviews可以带walletAddress查询参数POST /review和POST /buyout依赖 demo admin 逻辑- 当
DEMO_ADMIN_WALLETS为空且NODE_ENV=development时,本地环境会允许自动创建 admin 用户,方便演示
npm run build
npm run typecheck
npm run db:generate
npm run db:push
npm run db:seed
npm run db:studio -w @merit/api如果你要继续验证链上部分,再额外安装 Rust / Solana / Anchor 后运行:
npm run test:program