skills - CliSkill 对接海量 Claude Agent Skills
2026年3月18日 下午7:35:13
在 Solon AI 生态中,CliSkillProvider 是一个强大的 CLI 综合技能组件。它不仅提供了基础的终端交互能力,更重要的是,它在设计规范上深度对齐了 Claude Code 的执行协议。
这意味着,您可以直接复用海量的开源 AI 技能插件,快速打造一个类似于 Claude Code CLI 的智能终端应用。
相关依赖包:solon-ai-skill-cli
1、什么是 CliSkill?能干什么?
CliSkillProvider 是一个基于 Pool-Manager(挂载池管理) 模型设计的 AI 技能提供者。它包含两个核心子技能(可以各自独立使用):
- TerminalSkill:充当 Agent 的“手”和“眼”,负责文件操作(ls, read, write)和命令执行(bash)。
- ExpertSkill:负责解析挂载池中的 SKILL.md,为 Agent 提供领域专家的指令指引。
它能干什么?
- 对接生态:直接读取并运行符合 Claude Code 规范的技能包(自动识别逻辑路径 @pool)。
- 文件管理:允许 Agent 在授权工作目录内进行
ls、read、grep以及精准的文件编辑(edit)。 - 安全执行:提供沙盒模式,严禁 Agent 越界访问系统绝对路径,支持通过 undo 撤销错误修改。
- 环境隔离:通过“只读挂载池(Pool)”引入外部工具或脚本,确保核心资源不被篡改。
2、快速开始
第一步:准备技能包
在使用 CliSkill 之前,您需要下载一批符合 Claude Code 规范的技能插件。这些插件目录中通常包含一个 SKILL.md 文件,用于描述工具的用法。
- 推荐资源:https://github.com/zrt-ai-lab/opencode-skills 开源仓库 您可以将其克隆到本地目录。
第二步:集成到 Agent
通过 CliSkill 挂载您的技能目录,并配置 ReActAgent。
// 指向您下载的技能包或项目工作目录
CliSkillProvider cliProvider = new CliSkillProvider("/WORK/my_project")
.skillPool("@skills", "/path/to/opencode-skills");
ReActAgent agent = ReActAgent.of(LlmUtil.getChatModel())
.name("SolonCodeAgent")
.defaultSkillAdd(cliProvider) // 注入技能组
.maxSteps(30)
.build();
// 发起任务:Agent 会自动 ls 目录,阅读代码,并根据需要调用 bash 执行指令
agent.prompt("帮我把当前目录下的所有 .wav 文件转换成 .mp3");
3、标准工具映射说明
CliSkillProvider 内置了以下标准工具,Agent 会根据上下文自动选择:
| 工具映射 | 说明 |
|---|---|
ls | 列出目录内容,支持递归 recursive 树状展示。 |
read | 分页读取文件内容,自动识别编码,支持大文件。 |
grep / glob | 在工作区或技能池中进行全文搜索或通配符文件查找。 |
write / edit | 创建文件或精准文本替换(需提供唯一的 old_str)。 |
undo | 撤销最后一次对特定文件的修改。 |
bash | 执行非交互式 Shell 指令。支持自动将 @pool 路径转为环境变量。 |
skilllist | 列出所有已挂载专家技能池中的可用清单及简要描述。 |
skillsearch | 核心检索:在海量技能库中搜索关键字,支持多词匹配。 |
skillread | 深度阅读:读取特定技能的详细说明书(SKILL.md)及文件别名映射。 |
skillrefresh | 重新扫描挂载池,实时更新专家技能列表。 |
4、进阶使用:多技能池挂载
如果您有多个不同来源的技能包,可以使用 mountPool 进行隔离挂载:
CliSkillProvider cliProvider = new CliSkillProvider("/WORK/my_project")
.skillPool("@media", "/path/to/ffmpeg-skills")
.skillPool("@ops", "/path/to/deploy-scripts");
Agent 在执行时,可以通过虚拟路径(如 @media/extract_audio.sh)安全地访问这些只读资源。
5、沙盒模式
也叫:命令行沙盒模式。启用后(默认是启用的):只有工作区内的文件有写权限,且只能使用相对位置(或虚拟位置)。
cliProvider.getTerminalSkill().setSandboxMode(true);