AI
多 Agent 会话架构研究
本文比较 Kero、Orca、herdrm 和 Sheprd 的终端托管、Agent 适配与多端交互实现,并据此提出统一会话架构。
本文比较 Kero、Orca、herdrm 和 Sheprd 的终端托管、Agent 适配与多端交互实现,并据此提出统一会话架构。
研究依据为官方文档及检查时的源码,未构建或进行运行时兼容测试。产品能力属于研究时点的记录;设计建议与已确认实现分开描述,未确认的发布渠道和行为明确标注。
1. 核心结论
统一抽象应建立在 Agent 会话 上,而不是 PTY、终端窗口或某一种 Agent 协议上。
- 运行托管与界面分离:后台管理进程和终端,GUI、手机、CLI 可以断开再连接。
- 观察与控制分离:画面、hooks、日志和协议事件提供不同质量的信息,不能据此推导相同的控制能力。
- 终端与协议并存:已有原生 TUI 通过 Runtime 接入;新建结构化会话可由常驻会话程序统一连接 Agent。
- 多端共享会话控制者:各界面访问同一份快照、事件和命令接口,避免分别启动 Agent 或竞争审批。
Sheprd 的 sheprd-acp 最接近这一方案:在后台托管的窗格中运行会话程序,由它连接 Agent,同时提供聊天 TUI 和原生 GUI 接口。herdrm 则展示了如何保留已有 Agent TUI,通过 Herdr API、单窗格 attach 和日志读取增加图形界面。
2. 基础概念:PTY、终端与生命周期
2.1 PTY 负责终端交互
PTY 是操作系统的虚拟终端接口,可以理解为带终端行为的双向连接。后台持有 master 端,CLI 通过 slave 端连接标准输入、输出和错误输出。
后台写入按键或文本,CLI 读取输入;CLI 输出文本与控制序列,后台读取输出。PTY 还涉及尺寸、回显、终端模式和信号处理。例如 Ctrl+C 在普通模式下可产生中断信号,在原始模式下也可能作为字节交给应用。
PTY 不是网络协议,也不是 Agent 语义协议。 它不天然理解模型回复、工具调用或审批请求。
2.2 终端数据有不同表示
| 表示 | 接收端的职责 | 本文中的例子 |
|---|---|---|
| 原始终端字节 | 解析 ANSI/VT,维护屏幕与滚动内容 | Sheprd 的 herdr-core 路径 |
| 终端镜像或更新序列 | 按约定重建终端视图 | Kero attach |
| cells 与 surface patch | 校验版本、更新单元格并绘制 | Sheprd 的 Herdr 1 路径 |
终端前端不必直接读取 Agent 的 PTY,也不必统一使用 libghostty。关键是双方约定输出表示、初始快照及后续增量。
2.3 哪些连接需要保持
| 层次 | 生命周期 |
|---|---|
| 后台与 Agent 的 PTY | 执行期间持续持有;空闲时可阻塞等待输出,无须忙轮询 |
| GUI 与后台 | 可断开,之后重连并同步状态 |
| 网络客户端与远程后台 | 断网不必终止任务,前提是后台独立存活 |
| 重启机器后的恢复 | 原进程和 PTY 已消失,需要重新启动并调用 Agent resume |
最后一个 PTY master 关闭通常会导致终端挂断,CLI 可能收到 SIGHUP 或读写错误并退出。PTY 不能当作可随意断开、重连原进程的普通网络连接。
“退出后仍运行”必须说明退出的是 GUI、连接客户端、会话程序还是 daemon。恢复对话与保留原执行进程也应分开描述。
3. 四种实现总览
| 项目 | 定位 | 运行托管 | 主要交互 |
|---|---|---|---|
| Kero | 面向 Agent 的原生终端 | kerod 持有 PTY、进程和终端状态 | 原生 CLI TUI、状态规则、hooks、恢复 |
| Orca | Agent 开发环境与编排工具 | 自身终端、协议运行时及远程后端 | 原生终端和结构化聊天 |
| herdrm | Herdr 原生图形客户端 | 复用 Herdr daemon | 单窗格 attach;日志聊天和按键交互 |
| Sheprd | 基于 Herdr 的原生开发工作区 | Herdr/core;sheprd-acp 承载协议会话 | 原生终端、结构化聊天、只读观察 |
| 项目 | 桌面平台 | 手机与远程访问 |
|---|---|---|
| Kero | macOS、Windows、Linux | 未找到官方手机版;支持 SSH、Tailscale、WSL 等主机连接 |
| Orca | macOS、Windows、Linux | iOS、Android;直连或 Orca Relay;SSH 与配对服务器 |
| herdrm | macOS 14+ | 有 iOS 18+ 实现,公开分发渠道未确认;SSH、Tailcat、Relay |
| Sheprd | macOS、Linux、Windows | iPhone/iPad TestFlight、PWA;HTTPS/WebSocket,LAN/Tailscale 等路径 |
平台支持不等于功能完全一致。例如检查时 Sheprd 的 Windows 文档说明 saved SSH hosts 不可用,桌面 herdr-core 路径也有本机限制。
4. Kero:独立终端服务与 Agent 集成
4.1 GUI 与 kerod
kerod 管理进程、PTY、终端状态和滚动内容。GUI 使用 libghostty 显示终端,并提供项目分组、分屏、通知、状态和变更查看。
关闭 GUI 不结束后台任务。kerod 重启后可重建会话;完成集成的 Claude Code、Codex、Pi、OMP、OpenCode 可通过自身 resume 能力恢复对话。
4.2 通信协议
GUI 和 kero CLI 共用自定义协议,检查到的本机连接使用 Unix domain socket。
| 通道 | 编码与内容 |
|---|---|
| 握手 | 一行 JSON Hello,返回 Welcome,检查版本 |
| control | 按行 JSON;请求含 id、method、params,返回结果、错误或推送事件 |
| attach | 1 字节类型、4 字节大端长度、payload |
| attach 输出 | 初始终端镜像及后续更新 |
| attach 控制 | 按键、尺寸、清屏、主题和控制权声明等 |
远程外层使用 yamux 多路复用承载 control、attach 子流,支持协商 deflate 压缩与心跳。
- SSH:执行远端
kero __bridge,启动或连接 kerod,通过 SSH 字节流桥接。 - WSL:通过 wsl.exe 运行桥接。
- 网络监听:通过
/kero/muxWebSocket 接入,可结合 Tailscale 或 Tailscale Serve。
control 属于自定义 RPC 风格协议,不能仅因使用 JSON 就称为标准 JSON-RPC。
4.3 各 Agent 的适配
| 层次 | 实现 |
|---|---|
| 屏幕规则 | spinner、提示框、OSC 标题等;agents.toml 支持执行文件、区域、正则、优先级和状态 |
| hooks 与插件 | Claude/Codex SessionStart hook、Pi/OMP 扩展、OpenCode 插件 |
| 会话关联 | 关联 Kero session、pane 与 Agent 会话 ID,支持恢复历史 |
| CLI 与 Skill | 创建、分屏、输入、读取、等待和状态上报 |
屏幕规则借鉴 Herdr,官方列出的支持包括 Claude Code、Codex、Gemini、OpenCode、Amp、Cursor、Droid、Qwen、Copilot、Kiro、Cline、Kimi、Pi 等。屏幕识别、hooks、恢复各自有支持范围。
kero report 通过 OSC 7501 Program Status Protocol 上报工作、阻塞、完成、失败、进度和子任务。这是状态语义,不是完整聊天或工具审批协议。
Kero 的优势是终端托管和脚本控制直接、通用;独立 daemon 本身不能证明所有场景下的管理能力或稳定性更优。
5. Orca:终端与结构化开发环境
5.1 两条交互路径
终端模式在工作区中启动原生 CLI,通过 PTY 交互,结合 OSC 标题和 hooks 等识别状态。结构化模式启动协议进程,把消息、工具、审批、问题和选项映射为界面元素。
| 路径 | 检查到的实现 |
|---|---|
| Claude | Claude Agent SDK;Orca 管理子进程生命周期 |
| Codex | app-server,通过管道处理请求、响应和通知 |
| ACP | 独立进程连接、JSON-RPC 传输和不同 Agent 的 dialect 适配 |
| 不适用结构化的场景 | 原生终端或终端支持的 Chat UI |
官方结构化支持包括 Claude、Codex、Grok、OpenCode、Pi、OMP、Antigravity,仍取决于运行位置。本机、配对服务器、SSH、WSL 的能力与生命周期不能一概而论。
Orca 还整合 worktree、编辑器、Diff、Git、浏览器、任务和 CLI 编排。优势是结构化交互与完整工作流,代价是维护多种协议和执行路径。
5.2 手机协议与 Agent 协议分层
iOS/Android 客户端可查看状态、终端和聊天,发送回复、回答问题并进行部分工作区操作。Agent 仍在配对主机执行。
配对使用一次性码,建立手机设备 token。支持 LAN/Tailscale 等直达路径和 Orca Relay;直接地址支持 ws://、wss://,移动协议有版本检查。
Agent 侧 ACP 与手机传输是不同层。不能概括为“全部经 ACP 解析再 P2P 传输”,也不能由直连推断 WebRTC 打洞。Relay 包含服务器中继,桌面关闭后的行为需按运行路径判断。
6. Herdr 接入与 attach
6.1 嵌套完整 TUI 与后端集成不同
在 Kero/Orca 中运行完整 Herdr 客户端时,外层持有客户端 PTY,内部 Agent 的 PTY 仍归 Herdr daemon。外层看到整体画面,不天然获得内部各窗格的独立身份、输出和状态;隐藏窗格无法仅靠当前画面识别。
研究中未找到 Kero/Orca 直接导入 Herdr 运行会话的官方集成。这是缺少适配,不足以证明 Herdr API 能力不足;herdrm 和 Sheprd 已给出实际接法。
6.2 单窗格 attach 与 takeover
根据本机 Herdr 源码,herdr agent attach <pane> --takeover 先将目标解析成 terminal_id,握手后发送 AttachTerminal 请求,连接到指定终端。
| 情况 | 行为 |
|---|---|
| 无已有 attach 客户端 | 建立连接并同步终端 |
| 已占用,未带 takeover | 拒绝新连接 |
| 已占用,带 takeover | 通知旧客户端 terminal attach taken over,移除旧连接并接入新客户端 |
接入时重置画面同步基线,按新客户端行列和像素尺寸调整终端,设置直接 attach 尺寸锁。普通 Herdr 整体界面客户端不会因此全部断开。
接管的是单终端 attach 客户端位置与尺寸控制,PTY 和 Agent 进程仍归 daemon。 它不转移 PTY master,也不重启 Agent。
6.3 两种 attach 不是一回事
| 操作 | 连接对象 | 数据与操作 |
|---|---|---|
| Herdr 终端 attach | Herdr daemon 的指定终端 | 画面、按键、鼠标、尺寸 |
| Sheprd 私有会话 attach | sheprd-acp 的会话接口 | 对话快照、增量、消息、协议审批 |
私有会话 attach 是额外的语义通道,不释放 Herdr 的 PTY,也不要求 Herdr 退出。
7. herdrm:复用 attach,增强已有 TUI
7.1 控制与终端通道
herdrm 使用 SwiftUI,HerdrKit 提供独立领域和传输层,Herdr daemon 保持托管权。
| 功能 | 接口 |
|---|---|
| 快照与列表 | session.snapshot、agent.list、workspace.list |
| Agent 目录 | server.agent_manifests |
| 提示词、画面、输入 | agent.prompt、pane.read、pane.send_input |
| 事件 | events.subscribe 长连接 |
| 终端 | herdr agent/terminal attach,带 takeover |
SocketRPC 使用按行 JSON,普通请求每次新建连接,事件订阅保持连接。TerminalProcess 通过 forkpty 启动 attach 或 SSH,独立读写队列泵送字节,libghostty-spm 显示终端。
flowchart TB
subgraph UI["herdrm 客户端"]
LIST["会话列表与状态"]
VIEW["Ghostty 终端视图"]
ATTACH["指定窗格 attach 客户端"]
VIEW <-->|"外层 PTY 输入输出"| ATTACH
end
LIST <-->|"Herdr RPC 与事件"| H["Herdr daemon"]
ATTACH <-->|"单终端 attach 协议"| H
H <-->|"持有原始 PTY"| A["原生 Agent TUI"]
外层 PTY 承载指定窗格 attach,不是完整多窗格 TUI,因此能独立展示已有 Agent。
7.2 日志聊天与终端辅助审批
手机 MobileAgentChat 支持 Claude/Codex:
- 验证 Herdr agent_session 来源,取得会话 ID。
- 聊天可见时通过 SSH 短命令按偏移读取 transcript,约每 1.5 秒轮询一次。
- 需要检查阻塞等状态时,通过 pane.read 解析可见问题或权限提示。
- 操作前重读画面并核对 fingerprint,通过 pane.send_input 发按键;普通消息走 agent.prompt。
- 观察提示和状态变化确认结果。
它不是带请求 ID 的协议审批。重检画面可以降低误输入,但检查与发送不原子,TUI 改版会影响解析。日志视图还依赖文件格式、会话关联、访问权限和落盘时机。研究未发现 ACP、app-server 或 Agent SDK 的主动会话控制路径。
7.3 远程与手机连接
桌面 SSH 通常用 ssh -L 转发 Unix socket,ssh -tt 执行 attach;Windows 远端另有 remote-api bridge。手机直接 SSH 使用 stream-local 访问 Herdr socket,使用 SSH PTY 执行 attach。
Relay 路径中,手机和 Mac 分别主动连接 WebSocket 中继,在其上建立 Noise 加密会话,内部再跑 SSH,连接 Mac 本机 sshd。
- Noise:Noise_IKpsk2_25519_ChaChaPoly_SHA256。
- 二维码携带 Mac 静态公钥及一次性 PSK,配对码十分钟过期。
- 手机公钥写入 authorized_keys 并限制回环来源,需要系统 Remote Login。
- 可优先尝试直接地址,校验经加密通道获得的 SSH host key。
- Relay 服务端为私有项目,本研究没有对其审计。
Tailcat 是另一条 socket 桥接路径,不提供任意 shell;独立 shell、日志读取和手机终端支持需分别判断。
7.4 版本与维护
检查提交:437b5f2b7a247d1ff36ac50825e051bc1560a3f0。当时最新 Release 为 v0.7.1,仅确认 macOS 附件;iOS 源码和配对实现存在,公开获取渠道未确认,未找到 Android target。
README 声明因 Herdr 推出官方 GUI,herdrm 可能停止维护。
8. Sheprd:常驻会话程序与多前端
8.1 两种终端后端
Sheprd 使用 Rust/GPUI。Herdr 1 路径连接 herdr-client.sock,直接接收 cells、surface 和 patch,原生绘制;不必启动完整 TUI,也不依赖 Ghostty。
sheprd-protocol 使用 4 字节小端长度加 bincode 2 standard;patch 校验 boot_id、projection_revision、base_surface_revision 等,拒绝不匹配更新。
herdr-core 路径接收原始输出,经 sheprd-terminal 模拟后复用绘制。Release 附带固定版本 core,旧会话不自动迁移。观察者与 driver 分离,使只看画面不必改尺寸或输入。
8.2 sheprd-acp 自己提供聊天 TUI
Herdr 托管终端,Sheprd 将结构化对话放进普通窗格中的常驻 sheprd-acp。它是 Agent 的唯一协议客户端,同时维护对话、绘制聊天 TUI,并向其他前端开放会话接口。
flowchart TB
subgraph HOST["Agent 所在主机"]
H["Herdr daemon:持有 PTY master"]
B["sheprd-acp 常驻进程<br/>维护对话并自绘 TUI"]
A["Agent 子进程:协议模式"]
E["私有会话 endpoint"]
R["remote-control 服务"]
H <-->|"PTY:按键与聊天 TUI 输出"| B
B <-->|"stdio:ACP 或原生协议转换"| A
B <-->|"快照、增量、消息、审批"| E
R <--> E
end
G["GUI 原生聊天"] <-->|"私有会话协议,本机或 SSH 桥接"| E
T["终端视图"] <-->|"Herdr 画面与输入"| H
P["手机或 PWA"] <-->|"HTTPS / WebSocket"| R
endpoint 是会话程序的逻辑接口,不是独立 Agent 或 PTY 托管进程。图中只展示聊天路径,手机普通终端访问另有通道。
ACP 是协议,TUI 是 sheprd-acp 额外实现的界面。 协议聊天模式没有同时运行 Agent 自带的原生 TUI;关闭 GUI 不结束后台窗格中的会话程序。
8.3 原生协议归一化
| Agent | 默认接入 |
|---|---|
| Claude | claude 的 stream-json 模式 |
| Codex | codex app-server |
| Pi | pi –mode rpc |
| Copilot | copilot –acp |
| Gemini | gemini –acp |
| OpenCode | opencode acp |
| 其他 ACP Agent | 指定 ACP 命令 |
harness.rs 的 Reach、Translator 隔离原生协议,Session 层处理 ACP 语义。Claude、Codex、Pi 可改用外部 adapter。
内部统一 ACP 不表示所有 Agent 原生支持 ACP,也不表示能力无损等价。Claude 部分控制消息跟随 SDK 行为,并非公开接口,存在兼容维护成本。
8.4 对外会话协议与发现
sheprd-chat-protocol 与 Agent 侧 ACP 分开:
| 项目 | 实现 |
|---|---|
| 本机连接 | Unix 私有 socket 或 Windows named pipe |
| SSH | 远端 sheprd-acp connect 代理 |
| 帧 | 4 字节小端长度加 JSON,最大 16 MiB |
| 同步 | Snapshot、Change、带 since 的订阅 |
| 游标 | epoch UUID 加 seq;启动或重载改变 epoch |
| 审批 | PermissionId;同一审批先接受的回答生效 |
| Herdr 集成 | pane.report_agent 上报状态,pane.report_metadata 发布 endpoint token |
序号支持同步校验,不代表无限保留历史;恢复仍受缓存策略限制。
8.5 视图切换与模式转换
| 操作 | 是否重启 Agent | 实际含义 |
|---|---|---|
| 同一协议会话切换 GUI 与终端视图 | 不需要 | 访问同一个 sheprd-acp,终端显示它自绘的 TUI |
| 给已有原生 TUI 增加日志视图 | 不需要 | 只读观察,输入和审批留在原终端 |
| 原生 TUI 转为协议控制 | attach 不能自动完成 | 需要受支持的交接,或停止后 resume;不保证无缝 |
Linux 的 render_existing/observe 验证会话 ID、PID 和起始时间,原进程结束或身份变化时退出;手工 mirror 读取明确指定的 Claude/Codex JSONL,提供只读 endpoint。
观察路径不启动或恢复 Agent,不写日志,不把历史工具记录还原成实时审批。读取窗口、条目、文本和图片有上限,格式支持属于尽力兼容。
8.6 手机与独立远程服务
sheprd-remote-control 是独立用户服务,GUI 退出后可以继续运行,聚合 Herdr 会话、已有 core 终端及协议聊天,自身不启动或升级 Herdr daemon。
手机使用 HTTPS/WebSocket,原生端固定主机指纹并使用签名会话认证;PWA 使用同一服务。优先 Tailscale,其次 LAN,默认端口 7443,跨网络需要可达路径。远程主机可经 SSH 部署服务,手机分别连接各主机。
这与 herdrm 的 Noise 会话内再跑 SSH 的 Relay 不同,也不能推断为 WebRTC P2P。推送与会话数据连接是不同通道。
检查提交:72b49b1bd4be6930e3cbdc3c191dda1a0cf41fa4。项目与 Herdr 官方无隶属关系;旧名 herdr-gpui 仍出现在兼容标识。官方提供 iPhone/iPad TestFlight 和 PWA,原生项目以 iOS 26 为目标,未找到 Android 原生发布说明。
9. 统一会话架构建议
本节是设计建议,不代表四个项目已经采用相同模型。
9.1 对象与职责
| 对象 | 职责 |
|---|---|
| Session | 逻辑对话的稳定身份,关联 Agent 原生会话 ID |
| Runtime | 托管、发现和关联进程与终端,如本机、Herdr、SSH |
| Session Broker | 协议会话唯一主动控制者,归并状态并协调命令和审批 |
| Agent Adapter | 把 ACP、SDK、app-server 等转换为统一语义 |
| TerminalSource | 提供画面、输入、尺寸等能力,可实现为 attach 桥接 |
| TranscriptSource | 读取明确关联的日志,默认只读,补充历史和观察 |
| View | GUI、手机、TUI、CLI,呈现状态并提交操作 |
Session、进程、终端和窗格分别编号。进程重启或移动窗格不必创建新对话;恢复关联需有明确会话 ID 和实际恢复结果,不能只靠目录或时间猜测。
9.2 一个 API,两种执行路径
flowchart TB
V["GUI / 手机 / CLI"] <-->|"能力、快照、事件、命令"| S["统一 Session API"]
S <-->|"原生 TUI 会话"| X["终端与观察适配"]
S <-->|"结构化会话"| B["常驻 Session Broker"]
X <-->|"画面与输入"| R["Runtime:Herdr / 本机 / 远程"]
X <-->|"只读历史"| L["TranscriptSource"]
R <-->|"托管与终端连接"| T["原生 Agent TUI"]
B <-->|"唯一主动协议通道"| A["Agent Adapter"]
A <-->|"ACP / SDK / app-server"| P["协议模式 Agent"]
R -.->|"托管 Broker 生命周期"| B
两条分支表示不同会话执行模式,不要求同一个 Agent 同时支持原生 TUI 与协议控制。若后续支持模式交接,应作为经过验证的独立能力。
9.3 按能力提供操作
Session 返回 capabilities,不能用一个“支持聊天”布尔值概括全部能力。
| 能力组 | 示例与边界 |
|---|---|
| 观察 | 状态、画面、历史、工具记录;标明来源与实时性 |
| 终端控制 | 按键、粘贴、尺寸、滚动、驱动权 |
| 终端辅助 | 提示词提交、画面选项选择;明确识别与确认限制 |
| 协议控制 | 发消息、取消轮次、设置、带 ID 的审批或问题回答 |
| 生命周期 | 创建、关联、恢复、停止进程;与关闭视图分开 |
屏幕发现“等待审批”不代表具备协议审批能力;日志显示工具历史,也不代表能取消或批准当前工具。
9.4 信息来源与同步
终端、协议、transcript 是三类信息来源,hooks 可作为额外状态输入,不应当作等价的实时事实。
- 终端通道声明原始字节、镜像或 cells/patch,各自定义基线及增量。
- 语义事件统一消息、工具、审批、问题和轮次生命周期,事件名可采用 message.delta、tool.started、approval.requested 等。
- 事件包含 Session ID、来源、epoch、序号;有依据时附轮次、工具和审批 ID。
- 日志保留记录身份或偏移,重读去重,历史重载不重复触发通知或审批。
- 连接、执行、待用户操作分别建模;离线意味着不可观测,不等于空闲或完成。
- 结构化事件在明确覆盖的范围内优先,画面与 hooks 补充时记录有效期,避免陈旧状态覆盖新事实。
9.5 输入协调与资源边界
- 每个执行会话由一个协调器管理主动输入。多客户端共享视图,驱动权和命令按明确规则协调。
- 协议审批绑定请求 ID,原子校验是否仍待处理;终端辅助操作即使重检画面,仍须承认检查到发送之间的竞态。
- 重连结合带游标快照与有序增量;处理快照和订阅竞态,epoch 变化或序号缺口时重新同步。
- 限制缓存、日志、订阅、在途请求,慢客户端不阻塞 PTY 读取;恢复窗口耗尽则回退快照。
- 区分关闭视图、断开连接、取消轮次、停止 Agent、关闭终端、停止 daemon。
- 不支持两种模式并行控制时,先确认原进程退出,再调用受支持的 resume,处理未确认输入与恢复失败。
9.6 实施顺序
- 定义 Session 身份、能力、事件与生命周期,明确观察和控制边界。
- 实现 Herdr Runtime:枚举、事件、单窗格 attach、输入、重连,先接已有 Agent。
- 加入 hooks 和只读 transcript,验证会话关联、去重和状态时效。
- 为一个 Agent 实现常驻 Broker 与协议 Adapter,同时提供聊天 TUI 和 GUI 接口。
- 验证多端审批、断线同步、退出行为,再扩展 Agent 与远程服务。
10. 名称与读法
herdr、sheprd 都不是标准英文单词的常规拼写。本次未找到官方明确发音或命名来源说明,以下按拼写与产品比喻解释。
| 名字 | 对应英文 | 词义与自然读法 |
|---|---|---|
| herdr | herder | 牧人、放牧者,近似“赫尔德”;herd 是畜群,也可表示聚集、引导 |
| sheprd | shepherd | 牧羊人、照看或引导者;美式 /ˈʃepɚd/,近似“谢珀德”,ph 不读 /f/ |
可理解为“照看一群 Agent”的品牌比喻,按完整单词读,无须按删减后的辅音硬拼。
11. 参考资料
Kero
Orca
Herdr 与 herdrm
- Herdr API。attach 另核对本机 src/cli/agent.rs、src/server/headless.rs,未记录固定提交。
- herdrm 仓库与维护状态。以下固定在研究提交:
- HerdrService、SocketRPC、PTY。
- 手机聊天、传输、Relay。