关于 magents
magents 是用于访问多个编码 Agent 会话的共享 API 和命令行工具。它帮助团队在现有聊天间传递上下文、向实时会话发送消息,或启动独立的持久化任务,免去手动复述背景。
主要功能
- 01发现实时和近期 Agent 会话
- 02读取、搜索并整理会话记录
- 03在现有聊天间交接任务
- 04向实时会话发送消息
- 05启动独立的持久化会话
- 06在 Agent 间共享笔记与记忆
适用场景
- 01切换编码 Agent 后继续原有任务
- 02请另一个 Agent 处理阻塞问题
- 03在独立工作目录中运行单独任务
- 04搜索过往会话中的决策与上下文
MCP 相关
magents 以 MCP 服务运行,并向支持的 Agent 主机注册工具。MCP 客户端可发现会话、读取记录、交接或发送聊天消息,以及启动会话。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/abnegate/magents:0.14.2本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/abnegate/magents:0.14.2stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Claude Code、Codex、Copilot、Cursor、Gemini、AGY、Grok 和 OpenCode 已经会将 对话记录保存在磁盘上。magents 是这些会话之上的共享 API——一个 MCP 服务加一个小型 CLI——让一个 Agent 可以从另一个 Agent 停下的地方继续, 无需你重述上下文;当你不在聊天窗口中时,也可以联系某个特定的在线聊天, 或者为完整任务启动一个独立的持久化聊天。
它不是历史记录的第二份副本,也不是发出指令后便不再过问的 Agent 议事会。现有 聊天仍是默认的工作单元;新聊天则用于适合拥有独立会话和工作目录的独立任务。
安装 · 插件 · 你可以做什么 · 快速开始 · 工具 · CLI · 版本发布
为什么
你已经在使用不止一个编码 Agent。痛点不是“模型不够多”,而是上下文困在另一个窗口里。
| 痛点 | magents 的作用 |
|---|---|
| 你在任务中途切换了宿主 | 读取在线会话并在这里继续 |
| Agent A 遇到的问题由 Agent B 负责解决 | 直接向那个在线聊天注入消息,无需你传话 |
| 子任务可以独立运行 | 启动一个无头持久化会话,提供完整的提示词和回复路径 |
你可以做什么
1. 无需开启新话题即可交接
你之前在 Claude 中处理灾难恢复分支,现在切到了 Grok。询问 Grok 刚才在做什么;它会读取在线会话并继续。无需复制粘贴,也不用“新开聊天并在这里补充上下文”。
2. 无需你传话即可发送消息
三个 Agent 正在运行。Claude 遇到的问题由 Codex 负责解决。Claude 向那个 Codex 话题注入消息并继续工作——特别适用于发送方已经掌握失败的查询、文件和限制条件,而这些信息本来需要你重新整理的情况。
3. 启动独立任务
任务可以独立推进时,启动一个新的无头持久化会话,提供完整的提示词;如果文件可能发生冲突,则使用隔离的工作目录,并要求通过 magents 回复。启动的 Agent 会保留宿主原有的审批策略——启动操作不会绕过审批。
安装
Homebrew(macOS / Linux)
brew install abnegate/tap/magents
magents install --all
APT(Debian / Ubuntu)
curl -fsSL https://abnegate.github.io/apt-repo/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/abnegate.gpg
echo "deb [signed-by=/usr/share/keyrings/abnegate.gpg] https://abnegate.github.io/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/abnegate.list
sudo apt update && sudo apt install magents
magents install --all
二进制文件
从 Releases 获取:
curl -LSsf -o magents \
"https://github.com/abnegate/magents/releases/latest/download/magents-$(uname -m | sed 's/arm64/aarch64/')-$(uname -s | tr 'A-Z' 'a-z' | sed 's/darwin/apple-darwin/;s/linux/unknown-linux-musl/')"
chmod +x magents
./magents install --all
文件:magents-x86_64-unknown-linux-musl、magents-aarch64-unknown-linux-musl、
magents-aarch64-apple-darwin、magents-x86_64-apple-darwin。
容器
docker pull ghcr.io/abnegate/magents:latest
docker run --rm --user "$(id -u):$(id -g)" \
-v "$HOME:$HOME" -e HOME \
ghcr.io/abnegate/magents list --live
Cargo
cargo install magents --locked
magents install --all
从源代码构建
cargo install --path .
magents install --all
插件
宿主插件包含 magents 技能,以及一个用于运行 magents mcp 的 MCP 配置项。
请先安装 CLI(brew install abnegate/tap/magents),然后加载 plugins/ 下
对应的文件夹。
| 宿主 | 路径 |
|---|---|
| Claude Code | plugins/claude |
| Codex | plugins/codex |
| Cursor | plugins/cursor |
| Gemini CLI | 仓库根目录(gemini-extension.json) |
| AGY CLI / Antigravity | plugins/agy |
Gemini CLI 会直接从此仓库安装扩展:
gemini extensions install https://github.com/abnegate/magents
AGY CLI 会从 plugins/agy 安装插件(清单、MCP 和技能):
agy plugin install https://github.com/abnegate/magents/plugins/agy
详情和市场说明:plugins/README.md。
快速开始
magents install --all 会将 stdio MCP 服务注册到每个已安装的主机;如果主机缺少所需的二进制文件,则会跳过该主机:
- Grok(
grok mcp add magents -- magents mcp) - Claude Code(
claude mcp add --scope user magents -- magents mcp) - Codex(
codex mcp add magents -- magents mcp) - Cursor(
~/.cursor/mcp.json) - OpenCode(
$XDG_CONFIG_HOME/opencode/opencode.json,默认路径为~/.config/opencode) - Gemini CLI(
gemini mcp add -s user magents magents mcp) - GitHub Copilot CLI(
copilot mcp add magents -- magents mcp) - AGY CLI(
agy mcp add magents magents mcp)
它还会将 magents 和 learn 技能写入受支持主机的技能目录(~/.grok/skills/{magents,learn}、~/.claude/skills/{magents,learn}、~/.cursor/skills/{magents,learn},以及 OpenCode / Gemini / AGY / Copilot 对应的目录)。/learn 会读取每个本地 Agent 的会话,不仅限于 Grok。
仅针对 Grok 和 Codex,你需要自行配置主机指向该二进制文件:
[mcp_servers.magents]
command = "/path/to/magents"
args = ["mcp"]
对于 Cline,打开 MCP Servers → Configure MCP Servers,并将以下内容添加到 cline_mcp_settings.json:
{
"mcpServers": {
"magents": {
"command": "magents",
"args": ["mcp"]
}
}
}
重启 Agent 会话(或刷新 /mcps),工具便会显示。
试试:
magents list --live
magents digest grok:latest
magents handoff grok:latest --reason "continuing in grok"
工具
| 工具 | 用途 |
|---|---|
list_sessions | 查看正在进行和近期的会话;按 cwd / branch 筛选 |
get_session | 按 id、标题、在线名称、pid 或 agent:ref 查找 |
read_transcript | 精简的非活动交接记录(最近请求、最近操作、近期轮次) |
search_transcripts | 在这些记录中进行全文搜索 |
search_memories | 搜索 Claude / Codex / Grok 记忆 Markdown 文件中的短语 |
create_memory | 将备注写入 Claude / Codex / Grok 自带的记忆 |
spawn_session | 启动新的无头持久化会话以独立执行任务 |
send_message | 向现有聊天发送一轮用户消息 |
handoff | 精简当前会话并注入另一个在线聊天 |
inbox / ack / await_reply / reply | 用于跨会话回复的邮箱 |
session_digest | 精简的最近请求 / 操作 / cwd / branch / 截断后的轮次 |
files_touched | 查看其他会话编辑过的路径 |
stop_session | 停止由 magents 监管的会话启动或恢复操作 |
read_memory | 读取一个 Claude / Codex / Grok 记忆 Markdown 文件 |
get_note / put_note | Magents 管理的工作目录共享临时存储 |
whoami | 检测此连接;通过环境变量、套接字或唯一 cwd 解析会话 |
learn_collect | 从每个本地 Agent 的完整历史中收集供 /learn 使用的精简记录,或估算一次运行 |
learn_state | 读取或更新 /learn 状态、决策和废弃内容 |
引用可以添加前缀:claude:disaster recovery、grok:latest、codex:<uuid>、cursor:latest、opencode:<id>、gemini:latest、agy:<id>、copilot:<id>。
CLI
magents list --live
magents list --agent grok --query edge
magents get 'claude:disaster recovery'
magents read grok:latest -n 20
magents digest grok:latest
magents search "dedicated databases" --agent claude
magents spawn codex --prompt-file /path/to/task.md --cwd /path/to/isolated-worktree
magents send grok:latest "handoff: the DR runbook is in docs/RUNBOOK.md"
magents handoff grok:latest --reason "continuing in grok"
magents whoami
magents learn estimate
magents learn collect
magents learn plan
magents learn collect --since-last
magents learn state
任何命令都可以传入 --output json,以获取稳定的机器可读标准输出。
通过管道接收标准输入时,不带参数运行 magents 会启动 MCP 服务。
magents spawn 默认从标准输入读取完整任务(也支持 --prompt-file)。提示词文本绝不会作为进程参数传递。
会话如何交流
list_sessions / read_transcript / search_transcripts / search_memories 用于交接。create_memory 会将内容写入其他框架自带的记忆(Claude、Codex 或 Grok)。
根据工作应在哪个会话中进行,选择写入方式:
spawn_session- 启动新的无头持久化独立会话。提供完整任务、验证要求和通过 magents 回复的方式;如果编辑可能发生冲突,则使用隔离的cwd。成功表示已接受启动请求(accepted: true、status: "starting"),不代表任务已完成。send_message- 发送给现有会话。始终会记录邮箱邮件;在主机支持的情况下,会注入一轮在线用户消息。handoff- 将当前会话精简后传递给现有在线会话,让该会话继续同一项工作。
传递方式(现有对话)
send_message 始终会将消息追加到邮箱,然后优先使用原生实时通道;否则启动受监管的无头恢复:
| 界面 | 传递方式 |
|---|---|
| Claude Desktop | UDS 用户轮次(/tmp/cc-socks/<pid>.sock),然后使用 tmux 或受监管的 claude -p --verbose --resume <id> |
| Claude CLI | 可用时使用 UDS,然后使用 tmux 或受监管的恢复方式 |
| Grok | 受监管的 grok --cwd <cwd> --resume <id> --output-format streaming-json --prompt-file /dev/stdin |
| Codex Desktop / VS Code | 在 ~/.codex/ipc/ipc.sock 上使用长度前缀 JSON-RPC,然后使用受监管的 codex exec ... resume |
| Codex CLI | 受监管的 codex exec --json -C <cwd> resume <id> - |
| Cursor | 受监管的 cursor-agent -p --output-format stream-json --resume <id> --workspace <cwd> |
| OpenCode | 受监管的 opencode run --format json --session <id>,在会话的 cwd 中启动(并设置 PWD) |
| Gemini CLI | 受监管的 gemini --resume <id> --output-format stream-json |
| AGY CLI / Antigravity | 受监管的 agy --input-format stream-json --output-format stream-json --conversation <id> |
| GitHub Copilot CLI | 受监管的 copilot --resume=<id> --output-format json |
受监管的传递方式通过 stdin 传递用户轮次,不会在响应中暴露对话记录文本、令牌或原始主机输出。启动进程时绝不会添加绕过审批的选项(--dangerously-skip-permissions、--yolo、--full-auto 等)。
会话发现来源:Claude ~/.claude 和 ~/.claude-*(以及 Desktop 的 Claude / Claude-* 会话目录)、Grok ~/.grok/active_sessions.json、Codex sqlite + rollout JSONL、Cursor agent-transcripts、OpenCode SQLite(opencode.db 和频道数据库,v1 的 session 表以及 v2 的 session_v2 / session_message 表)、Gemini journals、AGY CLI conversations / brain 以及 Antigravity 桌面端的 conversation_summaries、Copilot session-state。Claude 会话若来自具名主目录(例如 ~/.claude-work 中的 work),则会包含 profile 字段。恢复和实时注入会使用该主目录的 CLAUDE_CONFIG_DIR。
测试
cargo test --locked --all-targets
cargo llvm-cov --locked --all-targets --ignore-filename-regex 'src/main.rs|/rustlib/' --fail-under-lines 98
CI 会运行格式检查、clippy(-D warnings)、完整测试套件以及 98% 行覆盖率门槛。
要求
- Rust 1.97+
- macOS 或 Linux(Claude UDS 注入仅支持 Unix)
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。