CLI-Hub 包管理器与社区生态
学习目标
- 理解 CLI-Hub 的注册表架构与多安装源支持
- 掌握
cli-hub-meta-skill的 Agent 自主发现模式 - 了解双 Deck 设计和实时 E2E 检查机制
- 了解多平台分发策略
前置知识
本章涉及插件系统的通用分发知识,建议先阅读:
下文直接聚焦 CLI-Hub 的具体实现。
项目实践
CLI-Hub 定位
CLI-Hub 是 CLI-Anything 生态的包管理器,让 Agent 和人类用户可以浏览、搜索、安装 40+ CLI Harness 以及社区第三方 CLI。
pip install cli-anything-hubcli-hub list # 浏览注册表cli-hub search image # 搜索关键词cli-hub install gimp # 安装 CLIcli-hub launch gimp # 启动 CLI架构概览
cli-hub 是一个独立的 Python CLI(cli_hub.cli:main),依赖 click 和 requests。
多安装源支持
CLI-Hub 支持四种安装源:
| 安装源 | 命令 | 示例 |
|---|---|---|
| pip | pip install cli-anything-* | cli-anything-gimp |
| npm | npx skills add ... | cli-hub-meta-skill |
| brew | brew install ... | 系统级工具 |
| bundled/system | 预装检测 | ffmpeg、libreoffice |
注册表条目中记录了每个 CLI 的安装方式,cli-hub install 根据元数据选择正确的安装命令。
双 Deck 设计
CLI-Hub 前端(Web 和 CLI)将 CLI 分为两类展示:
| Deck | 内容 | 来源 |
|---|---|---|
| CLI-Anything CLIs | 项目生成的 40+ Harness | Monorepo 内 skills/ 目录 |
| Public CLIs | 社区第三方 CLI | public_registry.json |
这种分离让用户区分”官方生成的 CLI”和”社区贡献的 CLI”。
cli-hub-meta-skill:Agent 自主发现
cli-hub-meta-skill 是一个特殊的元技能,安装后让 Agent 自主在 CLI-Hub 中发现和安装 CLI:
npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill -g -y安装后,Agent 可以执行:
Find appropriate CLI software in CLI-Hub and complete the task: edit this photoAgent 的流程:
- 读取元技能指令
- 调用
cli-hub search浏览可用 CLI - 选择合适的 CLI 并安装
- 读取该 CLI 的 SKILL.md 了解用法
- 执行任务
这是 Agent 自主引导 的典型案例——无需人类预先安装 CLI,Agent 自行发现和安装所需工具。
注册表数据模型
注册表条目包含:
| 字段 | 用途 |
|---|---|
name | CLI 唯一标识 |
description | 一句话描述 |
install_source | pip / npm / brew / bundled |
install_command | 安装命令 |
skill_md | SKILL.md URL 或本地路径 |
visit_count | 访问统计 |
实时 E2E 检查
CLI-Hub 的 CI 运行实时端到端检查:
- 真实安装流程(pip install + npm skills add)
- 真实更新和卸载流程
- 跨 pip 和 npm 两种包管理器的验证
这确保了注册表中的安装命令始终可用。
多平台分发
CLI-Hub 元技能在多个 Skill 平台分发:
| 平台 | 地址 |
|---|---|
| NPX Skills | npx skills add HKUDS/CLI-Anything --skill cli-hub-meta-skill |
| ClawHub | clawhub.ai/yuh-yang/cli-anything-hub |
| SkillHub | skillhub.club/web/skills/itsyuhao-cli-anything-hub |
| SkillHub.cn | skillhub.cn/skills/cli-hub-meta-skill |
问题与规避
| 问题 | 规避策略 |
|---|---|
| 注册表条目过时 | 实时 E2E 检查确保安装命令可用 |
| Agent 选择了不合适的 CLI | SKILL.md 描述提供足够信息供 Agent 判断 |
| pip/npm 安装失败 | 实时 E2E 检查提前发现 |
| 缓存的注册表数据被意外修改 | v0.2.0 修复:注册表条目拷贝后再 _source 标记 |
设计取舍
独立包 vs 内置功能
选择:CLI-Hub 是独立的 pip 包(cli-anything-hub),不是 CLI-Anything 插件的内置功能。
原因:
- 独立的包可以独立更新和发布
- 用户可能只想使用 CLI 生态而不生成新 CLI
- 包管理器有自己的依赖(requests),不应污染插件
双 Deck vs 单一列表
选择:区分 CLI-Anything CLIs 和 Public CLIs。
原因:
- 用户需要区分”官方生成”和”社区贡献”的质量保证级别
- 官方 CLI 有 2330 项测试保障,社区 CLI 质量不一
- 允许社区扩展而不混淆来源
参考来源
- 源码验证:
cli-hub/setup.py+cli-hub/cli_hub/ - 源码验证:
cli-hub-meta-skill/SKILL.md - README 新闻:CLI-Hub v0.2.0 多安装源支持