跳转到内容

多平台插件/技能系统架构

学习目标

  • 理解 CLI-Anything 的跨平台插件架构设计
  • 掌握 Plugin / Skill / Command 三种分发格式的对比
  • 了解核心方法论统一的实现方式
  • 识别社区贡献与官方维护的边界

前置知识

本章涉及插件系统的通用设计,建议先阅读:

下文直接聚焦 CLI-Anything 的多平台实现。


项目实践

六种平台入口

CLI-Anything 支持 6+ 种 AI 编程助手平台,每种有独立的分发格式:

平台分发格式安装路径入口文件
Claude CodePlugin~/.claude/plugins/cli-anything/.claude-plugin/manifest.json + commands/*.md
CodexSkill$CODEX_HOME/skills/cli-anything/codex-skill/scripts/install.sh
OpenCodeCommands~/.config/opencode/commands/opencode-commands/*.md + HARNESS.md
PiExtension~/.pi/agent/extensions/cli-anything/.pi-extension/cli-anything/install.sh
OpenClawSkill~/.openclaw/skills/cli-anything/openclaw-skill/SKILL.md
QodercliPlugin~/.qoder.json 注册qoder-plugin/setup-qodercli.sh
GitHub Copilot CLIPluginCopilot 插件目录copilot plugin install ./cli-anything-plugin

核心方法论的统一

所有平台入口最终指向同一份 HARNESS.md

设计关键:平台特定的安装脚本只是将文件拷贝到正确位置。核心方法论(HARNESS.md、commands、guides、templates)在所有平台间共享。

三种分发格式对比

Plugin 格式(Claude Code、Qodercli、Copilot CLI):

  • 使用 .claude-plugin/ 或等效目录
  • 命令定义是 .md 文件,包含 Markdown 指令
  • 通过平台特定的命令发现机制加载

Skill 格式(Codex、OpenClaw):

  • SKILL.md 文件,YAML frontmatter + Markdown 体
  • 通过触发短语或显式调用激活
  • Codex 使用 install.sh 安装到技能目录

Command 格式(OpenCode):

  • .md 文件,拷贝到 commands 目录
  • 每个文件定义一个 slash 命令
  • HARNESS.md 必须与命令在同一目录

安装脚本模式

每种平台都有对应的安装脚本:

脚本用途
cli-anything-plugin/scripts/setup-cli-anything.shClaude Code 手动安装
codex-skill/scripts/install.shCodex 技能安装
.pi-extension/cli-anything/install.shPi 扩展安装(支持 --uninstall
qoder-plugin/setup-qodercli.shQodercli 插件注册

这些脚本的共同模式:

  1. 将核心文件拷贝到平台特定的发现路径
  2. 确保 HARNESS.md 在命令可引用的位置
  3. 提供 --uninstall 反向操作

社区贡献的边界

README 中标注了平台支持的成熟度:

标识含义平台
无标注官方维护Claude Code、Codex、OpenCode
Community社区贡献Pi、OpenClaw、Qodercli、Copilot CLI
Experimental实验性Codex、Goose、OpenCode

贡献流程:新平台支持通过 PR 添加到仓库,遵循 opencode-commands/ 的参考实现模式。

命令兼容性

不同 Claude Code 版本的命令入口形式:

  • 首选:/cli-anything(主入口点)
  • 旧版本:/cli-anything:cli-anything(确认插件已加载后)
  • 子命令保持 :subcommand 形式(如 /cli-anything:refine

问题与规避

问题规避策略
平台特定格式碎片化核心方法论(HARNESS.md)共享,仅入口格式不同
社区贡献质量不一标注 Community 标识,实验性标注 Experimental
命令在不同版本中不可用文档中明确标注版本兼容性和回退方案
Windows 路径问题Claude Code Win 用户需 Git for Windows(含 bash + cygpath)

设计取舍

多格式 vs 统一格式

选择:适配各平台原生的分发格式,而非发明统一的 CLI-Anything 格式。

原因

  • 各平台已有成熟的插件/技能发现机制
  • 统一格式需要每个平台额外适配层
  • 适配原生格式降低用户安装门槛

代价:维护 6+ 种安装脚本和目录结构。但核心内容(HARNESS.md、commands、guides)共享,维护成本可控。

选择:安装脚本拷贝文件而非创建符号链接。

原因

  • 跨平台兼容性(Windows 符号链接需要管理员权限)
  • 用户可离线使用(不依赖原始仓库路径)
  • 卸载时只需删除目录

参考来源

  • 源码验证:cli-anything-plugin/ + codex-skill/ + opencode-commands/ + qoder-plugin/
  • 源码验证:各平台安装脚本