Kasetto

用一份可版本控制的配置同步多种 AI 编程代理环境。

Star 数
★ 203
最近更新
4 天前
License
NOASSERTION
主语言
Rust

30 秒速览

运行形态
命令行工具
可在哪里用
通用 · 跨平台Codex · Claude Code
费用
免费,无需付费服务
上手难度
中 · 需要几步配置
开始前需要
macOS、Linux 或 Windows私有仓库访问令牌(按需)外部密钥管理器 CLI 会话(选用时)Shell / 命令行网络访问本地文件系统
典型场景
平台团队用共享 kasetto.yaml 和 kasetto.lock 为新工程师复现相同的 Claude Code、Codex 与 Cursor 配置。
不适合
  • 需要图形化环境管理界面的团队
  • 只想临时安装一个技能、不需要配置与锁文件的用户
  • 希望在 Pi 中使用原生 MCP 的用户

这个 Agent 能做什么,适合哪些场景?

Kasetto 是一个用 Rust 编写的命令行环境管理器,负责在多个 AI 编程代理之间分发技能、命令、MCP 配置和指令文件。用户通过 kasetto.yaml 声明来源、版本、目标代理及资源名称,再由 kst sync 拉取内容并转换到各代理的原生目录和格式。它使用 kasetto.lock 记录确切安装结果,普通同步遵循锁文件,--update 更新版本,--locked 可在 CI 中阻止未锁定变更。项目可从 GitHub、GitLab、Bitbucket、Codeberg、Gitea 及自托管实例读取公开或私有仓库,并支持本地、全局和远程配置。部署边界是一台 macOS、Linux 或 Windows 主机上的静态 CLI 二进制文件;它不是托管服务,也不运行模型。

Kasetto 按优先级读取 $KASETTO_CONFIG、当前目录的 kasetto.yaml、全局 config.yaml 中的 source,或全局 kasetto.yaml。kst init 创建配置,kst add 和 kst remove 修改来源并同步或清理资源,kst lock 解析来源并生成 kasetto.lock,kst sync 将 skills、commands、mcps 和 instructions 安装到目标代理目录。同步过程会对内容做哈希并比较锁文件,只处理发生变化的资源;聚合指令文件会以托管区块方式合并。配置可以通过 extends 组合,并能同时面向 Claude Code、Cursor、Codex、Windsurf、Copilot、Gemini CLI 等多个代理。对于 ${kst_...} 占位符,它依次从环境变量、credentials.yaml 或所选外部密钥管理器取得值,再写入代理设置;解析后的秘密不会进入锁文件。kst list 展示已安装资源,kst doctor 检查版本、路径、最近同步状态和损坏的技能,kst clean 删除指定作用域内由 Kasetto 跟踪的资源。

  1. 平台团队用共享 kasetto.yaml 和 kasetto.lock 为新工程师复现相同的 Claude Code、Codex 与 Cursor 配置。
  2. 同时使用多种编程代理的开发者,通过一次 kst sync 分发同一套技能、命令和指令。
  3. 企业团队从私有 GitHub、GitLab 或自托管代码库发布内部技能包,并用现有访问令牌完成认证。
  4. CI 维护者使用 kst sync --locked 检查环境是否严格符合已提交的锁文件。
  5. 需要共享 MCP 配置但不愿提交令牌的团队,使用 ${kst_...} 从 Vault、1Password 或云密钥服务注入秘密。
  6. 组织、团队和项目分别维护配置,再通过 extends 组合成分层的代理环境。

如何安装或部署这个 Agent?

macOS 或 Linux 可使用独立安装脚本:

curl -fsSL kasetto.dev/install | sh

Windows 可运行:

powershell -ExecutionPolicy Bypass -c "irm kasetto.dev/install.ps1 | iex"

也可以通过 Homebrew 安装:

brew tap pivoshenko/tap
brew trust pivoshenko/tap
brew install kasetto

Windows 的 Scoop 安装方式为:

scoop bucket add kasetto https://github.com/pivoshenko/scoop-bucket
scoop install kasetto

已具备 Rust/Cargo 环境时也可安装 crate:

cargo install kasetto

公共仓库无需文档所述的额外凭据。访问私有仓库时,需要对应主机的环境变量令牌,例如 GITHUB_TOKEN、GITLAB_TOKEN、BITBUCKET_TOKEN 或 GITEA_TOKEN。

如何使用这个 Agent?

在项目目录创建初始配置:

kst init

添加资源来源并立即同步全部技能:

kst add https://github.com/anthropics/skills

也可以只选择指定资源:

kst add https://github.com/example/repo --skill find --mcp github --command review

随后执行同步并查看结果:

kst sync
kst list
kst doctor

团队配置也可以直接从 HTTPS 地址同步:

kst sync --config https://example.com/team-skills.yaml

建议将 kasetto.yaml 与 kasetto.lock 一起提交。需要更新移动引用时运行:

kst sync --update

CI 中可强制使用现有锁文件:

kst sync --locked

这个 Agent 有哪些优点和局限?

优点
  • 一份 YAML 可以统一声明技能、命令、MCP 和指令,并转换到多个代理的原生格式与目录。
  • kasetto.lock 区分可复现同步、显式更新和 CI 锁定检查,适合团队版本控制。
  • 支持多个 Git 托管平台、私有仓库和自托管实例,而不局限于单一代理生态。
  • 秘密值可来自环境、凭据文件或多种现有密钥管理器,并且不会写入 kasetto.lock。
  • 提供 macOS、Linux 和 Windows 静态二进制文件,并支持 JSON 输出和真实退出码。
局限
  • 工作流完全基于 CLI 和 YAML;来源没有记录图形化配置或审阅界面。
  • 首次采用需要维护 kasetto.yaml 和 kasetto.lock,并理解本地、全局、远程配置及 extends 的优先级。
  • Pi 没有原生 MCP 支持,因此为 Pi 同步时会跳过 MCP 来源。
  • 秘密轮换后,普通 sync 不会更新已安装条目,必须显式执行 kst sync --update。
  • 仓库元数据将许可证标为 NOASSERTION,虽然 README 徽章指向 MIT 与 Apache-2.0;采用前应核对实际许可证文件。

这个 Agent 与同类方案有什么区别?

项目将自身与 Vercel Skills 和 Claude Plugins 对比:README 将前者描述为从精选目录安装技能,将后者描述为提供运行时集成;Kasetto 主打的是可版本控制的声明式配置、锁文件,以及跨项目、机器和多个代理的可复现同步。该对比来自项目自身的定位,来源未提供独立基准测试。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Kasetto 当前 70 · 存在缺口 命令行工具免费 ★ 203 4 天前 Rust Codex · Claude Code
Mantishack(Mantis AI) 62 · 存在缺口 命令行工具免费 + 模型费 ★ 504 2 个月前 Rust Codex
Agent Desktop 85 · 表现良好 命令行工具免费 ★ 1.7k 2 天前 Rust —
Browser4 智能浏览器自动化 47 · 缺口较多 命令行工具免费 + 模型费 ★ 1.1k 今天 Kotlin OpenAI API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
70/ 100 五分制 3.5 / 5
信任安全 17/29
可靠稳定 9/14
适用触发 16/18
规范维护 14/18
有效结果 10/13
证据核验 4/8
查看各维度的扣分理由
信任安全17 / 29 · 2.9/5

CI 明确使用只读 contents 权限,Rust 禁止 unsafe,发布物生成 SHA-256;README 也解释了远程配置、凭据来源、密钥注入位置、锁文件及会修改或清理的代理目录。扣分在于未提供运行时代码来核实路径约束、下载内容验证和秘密脱敏;add 会立即同步,clean、remove、self uninstall 等破坏性操作是否逐项确认、备份或可恢复并不明确。依赖使用宽版本范围,GitHub Actions 以版本标签而非提交哈希固定。作者、仓库和安全联系人清楚,但发布者身份仍未经企业注册表验证。

可靠稳定9 / 14 · 3.2/5

README、Cargo 元数据和 CI/发布工作流对名称、版本、二进制、平台及用途的描述高度一致。CI 声明执行格式检查、lint、测试和构建,多平台发布路径也完整;但未提供测试源码、Cargo.lock、安装脚本或外部秘密管理器探测逻辑,无法静态确认依赖始终可用。仅明确了非零退出码、JSON 输出、doctor 和缺失秘密失败,具体诊断消息及失败恢复信息证据不足。

适用触发16 / 18 · 4.4/5

文档覆盖个人、项目、团队、企业、CI、私有仓库和多代理场景,并列出大量代理预设、手动 destination、局部或全局配置、extends、平台安装方式及多种秘密后端。配置查找顺序、命令触发方式和锁定/更新语义十分明确。扣分主要是能力边界只部分说明:Pi 的 MCP 例外和缺失秘密行为有记录,但不同代理对命令、指令和 MCP 转换的完整兼容矩阵及冲突边界未在所给文件中展示。

规范维护14 / 18 · 3.9/5

README 结构清晰,安装、入门、命令、配置、秘密、代理和企业认证均有示例;Cargo 包元数据、双许可证文件和安全报告渠道齐备。发布工作流自动更新版本、锁文件、CHANGELOG、制品和包管理器。扣分在于没有提供实际 CHANGELOG、FAQ、完整限制清单或维护治理文件;kasetto 与 kst 双名称及已弃用 plain 别名虽有解释,仍增加命名面。维护责任可由作者和安全邮箱推断,但未说明备援维护者、响应升级路径或长期治理。

有效结果10 / 13 · 3.8/5

表格、YAML/JSON 示例、命令输出模式、锁文件流程、诊断命令和跨平台代理映射使预期产物可直接使用;声明的单一配置、多代理同步和秘密占位符相对逐工具手工配置具有明确增量价值。扣分在于速度、零漂移、完整转换以及与替代方案的优势主要是 README 声明,所给源码与基准不足以核实;curl-to-shell、外部 CLI 和多后端集成也带来供应链与运维成本,未见量化权衡。

证据核验4 / 8 · 2.5/5

版本、许可证、作者、依赖、CI 权限和发布流程可直接追溯到 Cargo、许可证及工作流,多个文件之间总体相互印证。扣分在于核心同步、合并、哈希差异、秘密处理、路径安全和错误行为缺少实现源码与测试内容,许多产品主张只能追溯到 README;替代方案、性能及兼容性主张虽通常以产品描述呈现,但事实、推断与实测结果未被系统标注区分。

风险与缓解建议
  • 本评估仅依据所给静态文件,未执行二进制、安装脚本、测试或网络操作。
  • 在采用前审查实际源码、Cargo.lock 与安装脚本,并验证远程内容是否按提交或校验和固定以及是否防止路径穿越。
  • 在隔离环境中确认 add、sync、remove、clean、self update 和 self uninstall 的精确写入范围、确认机制、备份与恢复行为。
  • 验证秘密不会出现在日志、JSON 输出、临时文件或错误消息中,并检查各外部秘密管理器的命令调用与权限边界。
  • curl-to-shell、PowerShell 远程执行以及未按提交哈希固定的 CI Actions 应纳入供应链风险审查。
证据充分度:低 评估于 2026年9月25日 审查版本 845402750261
查看完整评分方法 →

常见问题

Kasetto 会调用或运行 AI 模型吗?
不会。来源将它描述为代理环境管理 CLI;它负责拉取、转换和安装资源,而不是模型运行时或托管代理服务。
私有仓库需要怎样认证?
通过主机对应的环境变量令牌认证,例如 GITHUB_TOKEN、GITLAB_TOKEN、BITBUCKET_TOKEN 或 GITEA_TOKEN;同样的令牌也用于远程配置 URL。
秘密会被写入锁文件吗?
不会。秘密在同步时解析并写入代理设置,解析后的值不会进入 kasetto.lock。缺少秘密默认会使同步以非零状态失败,除非传入 --allow-missing-secrets。
如何保证团队成员安装相同版本?
同时提交 kasetto.yaml 和 kasetto.lock。普通 kst sync 遵循锁文件,CI 可使用 kst sync --locked,更新版本时再运行 kst sync --update。
所有目标代理都支持全部资源类型吗?
不是。具体转换能力取决于代理;来源明确指出 Pi 会同步技能、提示模板和 AGENTS.md,但没有原生 MCP 支持,因此 MCP 来源会被跳过。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents