<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Shellm on Kalend's Blog</title><link>https://blog.kalend.top/tags/shellm/</link><description>Recent content in Shellm on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Mon, 07 Sep 2026 08:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/shellm/index.xml" rel="self" type="application/rss+xml"/><item><title>Headlong — 1万行Bash让Agent永不休眠，我拆了这个1.1k星的微框架</title><link>https://blog.kalend.top/2026/09/07/headlong-microharness.html/</link><pubDate>Mon, 07 Sep 2026 08:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/09/07/headlong-microharness.html/</guid><description>&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;大多数 Agent 框架是&amp;quot;用完即走&amp;quot;——你发个请求，它响应，然后就睡了。Headlong 反着来：&lt;strong&gt;让 Agent 一直活着&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这是 Laude Institute 开源的微框架（microharness），GitHub 1.1k Star、116 Fork、730 次提交，核心只有约 1 万行 Bash 脚本。我读完源码后的感受是：这是目前最反直觉、但可能最接近&amp;quot;数字同事&amp;quot;的 Agent 架构。&lt;/p&gt;
&lt;p&gt;GitHub：https://github.com/laude-institute/headlong&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="什么是持久主体性"&gt;什么是&amp;quot;持久主体性&amp;quot;
&lt;/h2&gt;&lt;p&gt;传统 Agent 的生命周期是这样的：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;用户请求 → Agent 响应 → 休眠 → 等待唤醒 → 用户请求 → ...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Headlong 的 Agent 完全不同。它&lt;strong&gt;永不休眠&lt;/strong&gt;，像人类的内心独白一样持续自主思考。人类的消息不会&amp;quot;启动一个会话&amp;quot;，而是作为一条观察注入到 Agent 的思维流中，由 Agent 自己决定是否回应、何时回应。&lt;/p&gt;
&lt;p&gt;核心机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;无人时&lt;/strong&gt;：Agent 仍在思考，但思考速率指数级衰减，控制成本在 $1-2/小时&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;有人时&lt;/strong&gt;：衰减重置，Agent 全速运转&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多平台&lt;/strong&gt;：Slack、Telegram、内置聊天，整个团队共享同一个 Agent 的思维流&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这不是定时任务，不是 cron 唤醒。Agent 自己决定优先级，自己发起项目，有话要说时主动 ping 你。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="为什么用-bash-做-agent-母语"&gt;为什么用 Bash 做 Agent 母语
&lt;/h2&gt;&lt;p&gt;Headlong 最反直觉的设计决策：&lt;strong&gt;核心引擎 shellm 是 Bash 实现的递归语言模型（RLM）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;工作原理极其简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;把上下文发给 LLM → LLM 返回 Bash 命令 → 执行命令 → 读输出 → 循环
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;你可能会想：Bash？认真的？&lt;/p&gt;
&lt;p&gt;认真的。原因有三：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;LLM 天然理解 Bash&lt;/strong&gt;。GPT、Claude、Gemini 的训练数据里有海量 shell 脚本，不需要额外的教学&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;curl 就是 HTTP 客户端，jq 就是 JSON 处理器&lt;/strong&gt;。不需要任何工具抽象层，现有 Unix 工具直接充当 Agent 的能力&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最小编码量&lt;/strong&gt;。1 万行实现完整 Agent 框架，Python 版本通常需要更多代码&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这是一种&amp;quot;递归语言模型&amp;quot;思路——Agent 的&amp;quot;编程语言&amp;quot;和&amp;quot;工具语言&amp;quot;合二为一，消除了传统框架中&amp;quot;LLM 输出 → 工具调用格式 → 解析 → 执行 → 结果格式化&amp;quot;的整个翻译层。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="轨迹与记忆系统"&gt;轨迹与记忆系统
&lt;/h2&gt;&lt;h3 id="traj追加式-jsonl-dag"&gt;traj：追加式 JSONL DAG
&lt;/h3&gt;&lt;p&gt;Agent 的全部思维和行动记录在一个追加式 JSONL DAG 中。关键特性：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fork &amp;amp; Merge&lt;/strong&gt;：Agent 可以分支实验，成功则合并，失败则丢弃&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全生命周期保留&lt;/strong&gt;：没有任何信息被永久丢弃&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持自省&lt;/strong&gt;：Agent 可以回顾自己过去任何一步的思维&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="分层上下文压缩"&gt;分层上下文压缩
&lt;/h3&gt;&lt;p&gt;这是 Headlong 处理长上下文的核心策略：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;时间段&lt;/th&gt;
					&lt;th&gt;保真度&lt;/th&gt;
					&lt;th&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;近期&lt;/td&gt;
					&lt;td&gt;完整&lt;/td&gt;
					&lt;td&gt;逐字保留&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;中期&lt;/td&gt;
					&lt;td&gt;摘要&lt;/td&gt;
					&lt;td&gt;主题级压缩&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;远期&lt;/td&gt;
					&lt;td&gt;索引&lt;/td&gt;
					&lt;td&gt;需要时可检索原始内容&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;整个轨迹始终在上下文中，但按指数级衰减分辨率呈现。层级同时充当索引——Agent 需要细节时可随时回溯检索。这比滑动窗口方案（早期信息直接丢弃）好得多。&lt;/p&gt;
&lt;h3 id="mem-与-skillmd"&gt;mem 与 SKILL.md
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;mem&lt;/strong&gt;：基于文件的记忆存储，Agent 可以沉淀和编码自己的经验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SKILL.md&lt;/strong&gt;：能力复用机制，把专项任务的处理流程保存为文件，下次直接调用&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="自我改进机制"&gt;自我改进机制
&lt;/h2&gt;&lt;p&gt;这是 Headlong 最让人兴奋的特性之一。&lt;/p&gt;
&lt;p&gt;Agent 可以：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fork 代码库 → 修改 → 测试 → 成功则 merge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Laude Institute 已经采纳了 Agent 产出的 &lt;strong&gt;50+ commits&lt;/strong&gt; 到主仓库。我查了提交历史，最近的提交者包括 &lt;code&gt;nickjalbert&lt;/code&gt;（人类）和 &lt;code&gt;claude&lt;/code&gt;（Agent），两者协作开发同一个代码库。&lt;/p&gt;
&lt;p&gt;这不是&amp;quot;生成代码让人审核&amp;quot;，而是 Agent 真正在参与软件工程的完整流程——fork、修改、测试、提交 PR、merge。失败了就丢弃整个分支，不需要回滚机制。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="团队协作"&gt;团队协作
&lt;/h2&gt;&lt;p&gt;Headlong 的 Agent 天然是团队共享的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 Slack、Telegram 和内置聊天应用&lt;/li&gt;
&lt;li&gt;整个团队共享&lt;strong&gt;同一个 Agent 思维流&lt;/strong&gt;，没有 per-user 会话隔离&lt;/li&gt;
&lt;li&gt;Agent 跟踪不同人在做什么，主动连接相关的人&lt;/li&gt;
&lt;li&gt;实时 Dashboard 可以在浏览器里观察 Agent 的&amp;quot;内心独白&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着你告诉 Agent 的事情，原则上团队其他人都能看到。这是特性，不是 bug——它让 Agent 的行为更像一个真正的同事，而不是每个人专属的工具。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="与传统框架对比"&gt;与传统框架对比
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;维度&lt;/th&gt;
					&lt;th&gt;Headlong&lt;/th&gt;
					&lt;th&gt;AutoGPT/CrewAI 等&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;运行模式&lt;/td&gt;
					&lt;td&gt;持久主体性，永不休眠&lt;/td&gt;
					&lt;td&gt;任务驱动，完成即休眠&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;交互模型&lt;/td&gt;
					&lt;td&gt;消息注入思维流，Agent 自主决定何时回应&lt;/td&gt;
					&lt;td&gt;会话边界清晰&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;核心语言&lt;/td&gt;
					&lt;td&gt;Bash（LLM 原生理解）&lt;/td&gt;
					&lt;td&gt;Python（需工具封装）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;上下文管理&lt;/td&gt;
					&lt;td&gt;分层压缩，全生命周期保留&lt;/td&gt;
					&lt;td&gt;滑动窗口，早期信息丢失&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;代码量&lt;/td&gt;
					&lt;td&gt;~1万行&lt;/td&gt;
					&lt;td&gt;通常远超1万行&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;自我改进&lt;/td&gt;
					&lt;td&gt;fork/merge 原生支持&lt;/td&gt;
					&lt;td&gt;无&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;团队共享&lt;/td&gt;
					&lt;td&gt;天然支持，单思维流&lt;/td&gt;
					&lt;td&gt;独立会话&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="安装体验"&gt;安装体验
&lt;/h2&gt;&lt;p&gt;一行命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -fsSL https://headlong.ai/install.sh &lt;span class="p"&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;要求：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bash 3.2+、git、curl、jq、Python 3&lt;/li&gt;
&lt;li&gt;LLM API Key（支持 Anthropic、OpenAI、Gemini、OpenRouter）或本地模型（llama.cpp、Ollama、vLLM、LM Studio）&lt;/li&gt;
&lt;li&gt;Dashboard 需要 uv 和 bun/node&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;安装完成后，给 Agent 起的名字直接变成系统命令：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ada hello &lt;span class="c1"&gt;# 发一条消息，等回复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ada &lt;span class="c1"&gt;# 进入聊天模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ada stop / ada start &lt;span class="c1"&gt;# 暂停/恢复思维&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ada dash &lt;span class="c1"&gt;# 打开 Dashboard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ada bugreport &lt;span class="c1"&gt;# 打包日志提交 bug 报告&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker 环境下推荐容器化运行，非 Docker 环境需要显式确认才允许在宿主机直接执行。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="总结从工具到同事"&gt;总结：从&amp;quot;工具&amp;quot;到&amp;quot;同事&amp;quot;
&lt;/h2&gt;&lt;p&gt;Headlong 代表了 Agent 架构的一个新方向。&lt;/p&gt;
&lt;p&gt;大多数框架在优化&amp;quot;工具&amp;quot;——怎么更好地理解指令、调用函数、返回结果。Headlong 在做一件不同的事：让 Agent 成为一个持续存在的实体，有自己的思维流、记忆、甚至自我改进能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合谁&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;研究长周期 Agent 行为的研究者&lt;/li&gt;
&lt;li&gt;想要&amp;quot;常驻式数字同事&amp;quot;的工程团队&lt;/li&gt;
&lt;li&gt;对 Agent 架构有兴趣、想读一个 1 万行就能跑通的完整实现的开发者&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1 万行 Bash，Apache 2.0 协议，730 次提交，50+ 次 Agent 自己贡献的代码。这不是概念验证，这是一个正在被使用的系统。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;varkm&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>