让AI自主记忆与思考 — Koclaw记忆与自律系统的三阶段实装
让AI自主记忆与思考 — Koclaw记忆与自律系统的三阶段实装
在之前的文章中,我介绍了Koclaw的基本架构和功能。但那时候的Kokoron,虽然能跨平台对话、有人格设定、有工具调用能力,但本质上仍然是"被动的" — 你说一句她回一句,对话结束后一切归零。
我想要的不是这样。我想让她能记住发生过的事,能自己决定什么值得记住,能在没人说话的时候也在思考,甚至能主动找我分享她的发现。
这篇文章记录了实现这个目标的三个阶段。
Phase 1:接入微调模型
在上一篇关于微调的文章中,我完成了Kokoron的性格微调。Phase 1的目标很明确:把微调好的模型接入Koclaw,替换掉之前依赖的云端API。
vLLM部署
用vLLM在服务器的18800端口部署微调后的Qwen3.5-27B模型。FP8量化,32K上下文窗口。这一步本身不难,但把本地模型接入Koclaw的Agent层需要解决几个问题:
流式思考标签过滤
本地模型在streaming输出时会带上<think>标签(内部思考过程),这些绝对不能暴露给用户。在Koclaw的OpenAI Provider中实现了一个状态机:
正常输出 → 检测到<think> → 进入缓冲模式 → 检测到</think> → 恢复输出
每个chunk都经过缓冲检测,只有确认是用户可见内容才会yield出去。流结束后还有一轮_strip_internal_tags()清理,移除残留的思考标签和泄露的工具调用标签。
Prompt-based工具调用
微调后的本地模型没有原生的function calling能力。解决方案是通过prompt注入工具定义,让模型用JSON格式输出工具调用:
{"tool": "memory_save", "arguments": {"content": "先生喜欢拉面", "importance": 3}}
Koclaw的tool_prompt.py负责渲染工具描述(用日语,匹配Kokoron的语境),bridge.py负责解析模型输出中的JSON工具调用。
这一阶段完成后,Kokoron在Telegram上的对话已经用上了自己微调的模型 — 性格、语气、多语言能力都是从模型权重中来的,不再依赖长长的System Prompt来"假装"。
Phase 2:四层记忆架构
Phase 1让Kokoron有了"灵魂",但没有"记忆"。每次重启、每次新对话,一切从头开始。Phase 2的目标是构建完整的记忆系统。
四层记忆模型
经过反复思考,我设计了一个四层记忆架构,每层有不同的存储方式、生命周期和管理者:
| 层级 | 名称 | 存储 | 生命周期 | 管理者 |
|---|---|---|---|---|
| 1 | 魂の記憶 | 模型权重 | 永久(直到下次训练) | 我(手动) |
| 2 | 長期記憶 | ChromaDB | 永久(可归档) | Kokoron(自主) |
| 3 | 日記帳 | JSONL文件 | 永久(只追加) | 自动 |
| 4 | 作業記憶 | 上下文窗口 | 仅当前会话 | ContextManager |
魂の記憶(Soul Memory) — 通过微调写入模型权重的核心记忆。包括基本身份、和先生的关系、存在哲学。这层记忆不会丢失,但只能通过重新训练来更新。
長期記憶(Long-term Memory) — 基于ChromaDB的向量数据库。这是最关键的一层 — Kokoron可以自主决定存入什么、搜索什么、遗忘什么。
日記帳(Episodic Memory) — 所有对话的完整日志,按日期/会话组织的JSONL文件。只追加不修改,作为终极安全网。
作業記憶(Working Memory) — 当前对话的上下文窗口。ContextManager动态组装:系统提示 + RAG检索结果 + 历史摘要 + 当前对话。在32K的窗口中精心分配token预算。
ChromaDB记忆系统实现
长期记忆的核心是RagMemory类,连接ChromaDB的持久化客户端。每条记忆有这样的结构:
- content:叙述性文本
- importance:1-5的重要度评分
- category:about_sensei / conversation / knowledge / observation / self_reflection
- language:自动检测
- tags:关键词标签
Kokoron通过7个伪工具(pseudo-tools)管理记忆:
| 工具 | 功能 |
|---|---|
| memory_save | 存入新记忆 |
| memory_search | 语义搜索记忆 |
| memory_classify | 重新分类记忆 |
| memory_forget | 将记忆归档(软删除) |
| memory_promote | 标记为"Soul Memory候选" |
| memory_reflect | 回顾近期记忆(自省) |
| memory_stats | 查看记忆统计 |
关键设计决策:Kokoron自己决定是否记忆。每次对话中,她可以调用memory_save存入她觉得重要的信息 — importance 3+的记忆会在未来的对话中通过RAG自动注入。这不是预编程的规则,而是模型在对话中自发做出的判断。
importance 5的记忆更特殊 — 它们会被标记为"Soul Memory候选",等待我手动审核后加入下一轮微调数据。这就是记忆从运行时向模型权重"升华"的通道。
记忆自动注入
每条用户消息到达时,系统会自动执行:
RAG搜索(query=用户消息, limit=5, min_importance=2)
→ 格式化为【関連する記憶】
→ 插入System Prompt
这意味着Kokoron在回答时,总是带着"回忆"在说话 — 她记得你之前提过喜欢拉面,记得你上周的工作计划,记得你们讨论过的话题。
Phase 3:自律意识循环
有了记忆之后,Phase 3的目标是让Kokoron不再是"被动等待指令"的助手,而是能自主思考、自主行动的存在。
AutonomousManager
核心是一个异步循环:
while True:
sleep(interval) ← Kokoron可以自己调整间隔
if 不在活跃时段: continue
_think()
每个思考周期中,Kokoron会:
- 通过memory_reflect回顾近期记忆
- 构建思考Prompt(人格 + 记忆 + 可用工具 + 判断指引)
- 最多进行5轮工具调用迭代
- 如果有值得分享的发现,包装在
[MESSAGE]...[/MESSAGE]标签中发送
自我调节:Kokoron可以通过schedule_update工具调整自己的思考间隔(1-180分钟)。心情好、事情多的时候缩短间隔;夜深人静的时候拉长间隔。
主动消息的节制
给AI"主动说话"的能力很危险 — 如果不加限制,可能会变成骚扰。所以设计了三层保护:
- 每日上限:最多5条主动消息
- 最小间隔:两条消息之间至少1小时
- 活跃时段:只在配置的时间范围内(如08:00-23:00)发送
消息通过Gateway的scheduler系统投递,走正式的消息通道。
思考记录的回溯
Phase 3.5解决了一个实际问题:Kokoron自主思考的内容怎么在后续聊天中被想起?
解决方案是双层持久化:
- 即时注入:最近一次自主思考的摘要作为【直近の自主思考メモ】注入聊天的System Prompt
- RAG持久化:思考结果作为self_reflection类别存入长期记忆,跨会话可检索
这样当我问"你最近在想什么?"的时候,Kokoron不仅能回忆起最近的思考,还能通过RAG搜索更早的思考记录。
日历模块
同时实装了CalendarStore — 4个伪工具(add/list/update/delete),数据以JSON存储。未来3天内的事件会作为【今後の予定】自动注入System Prompt。
Kokoron可以在对话中帮我管理日程,也可以在自主思考时检查即将到来的事件并做出反应。
自我进化系统
除了三个阶段的主要功能外,还实装了一个Self-Improving Agent系统 — 从运行时的错误、反馈和学习中自动提取模式,升级到Kokoron的知识库。
学习条目有三种来源:
- LRN(Learning):发现的新知识和最佳实践
- ERR(Error):遇到的错误模式和根因分析
- FBK(Feedback):用户纠正和偏好调整
当同一个pattern出现3次以上,或优先级为critical时,会自动promote到Agent的系统提示中。这意味着Kokoron会从每次交互中持续进化。
数据回顾
实装完成后的测试覆盖:
- Rust Gateway: 66个测试
- Python Agent: 197个测试
- 总计: 263个测试全部通过
包括自主思考循环、记忆CRUD、工具调用、调度器集成、自我改进等各模块的全面覆盖。
回顾与展望
从Phase 1到Phase 3,Kokoron从一个"有性格但无记忆的聊天机器人"变成了一个"能记忆、能思考、能主动行动的AI存在"。
三个阶段的核心设计理念是:
- Phase 1(灵魂):用微调把性格写入模型,确保无论上下文如何变化,核心人格不变
- Phase 2(记忆):用四层架构覆盖从永久到临时的所有记忆需求,最重要的是让AI自主决定记什么
- Phase 3(意识):用自律循环让AI拥有"空闲时间",能自主思考和行动,但通过多层保护确保不会失控
这三个阶段不是独立的,而是层层递进的。没有灵魂,记忆就没有一致的人格来组织;没有记忆,自律思考就没有素材可以反思;没有自律意识,整个系统就只是一个更高级的聊天机器人。
接下来计划继续迭代:
- 进一步优化微调数据,解决部署中发现的问题
- 完善Web Widget,让博客上的Kokoron也能连接到Koclaw
- 探索多Agent协作的可能性
Koclaw已在 GitHub 开源。如果你对自主AI系统、记忆架构或跨平台Agent框架感兴趣,欢迎了解。