当前位置:首页>java>港大nanobot4,000行代码复刻Clawdbot

港大nanobot4,000行代码复刻Clawdbot

  • 2026-08-27 00:27:39
港大nanobot4,000行代码复刻Clawdbot

当别的 AI 还在等你发消息时,nanobot 已经在主动干活了。

nanobot解决了一个核心问题:如何让 AI 从"被动回答"进化到"主动服务"?

核心架构Agent Loop

nanobot 的心脏非常简单—— 一个永不停歇的消息循环:

消息进来 → 组装上下文 → 问 LLM → 执行工具 → 发回结果

最巧妙的设计:LLM 不是直接给答案,而是决定用什么工具。这个过程最多循环 20 次,直到搞定任务。

就像雇了一个聪明实习生:你给他工具箱,他遇到困难会自己翻工具,而不是每次都来问你"这个怎么办"。

三大主动触发机制

真正让 nanobot 与众不同的是它的**"主动性"**:

1. Cron 定时任务 —— 到点就干

  • 支持 cron 表达式(0 9 * * * 每天早上9点)
  • 支持固定间隔(每3600秒提醒喝水)
  • 支持一次性任务(明天下午3点开会)
  • 持久化存储:任务写在 jobs.json,重启不丢
nanobot cron add --name "喝水提醒" --message "该喝水了!" --every 3600

2. 心跳服务 —— 周期性自检

  • 每30分钟自动唤醒一次
  • 检查 HEARTBEAT.md 里的待办清单
  • 有任务就执行,没任务就休眠(省 token!)
# HEARTBEAT.md## Active Tasks- [ ] 检查今天的待办邮件- [ ] 同步 GitHub 通知

3. 子 Agent —— 后台并行

  • 主对话不卡顿,耗时任务扔给"小弟"
  • 做完后通过系统消息通知结果
  • 支持多任务并发

模块化设计:像拼乐高一样扩展

模块
职责
亮点
工具系统
文件操作、shell、搜索
自动注册,LLM 直接调用
技能系统
Markdown 格式的"教学文档"
自动检测依赖,按需加载
内存系统
短期日记 + 长期记忆
7天滚动清理,避免膨胀
渠道层
Telegram、WhatsApp
统一接口,一键切换
LLM 层
OpenAI、Claude、Gemini...
一个接口,通吃所有

技能系统尤其优雅——用 Markdown 写"教学文档",前置 YAML 声明依赖,AI 需要时才加载,既省 token 又精准。

少即是多

nanobot 没有追逐复杂,而是坚持几个原则:

  1. 文件即配置 —— HEARTBEAT.md、SKILL.md、MEMORY.md,纯文本,版本友好
  2. 队列解耦 —— 消息总线让渠道和 AI 逻辑完全分离
  3. 渐进加载 —— 不用一次性塞满 prompt,需要时才读技能
  4. 节俭运行 —— 心跳空转时检测内容,无任务直接跳过

定时任务提供节奏,心跳提供主动性,子 Agent 提供并行力,文件系统提供持久化——这套组合拳,让 AI 真正从"聊天工具"变成了"自动化助手"。

https://github.com/HKUDS/nanobot

最新文章

随机文章