Skip to content

feat(skills): adopt agent-browser-style discovery stub — install a minimal stub, fetch full skill content at runtime via lark-cli skills get #1696

Description

@FradSer

Feature Request

Summary: 采用 agent-browser 式的 discovery stub 设计——skills add 只装一个极简 stub SKILL.md,运行时通过 lark-cli skills get <domain> 动态拉取当前 CLI 版本对应的完整 skill 内容,从根上解决 #1465 / #1385 / #1392 的"27 个 lark-* skill 常驻上下文膨胀"问题。

参考实现:https://github.com/vercel-labs/agent-browser

Motivation

#1392 已经精确指出真正痛点:harness(Claude Code / Codex 等)在每次会话启动把所有已注册 skill 的 name + description 注入上下文,progressive disclosure 只对 SKILL.md 正文 + references 生效,对启动期的 description 列表不生效。所以 27 个 lark-* skill 的 description 全部常驻,这就是 #1465 / #1385 "skill 太多太乱、claude code 提醒描述超限"的根因。

现有的两条解法都有局限:

agent-browser 的 discovery stub 正好绕开这些拦路虎:注册面(stub)和内容面(CLI 动态输出)解耦——stub 极简、占一条 description 的成本几乎为零;真实内容随用随取、永远匹配已安装 CLI 版本、不随 release 变陈旧。

Proposed Design

借鉴 agent-browser,lark-cli 已有(或计划有)skills read 子命令(#1432 引用过 lark-cli skills read <domain-skill>),在此基础上补齐 discovery stub 模式:

  1. 极简 stub 安装npx skills add larksuite/cli 只装一个根 stub(或每域一个 stub),其 SKILL.md 内容就是一个指针——"运行 lark-cli skills get <domain> 加载真实工作流"。stub 的 description 短到几乎不占启动期上下文。
  2. CLI 动态输出 skills 内容(复用/扩展现有 skills 子命令):
    • lark-cli skills list — 枚举可用 skill
    • lark-cli skills get <name> — 输出某 skill 当前版本完整内容
    • lark-cli skills get <name> --full — 含 references/templates
    • lark-cli skills get --all — 输出全部
    • lark-cli skills path [name] — 打印 skill 目录路径
    • 内容来自已安装 CLI 自带的 skill 数据目录(LARK_CLI_SKILLS_DIR 可覆盖),永远匹配当前 CLI 版本。
  3. 运行时流:agent 遇到 stub → 按 stub 指引跑 lark-cli skills get <domain> → CLI 输出当前版本完整指令 → agent 用取回的内容继续。注册与内容解耦。
  4. 配合 open.feishu.cn 真实安装流:把 fix(skills): add single entry skill #1432 关闭理由 2(index-driven 源下 root SKILL.md 短路不生效)作为本方案的前置验证项——stub 模式不依赖 root SKILL.md 短路目录扫描,而是依赖 CLI 自带内容输出,应能在 index-driven 安装流下生效。
  5. 避免新旧并存:配合 skills add 增删一致(解决 fix(skills): add single entry skill #1432 关闭理由 3),切到 stub 模式时移除旧的全量 domain skill 安装。

Why this resolves the related issues

Prior art / references

What I'd ask the maintainers to evaluate

  1. lark-cli skills 子命令现状(read 之外是否已有 get/list/path),能否直接承载 stub 模式。
  2. stub 模式在 open.feishu.cn index-driven 真实安装流下是否生效(fix(skills): add single entry skill #1432 关闭理由 2 的前置验证)。
  3. 是否接受把"opt-in umbrella"(Proposal: ship a single umbrella skill (router + on-demand domain guides) to cut the always-on agent context cost of 26 skills #1392 方向)升级为 discovery stub,作为 【Feature Req】Skills太多太乱,希望有一个统筹的skills,内部渐进式披露到各具体skills #1465 / 就不能做成一个技能吗?找其他技能的时候,列表都被lark污染了! #1385 / Proposal: ship a single umbrella skill (router + on-demand domain guides) to cut the always-on agent context cost of 26 skills #1392 的统一解。

Context

我在 #1465 做的 GLM-5.2 小样本实测结论是"router 对触发准确率无差别、削掉子层描述会更差"——这恰好说明靠精简/自隐 description 来降上下文是有代价的,而 discovery stub 是不牺牲准确率的降上下文路径,值得官方大范围评估。

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain/coreCLI framework and core librariesenhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions