原地管理文件,以及何时联网
每个 agent 的配置在哪
Section titled “每个 agent 的配置在哪”每个 agent 都把配置放在各自的位置。Claude Code 从 ~/.claude/skills/ 读取 skill,从 ~/.claude.json 读取 MCP server。Codex 从 ~/.codex/config.toml 读取 MCP server,格式为 TOML。管理工具完全可以把这些配置全部导入自己的存储,再写回各处。但这样一来,每项设置都有两份,你无法分辨 agent 实际读取的是哪一份。
HarnessKit 怎么做
Section titled “HarnessKit 怎么做”- 扫描。启动时,HarnessKit 读取每个已检测到的 agent 在每个范围中的文件:全局,以及你添加的每个项目。每次切回桌面应用的窗口时,它都会再扫描一次;Web 模式在页面加载时扫描。
- 原地修改。你执行安装、启用、禁用或删除操作时,HarnessKit 修改的是该 agent 自己的文件。
- 记录无处存放的信息。skill 的来源、审计结果和你的项目,都存入 HarnessKit 的数据库。
禁用最能体现这一点。只要 agent 自身有禁用机制,各类扩展就使用 agent 的机制:
| 类型 | 禁用时磁盘上的变化 |
|---|---|
| skill | SKILL.md 改名为 SKILL.md.disabled。单个文件形式的 skill(<name>.md)改名为 <name>.md.disabled。Hermes 则将其记入 ~/.hermes/config.yaml 的 skills.disabled 列表。 |
| MCP server 或 hook | 若 agent 有自带的开关,就使用该开关。若没有,HarnessKit 会删除这条配置,并在数据库中保留一份快照,即这条配置的原样副本。 |
| plugin | 修改 agent 的 plugin 设置,或为 manifest 或 plugin 文件改名,加上 .disabled。 |
| Agent-first CLI | 与它配套的 skill 和 MCP server 按上述方式禁用。CLI 自身的开关状态保存在 HarnessKit 的数据库中,二进制文件保持不变。 |
在应用中,一行的开关作用于这一行中的每一份副本,跨越不同的 agent 和范围。在项目中禁用一个 MCP server,全局的同名 server 也会一并禁用。
有些 agent 可以用环境变量更改目录位置,HarnessKit 读取的是同一组变量:DeepSeek Harness 的 DSH_HOME 和 DSH_AGENTS_HOME,Grok Build 的 GROK_HOME,PenguinHarness 的 PENGUIN_HOME,Pi 的 PI_CODING_AGENT_DIR,以及 OpenClaw 的 OPENCLAW_STATE_DIR、OPENCLAW_CONFIG_PATH 和 OPENCLAW_WORKSPACE_DIR。桌面应用不会导入 login shell 的环境变量,因此写在 shell 配置文件中的变量,只对从该 shell 启动的 hk 和 hk serve 生效。
HarnessKit 存储的内容
Section titled “HarnessKit 存储的内容”文件夹~/.harnesskit/
- metadata.db 数据库,单个 SQLite 文件
- metadata.db.backup-vN 每次 schema 升级前创建的完整副本
文件夹kits/ 每个保存的工具集一个
.hk-kit.zip- …
- web-token
hk serve校验的 token
主表中,每个扩展在每个 agent、每个范围下各占一行,记录来源、更新状态、信任评分和禁用时保留的快照。其他表存放审计发现的问题、你的项目、隐藏的扩展、agent 设置、自定义配置路径和工具集。
测试时覆盖主目录的方法,请参阅参与贡献。
哪些时候会联网
Section titled “哪些时候会联网”| 时机 | 访问 | 原因 |
|---|---|---|
| 启动时 | 桌面应用:最新 GitHub release 里的 latest.json。Web 模式:GitHub API 上最新 release 的地址。 | 检查 HarnessKit 是否有新版本。 |
| 每次启动 | Google Fonts | 加载界面字体。 |
| 打开概览页时 | raw.githubusercontent.com 上的提示文件 | 显示每日一帖。 |
| 扫描时 | 先在 skills.sh 搜索,再对匹配的仓库运行 git ls-remote,只向仓库询问最新 commit,不下载内容 | 查询新发现的 skill 的来源。HarnessKit 会发送 skill 的名称。首次启动时,会查询所有未记录来源的 skill。 |
| 点击检查更新时 | 对每个来源仓库运行 git ls-remote,访问 skills.sh,再对有新 commit 的仓库做一次浅 git clone | 将你的副本与最新 commit 比较,并确认该 skill 仍在仓库中。 |
| 使用市场时 | skills.sh、Smithery、add-skill.vercel.sh 上的审计服务,以及 GitHub(获取 star 数、README 和原始文件)。MCP server 的图标从 Smithery 列出的地址加载。桌面应用只从 GitHub 和 Smithery 加载图片,Web 模式没有此限制。 | 显示条目、搜索结果、第三方审计和 CLI 详情。 |
| 从市场或 Git 安装、更新 skill 时 | 对仓库运行 git clone | 下载你要安装的内容。 |
更新由第三方 skills CLI 安装的 skill 时 | skills update 或 npx --yes skills update,后者可能会从 npm 下载这个 CLI | 由该 CLI 更新 skill 及其自己的 lockfile。 |
HarnessKit 没有遥测,也没有使用统计。
crates/hk-core/src/manager.rs决定每种扩展在启用和禁用时对磁盘做哪些修改。crates/hk-core/src/store/schema.rs定义数据库的表,并让这个文件只有所有者能访问。crates/hk-core/src/adapter/每个 agent 一个文件,写明它读取哪些目录,以及哪些环境变量可以更改这些目录。crates/hk-desktop/src/commands/extensions.rs执行扫描时的 skills.sh 查询和检查更新。crates/hk-desktop/tauri.conf.json设置更新地址,以及应用窗口可以访问的主机。