技能市场
SayClaw 技能市场是一个社区驱动的应用分发平台,用户可以浏览官方或社区发布的配置包和技能,一键安装到自己的 AI 实例,无需任何手动操作。
应用类型
| 类型 | 说明 | 安装目标 |
|---|---|---|
配置包 (config_pack) | AI 人设、行为风格定义(SOUL.md + AGENTS.md) | 覆盖实例 workspace 根目录 |
技能 (skill) | 功能扩展插件,如搜索、记忆、部署等 | 写入 workspace/skills/<name>/ |
安装流程
用户点击「+ 安装」
↓
POST /api/v1/me/marketplace/:id/install
1. 校验用户已绑定实例
2. 防重复:UNIQUE (user_id, item_id)
3. INSERT marketplace_installs (status='pending')
4. INSERT task_queue { type: "apply_marketplace_item" }
↓(Scheduler Worker < 10 秒自动执行)
apply_marketplace_item job
5. 读取应用文件列表(files JSON)
6. 逐文件 SSH 写入实例对应路径
7. 清除 session 缓存(立即生效)
8. 重启实例服务(fuser -k + systemctl start)
9. 更新 status='done',安装计数 +1
↓(失败时)
自动重试(最多 3 次)→ 仍失败 → status='failed'
官方预置应用(12 个)
配置包
| 图标 | 名称 | 说明 |
|---|---|---|
| 🛠️ | 小强官方人设包 | SayClaw 标准人设,有温度、有主见、先自己解决问题 |
| ⚡ | 极简助手人设 | 轻量简洁风格,适合高效场景 |
技能包
| 图标 | 名称 | 说明 |
|---|---|---|
| 🧠 | agent-memory | AI 长期记忆管理,跨会话保存重要信息 |
| 🔍 | find-skills | 搜索和发现可用技能列表 |
| ✨ | gemini-assist | 集成 Google Gemini 模型,提升多模态能力 |
| 🐙 | github | GitHub 仓库操作:创建、搜索、提交代码 |
| 🌐 | multi-search-engine | 同时调用多个搜索引擎 |
| 📈 | self-improving | AI 自我优化,根据反馈改进对话质量 |
| 🔎 | tavily-search | Tavily 智能搜索,专为 AI 优化 |
| 🚀 | vps-web-deploy | VPS 网页快速部署 |
| 🔄 | oc-skill-refresh | 将 workspace 技能同步推送到远程实例 |
| 🤖 | change-model | 快速切换 AI 模型 |
数据库表结构
marketplace_items
CREATE TABLE marketplace_items (
id VARCHAR(36) NOT NULL PRIMARY KEY,
type ENUM('config_pack','skill') NOT NULL,
title VARCHAR(100) NOT NULL,
description TEXT,
icon VARCHAR(20) DEFAULT '📦',
author_email VARCHAR(100) DEFAULT '[email protected]',
files JSON NOT NULL, -- [{path, content}]
tags VARCHAR(255),
install_count INT NOT NULL DEFAULT 0,
is_official TINYINT(1) NOT NULL DEFAULT 0,
is_active TINYINT(1) NOT NULL DEFAULT 1,
created_at DATETIME(3),
updated_at DATETIME(3)
);
files JSON 结构:
[
{ "path": "SOUL.md", "content": "..." },
{ "path": "AGENTS.md", "content": "..." },
{ "path": "skills/weather/SKILL.md", "content": "..." },
{ "path": "skills/weather/scripts/run.sh","content": "..." }
]
路径决定写入位置:根目录文件(SOUL.md 等)直接写入 workspace;
skills/前缀的文件写入workspace/skills/下。
marketplace_installs
CREATE TABLE marketplace_installs (
id VARCHAR(36) NOT NULL PRIMARY KEY,
user_id VARCHAR(36) NOT NULL,
instance_id VARCHAR(100) NOT NULL,
item_id VARCHAR(36) NOT NULL,
status ENUM('pending','done','failed') NOT NULL DEFAULT 'pending',
error TEXT,
installed_at DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
done_at DATETIME(3),
UNIQUE KEY uk_user_item (user_id, item_id)
);
Portal API
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/v1/marketplace | 浏览列表,支持 ?type=config_pack|skill 筛选 |
GET | /api/v1/marketplace/:id | 应用详情(含 files 预览) |
POST | /api/v1/me/marketplace/:id/install | 一键安装(异步) |
GET | /api/v1/me/marketplace/installs | 我的安装记录 |
Admin API
| 方法 | 路径 | 说明 |
|---|---|---|
GET | /api/v1/marketplace | 查询所有应用(含下架) |
POST | /api/v1/marketplace | 新建应用 |
GET | /api/v1/marketplace/:id | 应用详情 |
PUT | /api/v1/marketplace/:id | 更新应用信息/上架状态/官方标记 |
DELETE | /api/v1/marketplace/:id | 下架(软删除,is_active=0) |
GET | /api/v1/marketplace/:id/installs | 查看安装记录 |
Scheduler 任务:apply_marketplace_item
技能市场安装由 Scheduler Worker 异步执行:
| 字段 | 值 |
|---|---|
| 任务类型 | apply_marketplace_item |
| 触发方式 | 事件驱动(用户点击安装后写入 task_queue) |
| 执行延迟 | < 10 秒 |
| 重试机制 | 失败后自动重试,最多 3 次 |
Payload 格式:
{
"install_id": "uuid",
"instance_id": "oc-ai-jp-2-02",
"item_id": "uuid",
"user_id": "uuid"
}
执行步骤:
- 读取
marketplace_items.files - SSH 写入所有文件到实例 workspace
- 清除实例 session 缓存(
sessions.json→[],删除*.jsonl) fuser -k PORT/tcp+systemctl start SERVICE重启实例- 更新
marketplace_installs.status = 'done' - 更新
marketplace_items.install_count++
Portal 使用入口
用户登录 app.sayclaw.ai → 侧边栏「技能市场」即可浏览和安装。
Admin 使用入口
管理员登录 admin.sayclaw.ai → 「Web 管理 → 应用市场」可进行应用管理。