yr.al

川处安 (@leoshen0) on X

2026-09-03 · 原文 ↗ · 本页为存档备份
开源软件开发工具人工智能代理技能管理Rust
作者针对 Skill 全局安装造成上下文污染、Token 消耗增加,以及项目间复制导致版本混乱等问题,开发了开源管理工具 Kitter。它通过统一的本地仓库和软链接,让每个 Skill 只维护一份,并可按项目及 Codex、Claude Code、Cursor 等不同 Agent 精准安装,同时可视化展示 Skill 的使用关系、实际生效情况与 Token 占用。Kitter 提供桌面客户端和独立 CLI,支持管理来自本地、GitHub 和 npx skills 的 Skill,二者共享同一套数据。项目采用 Rust 和 GPUI 开发,已按 Apache 2.0 协议开源并打包三大操作系统,但目前仅 macOS 经过测试。

每天都会冒出来各种高质量(至少看起来)的 Skill,很多时候看到有用的就会顺手装一下试试。

很多人会图方便直接装到全局,一次安装到处都能用。这确实很方便,但这会严重污染上下文。

不管现在做的是什么项目,Agent 都能看到这一大堆 Skill。有些完全用不上,有些功能重叠,还有些甚至互相冲突。带来的不仅是账单爆炸,还会感觉 AI 好像越来越笨了。

所以 Skill 其实不适合全都装在全局。真正每个项目都要用的可能只有几个,剩下的还是应该跟着项目走,做好隔离,各自只加载自己需要的。

但这么装又会遇到另一个问题。

同一个 Skill 可能被复制到好几个项目里,改了一份,其他地方还是旧的。再加上 Skill 的来源本来就很乱,有些从 GitHub 拉,有些通过 npx skills 安装,有些是自己在本地写的。过一段时间以后,连自己都搞不清哪份是最新的、哪些项目装过、现在实际生效的又有哪些。

@dotey 宝玉之前分享过一种做法:把 Skill 统一放在一个目录里,再通过软链接(相当于 Windows 的快捷方式)装到不同项目。

https://x.com/i/web/status/2069632132431929651

我很认同这个思路,我之前也是这么做的。一份 Skill 只维护一次,每个项目又可以只挑自己需要的,基本就是我认为最合理的管理方式。

问题是,手动维护这套东西还是挺麻烦的。

Skill 得自己收集和归档,软链接的命令又实在不常用,我每次都记不住。经常是临时开个 Agent 会话让它帮我处理,或者懒得折腾,干脆又往当前项目里装一份。

而且就算都整理进一个目录,也还是看不出来每个 Skill 是干什么的、装到了哪些项目、每个项目现在到底生效了多少 Skill、占了多少 token。

本来想建立一套干净的管理方式,最后往往还是慢慢乱掉,关键还是这一套管理方式对人来说心智成本太高了,并且非常不直观。

所以我做了 Kitter

Kitter 会在本地维护一个统一的 Skill 仓库。无论 Skill 原来在本地目录、GitHub,还是通过 npx skills 安装,都可以收进来一起管理。

需要用的时候,选中一个 Skill,再选择要安装的项目和 Agent。Kitter 会把仓库里的那一份软链过去。

这样每个 Skill 都只有一份需要维护,每个项目又只会拿到自己需要的组合

在 Kitter 中查看一个 Skill 被哪些项目使用

之前用软链接时,我只能看到那个统一目录里有哪些文件。至于一个 Skill 到底被哪些项目用了,还是得自己挨个找。

Kitter 把这层关系直观的展示了出来。打开一个 Skill,可以看到它被装到了哪些项目、对哪些 Agent 生效。以后更新这份 Skill,所有引用它的项目都会一起生效。

把 Skill 安装到指定项目和 Agent

选好项目以后,可以装到通用的 .agents/skills,也可以只给 Codex、Claude Code、Cursor、OpenCode 等某一个 Agent 使用。Kitter 会处理具体路径和链接。

我还很想知道另一件事:一个项目现在实际用了哪些 Skill、这些 Skill 会占多少的 Token.

项目里生效的 Skill 不一定都经过 Kitter。它可能来自项目目录、用户目录、上级目录、Agent 自己的内置能力或者已经启用的插件。只看 Kitter 安装了什么,得到的并不是完整结果。

所以在 Kitter 里打开一个项目,会看到各个 Agent 当前真正能发现的 Skill,包括那些没有被 Kitter 托管的。

查看项目中各个 Agent 实际生效的 Skill 和 token

这里会显示当前项目生效的所有 Skill,对于每一个 Agent 来说会占用多少的 Token,当我们发现占用太多时,就说明需要治理了。

Kitter 管理了一个 Skill 的整个生命周期,并以友好的可视化界面将这一切呈现了出来。

Kitter 的 Logo 是一只抱着石头的小海獭,小海獭会收集石头来当玩具或者工具,就像我们会收集一堆 Skill 一样,哈哈哈哈哈。

使用 @s1dashu 老师的 Skill 生成,好用,推荐!

https://x.com/i/web/status/2089720502483067016

也可以只使用 Skill 和 CLI

Kitter 有桌面客户端,也有独立 CLI。

如果不想安装客户端,可以直接安装 Kitter 自带的 Skill:

这个 Skill 会教 Agent 使用 Kitter CLI。

之后可以直接让 Agent 帮你完成这些事情,比如:

  • 看看当前机器上的 Skill 是怎么分布的;
  • 把已有 Skill 收进 Kitter;
  • 从 GitHub 添加一个 Skill,并安装到当前项目;
  • 查看当前项目实际生效的 Skill 和 Token 占用;
  • 更新或者卸载已经托管的 Skill。

桌面客户端和 CLI 使用同一套本地数据,按自己习惯选一种入口就行。

对了,项目使用 Rust 和 GPUI 开发,非常的精致小巧,对内存和磁盘的占用几乎可以忽略不计了。

目前三个操作系统都打包好了,但只有 MacOS 是测过的, Windows、Linux 没设备,暂时没测,有兴趣的可以帮忙试试这两个平台🙏🏻

由于目前还没有 Apple Developer ID,macOS 第一次打开时需要在 Finder 里按住 Control 点击 Kitter,再选择「打开」。如果仍然被系统拦截,可以执行:

现已开源 https://github.com/what1f/kitter Apache 2.0 协议。

觉得有帮助的话,希望顺手点个 Star ⭐ 支持一下!

后续还有个 Agent Team 的项目会继续开源,有兴趣的话求个关注!