
一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
agent 在家里的容器里跑,你在城另一头。agent 循环把每一步送进 Hoody Pipe;你在手机标签里 curl 同一条路径。轨迹一字一字落下——无 SSH、无仪表盘、无上传。
agent 循环本来就发出结构化事件——think、tool_use、result。用 PUT 把它们灌进一条路径。在手机上 GET 同一条路径。管道不存字节;它把字节流给正在读的人。
两条 HTTP 连接,一条路径。管道会让接收端的连接挂到发送端到达——你的手机可以在 agent 启动前就开着,也可以中途加入。Hoody Pipe 是它们之间的电线,从来不是数据库。
agent 发出四种行。每一种都告诉你仪表盘说不出的事:不只是发生了什么,还有 agent 当时在想什么。
模型用自己的话说出计划。为什么挑这个工具、期待什么回应、可能在哪里分叉。读这些就是实时读 agent 的脑子。
[think] user wants invoice CSV…agent 决定调用的精确函数和参数。一行一个调用,按循环触发的顺序排列。无 SDK 抽象;只是线缆层的请求。
[tool_use] sql.describe("invoices")工具的响应,精简到一行。行数、文件大小、状态码、错误信息。下一个 [think] 行将要思考的东西。
[result] 12 rows · 41 ms每一行都是 agent 发出的瞬间落下。无 5 秒刷新、无“最后更新于 2 分钟前”。光标闪时,agent 在两次思考之间。这是 tail,不是刷新。
[tool_use] files.write("invoices.csv")agent 跑了四十分钟。你像读书一样读完它。
四十分钟的推理、工具调用和结果——渲染成一条连续的彩色文本流。你不是在轮询端点,也不是在重载仪表盘。你在咖啡馆里 tail agent 的脑子。
看 agent 这件事,过去意味着一个 SaaS、一个仪表盘或一套自制 WebSocket 应用。一旦问“我直接 curl 不就行?”,这些都站不住脚。
把循环管道送出去,curl 那条路径。agent 的思考现在是一条你能读的 tail。