跳到主要内容

技能市场

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-memoryAI 长期记忆管理,跨会话保存重要信息
🔍find-skills搜索和发现可用技能列表
gemini-assist集成 Google Gemini 模型,提升多模态能力
🐙githubGitHub 仓库操作:创建、搜索、提交代码
🌐multi-search-engine同时调用多个搜索引擎
📈self-improvingAI 自我优化,根据反馈改进对话质量
🔎tavily-searchTavily 智能搜索,专为 AI 优化
🚀vps-web-deployVPS 网页快速部署
🔄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"
}

执行步骤:

  1. 读取 marketplace_items.files
  2. SSH 写入所有文件到实例 workspace
  3. 清除实例 session 缓存(sessions.json[],删除 *.jsonl
  4. fuser -k PORT/tcp + systemctl start SERVICE 重启实例
  5. 更新 marketplace_installs.status = 'done'
  6. 更新 marketplace_items.install_count++

Portal 使用入口

用户登录 app.sayclaw.ai → 侧边栏「技能市场」即可浏览和安装。

Admin 使用入口

管理员登录 admin.sayclaw.ai → 「Web 管理 → 应用市场」可进行应用管理。