Skip to content

skills 全局安装无法跳过:install/update 强制写入 ~/.agents/skills 并向各 agent 目录散播软链,手动删除后会被 update 装回 #2766

Description

@boilcy

问题概述

lark-cli install(安装向导)和 lark-cli update 会强制把 28 个官方 lark-* skills 全局安装到 ~/.agents/skills/,并软链到所有检测到的 agent skills 目录(~/.claude/skills、~/.grok/skills、~/.commandcode/skills 等)。整个过程没有任何跳过/关闭选项:

  • scripts/install-wizard.js 第 2 步硬编码 npx -y skills add <SKILLS_REPO> -y -g(-g 全局安装、-y 非交互),唯一的跳过条件是 npx skills ls -g 输出里已存在 lark- 行;
  • lark-cli update 内部固定执行 skills 同步(cmd/update.runSkillsAndState / internal/selfupdate.FetchSkillsIndex),没有"只更新 CLI 本体"的模式;
  • 环境变量 LARKSUITE_CLI_NO_SKILLS_NOTIFIER 只关闭 "skills 有更新" 的提醒文案(与 NO_UPDATE_NOTIFIER 同组),不阻止安装本身;
  • update --check / doctor 会提示 run: lark-cli update,日常使用中很容易顺手执行 → 手动删除的 skills 被完整装回。

对不需要全局 skills 的用户(例如只想在某个项目里偶尔用飞书能力、或由 agent 按需读 lark-cli skills read 内嵌内容)来说,这是持续的侵扰:不希望这些 skill 出现在全局 skill 列表里,但只要升级就又回来了。

复现

  1. 执行 lark-cli install 或 lark-cli update
  2. 观察:~/.agents/skills/ 出现 28 个 lark-* 目录;各 agent skills 目录出现 28 个同名软链(我机器上 3 个 agent 目录共 84 个)
  3. rm -rf ~/.agents/skills/lark-* 并删掉对应软链
  4. 再执行 lark-cli update → 28 个 skills 及全部软链原样装回

已验证普通命令不会触发安装(--help、doctor、skills list/read、config show、update --check、只读 api 调用均无写入),触发点仅 install 与 update;postinstall(scripts/install.js)只下载二进制、不碰 skills。但 update 是日常命令(版本提示不断引导执行),所以感知上就是"经常性地被装回来"。

(环境:lark-cli 1.0.95,pnpm 全局安装,Linux;update --check 当前提示 1.0.96 可用)

附带问题:手动清理后的残留

用户手动删除后,安装链路不会清理关联状态,留下孤儿数据:

  • ~/.agents/.skill-lock.json 中 28 条 lark-* 记录仍在(安装时经外部 skills CLI 写入),与磁盘状态不一致
  • 各 agent skills 目录中 28×N 个悬空软链,指向已删除的 ~/.agents/skills/lark-*

期望的卸载路径应一并处理:目录 + 软链 + lock/state 条目。

期望(按实现成本排序)

  1. 跳过开关:lark-cli update --skip-skills(或 --cli-only),和/或环境变量 LARKSUITE_CLI_NO_SKILLS_INSTALL=1,和/或 ~/.lark-cli/config.json 配置项
  2. update 时尊重用户已删除的 skills:不静默重装(当前 skills-state.json 只记录版本快照,没有"用户已移除"标记)
  3. 提供 lark-cli skills uninstall(或类似命令)做完整清理:skill 目录 + agent 软链 + skills-state.json / .skill-lock.json 条目,而不是让用户手动 rm
  4. 安装位置可选:不要硬编码 -g,允许全局 / 项目级安装二选一(至少在向导里询问)

相关 issue

谢谢!CLI 本身(typed commands / skills read 内嵌文档 / --jq)非常好用,skills 自动安装这块希望能给用户选择权。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain/coreCLI framework and core libraries

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions