CLI 插件
May 31, 2026 · View on GitHub
本期在 12.plugin_cli.md(CLI 插件首期)基础上做体验优化,并引入通用 Skills 系统 作为后续扩展能力的承载。本文只描述「需求」,不涉及技术实现。
实施时同时遵循
docs/dev/00.rules.md。
1. 目标与背景
- 首期 CLI 插件已上线:用户可以从 npm 装 CLI、由 AI 调用、走交互式登录。
- 实际使用中暴露两类问题:
- 流程上:npm 安装是阻塞式的,弹窗必须等到结束,多个 CLI 串行装、用户被强制等待。
- 入口上:让用户自己找 npm 包名门槛高;用户更习惯丢一个文档链接或文档正文,由 AI 完成接入。
- 同时观察到「让 AI 按一份既定指引完成某类任务」是高频通用诉求(不止 CLI 安装),值得抽出成可复用的 Skills 系统。
本期的两个核心目标:
- 降低 CLI 接入门槛、消除等待感:删除冷门入口、改后台执行、新增「从官方文档安装」。
- 搭起 Skills 通用框架:以「从官方文档安装 CLI」为首个落地场景验证框架,后续 MCP 接入、自动登录、复杂工作流等都能在同一框架上扩展。
2. 与首期的关系
- 沿用
data_models.ExtensionItem数据模型与kind: "cli"分类。 - 沿用「插件运行时(内置 Node.js / npm)」、
{data_dir}/plugins/cli/{name}/安装目录、cli_data/{name}/数据目录、manifest 结构。 - 沿用「插件与工具」设置页的列表 + 详情双列布局。
- 沿用首期已有的 CLI 调用、登录、隔离 env、审批机制。
- 本期不重做以上能力,只新增 / 调整后文所列需求。
3. 需求列表
3.1 简化 CLI 安装入口
- 删除「添加 → CLI → 从本地目录导入」入口。
- 「添加 → CLI」下保留并新增:
- 从 npm 安装(已有)
- 从官方文档安装(本期新增,见 3.3)
3.2 CLI 安装改为后台执行
- 用户在「从 npm 安装」对话框输入包名、点击确认后:
- 对话框立即关闭,不再阻塞用户。
- 安装任务转入后台执行。
- 后台执行期间:
- 「插件与工具」列表中对应 CLI 项实时显示进度与当前阶段。
- 用户可关闭设置页、切换到聊天页或其他页面,任务不中断。
- 同时可发起多个不同 CLI 的安装任务,互不干扰。
- 任务结束:
- 成功:列表项变为「已启用」状态,可被 AI 调用。
- 失败:列表项给出错误摘要与「重试」「查看详情」入口。
- 中途若需用户介入(包名歧义、需要补充信息、需要二次确认等):见 3.5 的统一规则。
实现层面允许(也鼓励)将本流程作为一个「隐藏会话」托管在 Agent / Skills 体系中——这是与首期相比的关键变化。
3.3 从官方文档安装 CLI
- 「添加 → CLI → 从官方文档安装」打开一个对话框:
- 单一文本输入框(多行,无格式约束)。
- 用户可粘贴任意内容:文档 URL、文档正文(Markdown / 纯文本)、自然语言描述,或上述任意组合。
- 不强制用户区分输入类型,应用提交后由 AI 自行理解与处理。
- 提交后:
- 当前设置页不跳转。
- 安装任务进入后台执行,复用 3.2 的进度、并发、列表反馈规则。
- AI 在后台完成以下事项(用户感知不到细节):识别包名 / 抓取必要文档 / 触发 npm 安装管线 / 生成 manifest / 完成接入。
- 失败兜底:
- 输入无法解析或 AI 无法确定包名时,触发 3.5 的「需要介入」流程,向用户请求补充信息。
3.4 Skills 系统(通用框架)
引入 Skill 作为一等公民概念,表达「一段教 AI 如何完成某类任务的指引」。
3.4.1 单 skill 形态
- 对齐当前事实标准(Claude Code / Codex / Cursor 等同源约定):
- 一个目录 = 一个 skill,目录名即 skill 名(kebab-case)。
- 入口文件为 Markdown(
SKILL.md)。 - 顶部 YAML frontmatter,至少包含:
name:skill 标识。description:触发线索,AI 据此判断"什么时候该用"。
- 正文为给 AI 的自然语言指引,可包含步骤、注意事项、安全约束。
- 可携带配套文件(
references/、scripts/、assets/等),由正文按需引用。
- 不引入 Lemontea 私有字段;后续若需要扩展,以 frontmatter 加字段的方式向后兼容。
3.4.2 存放位置
- 所有 skill 收纳到
{data_dir}/skills/<skill-name>/。 - 内置 skill 与用户 / AI 生成 skill 共用同一根目录,按来源做标识区分(不另开目录层级)。
3.4.3 来源(本期 MVP 三类)
- 应用内置:随应用版本发布,包含"从官方文档安装 CLI"等官方 skill;用户不可删除或修改。
- 用户手动创建:用户可在 Skills 设置页内从零新建一个 skill(编辑 frontmatter + 正文),也可以从本地文件或粘贴内容导入;创建 / 导入后均可查看、启用 / 禁用、编辑、删除。
- AI 运行时生成:AI 在聊天中可主动产出一个新 skill 并落盘;落盘前必须经过用户二次确认(默认行为,不可绕过)。
远程市场 / 远程仓库分发本期不实现,仅在概念上预留扩展位(见 §5)。
3.4.4 触发方式
- 聊天中 AI 自动选择:所有启用的 skill 的
name + description对 AI 可见,AI 在合适时机自行套用。 - 聊天中用户显式调起:用户输入
/<skill-name>显式触发对应 skill。 - 应用内入口静默触发:如 3.3「从官方文档安装 CLI」由设置页入口直接绑定到指定 skill,用户不感知 skill 概念。
3.4.5 管理 UI
- 在「设置」侧栏新增一级页面 Skills,与「插件与工具」并列。
- 页面承载:
- skill 列表(按来源分类显示:内置 / 用户 / AI 生成)。
- 启用 / 禁用 开关(内置 skill 也可被用户禁用,但不可删除)。
- 查看详情(frontmatter + 正文 + 配套文件清单)。
- 用户 skill:新建(在 UI 中直接编辑 frontmatter + 正文)、导入(本地文件 / 粘贴)、编辑、删除。
- AI 生成 skill:编辑、删除。
3.5 隐藏会话与"需要介入"统一规则
3.2 / 3.3 的后台任务在实现上视为一个不出现在聊天列表中的 AI 会话。该会话可能在执行过程中发现自己缺信息、需要权限、或要做关键决定。统一规则:
- 默认情况下用户感知不到这个会话的存在,只看到列表项进度。
- 当会话明确需要用户介入时:
- 全局通知(应用内的统一通知通道)提示用户有任务待处理。
- 用户点击通知,弹出独立小窗承载该会话的对话内容,用户可回复、补充信息或同意 / 拒绝。
- 用户处理完毕后小窗关闭,任务继续在后台执行。
- 该规则适用于所有 3.2 / 3.3 触发的隐藏会话,未来其他 skill 走相同流程。
4. 用户故事
- 想最快接入 CLI 的用户:复制官方文档 URL,粘到「从官方文档安装」输入框,提交后切回聊天页继续干别的;几十秒后看到列表里 CLI 已就绪,向 AI 提问即可使用。
- 熟悉 npm 的用户:知道包名,直接「从 npm 安装」,提交后立刻回到工作流,不再被弹窗卡住。
- 同时接两个 CLI 的用户:先发起 A 的安装,转头发起 B 的安装;两条进度条并行在列表里更新,互不阻塞。
- AI 重度用户:在聊天里直接说「帮我装一个飞书 CLI,文档在 https://...」,AI 自动用上「从官方文档安装 CLI」skill,进入与 3.3 等价的流程。
- 想沉淀重复工作流的用户:手动从本地文件导入一个自己写的 skill(比如「按公司规范生成季度报告」),后续在聊天里 AI 自动用上。
- 被 AI 帮过一次的用户:聊天里完成一次复杂任务后让 AI 「把这套流程记下来」,AI 提示要新建 skill,确认后落盘,下次同类需求自动复用。
5. 不在本期范围
- Skills 的远程市场 / Git 仓库 / HTTP URL 拉取。
- Skills 的版本管理、依赖管理、更新通知。
- Skills 的细粒度权限 / 沙箱模型;本期 skill 走 AI 现有工具权限边界,不另设权限层。
- CLI 插件本身的版本升级 UI(沿用首期:重装即覆盖)。
- CLI 插件 / Skill 的多语言文案系统级重构;新增 UI 文案沿用首期的简体中文 + 英文双语方案。
6. 验收要点
在干净环境下,按以下顺序应可全程走通:
- 「添加 → CLI」下拉中不再出现「从本地目录导入」入口,但出现「从官方文档安装」入口。
- 「从 npm 安装」提交后弹窗立即关闭;列表项可见进度;用户切到其他页或聊天页不中断安装;同时发起第二个 CLI 安装两者并行进行。
- 「从官方文档安装」:
- 仅粘贴一个公开文档 URL,提交后能成功装好对应 CLI;
- 仅粘贴文档正文(无 URL),同样能装好;
- 粘贴一段自然语言描述(不含 URL,也不含完整文档),AI 无法决定时弹出「需要介入」通知 + 小窗,用户补充后任务继续完成。
- 隐藏会话中 AI 需要用户介入时,全局通知出现,点击后弹出小窗,回复后小窗关闭、任务继续。
- 在聊天里说「帮我装一个 XX cli:
」,AI 自动调用「从官方文档安装 CLI」skill,效果与 3 一致。 - 「设置 → Skills」页存在,展示内置 skill(含「从官方文档安装 CLI」)、用户 skill、AI 生成 skill 三类;内置 skill 可禁用但不可删除;用户可从零新建 skill(在 UI 中直接编辑 frontmatter + 正文)、也可从本地文件 / 粘贴导入;用户 / AI skill 可编辑、删除。
- 在聊天里输入
/<skill-name>能显式调起对应 skill。 - AI 在聊天里产出一个新 skill 时,用户必须二次确认才会落盘到
{data_dir}/skills/。