♻️ 大幅重构,拆分模块,增加一些MCP相关限制
Some checks failed
Pyright Lint / Pyright Lint (push) Has been cancelled
Ruff Lint / Ruff Lint (push) Has been cancelled

This commit is contained in:
FuQuan233 2026-07-29 17:00:22 +08:00
parent 41e6aeacb9
commit 0d6771eca6
17 changed files with 1142 additions and 912 deletions

View file

@ -120,6 +120,9 @@ _✨ 支持多API预设、MCP协议、内置工具、联网搜索、视觉模型
| LLMCHAT__HISTORY_SIZE | 否 | 20 | LLM上下文消息保留数量1-40越大token消耗量越多 |
| LLMCHAT__PAST_EVENTS_SIZE | 否 | 10 | 触发回复时发送的群消息数量1-20越大token消耗量越多 |
| LLMCHAT__REQUEST_TIMEOUT | 否 | 30 | API请求超时时间 |
| LLMCHAT__MAX_TOOL_ROUNDS | 否 | 8 | 单次对话最大工具调用轮数,达到后强制生成最终回答 |
| LLMCHAT__MAX_REPEATED_TOOL_CALLS | 否 | 2 | 工具名及参数完全相同时允许实际执行的最大次数 |
| LLMCHAT__MCP_TIMEOUT | 否 | 30 | MCP建连、工具发现及执行的超时时间 |
| LLMCHAT__DEFAULT_PRESET | 否 | off | 默认使用的预设名称配置为off则为关闭 |
| LLMCHAT__RANDOM_TRIGGER_PROB | 否 | 0.05 | 默认随机触发概率 [0, 1] |
| LLMCHAT__DEFAULT_PROMPT | 否 | 你的回答应该尽量简洁、幽默、可以使用一些语气词、颜文字。你应该拒绝回答任何政治相关的问题。 | 默认提示词 |
@ -267,6 +270,23 @@ LLMCHAT__MCP_SERVERS同样为一个dictkey为服务器名称value配置的
</details>
## 🧩 代码结构
核心代码按职责拆分:
- `__init__.py`:仅负责 NoneBot 注册、依赖装配和生命周期。
- `state.py`:群聊/私聊状态与预设选择。
- `dispatcher.py`:每会话单 worker 的可靠队列调度。
- `conversation.py`LLM 请求、有限工具循环和回复发送。
- `message_utils.py``prompts.py`:消息转换、图片处理和提示词构建。
- `mcpclient.py``onebottools.py`:外部 MCP 和 OneBot 工具适配。
- `persistence.py`:带锁和原子替换的状态持久化。
- `commands.py`:管理命令注册。
运行回归测试:
python -m unittest discover -s tests -v
## 🎉 使用
**如果`LLMCHAT__DEFAULT_PRESET`没有配置,则插件默认为关闭状态,请使用`API预设+[预设名]`开启插件, 私聊同理。**