Headlong 拆解:不到一万行 Bash 的持久 Agent 微 harness,如何把空闲从免费变成计费项
2026/9/6 7:26:30 网站建设 项目流程

从一个任务结束后的失忆事故说起

凌晨一点半,值班群有人贴日志:编码智能体已安静四十分钟。长重构在二十三点十二分返回结束标记后,运行时进入空闲,中间假设与待验证补丁被会话边界切断。早会有人问它为何放弃第三条迁移路径,它只能重读仓库,对不上昨夜判断顺序。这不是模型变笨,而是反应式 harness 把任务结束写成了心智停机。

多数生产 Agent 仍按请求响应组织:发任务、跑工具、完成后冻结。加了 cron 的版本只按固定清单醒来再睡去,能覆盖健康检查,却覆盖不了开放式续想。Laude Institute 于二零二六年八月二十五日公开 Headlong,把默认态改成持续生成下一条思考,而不是休眠等待下一张工单。把该点写进变更说明,复盘时按轨迹编号核对。

Headlong 自称 microharness,核心不到一万行 Bash。卖点是 persistent agency:人类消息不开启新会话,只作为观察落入同一思维流;智能体决定是否回复、何时回复、对谁回复。共享实例 Audel 把 Slack、Telegram 与移动端汇入一条时间线。会话边界、记忆压缩、权限与成本模型都要按这条主线重写。把该点写进变更说明,复盘时按轨迹编号核对。

持久 agency:消息只是观察,不是开机键

三种 harness 可放同一坐标比较。反应式活跃区间等于消息处理区间,空闲近乎零成本,跨任务连续性也是零。反应式加 cron 用清单补洞,成本可控但主动性被锁死。Headlong 让思考环常转,空闲也烧 token,换来自发项目与隔夜推进。选型是在按次确定性与按小时主动性之间做预算,不是追模型榜单。

持久 agency 的最小实现是无限循环调用大模型,要求根据过往思考选择下一条思考。思考可以是独白,也可以触发动作;环境观察注入同一条流。Headlong 不设总控微服务,Thinker 反复调用 shellm,shellm 再调用 llm,直到设置 FINAL。少一层编排,就少一层故障时互相推诿的状态机。把该点写进变更说明,复盘时按轨迹编号核对。

核心语言选 Bash,因为 Laude 同时维护 Terminal-Bench 与 Harbor:现代模型已经很会写 shell,curl 与 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、强调轨迹与递归,语言是 Python;Headlong 把 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 FINAL=1 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 'FINAL=1' <<<"$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 微内核未必终局,但把空闲改成计费项已够改写评审议程。下一份设计文档请把空闲策略写成一等条款。并附可回放轨迹样例与成本上限。把该点写进变更说明,复盘时按轨迹编号核对。公开数字与边界条件已足够支撑判断。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询