Tuff 是一个基于 Rust 的命令行工具,用于管理项目自有的编码智能体能力,包括技能(skills)、工具(tools)、钩子(hooks)、MCP 服务器和策略(policies)。其核心目标是让这些能力能够跨不同 harness 使用、随智能体一起发布,并在各处进行治理。
用途
Tuff 面向需要管理编码智能体能力的开发团队。它解决的核心问题是:智能体能力(如技能、工具、MCP 服务器等)分散在不同项目中,格式各异,难以追踪来源、版本和变更。Tuff 将这些能力统一管理,记录安装状态、来源和是否发生变化,并生成每个 harness 所需的格式。
主要能力
- Harness 无关:Tuff 将每个能力以每种编码智能体可读的格式写出,并在 tuff.lock 中记录一次。
- 能力生命周期管理:技能、工具、MCP 服务器、钩子和策略都是项目中的文件。Tuff 记录已安装的内容、来源以及是否变更。可以新建能力,或将现有智能体文件纳入管理而无需重写内容。
- 状态记录:在项目状态中记录来源、版本、作用域、harness、输出路径和干净安装基线。
- 漂移检测:将当前文件与基线比较,使有意的编辑可见,意外的漂移不会被静默忽略。
- 变更处理:接受有意的本地更改,尽可能合并上游更新,并在 CI 中当被追踪能力未处于预期状态时使构建失败。
- 包管理器式工作流:Tuff 像包管理器一样工作,在仓库中维护锁文件。提交后整个团队获得相同设置,无需托管服务。
- 来源支持:能力可来自本地目录、Git 仓库、OCI 注册表或内置 MCP 目录,来源均被记录。
- 作用域:能力可以是项目级或全局级。当两者定义同一能力时,签入仓库的版本优先。
- 打包与发布:将集成背后的技能、工具、钩子和 MCP 服务器打包为一个确定性产物。通过 OCI 发布,按摘要固定,并将同一经过审查的捆绑包部署到每个智能体运行时。
- Harness 原生文件:从确切的已审查产物中提取出 harness 原生文件,例如 .agents/skills/。
- 一次编写,按 harness 输出:在 tuff.toml 中编写一次能力,Tuff 将其转换为每个智能体读取的文件,使用该智能体自己的格式。
- CI 集成:在 CI 中运行检查,在漂移时使构建失败,而不是在发布后才发现。
- 自举技能:Tuff 本身作为一个技能发布。智能体在安装时学习 CLI 和钩子规范,从而可以为你编写清单并运行命令。
- 报告生成:直接从 CLI 生成所有已安装能力、来源和策略状态的完整报告,无需托管服务。
- Tuff Console:团队可在自己的服务器上运行 Tuff Console,展示每个智能体的技能、工具、MCP 服务器、钩子和策略,哪个 harness 运行它们,发生了什么变化,以及在哪个提交中。GitHub Actions 无需密钥即可发布;其他 CI 使用 API 密钥。
使用方式
Tuff 以 CLI 形式使用。基本流程包括:在 tuff.toml 中定义能力,运行 Tuff 命令将其转换为各 harness 格式并记录到 tuff.lock。支持从多种来源安装能力,并可通过 CI 检查漂移。Tuff 自身作为技能发布,智能体安装后可学习 CLI 和钩子规范,辅助编写清单和运行命令。
适用场景
- 团队需要统一管理多个编码智能体的能力配置。
- 需要追踪能力的来源、版本和变更,避免配置漂移。
- 需要将能力打包为版本化产物,通过 OCI 发布并部署到不同运行时。
- 需要在 CI 中验证能力状态,确保一致性。
- 需要跨组织查看每个智能体的能力状态和变更历史。
限制
资料中未提供关于收费、价格、平台支持范围、具体性能指标或使用步骤的详细信息。部分功能(如 Tuff Console)需要团队自行在服务器上运行。其他 CI 使用 API 密钥发布报告。