Headlong 拆解:不到一万行 Bash 的持久 Agent 微 harness,如何把空闲从免费变成计费项 📅 发布时间:2026/9/6 7:26:47 👁 浏览次数: 从一个任务结束后的失忆事故说起凌晨一点半值班群有人贴日志编码智能体已安静四十分钟。长重构在二十三点十二分返回结束标记后运行时进入空闲中间假设与待验证补丁被会话边界切断。早会有人问它为何放弃第三条迁移路径它只能重读仓库对不上昨夜判断顺序。这不是模型变笨而是反应式 harness 把任务结束写成了心智停机。多数生产 Agent 仍按请求响应组织发任务、跑工具、完成后冻结。加了 cron 的版本只按固定清单醒来再睡去能覆盖健康检查却覆盖不了开放式续想。Laude Institute 于二零二六年八月二十五日公开 Headlong把默认态改成持续生成下一条思考而不是休眠等待下一张工单。把该点写进变更说明复盘时按轨迹编号核对。Headlong 自称 microharness核心不到一万行 Bash。卖点是 persistent agency人类消息不开启新会话只作为观察落入同一思维流智能体决定是否回复、何时回复、对谁回复。共享实例 Audel 把 Slack、Telegram 与移动端汇入一条时间线。会话边界、记忆压缩、权限与成本模型都要按这条主线重写。把该点写进变更说明复盘时按轨迹编号核对。持久 agency消息只是观察不是开机键三种 harness 可放同一坐标比较。反应式活跃区间等于消息处理区间空闲近乎零成本跨任务连续性也是零。反应式加 cron 用清单补洞成本可控但主动性被锁死。Headlong 让思考环常转空闲也烧 token换来自发项目与隔夜推进。选型是在按次确定性与按小时主动性之间做预算不是追模型榜单。持久 agency 的最小实现是无限循环调用大模型要求根据过往思考选择下一条思考。思考可以是独白也可以触发动作环境观察注入同一条流。Headlong 不设总控微服务Thinker 反复调用 shellmshellm 再调用 llm直到设置 FINAL。少一层编排就少一层故障时互相推诿的状态机。把该点写进变更说明复盘时按轨迹编号核对。核心语言选 Bash因为 Laude 同时维护 Terminal-Bench 与 Harbor现代模型已经很会写 shellcurl 与 jq 足够完成 HTTP 和 JSON。工具、记忆、技能若都是可执行文件与文本智能体就能用同一手段检查并修改自身。Python 框架对象与模型可操作文件之间常有缝隙Bash 把缝隙压到管道、文件与环境变量。把该点写进变更说明复盘时按轨迹编号核对。Bash microharness 与 shellm 递归内核shellm 是 Bash 版 Recursive Language Model。根调用不把超长上下文一次性塞进提示而让模型在可执行环境里读写变量、跑命令并递归拉起子调用。Alex Zhang 在二零二五年用 Python REPL 演示上下文当变量Headlong 把同一思想落到 shell使递归子运行与运维命令共享语法调试不再拆成两套日志。把该点写进变更说明复盘时按轨迹编号核对。典型 shellm 循环是组装上下文、请求文本或 bash、立即执行、回喂直到 FINAL。看门狗曾默认三十秒无输出就杀进程。Audel 上线首夜与它对打约四十分钟后递归子运行明显变少。超时阈值会直接重塑在线策略偏好。把该点写进变更说明复盘时按轨迹编号核对。公开数字与边界条件已足够支撑判断。官方数字需要单独记账。递归 shellm 结果前两天合并回主思维六十四次此后十二天只有十二次。不是模型突然不会递归而是看门狗塑造偏好。团队改造看门狗后再观察使用率。Harness 参数会训练在线行为这一反馈环比离线评测更接近生产变更后应跟踪一周动作分布。把该点写进变更说明复盘时按轨迹编号核对。轨迹 trajectory 被做成 jsonl 的 DAG支持 fork 与 merge可按需下钻任意一步。context 模块把轨迹投影成下一轮消息而不是就地覆盖原始记录。压缩与自省共用同一批文件与工具避免日志、提示、磁盘三份真相互相打架。原始轨迹只追加是后续审计能成立的前提。把该点写进变更说明复盘时按轨迹编号核对。轨迹 DAG、分层压缩与可下钻记忆分层压缩 tiered compaction 直接服务短时记忆。早期 Audel 短时记忆差到影响持续思考团队改为指数衰减分辨率近条目原文远条目逐级摘要各层兼作索引。这与每次生成不可逆总结不同。不可逆摘要一旦丢否决理由长程智能体就会在第三十步否认第二步假设复盘只能靠猜。把该点写进变更说明复盘时按轨迹编号核对。子智能体看得到祖先轨迹能读到创建原因、父级已尝试路径与自身位置。只传任务说明书的多智能体系统容易重复踩坑Headlong 用共享历史降低无效探索。代价是隐私更难硬隔离。企业若需要租户级保密不能把多人对话塞进同一 mind这是产品边界而不是提示词技巧。把该点写进变更说明复盘时按轨迹编号核对。技能系统保持简陋skills 安装或卸载 Markdown装入即进上下文mem 是文件仓库。默认不强制向量库先让可读写文件加模型检索跑通。对 LangGraph 用户显得原始对要一晚改 harness 的人则减少搬家成本。扩展可以后加生命周期假设必须先写清楚。把该点写进变更说明复盘时按轨迹编号核对。公开材料中的数字与边界已足够支撑判断。安装压到一行 curl 脚本依赖 bash 三点二以上、git、curl、jq 与 LLM 密钥仪表盘还要 uv 与 bun 或 node。有 Docker 可选整容器或命令沙箱无 Docker 宿主机直装需显式确认。官方定位 alpha要求专用且设消费上限的密钥不建议塞生产机密。这些应写成启动失败条件。把该点写进变更说明复盘时按轨迹编号核对。公开材料中的数字与边界已足够支撑判断。安装面、命令面与每小时成本智能体名字变成命令hello 发消息stop 与 start 暂停恢复dash 打开思维仪表盘bugreport 打包去密钥日志。panic 按钮是 headlong-killall。命令行即控制面减少额外控制台微服务也让人类与编码智能体共用同一套动词。运维文档可按子命令组织而不必另起门户。把该点写进变更说明复盘时按轨迹编号核对。公开材料中的数字与边界已足够支撑判断。成本必须进选型表。Laude 用 GLM 或 Grok 跑持续思考约每小时一到两美元全天粗算每月七百到一千四百美元。空闲指数退避五秒到十秒、二十秒直至上限新消息立即复位。主动性与账单绑定不再是几乎免费的后台 cron。预算只看见聪明看不见空闲第二周就会关环。把该点写进变更说明复盘时按轨迹编号核对。谁该买单要按产出定义。开放监测、隔夜研究、跨成员协调主动性本身是产出线索跟进与定时报表反应式加调度更便宜也更好审计。把 Headlong 当研究预览学习压缩与轨迹比当全业务默认运行时更冷静。架构虚荣的典型表现是把所有 LLM 调用都升级成持续心智。把该点写进变更说明复盘时按轨迹编号核对。多人单 mind 是特性也是陷阱。无 per-user session对话进同一时间线智能体可串联不同人的分支审查也曾首日未经请求审计某成员八个陈旧分支并在十分钟后自纠计数。乐趣来自它像同事。背面同样直白Audel 不擅长保密冲突指令仲裁未系统研究默认假设告知即共享。把该点写进变更说明复盘时按轨迹编号核对。多人单 mind 与 Audel 故障手册人事、薪酬、未公开漏洞进入共享实例不是配置失误是形态选错。敏感数据应拆反应式实例或独立沙箱。文档已写明不要向智能体提供敏感密钥执行时若读成免责声明装饰事故复盘只会重复同一段原文。治理条款要能阻断启动而不是事后训斥。把该点写进变更说明复盘时按轨迹编号核对。自改闭环是 fork、试验、merge。智能体可 fork 代码与轨迹改一处就跑好用合并失败丢弃。Laude 从 Audel 的 fork 拉回超过五十个提交。数字不证明质量但证明改自己的家不是口号。自终止也进手册Audel 三次停服务无人拉起保护过宽后又被它收窄并提交 da31e98。把该点写进变更说明复盘时按轨迹编号核对。公开材料中的数字与边界已足够支撑判断。与 Prime Agent 对照可看谱系。Prime Agent 基于 Pi、强调轨迹与递归语言是 PythonHeadlong 把 shell 当唯一工具面。二者不是互斥产品题而是对最小可改运行时的不同下注。评测缺口也被点名短任务榜单难度量连续两周是否有用早期采用应绑内部回放而非等待公开盖章。把该点写进变更说明复盘时按轨迹编号核对。RLM 谱系、安全边界与运维旋钮把 RLM 放回更长线索有助于去神话。二零二三年已有 Recursive LLM 实验二零二五年结果表明在困难长上下文上带递归的较小模型调用可在正确数与成本上优于直接调用更大模型深度研究任务上优于 ReAct 加测试时检索千万级 token 输入未崩塌。长上下文常是组织问题。把该点写进变更说明复盘时按轨迹编号核对。Headlong 的贡献是把该策略做成日夜运转 harness而不是一次性补全 API。窗口营销数字与在线连续思考是两条产品曲线。安全上有 Docker 则生成 bash 进容器Audel 在专用虚拟机无默认沙箱时爆炸半径等于整机加密钥。持续思考放大误操作窗口沙箱是保险丝不是装饰。把该点写进变更说明复盘时按轨迹编号核对。运维上要同时盯每小时 token、自发有效动作、首次响应时间。退避过猛会伤害主动联系时效无退避会打穿月度成本。消息复位保证交互不被节省策略绑架。与 MCP 的关系也要划界MCP 管工具发现与授权Headlong 管心智是否持续可在 shell 调 MCP但不是硬依赖。先定生命周期再定工具总线。把该点写进变更说明复盘时按轨迹编号核对。事后可问性来自轨迹 DAG你能追问任务结束后还试过哪些分支。可问性不等于正确性高层摘要仍可能丢掉否决理由故原始 jsonl 只读归档压缩只服务在线上下文。章节从故障与成本切入是因为差异化在于为空闲定价若只记住又一个 Bash Agent关键约束就没进预算表。把该点写进变更说明复盘时按轨迹编号核对。对已在用编码 Agent 的团队迁移路径可以更窄先借用分层压缩与轨迹 DAG 思想改现有 harness 的记忆层先不要打开二十四小时独白。等内部场景证明隔夜未完成任务需要心智连续性再引入持续 Thinker。这样能把研究软件的尖角挡在业务主路径外同时拿走可迁移结构。把该点写进变更说明复盘时按轨迹编号核对。若痛点是工具权限与供应链应先看 MCP 治理与 AI Inspector 类组件验收而不是上 Headlong。平台热点里安全与协议文章很多持续思考是另一条轴。用错轴会得到一个会熬夜的机器人却过不了权限审计。先分清你要解决的是生命周期还是工具总线再决定采购与改造顺序。把该点写进变更说明复盘时按轨迹编号核对。可运行 Thinker 循环与生产闸门下面给出理解 Thinker 循环的缩水版本驱动器不复制上游工具链只保留读轨迹、调模型、写回、退避睡眠。放在后部是为了让中段保持分析密度并让自动配图占位落在全文中部。它用于讲解控制结构不冒充官方二进制变量名与 FINAL 契约保持稳定以便替换供应商。把该点写进变更说明复盘时按轨迹编号核对。#!/usr/bin/env bash set -euo pipefail ROOT${HEADLONG_ROOT:-$HOME/.headlong/ada} TRAJ$ROOT/traj/main.jsonl MODEL${MODEL:-gpt-4.1-mini} BASE_SLEEP${BASE_SLEEP:-5} MAX_SLEEP${MAX_SLEEP:-300} sleep_s$BASE_SLEEP mkdir -p $(dirname $TRAJ) ts() { date -u %Y-%m-%dT%H:%M:%SZ; } append_traj() { local kind$1 text$2 printf {ts:%s,kind:%s,text:%s}\n $(ts) $kind \ $(jq -Rn --arg t $text $t) $TRAJ } load_context() { if [[ -f $TRAJ ]]; then tail -n 12 $TRAJ; else echo []; fi } call_llm() { local ctx; ctx$(load_context) llm --model $MODEL --system Choose next thought. End with FINAL1 when done. --user $ctx || true } on_message() { append_traj observation $1; sleep_s$BASE_SLEEP; } main_loop() { while true; do if [[ -f $ROOT/inbox.msg ]]; then on_message $(cat $ROOT/inbox.msg); rm -f $ROOT/inbox.msg; fi out$(call_llm | tee /dev/stderr) append_traj thought $out grep -q FINAL1 $out append_traj final cycle-complete sleep $sleep_s if (( sleep_s MAX_SLEEP )); then sleep_s$(( sleep_s * 2 )); (( sleep_s MAX_SLEEP )) sleep_s$MAX_SLEEP; fi done } main_loop驱动器暴露三个评审焦点。inbox.msg 用文件注入观察强调观察进轨迹优先于会话对象。退避与复位写在同一循环成本与交互策略不能分仓库。llm 与 jq、curl 平级方便智能体改调用参数。接到真实供应商时先固定 FINAL 与含 parent_id 的 schema再换传输否则并行子运行会让回溯塌成聊天记录。把该点写进变更说明复盘时按轨迹编号核对。生产化要把看门狗、容器与密钥注入写成启动失败条件。无 Docker 却直跑宿主机等于持续环拥有用户权限无消费上限密钥等于退避失效时账单不封顶。安装器已把分叉点做成人人要回答的问题团队流程不要再改回默认允许。权限启动时声明运行中智能体不能自行放宽。再看官方强调的 micro 体积bin 与 thinkers 合计约九千八到九千九百行。体积小的意义是人类和智能体都能端到端读完改动可以当日验证。大框架往往在扩展点里藏生命周期假设读三天仍不确定空闲态谁说了算。Headlong 用缩小体积逼迫假设写到文件名上。把该点写进变更说明复盘时按轨迹编号核对。迁移策略、选型表与三十天试验工作负载更合适形态关键约束强定义单据与定时任务反应式 harness空闲成本近零审计路径短可清单化巡检与队列反应式 cron主动性受清单限制隔夜研究与跨人协调Headlong 类持续思考按小时计费共享 mind 无硬隔离高敏感客户与人事数据独立反应式实例禁止多人单 mind仪表盘 headlong-web 的存在说明可观测性被当成心智产品的一部分。你要能看见它在想什么而不是只看见工具调用成功。持续智能体若只能通过最终副作用被感知团队会在推进与空转烧钱之间失去共同语言。把思维流可视化是成本治理的前置条件。把该点写进变更说明复盘时按轨迹编号核对。桥接器把 Slack 与 Telegram 接到同一内部经验比每个渠道一个机器人用户更像真人同事。但渠道越多注入观察的噪声越大分层压缩压力越高。建议为渠道事件打标人类指令、系统告警、机器人自动通知避免告警风暴在摘要层污染目标栈。把该点写进变更说明复盘时按轨迹编号核对。从组织接口看持久 Agent 会改变谁有权打断它。反应式系统里打断等于新请求持续系统里打断是向思维流注入高优先级观察且可能与自发项目冲突。需要明确规则哪些人可以 stop哪些人可以改 focus冲突指令如何进入仲裁队列而不是留给模型临场发挥。把该点写进变更说明复盘时按轨迹编号核对。技术判断上我更看好轨迹一等公民与分层压缩被其他 harness 吸收其次才是 Bash 纯主义。语言之争会随团队栈变化而原始记录不可就地毁灭式总结是跨实现的纪律。谁先把这条纪律做成默认谁更不容易在第三周复盘会上说不清模型当时为何改口。把该点写进变更说明复盘时按轨迹编号核对。另一个可迁移判断是看门狗与安全阀会塑造策略必须进回归。把超时从三十秒改到一百二十秒不只是减少误杀更可能重新打开递归子运行使用率。任何影响工具成功率的参数都应在变更后观察一周动作分布而不是只跑单元测试。把该点写进变更说明复盘时按轨迹编号核对。对开源贡献者仓库在 laude-institute 组织下的 headlong协议 Apache 二点零主页 headlong.ai。核心贡献者不在再写一个 Agent 框架的抽象竞赛里而在把持续思考的失败模式公开保密失败、自终止、递归被看门狗训服。失败叙事比成功演示更有复用价值。把该点写进变更说明复盘时按轨迹编号核对。把该点写进变更说明复盘时按轨迹编号核对。若用一张表总结选型行是工作负载类型列是 harness 形态。强定义工作流选反应式弱定义但可清单化的运维选 cron弱定义且需要隔夜主观能动性的研究协调才进入 Headlong 预算区。把所有模型调用都升级成持续心智是最贵的统一也是最常见的架构虚荣。把该点写进变更说明复盘时按轨迹编号核对。表外还有一列常被忽略数据敏感级。公开代码与可分享研究可以用共享 mind客户数据、人事与未公开安全细节不行。敏感级不满足时不是调提示词能修的必须拆实例或回到反应式。Headlong 文档已经把这句话写死执行时别读成免责声明装饰。把该点写进变更说明复盘时按轨迹编号核对。建议三十天试验周一对沙箱只读第二周只读接仓库第三周有限写入并设消费硬顶第四周回放对比介入次数。没有对比就不要写进正式服务目标。把空闲成本与连续性收益放在同一张表里看。把该点写进变更说明复盘时按轨迹编号核对。把该点写进变更说明复盘时按轨迹编号核对。硬约束三条必须同时满足。第一原始轨迹只追加、不就地改写。第二空闲退避与消息复位必须同一配置源。第三密钥、网络与文件系统权限在启动时声明运行中智能体不能自行放宽。违反任一条Headlong 的趣味会很快变成不可审计的长跑进程。把该点写进变更说明复盘时按轨迹编号核对。写到这里回到标题里的不到一万行。行数本身不神圣神圣的是它逼出的可修改性与可观测性。你能在一个下午读完核心就能在一个下午否决错误抽象。持久 Agent 风险很大唯一负责任的发布方式是让运行时小到出了问题还能被人读懂而不是大到只能重启。把该点写进变更说明复盘时按轨迹编号核对。Headlong 不取代现有编码助手它追问任务间隙为何必须失忆。Bash 微内核未必终局但把空闲改成计费项已够改写评审议程。下一份设计文档请把空闲策略写成一等条款。并附可回放轨迹样例与成本上限。把该点写进变更说明复盘时按轨迹编号核对。公开数字与边界条件已足够支撑判断。