文档 · 资源库
资源库
magpie 的 资源库 把指令、MCP 服务器、技能、Hooks 和子代理放在一处,再把每一项写进你勾选的每个 Agent,用的是那个 Agent 自己的文件和格式。Agent 像平常一样读这些文件。magpie 不在 Agent 和这些内容之间加任何一层:什么时候用某个技能、某个 MCP 工具或某个子代理,由 Agent 自己决定。
页面有六个标签:指令、MCP 服务器、技能、Hooks、子代理 和 RTK。每一项下面有一排 Agent;勾上就给它,取消勾选就拿走。Agent 重启后读到改动。
存放位置
- 资源库本身是 magpie 配置目录里的
library.json(~/.config/magpie,设置了$XDG_CONFIG_HOME时是$XDG_CONFIG_HOME/magpie)。指令文本和技能文件夹在旁边的library/里。 - 每次改动都会保存资源库,并立刻写进所有 Agent。magpie 记下自己写了什么,所以只会拿走自己写的条目,不动你的。
- 备份。改动前,被替换的文件会复制到同一目录的
backups/,保留最近 30 份。每个标签顶部的 备份 按钮可以打开它们。 - 重新写入。装了新 Agent,或者手动改过它的文件后,
magpie library sync会把资源库重新写进所有 Agent。
magpie library # 资源库给了每个 Agent 什么 magpie library sync # 重新写进各个 Agent
指令
指令是 Agent 每次会话开头都会读到的文字,比如团队规则或代码风格。magpie 把自己的部分写在 Agent 指令文件里的两行标记之间:
<!-- magpie:begin · written by magpie from its Library --> …资源库里的指令… <!-- magpie:end -->
标记以外的内容都是你的,magpie 从不修改。你可以有多组命名的指令,各自给不同的 Agent;一组指令也可以放在你自己的文件里。
| Agent | 文件 |
|---|---|
| Claude Code | ~/.claude/CLAUDE.md |
| Codex | ~/.codex/AGENTS.md(用了 AGENTS.override.md 时写它) |
| Gemini CLI | ~/.gemini/GEMINI.md |
| Antigravity | ~/.gemini/config/GEMINI.md |
| OpenCode | 配置目录里的 AGENTS.md |
| Copilot CLI | ~/.copilot/copilot-instructions.md |
| Goose、Crush、Qwen Code、CodeBuddy | .goosehints、CRUSH.md、QWEN.md、CODEBUDDY.md |
| Droid、Grok、dsh、omp | 各自目录里的 AGENTS.md |
| Pi、OmO | AGENTS.md 和 CLAUDE.md 中先存在的那个 |
目录跟随 Agent 自己的设置:设置了 CLAUDE_CONFIG_DIR 或 CODEX_HOME 时,用它代替默认目录。
MCP 服务器
MCP 服务器要么是一条命令(Agent 启动的程序,比如 npx …),要么是一个 URL(HTTP 或 SSE)。magpie 在每个勾选的 Agent 的 MCP 配置里为每个服务器写一个条目,用那个 Agent 的格式,你在条目里自己加的字段会保留。
| Agent | 文件 |
|---|---|
| Claude Code | ~/.claude.json |
| Codex | ~/.codex/config.toml |
| Gemini CLI | ~/.gemini/settings.json |
| Antigravity | ~/.gemini/config/mcp_config.json |
| OpenCode | opencode.json |
| Cursor | ~/.cursor/mcp.json |
| Copilot CLI | ~/.copilot/mcp-config.json |
| Zed | 它的 settings.json 里的 context_servers |
- 变量。请求头或环境变量里的
${NAME}会按每个 Agent 自己的写法写入。不支持这种写法的 Agent 不会拿到这个服务器,页面会说明原因。 - SSE。Codex、Goose、dsh、Grok、Command Code 和 Zed 用不了 SSE 服务器。Claude Desktop 完全不接受远程服务器。
- 单独关掉工具。Codex、Gemini CLI、Crush、Hermes Agent、Claude Code 和 OpenCode 可以逐个关掉工具,各自写进自己的设置。其他 Agent 拿到的是整个服务器。
- 登录。需要 OAuth 的服务器只在 magpie 里登录一次,之后 Agent 通过 magpie 网关的
/mcp/<name>访问它。 - 只在这台电脑。不想同步到别处的服务器,关掉 同步到其他电脑(
magpie library mcp local <name> on)。
打开 MCP 路由 后,每个 Agent 只拿到一个名为 magpie 的服务器来代替这些条目,命令型服务器由 magpie 为所有 Agent 只运行一份。它默认关闭。
技能
一个技能(Skill)就是一个带 SKILL.md 的文件夹。Agent 先读每个技能的名字和描述,任务用得到时再读其余部分。可以从 GitHub、任意 git 仓库、本机文件夹,或 技能 标签里的市场添加。
| Agent | 目录 |
|---|---|
| Claude Code | ~/.claude/skills |
| Codex | ~/.codex/skills |
| Gemini CLI | ~/.gemini/skills |
| OpenCode | 配置目录里的 skills |
| Cursor | ~/.cursor/skills |
| Copilot CLI | ~/.copilot/skills |
| Goose | ~/.agents/skills |
链接还是副本
Skills 启用方式 决定技能怎么到达 Agent,可以对所有 Agent 设置,也可以在 按 Agent 里单独设置:
- 符号链接(默认)。Agent 的目录链接到资源库里的那份,更新立刻到达所有 Agent。在 Windows 上没有创建链接的权限时,用目录联接(junction)。
- 副本。每个 Agent 拿到一份自己的文件夹,适合不跟随链接的工具。资源库里的技能变了,副本会重新生成。如果 Agent 或你改了某个副本,下次同步会把最新的修改收进资源库,再给其他 Agent。被更新的修改盖过的那份会放进备份。
你自己有同名的技能文件夹时,magpie 不会覆盖它:页面会问你用资源库的还是保留你的。
编辑和更新
- 编辑会在页面上打开技能的文件;保存(或 ⌘S)写入。命令行没有编辑器。
- 更新。打开技能标签时,如果距上次检查已过 12 小时,会检查来自 GitHub 的技能有没有更新(
magpie library skill update立即检查)。你改过的技能不会不问就被替换。 - Skills 放在。技能放进每个勾选的 Agent 自己的目录(默认),或者同时放进
~/.agents/skills,Codex、Gemini CLI、OpenCode、Crush、Droid、Kimi Code 等工具都会读这里。 - 仅本机关闭。一个技能可以只在这台电脑上关闭;从别的电脑同步过来也不会把它重新打开。
子代理
子代理是主 Agent 可以把任务交给它的帮手,有名字、描述和提示词。magpie 把它写成一个文件,放进每个勾选的 Agent 的子代理目录。主 Agent 读每个子代理的 描述,自己决定什么时候调用,所以描述要直白地写清它做什么、什么时候该用它。
- 名字:2 到 50 个小写字母、数字和
-。有几个名字保留不能用,比如default和main。 - 描述:必填,最多 1000 个字符。
- 提示词:必填,成为子代理的指令。
- 模型:可选,见 子代理的模型。
| Agent | 文件 | 技能、MCP 服务器 |
|---|---|---|
| Claude Code | ~/.claude/agents/<name>.md | 你选的那些 |
| Codex | ~/.codex/agents/<name>.toml | 该 Agent 的全部 |
| OpenCode | 配置目录里的 agents/<name>.md | 该 Agent 的全部 |
| Gemini CLI | ~/.gemini/agents/<name>.md | 该 Agent 的全部 |
| Qwen Code | 其目录里的 agents/<name>.md | 该 Agent 的全部 |
| Droid | ~/.factory/droids/<name>.md | 你选的 MCP 服务器;全部技能 |
| Grok | 其目录里的 agents/<name>.md | 该 Agent 的全部 |
| Cursor | ~/.cursor/agents/<name>.md | 该 Agent 的全部 |
| Copilot CLI | ~/.copilot/agents/<name>.agent.md | 该 Agent 的全部 |
- 只有 Claude Code 能把子代理限定在你选的技能上,只有 Claude Code 和 Droid 能限定在你选的 MCP 服务器上。其他 Agent 的子代理能用该 Agent 的一切。
- Cursor:只有 Cursor 应用读
~/.cursor/agents。cursor-agent只读项目里的.cursor/agents。 - Kimi Code、Goose、Crush、Qoder、CodeBuddy、iFlow 和 Kiro 没有用户级的子代理目录,所以拿不到子代理。WSL 里的 Agent 也拿不到。
- 你改了 magpie 写的文件,它就归你,magpie 不再改它。你自己的同名文件永远不会被覆盖,页面会显示一个问题。
子代理的模型
子代理的 模型 只会写给 Codex。其他 Agent 的子代理都用 Agent 自己选的模型,页面上会注明。留空时显示 由 Agent 选择。
对 Codex,模型写进子代理的 .toml 文件。Codex 启动子代理时会叠上这个文件,所以请求带的就是这个模型,magpie 网关像路由其他请求一样路由它。可以选 Codex 列表里的任何模型、magpie 的 provider/model,或一个路由组(group/<id>)。
Agent 页面上 Codex 的子代理模型
Agent 页面上 Codex 那一行有一个自己的子代理模型设置,管 Codex 启动的所有子代理:
- 由主代理自选(默认)。主 Agent 为每个子代理选模型,也可能选 Codex 自带的模型。没指定模型的子代理用主 Agent 的模型。恢复的子代理仍用它最初的模型。
- 跟主代理一样。所有子代理都用主 Agent 的模型。
- 某个模型或路由组。所有子代理都用它,主 Agent 指定了别的也一样。
default_subagent_model 去掉。Codex 自己 config.toml 里的 [agents] default_subagent_model 是另一回事:它只是主 Agent 没指定模型时子代理起步用的模型。以上都有一个例外:ChatGPT 后端封装过的任务保持它要求的模型,除非这个设置本身就是某个 ChatGPT 账号的模型。
Claude Code 有自己的顺序:先看主 Agent 调用时指定的模型,再看子代理文件里的 model:,再看 CLAUDE_CODE_SUBAGENT_MODEL(Agent 页面上 Claude Code 那一行可以设置),最后是会话的模型。
Hooks
Hook 是 Agent 在一轮对话中某个时刻运行的命令:结束时发个通知,改完文件后跑格式化。选一个通用事件(一轮结束、工具之后、工具之前、收到提示词、会话开始),magpie 会按每个 Agent 自己对这个事件的叫法写入。只有 Claude Code、Codex、Gemini CLI、Cursor、Grok Build 和 Grok App 支持 Hooks。你改过的 Hook 条目就归你。
RTK
RTK 标签可以按 Agent 打开 RTK:Agent 的 shell 命令经过 RTK 运行,输出被压短以节省 token。magpie 可以帮你安装 RTK;RTK 卸掉后也能关闭。
magpie 会改什么
- 只改它自己写的:标记之间的文字、它记录过的条目、它标记为自己的文件。
- 从不碰你自己的同名文件、条目或技能。页面会显示冲突,让你选择。
- 被替换的内容都会先进备份。
项目也可以拿到技能和 MCP 服务器,放在项目自己的目录里(比如 .claude/skills、.agents/skills、.mcp.json 或 .codex/config.toml)。