支持的 agent 和文件位置
HarnessKit 支持 17 个 agent。本页列出每个 agent 把 skill、MCP server、hook 和规则放在哪里,以及禁用其中某一项时 HarnessKit 会执行什么操作。表格由本站的数据生成,这些数据依据 HarnessKit 的 adapter 代码整理,代码中每个 agent 对应一个文件。
所有 agent
Section titled “所有 agent”以 ~/ 开头的路径位于你的主目录下,Windows 上的主目录为 C:\Users\<用户名>\。以 <project>/ 开头的路径位于项目中,以 / 结尾的是文件夹。若 agent 有多个 skill 文件夹,HarnessKit 会安装到列出的第一个。Hermes 例外,skill 会安装到分类文件夹中,详见其小节。以上均为默认路径;若可以用环境变量更改位置,对应 agent 的小节中会注明。
只要 agent 的主目录(见下表)存在,HarnessKit 就视其为已安装。Devin Desktop 还会识别 ~/.devin/extensions/,Pi 则要求 ~/.pi/agent/ 存在。因此,其他工具创建的文件夹也可能让某个 agent 看起来已安装。
有些 skill 文件夹是共享的。多个 agent 都读取 ~/.agents/skills/,各 agent 的小节中注明了是否读取。<project>/.agents/skills/ 也是共享的:HarnessKit 把它列在 Codex、Antigravity、Qoder CN 和 Pi 下,Gemini CLI、Copilot、Grok Build 和 DeepSeek Harness 也会从这里读取 skill。在共享文件夹中禁用或删除一个 skill,所有读取该文件夹的 agent 都会受到影响。
本页不涉及 plugin。哪些 agent 有 plugin、HarnessKit 如何禁用 plugin,请参阅扩展。
| agent | 主目录 | skill 安装位置 |
|---|---|---|
| Claude Code | ~/ | ~/ |
| Codex | ~/ | ~/ |
| Gemini CLI | ~/ | ~/ |
| Cursor | ~/ | ~/ |
| Antigravity | ~/ | ~/ |
| Copilot | ~/ | ~/ |
| Devin Desktop | ~/ | ~/ |
| OpenCode | ~/ | ~/ |
| Hermes | ~/ | ~/ |
| Kiro | ~/ | ~/ |
| Oh My Pi | ~/ | ~/ |
| DeepSeek Harness | ~/ | ~/ |
| Grok Build | ~/ | ~/ |
| Qoder CN | ~/ | ~/ |
| OpenClaw | ~/ | ~/ |
| PenguinHarness | ~/ | ~/ |
| Pi | ~/ | ~/ |
下面每个 agent 的小节列出 MCP、hook 和规则文件及其格式。hook 格式按文件结构的出处命名:若其他 agent 沿用 Claude Code 的文件结构,格式也写作「Claude Code JSON」。
除 Hermes 外,禁用 skill 都是把 SKILL.md 改名为 SKILL.md.disabled,单文件 skill 则把 <name>.md 改名为 <name>.md.disabled。Hermes 的 skill 不改名,HarnessKit 会把它的名称加入 ~/.hermes/config.yaml 的 skills.disabled。MCP server 和 hook 则取决于 agent 自身是否有开关:若有,就使用它的开关;若没有,HarnessKit 会把这一条从 agent 的文件中删除,并在自己的数据库中保存一份快照,即原样的副本。
Claude Code
Section titled “Claude Code”| 主目录 | ~/ |
|---|---|
| skill | ~/<project>/ |
| 共享 skill | 不读取 |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | ~/<project>/Claude Code JSON,使用 Claude Code 的事件名 |
| 规则 | ~/~/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- HarnessKit 只读取
~/.claude.json顶层的mcpServers。claude mcp add默认保存到 local 范围,即同一文件的projects下,HarnessKit 暂不列出这些 server。
| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/TOML,位于 mcp_servers 下 |
| hook | ~/<project>/Claude Code JSON,使用 Claude Code 的事件名 |
| 规则 | ~/~/~/~/<project>/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- 只有 Codex 的全局 skill 安装在共享的
~/.agents/skills/文件夹中。 - 若
config.toml设置了project_doc_fallback_filenames,HarnessKit 会改为按这些文件名查找,不再使用上面 4 个规则文件名。 - HarnessKit 不读取 Codex 自带的 skill 开关,即
config.toml中的[[skills.config]],因此在那里禁用的 skill 仍显示为已启用。
Gemini CLI
Section titled “Gemini CLI”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | ~/Claude Code JSON,使用自己的事件名 |
| 规则 | ~/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- 项目中向下两层文件夹以内的
GEMINI.md,HarnessKit 也会列出。
Cursor
Section titled “Cursor”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | ~/<project>/Cursor JSON,使用自己的事件名 |
| 规则 | <project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- 在 HarnessKit 中,Cursor 只有项目级规则。
- HarnessKit 会列出
.cursor/rules/中的.mdc文件,包括子文件夹中的文件。
Antigravity
Section titled “Antigravity”| 主目录 | ~/ |
|---|---|
| skill | ~/<project>/<project>/ |
| 共享 skill | 不读取 |
| MCP server | ~/JSON,位于 mcpServers 下 |
| hook | HarnessKit 不管理 |
| 规则 | ~/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- HarnessKit 也会在
~/.gemini/antigravity/skills.txt列出的文件夹中查找 skill。 - Antigravity 和 Gemini CLI 都读取
~/.gemini/GEMINI.md。
Copilot
Section titled “Copilot”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/JSON,位于 servers 下 |
| hook | ~/Copilot JSON,使用 Claude Code 的事件名 |
| 规则 | ~/~/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- MCP 文件是 VS Code 用户级的
mcp.json。上面是 macOS 的路径;Linux 上为~/.config/Code/User/mcp.json,Windows 上为~/AppData/Roaming/Code/User/mcp.json。 - HarnessKit 读取
~/.copilot/hooks/中的所有.json文件,新添加的 hook 写入hooks.json。 - HarnessKit 会列出
instructions/文件夹中以.instructions.md结尾的文件,包括子文件夹中的文件。 - HarnessKit 暂不读取 Copilot CLI 的
~/.copilot/mcp-config.json,也不读取项目根目录的.mcp.json。
Devin Desktop
Section titled “Devin Desktop”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/JSON,位于 mcpServers 下 |
| hook | ~/<project>/Devin Desktop JSON,使用自己的事件名 |
| 规则 | ~/~/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- Devin Desktop 原名 Windsurf,因此全局文件夹和部分项目文件仍沿用这一名称。
~/.codeium/windsurf/global_rules.md是旧位置,HarnessKit 仍会列出。- HarnessKit 管理的是 Devin Desktop 中的 Cascade agent。Devin CLI 和 Devin Local 的设置在
~/.config/devin/,HarnessKit 暂不支持。
OpenCode
Section titled “OpenCode”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/JSONC,位于 mcp 下 |
| hook | HarnessKit 不管理 |
| 规则 | ~/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
opencode.json和opencode.jsonc同时存在时,HarnessKit 会从两个文件中读取 MCP server,同名的以.jsonc中的为准,与 OpenCode 的行为一致。写入时,若存在opencode.jsonc则写入它,否则写入opencode.json,全局和项目中均是如此。
Hermes
Section titled “Hermes”| 主目录 | ~/ |
|---|---|
| skill | ~/~/ |
| 共享 skill | 不读取 |
| MCP server | ~/YAML,位于 mcp_servers 下 |
| hook | ~/Hermes YAML,使用自己的事件名 |
| 规则 | ~/ |
| 禁用方式 | skill:把该 skill 的名称加入 ~/.hermes/config.yaml 的 skills.disabled。MCP server:为该 server 设置 enabled: false。hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- HarnessKit 会列出
~/.hermes/skills/下的每个SKILL.md,包括子文件夹中的。其中的分类文件夹仅用于整理 skill。单独安装一个 skill 时,HarnessKit 会询问放入哪个分类;批量安装时,所有 skill 都放入按字母顺序排第一的分类,没有分类则放入local/。 - HarnessKit 也会在
config.yaml中skills.external_dirs列出的文件夹中查找 skill。 - 在 HarnessKit 中,Hermes 没有项目范围。Hermes 本身还会在你信任的项目中读取
<project>/.hermes/skills/和<project>/.agents/skills/中的 skill,HarnessKit 不列出这些 skill。
| 主目录 | ~/ |
|---|---|
| skill | ~/<project>/ |
| 共享 skill | 不读取 |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | ~/<project>/Kiro hook JSON,使用 Claude Code 的事件名 |
| 规则 | ~/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:为该 server 设置 disabled: true。hook:为该 hook 设置 enabled: false。 |
- HarnessKit 读取
~/.kiro/hooks/和<project>/.kiro/hooks/中的所有.json文件,新添加的 hook 写入harnesskit.json。
Oh My Pi
Section titled “Oh My Pi”| 主目录 | ~/ |
|---|---|
| skill | ~/<project>/ |
| 共享 skill | 不读取 |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | HarnessKit 不管理 |
| 规则 | ~/~/~/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:为该 server 设置 enabled: false,并将其名称从 ~/.omp/agent/mcp.json 的 enabledServers 中移除。 |
- HarnessKit 只读取默认 profile,不读取
~/.omp/profiles/下的其他 profile。 - Oh My Pi 本身也会读取
~/.agents/skills/和~/.claude/skills/,但 HarnessKit 不把这两个文件夹列在 Oh My Pi 下。
DeepSeek Harness
Section titled “DeepSeek Harness”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/YAML |
| hook | HarnessKit 不管理 |
| 规则 | ~/<project>/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:在 cordis.patch.yml 末尾由 HarnessKit 管理的那一段中,为该 server 写入 disabled: true。 |
- 每个 MCP server 都是一行名为
@deepseek-ai/dsh-mcp-client的 plugin。HarnessKit 只读取主目录下的 patch 文件,不读取各 profile 自己的 patch 文件。 DSH_HOME可以更改主目录的位置,DSH_AGENTS_HOME可以更改共享的~/.agents/文件夹的位置。
Grok Build
Section titled “Grok Build”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/TOML,位于 mcp_servers 下 |
| hook | ~/<project>/Claude Code JSON,使用 Claude Code 的事件名 |
| 规则 | ~/~/<project>/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:把该 server 的名称加入 ~/.grok/config.toml 的 disabled_mcp_servers。若 server 就定义在这个文件中,还会为它设置 enabled = false。hook:把该 hook 加入 ~/.grok/disabled-hooks。 |
- 嵌套文件夹中的 skill 也会列出,不限于第一层。
- HarnessKit 读取
~/.grok/hooks/和<project>/.grok/hooks/中的所有.json文件,新添加的 hook 写入harnesskit.json。 GROK_HOME可以更改主目录的位置。
Qoder CN
Section titled “Qoder CN”| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/JSON,位于 mcpServers 下 |
| hook | ~/<project>/Claude Code JSON,使用 Claude Code 的事件名 |
| 规则 | ~/~/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 hook:删除该条目,并在 HarnessKit 的数据库中保留一份快照。 |
- HarnessKit 把项目 skill 安装到共享的
<project>/.agents/skills/文件夹,该文件夹也列在 Codex、Antigravity 和 Pi 下。你自行放入<project>/.qoder/skills/的 skill 不会列出。 - HarnessKit 不管理 Qoder CN 的项目级 MCP server。
- HarnessKit 不读取
QODERCN_CONFIG_DIR,只在~/.qoder-cn/中查找 Qoder CN。 - HarnessKit 不读取 Qoder CN 自带的
skills.disabled列表(位于settings.json中),因此在那里禁用的 skill 仍显示为已启用。
OpenClaw
Section titled “OpenClaw”| 主目录 | ~/ |
|---|---|
| skill | ~/~/~/~/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/JSON5,位于 mcp.servers 下 |
| hook | HarnessKit 不管理 |
| 规则 | ~/~/~/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:为该 server 设置 enabled: false。 |
openclaw.json中列出的每个 agent workspace 都有自己的skills/、.agents/skills/和规则文件。上面列出的是默认 workspace 的路径。- 只有 OpenClaw 使用默认的状态文件夹
~/.openclaw/时,HarnessKit 才会为它读取~/.agents/skills/。 - 在 HarnessKit 中,OpenClaw 没有项目范围。
OPENCLAW_STATE_DIR可以更改状态文件夹~/.openclaw/的位置。OPENCLAW_CONFIG_PATH可以更改openclaw.json的位置;未设置OPENCLAW_STATE_DIR时,HarnessKit 安装 skill 所用的skills/文件夹也会随之移动。openclaw.json未指定默认 workspace 时,OPENCLAW_WORKSPACE_DIR可以更改它的位置。HarnessKit 不读取OPENCLAW_PROFILE。
PenguinHarness
Section titled “PenguinHarness”| 主目录 | ~/ |
|---|---|
| skill | ~/ |
| 共享 skill | 不读取 |
| MCP server | HarnessKit 不管理 |
| hook | HarnessKit 不管理 |
| 规则 | ~/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。 |
- PenguinHarness 的每个 agent 都有自己的 skill 文件夹和
AGENTS.md,HarnessKit 全部读取。 - HarnessKit 只把 skill 安装到一个 PenguinHarness agent 的文件夹中:先按项目、再按 agent 的字母顺序排第一的那个。尚无 PenguinHarness agent 时,则没有可安装的位置。
- HarnessKit 暂不读取 PenguinHarness 的 MCP server 和 hook。
- 在 HarnessKit 中,PenguinHarness 没有项目范围。
PENGUIN_HOME可以更改数据文件夹的位置。
| 主目录 | ~/ |
|---|---|
| skill | ~/~/<project>/<project>/ |
| 共享 skill | 读取 ~/ |
| MCP server | ~/<project>/JSON,位于 mcpServers 下 |
| hook | HarnessKit 不管理 |
| 规则 | ~/~/~/~/~/<project>/<project>/<project>/<project>/<project>/ |
| 禁用方式 | skill:把 SKILL.md 改名为 SKILL.md.disabled。MCP server:为该 server 设置 enabled: false。 |
PI_CODING_AGENT_DIR可以更改 agent 文件夹(~/.pi/agent/)的位置。- Pi 会读取嵌套文件夹中的 skill,HarnessKit 只列出直接位于各个 skill 文件夹中的 skill。
- HarnessKit 不读取 Pi 的
settings.json中的skills过滤规则,因此在那里排除的 skill 仍显示为已启用。
crates/hk-core/src/adapter/:每个 agent 一个文件,本页的所有路径都在里面。crates/hk-core/src/adapter/mod.rs定义 adapter trait、配置格式,以及各 agent 的文件会覆盖的默认值。crates/hk-core/src/manager.rs负责禁用和启用 skill、MCP server 和 hook:使用 agent 的原生开关、修改文件名,或删除条目并保存一份快照。src/lib/types.ts中定义了AGENT_ORDER,即 agent 在整个应用和本页中的排列顺序。website/src/data/agent-reference.ts存放本页的数据。配套的测试将这份数据与各 adapter 的 Rust 测试对照:哪些 agent 有 hook、项目级 MCP 文件和项目级 hook 文件,每个 agent 的第一个项目 skill 文件夹,以及哪些 agent 有自己的 MCP 或 skill 开关。它还检查 adapter 读取的每个环境变量是否都写入了对应 agent 的说明。