资讯动态

如何为Headlong编写自己的thinker?Agent扩展开发完整指南

发布时间:2026/10/14 18:36:10 来源:尧图企业网站定制
【免费下载链接】headlongAn open source agent microharness featuring persistent agency and recursive LLMs. Of bash, by bash, for bash; its shells all the way down.项目地址https://gitcode.com/gh_mirrors/headl/headlong点击查看免费下载Headlong是一个开源的 Agent 微内核agent microharness主打持久智能体 递归 LLM一切基于 bash。它最有趣的扩展点叫thinker每个 thinker 就是一个独立的思考过程能订阅 Agent 的思维轨迹trajectory并在有新步骤写入时自动被唤醒处理。本文是一份面向新手的 Headlong thinker 扩展开发指南带你从零写出自己的 Agent 扩展模块——只需要一个目录、一个step脚本和一个订阅文件。什么是 thinkerHeadlong 的 Agent 扩展机制可以把 Headlong 的 identity身份体想象成一颗大脑它的心智活动全部记录在一条根轨迹root trajectory上每一次思考thought、行动action、观察observation、消息message都是一行 JSON。thinker 就是订阅这条轨迹上的事件、并被事件唤醒的独立模块分发器dispatcher在后台tail跟踪轨迹文件每当有新步骤写入dispatcher 匹配所有 thinker 的订阅规则命中的 thinker 的step脚本被调用触发步骤的 JSON 通过stdin传入thinker 处理后把结果写回轨迹用traj append又会唤醒其他 thinker——由此实现并发与组合。完整机制文档见 design/THINKERS_spec.md模块总览见 thinkers/README.md。 一个关键规则thinker 写入轨迹的每个步骤都必须带source:thinker名字字段dispatcher 靠它做防自触发避免你的模块对自己输出死循环。动手前先读这三个内置 thinkerHeadlong 自带三个参考实现分别代表了三种典型形态建议对照学习thinker职责特点源码参考monolith主心智循环思考/行动/学习/记忆全路由每次唤醒跑一次 shellm agentic run带退避时钟thinkers/monolith/stepresponder即时聊天回复只订阅message单次 LLM 调用 chat reply追求最低延迟thinkers/responder/stepretrieval被动记忆召回纯词索引匹配、默认不调用 LLM默认禁用轻量示范thinkers/retrieval/step其中 thinkers/responder/subscriptions.jsonl 的内容极简只有一行{types:[message]}这就是最简单的订阅任何message步骤都会唤醒它。而 thinkers/monolith/subscriptions.jsonl 则展示了带trigger_self的完整写法{types:[observation,action,merge,monolith-wake],trigger_self:false}一步创建新 thinkerscaffold 脚手架在 identity 环境下identity shell name进入执行thinkers new my-thinkerCLI 实现位于 bin/thinkers 的cmd_new函数。一条命令即可在$THINKERS_DIR/my-thinker/下生成标准目录结构my-thinker/ step # 必填每次匹配到步骤时被调用的可执行脚本 subscriptions.jsonl # 必填订阅哪些步骤类型 prompt.md # 可选shellm 型 thinker 的提示词模板 start / stop # 可选thinkers start/stop 时调用常驻进程用命名规则小写字母、数字、连字符不能带点号pending 队列文件名按点分隔见下文进阶技巧。编写 step 脚本如何读取触发事件、写回结果step是一个普通 bash 可执行文件协议非常轻量触发步骤的 JSON 从 stdin 进来处理完退出即可。官方脚手架生成的骨架逻辑节选自 bin/thinkers 中cmd_new生成的模板#!/usr/bin/env bash set -euo pipefail step_json$(cat) # 读取触发的 step JSON # ... 在这里实现你的逻辑调 llm、跑 shellm、或直接处理 # 结果用 traj append 写回轨迹记得带 source 字段写回轨迹的标准写法参考 thinkers/retrieval/step 第 71–74 行jq -nc --arg c I recalled something --arg s $THINKER_NAME \ {type:observation, content:$c, source:$s} | traj append脚本运行时会拿到全套 identity 环境变量变量含义IDENTITY_DIR/IDENTITY_NAMEidentity 根目录与名字TRAJ_DIR/TRAJ_ID轨迹目录与根轨迹 UUIDMEM_DIR记忆markdown 文件目录THINK_MODELthinker 调用的 LLM 模型THINK_CONTEXT_TAIL上下文携带的最近步骤数公共工具函数加载环境、组装系统提示词、读取最近流等都在 thinkers/_lib/common.sh你的step里直接source $SCRIPT_DIR/../_lib/common.sh就能复用——三个内置 thinker 都是这么干的。配置订阅文件subscriptions.jsonl 字段速查subscriptions.jsonl每行一个 JSON 对象字段如下详见 design/THINKERS_spec.md字段必填说明traj_id否订阅哪条轨迹缺省为$TRAJ_ID根轨迹types否匹配的步骤类型数组缺省 订阅所有类型trigger_self否true时 thinker 会收到自己的输出默认false防自触发watchdog_secs否存活看门狗窗口空闲超过该秒数dispatcher 会合成一个idle触发保活常用步骤类型thought、action、observation、message、merge、idle还可以有自定义类型如monolith-wake。⚠️ 注意订阅是静态的dispatcher 只在启动时读取一次。修改subscriptions.jsonl后必须重启分发器thinkers stop thinkers start启动与验证确认你的 thinker 已接入thinkers start # 启动 dispatcher会调用各 thinker 的 start 脚本 thinkers list # 列出已安装 thinker 及其订阅信息 thinkers status # 查看 dispatcher 与各 thinker 状态排查问题时看两个地方日志$IDENTITY_DIR/run/logs/name.log—— 每个 thinker 每次 step 的 stdout/stderr 都在这里轨迹traj tail查看你的 thinker 写回的步骤是否带上了正确的source字段。进阶技巧避开三个最常见的坑1. 自触发与防死循环默认trigger_self:false下dispatcher 会自动把source等于你名字的步骤过滤掉。如果你希望自我循环像 monolith 早期版本那样持续思考需显式设trigger_self:true——但要保证每次唤醒都追加至少一个步骤否则循环会断。2. 并发时的 pending 队列thinker 正忙时到达的步骤不会丢——message和action会按 FIFO 排队每个 thinker 每类型最多 16 条其他类型则后到覆盖先到last-wins 合并。所以 thinker 名字和步骤类型不能带点号。3. 看门狗保活对trigger_self型订阅dispatcher 有 liveness watchdog——你的 thinker 若在某时间窗口内彻底安静会被合成idle触发重新唤醒。即使你的脚本崩溃最坏情况也只是延迟一个窗口时间而不会脑死亡。总结Headlong thinker 开发的三步清单步骤命令 / 动作1️⃣ 脚手架thinkers new my-thinker2️⃣ 实现编辑stepstdin 读 JSON → 处理 →traj append写回带source按需编辑subscriptions.jsonl和prompt.md3️⃣ 上线thinkers stop thinkers start用thinkers list/status验证想深入主循环设计可继续阅读 design/monolith_thinker.mdmonolith 的设计动机与函数菜单和 design/monolith_backoff.md唤醒退避时钟。祝你在 Headlong 的 bash 世界里构建出属于自己的思维模块 赞分享【免费下载链接】headlongAn open source agent microharness featuring persistent agency and recursive LLMs. Of bash, by bash, for bash; its shells all the way down.项目地址https://gitcode.com/gh_mirrors/headl/headlong点击查看免费下载相关推荐如何为OpenCreator编写自己的SkillsSKILL.md自定义工作流与MCP扩展完全指南如何为OpenCreator编写自己的SkillsSKILL.md自定义工作流与MCP扩展完全指南 OpenCreator 是一个基于 Codex 运行时的本人工智能AI 应用大模型AI Agent媒体生成音视频视频Malloy 语义建模语言构建高效数据模型的最佳实践Malloy 语义建模语言构建高效数据模型的最佳实践 Malloy 是一款现代开源语义建模语言专为描述数据关系和转换而设计。通过 Malloy数据分析师和如何为LanguageExt编写扩展自定义函数式组件开发完整指南如何为LanguageExt编写扩展自定义函数式组件开发完整指南 想要为C 函数式编程库LanguageExt开发自定义扩展吗本终极指南将带你从零开始掌握后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑