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.json 与 data/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:

相关推荐
阿愚先生几秒前
【从零手写GPT(一)】:RTX 5080 环境踩坑,我装错了两次 PyTorch
人工智能·pytorch·gpt
Zzj_tju3 分钟前
一个温度参数,能修复多少过度自信?
人工智能·语言模型
无责任此方_修行中5 分钟前
模型变强了,架构为什么反而要变?——从"折叠 subagent"到"Super-agent"
人工智能·ai编程·deepseek
小哈里9 分钟前
【推理】NVIDIA DLI培训:大规模部署与优化 AI 推理(推理原理,K8S,网关层,pd分离,MoE,Dynamo)
人工智能·容器·kubernetes·nvidia·推理
ggabb11 分钟前
英语:对新科技新技术命名,词根拼接 + 借用旧词 + 缩写泛滥
人工智能·科技
LK_0715 分钟前
【Agent】工具调用的安全边界:从模型输出到程序执行
人工智能·笔记·python·agent
土星云SaturnCloud15 分钟前
基于 PP-OCR 的车牌识别:从数据整理到土星云 SE110S 系列边缘部署
人工智能·ai·ocr·边缘计算
zz_nj16 分钟前
中兴微方案 MIFI
人工智能
打工仔折腾 AI18 分钟前
鸿蒙移动端直连 Windows 远程桌面配置与性能调优实践
人工智能·windows·后端·python·华为·性能优化·harmonyos
AI_work22 分钟前
43 号令下招投标全流程留痕分析:电子卷宗 15 年保存与投标人文档合规体系重构
大数据·人工智能·ai·重构