KiraAI 部署教程 v1.6.6

v1.6.6版本

仓库:

Release v1.6.6 · xxynet/KiraAI

deepwiki:

xxynet/KiraAI | DeepWiki





部署开始

Release NapCat v4.14.13 · NapNeko/NapCatQQ

打开url 6099 NapCat WebUI

打开url 5267 KiraAI Admin Panel

这个要填

部署完毕





记忆部分是怎么做的

KiraAI 的记忆系统由 MemoryManager 实现,分为两类记忆:

  • 会话记忆(chat_memory):按会话 ID 存储对话历史,用于上下文。
  • 核心记忆(core_memory):全局持久知识,注入到每次提示中。

记忆以文件形式持久化在 data/memory/ 目录,并在消息处理时被读取和更新,同时通过 WebUI 提供管理接口。

记忆类型与存储

类型 存储文件 结构 用途
会话记忆 data/memory/chat_memory.json {session_id: [chunk1, chunk2, ...]},每个 chunk 为消息列表 提供对话上下文
核心记忆 data/memory/core.txt 纯文本行列表 全局知识,注入提示词
  • 会话记忆在 MemoryManager.__init__ 中加载,并在每次更新后自动保存为 JSON memory_manager.py:26-28 。
  • 核心记忆在 get_core_memory() 中逐行读取并格式化为带行号的字符串 memory_manager.py:99-106 。

关键操作

读取与写入

  • fetch_memory(session):展开会话的所有 chunk 为消息列表,用于构建 LLM 上下文 memory_manager.py:60-70 。
  • update_memory(session, new_chunk):追加新 chunk,并根据 max_memory_length 滑动裁剪,然后保存文件 memory_manager.py:85-91 。
  • write_memory(session, memory):直接覆写整个会话记忆(WebUI 使用) memory_manager.py:79-83 。

长度限制

  • max_memory_length 来自配置(默认 10),在 update_memory 中用于裁剪最旧的 chunk memory_manager.py:19 memory_manager.py:88-89 。

与消息处理集成

MessageProcessor.handle_im_message 中:

  1. 获取会话记忆 session_memory = self.memory_manager.fetch_memory(sid) message_manager.py:169 。
  2. 获取核心记忆 core_memory = self.memory_manager.get_core_memory() message_manager.py:171 。
  3. 将两者传入 PromptManager 生成提示(如 get_agent_prompt),其中 {core_memory} 会被替换 agent.txt:33-35 。
  4. LLM 响应后,将新消息(含工具调用结果)作为 new_chunk 更新到会话记忆 message_manager.py:215-220 。

WebUI 管理接口

  • 列出所有会话:GET /api/sessions,从 memory_manager.chat_memory 读取并统计消息数 app.py:1370-1392 。
  • 获取单个会话记忆:GET /api/sessions/{session_id},调用 memory_manager.read_memory 返回原始 chunk 结构 app.py:1399-1420 。
  • 更新会话记忆:PUT /api/sessions/{session_id},调用 memory_manager.write_memory 直接覆写 app.py:1427-1436 。

记忆流程图

复制代码

Notes

  • 会话记忆按 chunk 组织,每个 chunk 通常对应一次处理回合(含用户消息、工具调用、助手回复)。
  • 核心记忆为纯文本,可手动编辑 data/memory/core.txt,重启后生效。
  • WebUI 的会话管理直接操作内存中的 chat_memory 并持久化,适合调试或清理。
  • 记忆文件路径可在 MemoryManager 初始化时自定义,默认为 data/memory/chat_memory.jsondata/memory/core.txt memory_manager.py:16-17 。

Wiki pages you might want to explore:







表情调用是怎么做的

AI 通过 StickerManager 加载的 sticker.json(id→desc+path)建立映射,PromptManager 将可用 id 与描述注入系统提示,LLM 用 <sticker>id</sticker> 调用,MessageProcessor 再根据 id 从 sticker_dict 取路径并转为 base64 发送。WebUI 提供管理接口。

复制代码

关键环节

1)映射来源:sticker.json

  • 位置:data/config/sticker.json,结构为 {"sticker_id": {"desc": "...", "path": "filename"}} sticker_manager.py:11-12 。
  • StickerManager 在初始化时加载到 self.sticker_dict sticker_manager.py:26-49 。

2)让 AI 知道可用 sticker:提示注入

  • PromptManager._load_sticker_prompt 遍历 sticker_dict,生成 [id] desc 文本并注入系统提示,定义 <sticker> 标签用法 prompt_manager.py:73-82 。
  • _load_format_prompt 中将 sticker_prompt 填入格式提示,供 LLM 在 XML 中调用 prompt_manager.py:91-102 。

3)LLM 调用与解析

  • LLM 输出 <sticker>1</sticker>,MessageProcessor._parse_xml_msg 从 sticker_dict 取 path,转为 base64,构造 MessageType.Sticker message_manager.py:304-311 。

4)发送

  • QQAdapter 将 MessageType.Sticker 作为 base64 图片发送 qq.py:436-437 。

5)管理与自动注册

  • WebUI 提供增删改查接口(/api/stickers),可上传图片并指定 id 与 desc app.py:1145-1172 。
  • StickerManager.scan_and_register_sticker 定期扫描 data/sticker 目录,对未注册文件调用 LLM 生成描述并自动注册到 sticker.json sticker_manager.py:147-176 。

示例

复制代码
复制代码
{  "1": {"desc": "开心笑", "path": "happy.png"},  "2": {"desc": "无语", "path": "speechless.webp"} }

系统提示将包含:

复制代码
[1] 开心笑  
[2] 无语  

LLM 可用 <sticker>1</sticker>,解析时找到 happy.png 并转 base64 发送。

Notes

  • sticker_id 为字符串,通常为数字自增,也支持自定义字符串(需唯一) sticker_manager.py:121-134 。
  • 若解析时 sticker_id 不存在,会报错并跳过发送 message_manager.py:310-311 。
  • WebUI 的 Stickers 页面仅用于管理,不影响运行时映射逻辑 app.py:1094-1137 。

Wiki pages you might want to explore:

相关推荐
人机与认知实验室几秒前
2026:人形机器人的未来发展趋势
大数据·人工智能·机器人
Eloudy2 分钟前
CHI 开发备忘 06 记 -- CHI spec 06 独占访问
人工智能·arch·hpc
陆业聪5 分钟前
2025,AI这一年:从“卷参数“到“卷落地“的转折之年
人工智能
webkubor6 分钟前
2026 年 把网页交互的主控权拿回前端手中 🚀
前端·javascript·人工智能
Loo国昌7 分钟前
【AI应用开发实战】06_向量存储与EmbeddingProvider设计
人工智能·后端·python·语言模型·自然语言处理·prompt
liuyunshengsir9 分钟前
1分钟使用openclaw生成ppt
人工智能·openclaw
o0恋静0o13 分钟前
Context Operations:操控模型看到的信息
人工智能
两万五千个小时14 分钟前
构建mini Claude Code:07 - 一切皆文件:持久化任务系统
人工智能·python·架构
lisw0521 分钟前
边缘计算概述!
人工智能·边缘计算
Humbunklung22 分钟前
深入解析PPTX:编程实现批量字体替换的原理与实践
人工智能·python·计算机视觉·manus