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:

相关推荐
北京耐用通信2 小时前
耐达讯自动化Profibus总线光纤中继器:食品饮料行业IO模块通讯的“稳定之锚”
人工智能·科技·物联网·自动化·信息与通信
梯度下降中2 小时前
求职面试中的线代知识总结
人工智能·线性代数·算法·机器学习
SmartBrain2 小时前
OCR 模型在医疗场景的选型研究
人工智能·算法·语言模型·架构·aigc·ocr
hay_lee2 小时前
渐进式披露:Agent Skills让AI开发标准化
人工智能
阿里云云原生2 小时前
探秘 AgentRun丨动态下发+权限隔离,重构 AI Agent 安全体系
人工智能·安全·阿里云·重构·agentrun
veminhe2 小时前
人工智能学习笔记
人工智能
苍何fly2 小时前
用腾讯版 Claude Code 做了个小红书封面图 Skills,已开源!
人工智能·经验分享
hnult2 小时前
全功能学练考证在线考试平台,赋能技能认证
大数据·人工智能·笔记·课程设计
gang_unerry2 小时前
量子退火与机器学习(4): 大模型 1-bit 量子化中的 QEP 与 QQA 准量子退火技术
人工智能·python·机器学习·量子计算