zgeoff/atc/tree/main/mods/atc-bridge
关于这个 mod
atc-bridge 是 zgeoff/atc 的 Claude Code 外挂。atc 是一个基于 daemon、用于在一个终端窗格中运行多个 coding agent 的工具。这个外挂把 atc 收件箱消息送入当前工作阶段,并向 atc 报告 attention state;它使用 hooks 读取 ATC_SESSION_ID、注册 report tool、拦截 tool calls、启动 atc CLI 并提交 prompts。安装遵循标准 Claude Code 外挂 manifest 流程。
安装
请先查看作者 README 确认 marketplace 和插件名称;命令可能随仓库结构改变。
claude plugin marketplace add zgeoff/atc claude plugin install atc-bridge
原文 / README
atc lets you run several coding agents at once in a single terminal pane and keep track of which are waiting on you.
claude, grok, and codex sessions all run in a background daemon, with a session list in front
of them. There are no panes. One session fills the terminal, Ctrl-Space opens the list, a session
that needs an answer turns red, and Tab takes you to it. Quit atc and the sessions keep running.
Install
Homebrew:
brew install zgeoff/tap/atc
Or download a binary:
curl -fsSL https://raw.githubusercontent.com/zgeoff/atc/main/install.sh | sh
Prebuilt binaries cover macOS and Linux, arm64 and x64. The install script puts atc in
~/.local/bin; set ATC_INSTALL_DIR to change that. Checksums are on the
releases page.
From source, with Bun:
bun add -g @zgeoff/atc
atc needs at least one of the claude, grok, or codex CLIs on your PATH. The agent picker lists
the ones it finds, and opens only when it finds more than one.
Use
atc
The first run starts the daemon. Press n to spawn a session: pick an agent, pick a directory, give
it a name, and type a first prompt if you have one. The session takes the whole screen and you work
in it as you would in a plain terminal.
Ctrl-Space opens the session list over whatever you are attached to. Each row carries a state
mark:
| Mark | State |
| ---- | ------------------------------------- |
| ● | needs you: a prompt or question waits |
| ◐ | running |
| ✓ | turn done |
| ✗ | exited |
Sessions that need you sort to the top, so the one you want is nearly always first.
| Key | Action |
| ------------ | ----------------------------------------------------------------------------------------------------------------------- |
| Ctrl-Space | open or close the list |
| Tab | attach the session that needs you most |
| Enter | attach the selected session |
| / | filter by name or directory |
| a | acknowledge a notification without attaching |
| K | kill the selected session; on a host atc can destroy, a dead session asks once more before forgetting destroys the host |
| q | quit the client; sessions keep running |
| ? | every other key |
The directory picker lists the directory you ran atc from, atc's own spawn history, every project
under the roots in config.json, and your zoxide list when
zoxide is installed. A typed path such as ~/pro completes like a shell. Inside a Claude session
your statusline gains a fleet segment, so ● 2 need you: auth-bug is visible without opening the
list.
If the daemon dies, press R on the home screen and every session respawns from its transcript.
After you upgrade atc, the status bar shows ⟳ update ready, and u restarts the daemon and
restores the fleet when you are ready. The bar shows ⟳ restarting daemon until the restart
finishes. When the running daemon speaks another protocol version, atc asks before it restarts the
daemon, since the restart ends every session the daemon hosts.
atc runs inside zellij or tmux. Give the pane locked mode so the leader key reaches atc.
Grok and Codex
Claude sessions report attention on their own: atc passes a generated settings file at spawn time and never edits your Claude config. Grok and Codex take a one-time hook install. atc prints the hooks and leaves the install to you:
# Grok
mkdir -p ~/.grok/hooks
atc grok-hooks > ~/.grok/hooks/atc-reporter.json
# Codex: merge the output into ~/.codex/hooks.json, then trust it once in the codex TUI
atc codex-hooks
The configuration guide covers both installs in detail.
Beyond the keyboard
-
atc mcpexposes the fleet as MCP tools, so an agent can spawn, drive, and read other agents. A session spawned this way lists under the session that spawned it and is killed with it. Each agent keeps its own MCP config, so register the server once per agent you run:claude mcp add --scope user atc -- atc mcp codex mcp add atc -- atc mcp grok mcp add atc -- atc mcpA Claude or Codex session that is already running loads the server only after it restarts. A running Grok session loads it when you press
rin its/mcpslist. -
atc mcp --httpserves the same tools over HTTP behind OAuth, so a hosted assistant such as ChatGPT or Claude.ai can reach your sessions with the scopes you approve. Add each assistant withatc clients add, approve each connection with the code printed in the server's terminal, and list or revoke grants withatc grants. Remote MCP covers it. -
A Claude session takes messages from other tools.
atc_session_messagequeues one, and the session reads it in a new turn, or inside the turn it is running.atc_message_getreturns that turn's final output once the turn ends, and waits for the next status change when givenwaitMs. The protocol covers the details. -
atc eventsprints every fleet event as one NDJSON line. The same stream is on a unix socket, andconfig.jsonhooks run your own commands on events. The events guide covers all three. -
A Claude-compatible backend runs as its own agent in the same fleet. The gateways section covers the setup.
Configuration
atc creates ~/.config/atc/config.json on first run. The
configuration guide covers every field: agent binaries and
arguments, the leader key, gateways, and hooks.
Documentation
docs/ covers the architecture, the daemon, and the wire protocol.