近期在飞书平台部署了两个 nanobot 实例,经过三天的深度使用与源码研读(配合 AI 辅助),针对运行中遇到的实际问题进行了逻辑梳理。本文旨在记录核心架构理解及发现的潜在问题。
| Agent 模块结构 | 提示词模板目录 |
|---|---|
![]() |
![]() |
通过抓包观察不同业务场景下的 Prompt 组装过程:
| 普通用户对话 | Channel 渠道消息处理 |
|---|---|
![]() |
![]() |
| Heartbeat 心跳检测 | Dream 梦境记忆整理 (Phase 1 & 2) |
|---|---|
![]() |
![]() |
| identity.md (基础人设) | AGENTS.md (工作区规范) |
|---|---|
![]() |
![]() |
| 技能加载逻辑 | 技能内容示例 |
|---|---|
![]() |
![]() |
| 流程概览 | 详细执行步骤 |
|---|---|
![]() |
![]() |
| 文件去重标记逻辑 | 防 Prompt 注入 “免责声明” |
|---|---|
![]() |
![]() |
| 两个处理阶段 | 游标(Cursor)追踪机制 |
|---|---|
![]() |
![]() |
| 游标存储位置 | |
![]() |
nanobot 将会话分为定时任务会话和用户交互会话,统一存储在 workspace\sessions 目录下。
数据处理闭环:
workspace\memory\history.jsonl。history.jsonl,提取关键事实转化为长期记忆(MEMORY.md)或自动化技能(skills/)。在双实例并行运行的环境下,观察到以下 4 个异常现象:
context_window_tokens 的估算或边界检查存在逻辑漏洞。file_state 缓存标记文件已读,但实际发送给 LLM 的上下文中该文件内容已被裁剪(Snipping)丢失,导致 AI 无法获取必要信息却仍被阻止重新读取。HEARTBEAT.md 似乎已失去独立存在的意义,其记录的周期性任务状态正逐渐被 MEMORY.md 的记忆提取功能所覆盖。