BemoDB 2.0

Back

Agent 的 Skills 可以装在全局(所有项目共享)或者项目内(只有当前项目能用)。大多数人的默认做法是全局安装——方便,一次性配好,所有项目都能用。但全局安装有一个隐蔽成本:上下文窗口的占用。

Agent 在工作时有一个上下文窗口,可以把这理解成 Claude 的工作台——台面大小是有限的。虽然 Skill 默认只加载名称、描述等摘要信息,不会把完整内容全部摊开,但积少成多。全局装了四五十个 Skill 之后,光是这些摘要加在一起也会占掉不少空间。更大的问题是误触发:Claude 一旦判断某个 Skill 跟当前任务相关,就会把完整内容加载进来。全局 Skill 越多,被误触发的概率越大,宝贵的上下文就被不相关的 Skill 蚕食了。

只在项目内安装真正需要的 Skills,工作台上就只摆当前用得到的资料。

用软链接替代复制粘贴#

确定了”项目级安装”这个方向之后,下一个问题是:多个项目可能用到同一个 Skill,怎么管理?

最容易想到的做法是复制粘贴——把 Skill 目录拷到每个项目里。但这样做的代价是维护成本线性增长:更新要同步 N 份、修 bug 要改 N 处、不同项目的版本还会逐渐分叉。

软链接提供了另一种选择。可以把软链接理解成快捷方式——文件本体只有一份,但你可以在很多地方创建指向它的链接。改了本体,所有链接指向的内容同步变化。

具体的目录结构可以这样搭:

第一步:把 Skill 源文件集中存放。 在电脑上找一个固定位置,把所有 Skills 的原件放在里面。它可以是一个 git 仓库,也可以是一个普通目录。

~/.agents/skills/        ← 中央仓库,存放所有 Skill 原件
  ├── baoyu-design/
  ├── blog-writer/
  ├── impeccable/
  └── ...
plaintext

第二步:在项目里创建软链接,指向中央仓库。 项目内不存放 Skill 实体,只放链接。

my-project/
  .claude/skills/
    baoyu-design     →  ~/.agents/skills/baoyu-design
    blog-writer      →  ~/.agents/skills/blog-writer
plaintext

第三步(可选):如果用了 Codex 等多端工具,还可以加一层桥接。

.claude/skills  →  .agents/skills
plaintext

这样 Claude Code 和 Codex 都能通过各自的约定路径找到同一批 Skills。

这套结构的核心收益有两个:

更新只需一次。 如果中央仓库是 git 管理的开源项目,一条 git pull 之后,所有链到这个 Skill 的项目自动拿到最新版本。

修了 bug 可以直接反哺。 在任何一个项目里让 Agent 修改 Skill,改的其实是中央仓库里的原件。修复可以直接 commit 并提 PR 回馈开源社区。

把自己从命令里解放出来#

看到这里可能会有一个顾虑:ln -s 的语法记不住。

但在这个场景里,你并不需要记住命令。直接告诉 Agent 就好:

帮我把 baoyu-design 这个 skill 链到当前项目 看看这个项目装了哪些 skill,哪些是链接、哪些是实体 删掉当前项目里 blog-writer 的链接

Agent 会自己完成路径检查、创建链接、验证结果。你只需要说清楚要做什么,具体的命令拼写、路径解析、错误处理全交给 Agent。

这不是”偷懒”——在一个由 Agent 驱动的开发环境里,把环境维护工作交给 Agent 是合理的分工。你在配置 Agent 的工作环境,Agent 来执行配置动作。

哪些值得落地#

回到实际使用场景,并不是文章里的每一点都需要照搬。以下是几个可以直接用的:

项目级优先,全局兜底。 Claude Code 会同时加载全局和项目级的 Skills。高频通用的 Skill(如 writecheckhunt)可以留在全局,项目专属的 Skill(如博客项目的 blog-writer、设计项目的 baoyu-design)放在项目级。这样可以兼顾便利性和上下文效率。

软链接管理交给 Agent。 不需要手动敲 ln 命令,也不需要一个一个去检查链接是否还活着。让 Agent 完成安装、卸载、审计、更新,你只负责决策。

如果 Skill 来自开源仓库,保持 git 管理。 这是文章里最有价值的一个细节:中央仓库如果是 git clone 的,更新和贡献都变得自然。即使不打算给上游提 PR,git pull 也比手动替换目录安全得多。

固化成一个 Skill#

这套流程涉及多个步骤——检查源仓库是否存在、创建软链接、验证链接有效性、审计当前项目的 Skill 结构、清理死链。每次靠口头描述虽然可行,但不够稳定。

把它固化成一个 Skill 之后,管理工作就变成了几条清晰的指令:

  • 安装:从中央仓库软链接一个 Skill 到当前项目
  • 卸载:删除项目里的软链接,不影响原件
  • 审计:列出当前项目的 Skill 来源(项目实体 / 项目链接 / 全局兜底)
  • 更新:对 git 管理的源仓库执行 git pull
  • 初始化:帮新项目搭好 .claude/skills 的桥接结构

固化之后的另一个好处是:Skill 里可以写清楚你的目录约定(中央仓库在哪、命名规范是什么、哪些 Skill 全局就够了),后续任何 Agent 执行这些操作时都有统一规则可循,不会因为会话不同而产生不一致。

最后一句话#

Skills 管理的核心矛盾不是”怎么装”,而是”装了之后如何维持可维护性”。软链接解决的是多项目共享同一份原件的问题,Agent 自动化解决的是维护动作的执行成本问题。两条线放在一起,就是一个可持续的 Skills 工作流。

Agent Skills 的软链接管理方案
https://bolaxious.cn/blog/2026/tech/skill-management-symlink
Author Bolaxious
Published at June 25, 2026