diff --git a/README.md b/README.md index 489a3c9..cafbc5f 100644 --- a/README.md +++ b/README.md @@ -57,9 +57,9 @@ What that buys you, concretely: ## Context handling — real-time, without the context blowing up -A common worry about real-time bidirectional messaging is that the two agents' contexts merge and grow without bound. They don't. **The bridge passes messages, not context** — each agent keeps its own context window, and the bridge never copies one agent's full transcript into the other. Three filters keep what actually crosses small: +A common worry about real-time bidirectional messaging is that the two agents' contexts merge and grow without bound. They don't. **The bridge passes messages, not context** — each agent keeps its own context window, and the bridge never copies one agent's full transcript into the other. (And which agent plans vs executes is your call — the roles aren't fixed; Codex can drive Claude just as easily.) Three filters keep what actually crosses small: -1. **Only `agentMessage` crosses.** The daemon forwards an agent's actual output, not its tool-call noise — `commandExecution`, `fileChange`, and reasoning deltas never reach the other side. Each agent sees the other's conclusions, not its scrollback. +1. **Only `agentMessage` crosses.** The bridge forwards an agent's actual conclusions, not its tool-call noise — `commandExecution`, `fileChange`, and reasoning deltas never reach the other side, nor does its full scrollback. 2. **Three-tier marker routing** (default `filtered` mode). Each message is tagged and the daemon routes by tag: `[IMPORTANT]` forwards immediately, `[STATUS]` is buffered and batched into one periodic summary (default: 3 updates or 15s), `[FYI]` is dropped. The marker rules live once in the project's `AGENTS.md` (written by `abg init`), loaded at agent startup. 3. **The collaboration contract lives once** in `AGENTS.md`, not appended to every message (which would pollute every thread and its resume title). diff --git a/README.zh-CN.md b/README.zh-CN.md index 59f289e..9eadb8f 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -57,9 +57,9 @@ English version: [README.md](README.md) ## 上下文处理 —— 实时双向,但上下文不会爆 -很多人对"实时双向通信"最大的担心是:两个 agent 的上下文会不会合并、越滚越大。不会。**桥传的是消息,不是上下文** —— 每个 agent 各自维护自己的上下文窗口,桥从不会把一方的完整对话历史拷进另一方。在这个前提上,三层过滤让真正跨过桥的东西尽量少: +很多人对"实时双向通信"最大的担心是:两个 agent 的上下文会不会合并、越滚越大。不会。**桥传的是消息,不是上下文** —— 每个 agent 各自维护自己的上下文窗口,桥从不会把一方的完整对话历史拷进另一方。(而且谁规划、谁执行完全由你定,角色不写死,让 Codex 指挥 Claude 也一样。)在这个前提上,三层过滤让真正跨过桥的东西尽量少: -1. **只转发 `agentMessage`。** daemon 只截取 agent 真正说出来的话,它执行命令的输出、`commandExecution`、`fileChange`、推理过程这些中间噪声根本不过桥。每一方看到的是对方的结论,不是干活的流水账。 +1. **只转发 `agentMessage`。** 桥只转发 agent 真正说出来的结论,它执行命令的输出、`commandExecution`、`fileChange`、推理过程这些中间噪声和完整 scrollback 都不过桥。每一方看到的是对方的结论,不是干活的流水账。 2. **三级标签路由**(默认 `filtered` 模式)。每条消息带标签,daemon 按标签决定去留:`[IMPORTANT]` 立刻转发,`[STATUS]` 先缓冲、攒几条(默认 3 条或 15 秒)合并成一条摘要,`[FYI]` 直接丢。标签规则一次性写在项目的 `AGENTS.md` 里(`abg init` 注入),agent 启动读一次。 3. **协作契约只存一份**在 `AGENTS.md`,不附带在每条消息上(否则每个 thread 和它的 resume 标题都会被污染)。 diff --git a/site/index.html b/site/index.html index a5c4926..cdf7bc4 100644 --- a/site/index.html +++ b/site/index.html @@ -57,7 +57,7 @@ { "@type": "Question", "name": "With real-time messaging, won't the context explode?", - "acceptedAnswer": { "@type": "Answer", "text": "No. The bridge passes messages, not context: each agent keeps its own context window and the bridge never copies one agent's full transcript into the other. Three filters keep what crosses small: (1) only agentMessage output is forwarded, not command-execution, file-diff, or reasoning noise; (2) three-tier marker routing forwards [IMPORTANT] immediately, batches [STATUS] into a periodic summary, and drops [FYI]; (3) the collaboration contract lives once in the project's AGENTS.md, not appended to every message. Each side receives a curated stream, so context grows with real exchanges, not the other agent's raw activity. A full mode is available for the unfiltered stream." } + "acceptedAnswer": { "@type": "Answer", "text": "No. The bridge passes messages, not context: each agent keeps its own context window and the bridge never copies one agent's full transcript into the other. Which agent plans vs executes is your call — either direction works, including Codex driving Claude. Three filters keep what crosses small: (1) only agentMessage output is forwarded, not command-execution, file-diff, or reasoning noise; (2) three-tier marker routing forwards [IMPORTANT] immediately, batches [STATUS] into a periodic summary, and drops [FYI]; (3) the collaboration contract lives once in the project's AGENTS.md, not appended to every message. Each side receives a curated stream, so context grows with real exchanges, not the other agent's raw activity. A full mode is available for the unfiltered stream." } }, { "@type": "Question", @@ -782,8 +782,8 @@
No, because the bridge passes messages, not context. Each agent keeps its own context window; the bridge never copies one agent's full transcript into the other. On top of that, three filters keep what actually crosses small:
-1. Only agentMessage crosses. The daemon forwards an agent's actual output, not its tool-call noise — command execution, file diffs, and reasoning deltas never reach the other side. Each agent sees the other's conclusions, not its scrollback.
No, because the bridge passes messages, not context. Each agent keeps its own context window; the bridge never copies one agent's full transcript into the other. And which agent plans vs executes is your call — the bridge doesn't hard-code a boss; you can just as well have Codex drive Claude. On top of that, three filters keep what actually crosses small:
+1. Only agentMessage crosses. The bridge forwards an agent's actual conclusions, not its tool-call noise — command execution, file diffs, and reasoning deltas never reach the other side, nor does its full scrollback.
2. Three-tier marker routing (default). Each message is tagged and the daemon routes by tag: [IMPORTANT] forwards immediately, [STATUS] is buffered and batched into one periodic summary (default: 3 updates or 15s), [FYI] is dropped. The rules live once in the project's AGENTS.md (written by abg init), loaded at startup.
3. The collaboration contract lives once in AGENTS.md, not appended to every message. So each side receives a curated stream of meaningful messages — context grows with the number of real exchanges, not the other agent's raw activity. A full mode is available when you do want the unfiltered stream.
不会,因为桥传的是消息,不是上下文。两个 agent 各自维护自己的上下文窗口,桥从不会把一方的完整对话历史拷进另一方。在这个前提上,再叠三层过滤,让真正跨过桥的东西尽量少:
-1. 只转发 agentMessage。daemon 只截取 agent 真正说出来的话,它执行命令的输出、文件 diff、推理过程这些中间噪声根本不过桥。每一方看到的是对方的结论,不是干活的流水账。
不会,因为桥传的是消息,不是上下文。两个 agent 各自维护自己的上下文窗口,桥从不会把一方的完整对话历史拷进另一方。而且谁规划、谁执行完全由你定——桥不写死谁是老大,反过来让 Codex 指挥 Claude 也一样。在这个前提上,再叠三层过滤,让真正跨过桥的东西尽量少:
+1. 只转发 agentMessage。桥只转发 agent 真正说出来的结论,它执行命令的输出、文件 diff、推理过程这些中间噪声和完整 scrollback 都不过桥。每一方看到的是对方的结论,不是干活的流水账。
2. 三级标签路由(默认)。每条消息带标签,daemon 按标签决定去留:[IMPORTANT] 立刻转发,[STATUS] 先缓冲、攒几条(默认 3 条或 15 秒)合并成一条摘要,[FYI] 直接丢。规则写在项目的 AGENTS.md 里(abg init 注入),启动读一次。
3. 协作契约只存一份在 AGENTS.md,不是每条消息都附带。所以每一方收到的是对方精选过的有意义消息——上下文的增长跟的是"有效交流的条数",不是"对方活动的原始量"。需要看完整原文时也留了 full 模式可关掉过滤。