一个基于新版OpenAI SDK的智能聊天插件,为NcatBot 5提供强大的AI对话功能。
- 🤖 智能对话:支持多种模型
- 💬 群聊私聊:同时支持群聊和私聊环境
- ⚙️ 多配置文件:支持自定义多个对话预设
- 🔄 会话管理:支持重置和切换对话配置
- 🎯 精确控制:支持@机器人触发和用户名前缀
- 📝 命令系统:完整的命令控制界面
- 🔐 权限体系:RBAC 全局管理员 + 群主/群管理自动放行
- 🌐 网络请求:AI 可抓取网页(HTML 自动转 Markdown)或调用 JSON API
- 🖼️ 图片视觉:AI 可获取图片 URL 并直接“看到”图片内容
- 👁️ 用户图片识别:用户发送的图片会被自动下载并交给视觉模型理解(可配置关闭)
- 🧠 思维链隔离:自动剥离
<think>/<reasoning>/ DeepSeek-R1 全角分隔符等思维链,只写日志不外泄 - 🎲 群聊随机插话:按概率参与未 @机器人 的群聊,由模型自行决定是否发言(可群级关闭)
- ⏰ AI 定时任务:AI 可创建周期任务,到点用当前预设生成内容并投递回本会话
- Python 3.10+
- NcatBot 5.x 框架
- OpenAI API Key
将插件源码放置到你的 plugins 目录下:
# 克隆插件到plugins目录
git clone https://github.com/Yang-qwq/openai_chat_plugin.git plugins/OpenAIChatPlugincd /path/to/ncatbot/
git submodule add https://github.com/Yang-qwq/openai_chat_plugin.git plugins/OpenAIChatPluginv0.2.0 起插件迁移到 NcatBot 5,配置统一保存在全局 config.yaml 的 plugin.plugin_configs.OpenAIChatPlugin 部分(也可通过 WebUI 修改)。首次启动后编辑全局 config.yaml:
plugin:
plugin_configs:
OpenAIChatPlugin:
ApiKey: sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # 强烈建议仅在本地/私密环境填写
BaseUrl: https://api.openai.com/v1 # 可选
Model: openai/gpt-4o-mini # 可选
MustAtBot: true # 群聊是否必须@机器人
InsertUserdataAsPrefix: false # 是否在消息前添加用户名前缀
IsConfigured: true # 标记配置完成修改后重启机器人生效。
插件会在插件工作区(data/OpenAIChatPlugin/presets/)目录中自动创建和管理预设配置文件。
从 v0.1.x 升级:首次启动时会自动将旧目录
data/openai_chat_plugin/中的会话数据与预设迁移到新位置, 旧目录会被重命名为data/openai_chat_plugin.migrated.bak作为备份。从早期 v0.2.x 升级:若工作区仍存在拼写错误的
presents/目录,首次启动会自动重命名为presets/。
想要编辑预设配置,可以直接编辑对应的prompt.md文件:
your_editor data/OpenAIChatPlugin/presets/default/prompt.md- 群聊:在群聊中@机器人即可开始对话
- 私聊:直接发送消息即可开始对话
# 为当前环境设置预设
/chat set-preset programmer
# 重置当前环境会话
/chat reset
# 关闭 / 开启本群随机插话(不带参数查看当前状态)
/chat nolisten on
/chat nolisten off
/chat nolisten
# 显示帮助信息
/chat help需要全局管理员(机器人 owner 或 /chatrbac 授权)或本群群主/群管理身份(受 EnableGroupOwnerAutoAuth 开关控制,默认开启):
# 为当前环境设置预设
/chat-admin set-preset programmer
# 为指定群组设置预设
/chat-admin set-preset programmer group:1919810
# 为指定用户设置预设
/chat-admin set-preset programmer user:114514
# 重置当前环境会话
/chat-admin reset
# 重置指定群组会话
/chat-admin reset group:1919810
# 重置指定用户会话
/chat-admin reset user:114514
# 批量更新所有会话的提示词(保留对话历史)
/chat-admin update-prompt all
# 更新指定群组/用户的提示词
/chat-admin update-prompt group:1919810
/chat-admin update-prompt user:114514
# 查看 / 删除 / 暂停 / 恢复 AI 定时任务
/chat-admin task list
/chat-admin task delete daily
/chat-admin task pause
/chat-admin task resume
# 显示帮助信息
/chat-admin help
task子命令涉及全局资源(查看他人任务、跨会话删除、全局暂停),仅限全局管理员 (机器人 owner 或/chatrbac授权)使用,群主/群管理不可调用。
仅限全局管理员(含机器人 owner)使用,群主/群管理身份不可越权调用:
# 授予全局管理员权限(支持 @ 成员或纯数字)
/chatrbac grant 888888
# 撤销全局管理员权限
/chatrbac revoke 888888
# 查看全局管理员列表
/chatrbac list
# 显示帮助信息
/chatrbac help| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ApiKey |
string | - | OpenAI API密钥 |
Model |
string | openai/gpt-4o-mini | 使用的AI模型 |
BaseUrl |
string | https://api.openai.com/v1 | API基础URL |
MustAtBot |
boolean | True | 群聊中是否必须@机器人 |
InsertUserdataAsPrefix |
boolean | False | 是否插入用户信息作为前缀 |
EnableBuiltinFunctionCalling |
boolean | False | 是否启用内置函数调用功能 |
AllowAccessMemory |
boolean | False | 是否允许访问会话记忆(内置函数调用功能需要开启) |
AllowWebRequests |
boolean | False | 是否允许AI进行网络请求(内置函数调用功能需要开启) |
AllowLoopbackIps |
boolean | False | 是否允许网络/图片请求访问回环地址(如 127.0.0.1、::1) |
AllowLocalNetworkIps |
boolean | False | 是否允许网络/图片请求访问内网地址(如 10.x、192.168.x、fc00::) |
EnableImageRecognition |
boolean | True | 是否识别用户消息中携带的图片并作为视觉输入交给模型(无需开启函数调用) |
StripReasoning |
boolean | True | 是否剥离推理模型的思维链(<think> / <reasoning> / DeepSeek 全角分隔符等),仅写日志 |
EnableRandomReplyGroup |
boolean | False | 是否允许群聊随机插话(未 @机器人 的消息按概率参与) |
GroupRandomReplyChance |
number | 0.02 | 群聊随机插话概率(0~1),命中后仍由模型决定是否发言 |
AllowScheduledTasks |
boolean | False | 是否允许 AI 创建/管理定时任务(内置函数调用功能需要开启) |
EnableScheduledTaskExecution |
boolean | True | 定时任务执行总开关(kill switch);关闭后不注册/不执行,记录保留 |
MaxRetriesTimes |
integer | 15 | 工具调用轮次的最大重试次数 |
MaxConversationCacheStoreAmount |
integer | 1000 | 最大对话缓存存储数量 |
EnableGroupOwnerAutoAuth |
boolean | True | 群主/群管理自动放行本群管理员命令 |
IsConfigured |
boolean | False | 插件是否已配置 |
默认开启(EnableImageRecognition: true)。当用户发送的消息中携带图片时,插件会
自动识别并下载这些图片,将其作为 OpenAI 视觉输入(image_url)附加到对应对话,
模型即可直接“看到”用户发的图。无需开启 EnableBuiltinFunctionCalling。
- 群聊 / 私聊均支持;群聊仍受
MustAtBot约束(需 @机器人) - 一条消息携带多张图片时,全部作为独立的视觉输入附加
- 仅发图片不带文字时,文本部分自动补一句默认说明(如“用户发送了图片,请查看随附图片。”)
- 文本部分仅取消息中的纯文字(不会把
[CQ:image,...]等消息段标记交给模型) - 图片按文件头魔数校验类型,支持 PNG / JPEG / GIF / WEBP / BMP; 下载失败、格式不受支持或超过大小上限(5 MiB)的图片会被忽略,不影响文本部分的处理
- 关闭:在全局 config.yaml 的
plugin_configs.OpenAIChatPlugin中设置EnableImageRecognition: false
纯文本模型自动降级:若模型/网关只接受 content.type='text'(如智谱 GLM 返回
400 code 1210 messages.content.type 参数非法,取值范围 ['text']),插件会在首次
失败后用纯文本重试(历史图片替换为 [图片],会话历史本身不改),并记住该模型不支持
视觉:后续请求提前压平、不再下载用户图片、工具图片只保留摘要。无关的 400 不会触发降级。
注意:图片识别默认开启即意味着插件会下载用户发送的图片。若不希望插件访问图片 资源(例如仅纯文本对话、或处于受限网络环境),请将
EnableImageRecognition置为 false。
需要同时开启 EnableBuiltinFunctionCalling 与 AllowWebRequests。开启后模型可以调用
create_http_request 工具:
content_format |
用途 |
|---|---|
text |
获取纯文本响应 |
markdown |
抓取网页,HTML 会自动转换为 Markdown |
json |
调用 JSON API 并返回结构化数据 |
image |
获取图片并作为视觉输入交给模型阅读 |
示例(模型自动完成,无需手动输入):
用户:@机器人 帮我总结 https://example.com/article 的内容
用户:@机器人 看看 https://example.com/cat.png 这张图里有什么
模型 -> create_http_request(method="GET", url="...", content_format="markdown")
模型 -> create_http_request(method="GET", url="...", content_format="image")
安全与限制:
- 仅允许
http/https,GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS - 默认超时 15 秒(最大 60 秒)
- 文本响应上限 2 MiB、图片上限 5 MiB,超出会中止读取
- 请求失败/参数非法/超时都会以工具错误结果返回,不会中断对话
- 图片会以 data URL 形式附加到上下文;工具历史只保留摘要,避免 base64 占满上下文
- 网络请求具有访问内网的潜在风险,请仅在可信环境开启
AllowWebRequests - SSRF 防护:插件在每一跳请求前校验目标主机,默认仅允许公网地址——
- 回环(
127.0.0.1、::1)与内网段(10/8、172.16/12、192.168/16、fc00::/7等)分别受AllowLoopbackIps/AllowLocalNetworkIps控制, 默认拒绝 - 链路本地地址(含云元数据
169.254.169.254)、未指定、组播、保留段等 一律拒绝,不提供放行开关 - 重定向由插件手动逐跳跟随并重新校验,公网 URL 302 到内网地址也会被拦截;
跨源重定向不会携带
Authorization/Cookie,Host按目标主机重建 - 网络错误的提示文案统一为「请求失败」,不泄露具体是超时还是连接被拒
- 用户发送图片的下载链路共用同一套校验
- 回环(
默认开启(StripReasoning: true)。部分推理模型会把思考过程混进正文,插件会在发送与
写入会话历史之前统一剥离:
<think>/<thinking>/<reasoning>/<thought>/<analysis>成对标签- 未闭合的开标签:连同其后的全部内容一并移除(宁缺毋滥)
- DeepSeek-R1 全角分隔符
<|begin▁of▁thinking|>…<|end▁of▁thinking|> - provider 已剥掉开标签、只剩
</think>的孤儿闭标签:其前的思维链残留一并移除
思维链(含 API 的 reasoning_content 字段)只以 AI思维链: 写入日志,不会发送给用户;
若模型仅返回思维链而无正文,插件保持沉默而不是把思考过程发出去。
关闭时群聊仍需 @机器人(MustAtBot)。开启 EnableRandomReplyGroup 后,未 @机器人 的
群消息会按 GroupRandomReplyChance 概率参与对话:
- 命中后仍由模型决定是否发言:模型输出
NO_REPLY或空正文时插件保持沉默 - 随机插话轮同样保留工具调用能力(与普通聊天一致,受
EnableBuiltinFunctionCalling与各AllowXxx开关约束);工具轮只在最终发言成功后写入会话历史,回NO_REPLY时整轮回滚,不会污染上下文 - 工具轮产生的中间正文不会投递到群里,避免「先说话再沉默」;工具轮上限与内部错误 同样静默处理
- 同一群有 30 秒冷却,避免连续刷屏;机器人自己的消息不参与
- 群内任何人可用
/chat nolisten on关闭本群随机插话(off重新开启,不带参数查看状态) - 该开关保存在插件工作区
data.json的group_nolisten中 - 随机插话的临时提示固定使用 user 角色(预设提示词仍是唯一的 system), 兼容只接受单个 system 的供应商(如智谱 GLM、AMD Radeon 网关)
- 请求遇瞬时限流(429)时由 OpenAI SDK 自动指数退避重试;重试耗尽仍被限流时 随机插话静默放弃(不往群里发错误提示),@/私聊则回复「请求过于频繁,请稍后再试」
需要同时开启 EnableBuiltinFunctionCalling 与 AllowScheduledTasks。开启后模型可调用
manage_cron_tasks 工具:
| action | 说明 |
|---|---|
add |
创建任务(投递到当前会话),需要 task_name、interval、prompt |
delete |
删除任务,需要 task_name;只能删除当前会话创建的任务 |
list |
查看所有会话的任务与下次执行时间 |
- 到点后插件用「主会话历史 + 一条内部消息
[定时任务 <name>] <prompt>」执行一次完整对话轮次 (支持工具调用,与普通聊天共用EnableBuiltinFunctionCalling与各AllowXxx开关), 再把生成的内容投递回创建者会话(模型无法指定其他群/私聊,避免越权骚扰) - 投递成功后,整轮消息(内部消息、工具调用轮次、最终 assistant 回复)会一起写入主会话历史; 生成或投递失败则整轮不落库,不会在历史里留下半截对话
- 工具调用前的中间正文也会投递到会话(与普通聊天一致);任务记录会保存
creator_id, 供记忆/环境工具识别来源 - 定时轮与普通聊天共用会话级锁,同一会话的轮次串行执行,避免消息顺序错乱
interval支持30s、2h30m、0.5d、HH:MM(每日)、YYYY-MM-DD HH:MM:SS(一次性)- 最小间隔写死 60 秒:间隔任务不足 60 秒会被拒绝,一次性任务也必须距离当前时间不少于
60 秒(避免
0.5s之类的高频任务刷屏/耗尽额度) - 任务不做会话隔离:
list能看到其他会话的任务(含目标会话 ID 与提示词),但add只能创建到当前会话、delete只能删除本会话创建的任务,跨会话删除会返回错误 - 任务记录保存在
data.json的scheduled_tasks,重启后自动重新注册;interval 小于 60 秒 的历史记录不会被注册(记录保留,可通过删除清理) - 任务名仅允许字母/数字/下划线/连字符(1~32 字符);同一插件内不可重名
- 连续执行失败 5 次后自动停用(移出调度器并在记录里标记
disabled,重启不再注册), 避免机器人被踢出群、密钥失效等永久性错误按原间隔无限重试 - 一次性任务执行后自动清理记录,不会在列表中残留
- 运维命令(走
/chat-admin三层权限校验):/chat-admin task list:查看全部任务(所属会话、状态、连续失败次数、下次执行时间)/chat-admin task delete <name>:删除任意任务(可跨会话清理)/chat-admin task pause/resume:暂停/恢复执行总开关EnableScheduledTaskExecution, 暂停时任务记录保留,恢复后重新注册未停用的任务
- 同步 OpenAI 请求通过线程池(
asyncio.to_thread)执行,单请求默认超时 60 秒; 429/5xx 由 SDK 指数退避重试 4 次(并遵守Retry-After),定时任务不会阻塞事件循环
插件支持创建多个对话预设,每个预设可以有不同的系统提示词:
data/OpenAIChatPlugin/
| -- data.json <-- 会话数据(自动持久化)
| -- presets/
| -- default/
| -- config.yaml
| -- prompt.md <-- 系统提示词文件
| -- programmer/
| -- config.yaml
| -- prompt.md <-- 程序员预设的系统提示词文件
| -- translator/
| -- config.yaml
| -- prompt.md <-- 翻译预设的系统提示词文件
...
- 群聊会话独立存储
- 私聊会话独立存储
- 支持会话重置和配置切换
-
插件未响应
- 检查
IsConfigured是否设置为true - 确认API Key是否正确
- 检查网络连接
- 检查
-
群聊中@机器人无响应
- 确认
MustAtBot设置 - 检查机器人QQ号是否正确
- 确认
-
预设不存在错误
- 确认
data/OpenAIChatPlugin/presets/目录下存在对应预设 - 确认预设名称拼写正确
- 确认
-
管理员命令提示权限不足
- 确认使用者为机器人 owner 或已通过
/chatrbac grant授权 - 群内使用可依赖群主/群管理身份(检查
EnableGroupOwnerAutoAuth是否开启)
- 确认使用者为机器人 owner 或已通过
插件会输出详细的调试日志,可以通过日志查看运行状态:
# 查看插件日志
tail -f logs/ncatbot.log | grep openai_chat_plugin- 🖼️ 纯文本模型兼容:历史中的
image_url不再让只支持纯文本的供应商(如智谱 GLM 400 code 1210)永久失败——首次 400 自动以纯文本重试并记住模型不支持视觉,后续请求 提前压平多模态内容、跳过图片下载,会话历史保持不变
- 🛡️ SSRF 防护:HTTP 工具与用户图片下载链路在每一跳请求前校验目标主机,修复开启
AllowWebRequests后可经http://169.254.169.254/…、http://127.0.0.1:…等读取云元数据/内网服务的问题(issue #23 R1)- 回环地址(含 IPv4-mapped 写法)受新配置
AllowLoopbackIps控制(默认关)、内网段受AllowLocalNetworkIps控制(默认关);链路本地(含云元数据)、未指定、组播、保留段等一律拦截,无放行开关 - 域名主机解析 DNS 后对全部 A/AAAA 记录逐条校验,任一命中即拒绝;DNS 解析失败同样拒绝
- 重定向改由插件手动逐跳跟随(上限 5 跳),每一跳重新校验主机与协议,防止「公网 URL 302 到内网地址」绕过;301/302/303 降级 POST 为 GET(与原 httpx 行为一致),307/308 保持方法与请求体
- 网络错误文案统一为「请求失败:…」,不再区分超时/连接失败,避免被当作端口与路径探测的 oracle
- 模型无法通过工具参数自行放行受限地址(同名参数一律忽略,策略只由运营配置决定)
- 回环地址(含 IPv4-mapped 写法)受新配置
- 🔧 移除
ReplaceSystemAsUser配置:随机插话的临时提示现在固定使用 user 角色(预设提示词仍是唯一的 system)。第二条 system 会被严格网关以 400System message must be at the beginning.拒绝(实测 AMD Radeon 网关 + Qwen3.8-27B),该开关已无存在必要,部署中如有设置可直接删除 - 🛡️ 429 限流容错:OpenAI 请求最大重试次数从 1 提高到 4(SDK 指数退避 + 遵守
Retry-After);重试耗尽仍限流时随机插话静默放弃,@/私聊回复「请求过于频繁,请稍后再试」,不再报「插件出现内部错误」
- 🛠️ 定时任务重构:执行轮支持工具调用并写入主会话历史,投递成功才落库;定时轮与普通聊天共用会话级锁,避免消息交错
- 🔐 运维命令:新增
/chat-admin task list|delete|pause|resume;task涉及跨会话/全局资源,仅全局管理员可用(防群主提权) - ⚙️ 执行总开关:新增
EnableScheduledTaskExecution(默认开启),关闭后不注册/不执行、记录保留 - 🛡️ 失败保护:最小调度间隔写死 60 秒;连续失败 5 次自动停用并移出调度器;一次性任务执行后清理记录
- 🛠️ 稳定性:OpenAI 请求改在线程池执行避免阻塞事件循环,并收紧单请求超时(60 秒)与重试次数
- 🧠 思维链隔离:移植 NcatBotTRPG 的思维链剥离逻辑,自动移除
<think>/<reasoning>/ DeepSeek 全角分隔符与孤儿闭标签;思维链只写日志,不进入回复与会话历史(新增StripReasoning,默认开启) - 🎲 群聊随机插话:未 @机器人 的群消息按概率参与,命中后由模型决定是否发言(
NO_REPLY/空正文即沉默);新增EnableRandomReplyGroup、GroupRandomReplyChance、/chat nolisten群级开关与 30s 冷却 - ⏰ AI 定时任务:新增
manage_cron_tasks工具(add/delete/list),到点用当前预设生成内容并投递回创建者会话;任务落data.json、重启恢复,受AllowScheduledTasks控制(默认关闭) - 🌐 GLM 兼容:新增
ReplaceSystemAsUser,把随机插话等临时 system 提示降级为 user,保证只有预设是 system - 🧪 测试:补齐思维链、随机插话与定时任务测试;NcatBotTRPG 不存在时自动跳过跨插件协调测试
- 👁️ 用户图片识别:识别并下载用户消息中携带的图片,作为
image_url视觉输入交给模型(群聊/私聊均支持,多图全部附加);新增EnableImageRecognition配置开关(默认开启),支持 PNG/JPEG/GIF/WEBP/BMP,下载失败或格式不受支持时优雅降级为纯文本 - 🧪 测试:新增用户图片识别链路测试(多图、关闭开关、下载失败降级)
- 🌐 网络请求工具:新增
create_http_request,支持 text / markdown / json / image,受AllowWebRequests控制 - 🖼️ 图片视觉:获取的图片会作为
image_url视觉消息附加到对话,可直接阅读图片内容 - 🛡️ 请求防护:方法/协议白名单、超时、响应大小限制,网络异常统一转为工具错误结果
- 🧪 测试:补齐 HTTP 工具与视觉链路测试,兼容 pytest-asyncio ≥ 1.0
- 🛠️ 修复空中间正文:跳过工具调用轮中仅空白的中间正文,避免发送空消息
- 🛠️ 预设管理重构:
present_manager.py重命名为preset_manager.py,新增Preset类统一加载config.yaml与prompt.md - 🛠️ 修正拼写:预设目录
presents/统一为presets/,首次启动自动重命名旧目录;命令/chat set-present更名为/chat set-preset - 📦 迁移逻辑重构:拆分 4.x 工作区数据迁移与记忆格式升级,迁移失败不再阻塞插件加载
- 🚀 迁移到 NcatBot 5:全面适配 NcatBotPlugin / registrar 装饰器注册 / api.qq 多平台 API
- 🛠️ 漏洞修复:修复 v0.1.x 中重复定义的群消息处理器相互覆盖、导致群聊 AI 对话失效的问题
- 🔐 权限体系重构:
/chat-admin改为三层权限体系(RBAC 全局管理员 + 群主/群管理自动放行 + 默认拒绝);新增/chatrbac命令管理全局管理员 - ⚙️ 配置方式变更:配置统一保存到全局 config.yaml 的
plugin_configs.OpenAIChatPlugin(原/cfg命令不再可用) - 📦 数据自动迁移:首次启动自动将旧版
data/openai_chat_plugin/的会话数据与预设迁移到新位置,旧目录保留为.migrated.bak备份 - 🧰 工具适配:查询类工具适配 v5 pydantic 返回值;回复消息不再 @ 发送者(与旧版行为一致)
- 🛠️ 精简代码:删除部分迁移逻辑
- ✅ 支持更多函数调用: 机器人可以获取上下文信息与系统时间等内容了
- 🛠️ 修正拼写:新增
Preset类:替代原present_manager.py中的函数(present/presents已统一修正为preset/presets)
- 🛠️ 错误处理增强:修改部分错误处理规则
- ⚙️ 省略处理规范:所有省略部分现在可通过源码修改
- ⚙️ 配置项命名规范化:所有配置项改为 PascalCase(如
ApiKey、IsConfigured),与 NcatBot 其他插件保持一致 - 🗑️ 移除会话长度限制:彻底移除
max_conversations配置及所有自动修剪/清理机制,会话历史将完整保留 - 注:由于修剪会话会导致部分平台缓存计费功能失效,故目前直接删除,之后会发布修复
- ✅ 支持更多函数调用: 现在机器人可以初步感知聊天环境了
- ⚙️ 统一工具返回值生成:将工具调用的错误处理重构为一个统一的函数,简化了代码结构并提升了可维护性
- ⚙️ 统一工具调用接口:对所有工具调用进行标准化处理,提高了代码的一致性和可读性
- 🛠️ bug修复:修复错误的添加行为导致污染上下文的问题
- ✅ 支持提示词批量更新:已创建会话中的提示词现在可以通过系统命令更新了
- ✅ 系统时间获取:现在机器人可以通过调用读取系统时间
- ⚙️ 重构记忆存储结构:增加
memory.json中的新字段(from_user,from_group,create_time),同时重构了记忆调用,减少了工具数量 - ✅ 输出工具调用中间内容:现在工具调用中间内容会被记录到上下文和输出了
- ⚙️ 变更会话修剪策略:调整了会话修剪策略,现在会优先删除最早的非system消息,确保预设配置始终保留在会话中
- 🛠️ bug修复:修复
allow_access_memory配置项未生效的问题,现在该配置项可以正确控制是否允许访问会话记忆
- ✅ 记录当前会话预设:插件会记录当前会话使用的预设
- ✅ 对话日志总会打印:无论是否启用调试模式,插件都会在日志中打印每次对话的预设名称和消息内容,便于追踪和调试
- ✅ 修复内置函数调用兼容性问题:修复了在某些环境下内置函数调用可能无法正常工作的问题,提升了稳定性和可靠性
- ✅ 支持内置Function Calling:新增内置函数调用功能,允许插件调用预定义函数以增强交互能力
- ✅ 记忆访问控制:新增配置项
allow_access_memory,控制是否允许访问会话记忆,提升安全性和隐私保护
欢迎提交Issue和Pull Request来改进这个插件!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
查看 LICENSE 文件了解详情。
- NcatBot - 优秀的机器人框架
⭐ 如果这个插件对你有帮助,请给个Star支持一下!