news 2026/10/16 2:50:23

InSoulForge:基于 OneBot 的开源 AI 聊天机器人,支持 Jev 决策、长期记忆与工具扩展

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
InSoulForge:基于 OneBot 的开源 AI 聊天机器人,支持 Jev 决策、长期记忆与工具扩展

InSoulForge 是一个通过 OneBot 协议接入消息服务的开源 AI 聊天机器人后端,采用 C++23、Drogon 和 Vue 3 构建。它整合了回复决策、对话生成、记忆管理与工具调用,并提供 Web 管理后台和 Docker 镜像,适合需要自行部署和扩展的多人聊天智能体场景。

其中一个值得关注的设计是Jev 结构化决策与 LLM 执行相结合:将高频的“是否需要回复”判断交给专门的决策模型,不确定时再由聊天模型处理,而不是让主力模型承担每一次判断。

项目地址:DreamDonghao/insoulforge

OneBot 接入与平台适配

InSoulForge 通过 OneBot 实现接收事件、调用消息接口,自身不实现聊天平台的底层协议。当前支持 OneBot HTTP 和正向 WebSocket 两种连接方式。

QQ 群聊与私聊是目前已有较多功能适配的使用场景,但 OneBot 接入协议与具体聊天平台是两个层次。对于其他合法合规的 OneBot 实现,需要评估其事件格式、消息接口和权限模型是否兼容,再决定是否接入。“支持 OneBot”不意味着已经适配所有平台。

收藏表情、拍一拍、群成员禁言等能力具有平台特性,实际可用性取决于所选 OneBot 实现及账号权限。部署者应自行确认平台规则、接口授权和数据处理要求。

核心能力概览

能力主要用途
Jev 决策与 LLM 兜底专用决策模型优先判断是否回复,不确定时交给 Router LLM
Agent 执行根据上下文生成回复,并按需调用工具
会话独立配置分别管理上下文、自动回复开关和附加提示词
记忆与好感度提炼对话信息,维护短期记忆、长期记忆与互动评分
图片与 GIF 识别将媒体内容转为文字描述,并缓存识别结果
图片生成与编辑文字生图、参考角色形象图、修改会话中的图片
Lua 自定义工具无需重新编译,通过脚本和异步 HTTP 扩展能力
MCP 客户端按需发现并调用远程服务提供的工具
定时与后台任务定时触发消息处理,异步执行耗时任务
Web 管理后台配置模型、管理会话、查看日志、用量和请求记录

重点设计:Jev 结构化决策与 LLM 协作

Jev 是什么,与聊天模型有什么区别?

Jev 是 TypeSafe AI 的结构化决策模型,属于其称为System One的模型体系。它面向软件中的判断任务,而不是生成供人阅读的对话正文。调用方提供待判断的状态和带类型的问题,模型直接返回结构化答案。TypeSafe 官方介绍

例如,“这条消息是否值得回复”可以定义为选项判断,而不是要求聊天模型先生成一段分析,再从文字中提取结论。Jev 的 Choice 类型返回选中项、各选项的概率分布和置信度;官方还提供 Score 与 Noul 等问题类型,分别用于评分和判断某个条件成立的概率。官方问题类型说明

这种设计的价值不仅在于输出 JSON,而是将模型的职责从“生成一段回答”收敛到“回答一个有明确边界的决策问题”。速度与调用成本也是其面向高频路由场景的重要特点;但模型服务的表现不能直接等同于整个机器人的端到端性能。OpenRouter 模型介绍

InSoulForge 如何使用 Jev?

多人聊天中,大量消息只需要判断机器人是否应该参与,并不需要立刻生成回复。InSoulForge 将这类判断交给 Jev,并保留 Router LLM 处理不确定情况:

  1. 先处理明确规则:私聊、明确提及机器人和系统任务按各自规则处理,普通群聊消息进入可选的 Jev 决策流程。
  2. Jev 优先判断:结合聊天上下文,在reply、skip、unclear等预定义选项中给出结果,并提供语气等回复策略参考。
  3. 置信度控制交接:结果有效且置信度达到阈值时直接采用;低于阈值、返回unclear、响应无效或请求失败时,交给 Router LLM 判断。
  4. Executor 执行:确定需要回复后,再由 Executor 生成正文、查询信息或调用其他工具。
普通群聊消息 → Jev 决策 ├─ 高置信度 skip → 不回复 ├─ 高置信度 reply → Executor └─ 不确定或请求失败 → Router LLM → 回复时进入 Executor

最低置信度可在后台配置,默认值为 0.60。这里比较的是confidence,不是probabilities.reply:选项概率与置信度不能混为一谈,阈值也不代表系统具有同等数值的实际正确率。

为什么值得用于聊天机器人?

对于消息频繁、实际只需回应其中一部分内容的会话,这种组合可以减少通用聊天模型参与高频决策的次数,将其留给更复杂的判断和正式回答。这也是项目区别于“每条消息直接请求一次聊天模型”的重要设计。

收益取决于消息分布、置信度阈值、兜底比例以及服务延迟;如果大量请求都需要兜底,额外的 Jev 请求也会增加开销。因此,项目保留可观察的决策日志和可配置阈值,而不是假设专用模型始终优于聊天模型。Jev 是可选能力,不配置也可以使用 Router 与 Executor 流程。

各群聊还可独立关闭普通消息自动回复,保留通过 @ 机器人互动的方式,并设置仅在本群生效的附加提示词。

记忆系统:提炼信息,而不是堆积聊天记录

InSoulForge 区分近期消息上下文、短期记忆和长期记忆:

  • 近期上下文:供模型理解当前对话的消息记录。
  • 短期记忆:从对话中提炼并整理需要保留的信息,不等同于最近若干条原始消息。
  • 长期记忆:配置 Embedding 服务后,将适合长期保留的信息向量化存入 SQLite,后续按语义相似度召回。

长期记忆既可在消息预处理时自动注入相关内容,也可由模型通过工具主动检索。未配置 Embedding 时,仍可使用短期记忆。

系统还会根据互动评估好感度,为角色表达提供参考。这是模型生成的互动评分,不代表对真实人物的客观评价。

消息达到配置的触发数量后,记忆维护在后台运行。同一批消息的记忆整理与好感度评估全部成功后,才统一保存结果并移除对应旧消息;失败时保留消息,等待后续消息触发重试。维护任务本身不持久化,重启后在收到新消息时重新检查触发条件。

提取与召回依赖模型输出、阈值和上下文质量,不能保证记住所有信息。其作用是减少对完整历史记录的依赖,而不是提供无遗漏的知识档案。

工具扩展:内置能力、Lua 与 MCP

内置工具与执行控制

Executor 可以调用引用回复、记忆检索、深度思考、图片生成等工具。通过过程回复工具,也可以先发送进度消息,再继续查询或处理问题。

管理后台可以设置每次回复的最大工具迭代轮数。模型会收到当前轮次和剩余轮数,最后一轮仅开放回复类工具,避免无限延长工具调用链。上下文还会保留必要的工具调用名称、参数和处理状态,为后续对话提供执行参考。

Lua 自定义工具

自定义工具使用 Lua 脚本,可通过后台配置名称、说明、参数 Schema 和脚本内容,并支持导入导出。脚本能够调用项目暴露的受控接口,包括消息发送、会话后台任务和异步 HTTP 请求,无需重新编译 C++ 主程序。

当前自定义工具不再使用 Python 执行方式。网页读取、搜索和业务系统查询,可以通过 Lua 请求独立服务实现。这些能力需要部署相应服务或配置可用接口,不是安装后自动具备的通用联网能力。

MCP 远程工具

InSoulForge 内置 MCP 客户端,可接入提供 Streamable HTTP 接口的远程工具服务。后台支持添加、删除、启停服务,以及查看已发现的工具和加载状态。

模型先看到服务用途目录,再按需查询和启用工具,而不是每次请求都携带所有服务的完整工具定义。这有助于控制工具列表长度,并按任务选择所需能力。

当前主要支持 MCP 工具发现与调用,不支持 stdio、OAuth,以及 resources、prompts 等全部 MCP 能力;SSE 处理也有局限,不能宣称兼容所有 MCP 服务。应只连接可信服务,并确认其数据访问范围与操作权限。

图片理解与创作

视觉模型可独立配置,用于识别静态图片和 GIF 动图。系统按媒体内容、模型和提示词版本缓存描述,减少重复识别。聊天上下文主要使用文字描述,不直接携带原始图片数据。

图片生成使用独立接口配置,支持文字生图、自定义尺寸,以及根据会话中的图片进行编辑。也可以在后台上传角色形象图:当用户要求机器人绘制自己的形象时,以该图片作为参考,通过提示词描述场景、动作等变化。

生成任务在后台执行,完成后向原会话发送结果,并通过系统消息触发后续回应。具体支持的模型、尺寸和参考图参数,取决于配置的图片服务接口;支持聊天接口不代表同时支持图片生成。

模型配置与 Web 管理

Router、Executor、深度思考、记忆、视觉、Embedding 和图片生成等用途可以分别配置服务与模型。Executor 还支持兜底模型:默认模型请求失败时,本次请求尝试兜底配置,后续请求仍优先使用默认模型。

Web 管理后台支持:

  • 配置 OneBot 连接、模型接口和角色提示词。
  • 管理会话启用状态、群聊独立设置、管理员和黑名单。
  • 管理 Lua 自定义工具、MCP 服务和执行参数。
  • 查看聊天记录、模型用量和运行日志。
  • 查看请求调试记录,并下载请求与响应记录,辅助排查接口和提示词问题。

接入模型和外部工具前,应确认聊天内容、图片及工具参数可能发送到哪些服务,避免传递凭据或不必要的敏感数据。后台管理与工具调用并不代替部署者的权限审查。

适用场景与使用边界

InSoulForge 适合以下需求:

  • 自托管具有上下文、角色设定和记忆能力的聊天智能体。
  • 在多人会话中按需回复,而不是对每条消息固定生成回答。
  • 通过 Lua 或 MCP 将查询、创作和业务服务接入聊天流程。
  • 研究和开发真实消息场景下的 Agent 调度、工具调用与记忆机制。

如果只需要关键词回复或固定指令处理,这套系统的模型配置与运维成本可能并不必要。模型调用费用、外部接口可用性、平台权限和生成内容质量,也需要由部署者持续管理。

项目采用 AGPL-3.0-only 开源许可证,使用前应阅读许可证及相关平台的规则。项目开源不等于获得平台接入许可;具体服务的使用方式与授权条件仍需分别确认。

了解项目与参与开发

InSoulForge 将消息接入、回复决策、记忆和工具执行组织成一套可自行部署与扩展的系统。QQ 是现有适配场景之一,OneBot 是消息服务的接入协议,其他平台的兼容性需要结合具体实现验证。

  • 项目仓库与使用说明
  • 部署教程
  • 开发文档
  • 贡献指南
  • MCP 客户端说明与限制

欢迎通过 Issue 反馈问题与使用需求,或通过 Pull Request 参与改进。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 2:49:56

CodeBuddy IDE实测:AI Agent如何重塑开发工作流

打开下载页,看到 CodeBuddy IDE 的状态已经是"可下载",再扫一眼社区里关于 WorkBuddy 的讨论,大家都管它叫"腾讯版小龙虾",说实话我的第一反应是:腾讯这次是真的下场比赛了。2025 年的 AI 编程赛道…

作者头像 李华
网站建设 2026/10/16 2:49:36

老校区的机械表,不拆不改怎么走进数字化

一所学校的新旧之差,有时候站在校门口就能看出来。新楼那一片,智能电表、智慧教室、能源管理系统一应俱全,数据自己跑,不需要人管。拐进老校区就是另一回事了。配电柜还是十几年前那批,里面装的机械表还在转&#xff0…

作者头像 李华