fix:生成api没有开始时间戳

pull/1459/head
SengokuCola 2025-12-22 23:27:50 +08:00
parent 282cc4aad0
commit 4bf72e260c
6 changed files with 68 additions and 5 deletions

View File

@ -46,7 +46,7 @@
## 🔥 更新和安装
**最新版本: v0.11.6** ([更新日志](changelogs/changelog.md))
**最新版本: v0.12.0** ([更新日志](changelogs/changelog.md))
可前往 [Release](https://github.com/MaiM-with-u/MaiBot/releases/) 页面下载最新版本

1
bot.py
View File

@ -59,6 +59,7 @@ def run_runner_process():
while True:
logger.info(f"正在启动 {script_file}...")
logger.info("正在编译着色器1/114514")
# 启动子进程 (Worker)
# 使用 sys.executable 确保使用相同的 Python 解释器

View File

@ -1,6 +1,6 @@
# Changelog
## [0.12.0] - 2025-12-16
## [0.12.0] - 2025-12-21
### 🌟 重大更新
- 添加思考力度机制,动态控制回复时间和长度
- planner和replyer现在开启联动更好的回复逻辑
@ -9,12 +9,32 @@
- mcp插件作为内置插件加入默认不启用
- 添加全局记忆配置项,现在可以选择让记忆为全局的
### 🌟 WebUI 重大更新
- **模型预设市场功能正式完善并发布**:现在可以将模型配置完整分享,分享按钮位于模型配置界面右上角
- **全面安全加固**:为所有 WebUI API 和 WebSocket 端点添加身份认证保护Cookie 添加 Secure 和 SameSite 属性,支持环境感知动态配置
- **前端认证重构**:从 localStorage 迁移到 HttpOnly Cookie新增 WebSocket 临时 token 认证机制,解决跨域开发环境下 Cookie 无法携带的问题
- **增强插件配置管理**:支持原始 TOML 配置的加载和保存,前端支持查看和编辑插件配置文件源文件
### 细节功能更改
- 移除频率自动调整
- 移除情绪功能
- 优化记忆差许多呢超时设置
- 部分配置为0的bug
- 插件安装时可以主动选择克隆的分支
- 首页中反馈问卷功能,可以提交反馈信息和建议信息
- 黑话和表达不再提取包含名称的内容
- 模型界面支持编辑 extra params 额外字段
- 模型界面中的任务分配子界面支持编辑慢请求检测阈值
- 模型界面中支持对单个模型单独指定温度参数和 max tokens 参数
- 首页所有数据卡片支持自动选择单位+显示详细信息功能
- WebUI 聊天室表情包、图片、富文本消息支持
- 麦麦适配器配置界面的工作模式支持折叠
- WebUI 插件配置解析支持动态 list 表单
- WebUI 插件配置中的动态 list 支持开关、滑块和下拉框类型
- 在插件商场、插件配置详情界面增加了重启按钮
- 加强安全性和隐私保护:添加登录接口速率限制,防止暴力破解攻击,收紧 CORS 配置(限制允许的 HTTP 方法和请求头完善路径校验validate_safe_path 防止目录穿越攻击fetchWithAuth 支持 FormData 文件上传,新增 robots.txt 路由和 X-Robots-Tag 响应头防止搜索引擎索引,前端添加 meta noindex/nofollow 标签阻止爬虫收录
- 修复并优化了聊天室、模型配置、日志查看器、黑话管理、WebUI 端口占用、配置向导、首页图表、聊天室消息重复、移动端日志不可见、模型提供商删除、主程序配置换行符、HTTP 警告横幅、重启界面、LPMM 配置、人物信息、插件端点安全认证、WebSocket token 等问题,提升整体稳定性与体验。
- 完成主程序配置与模型配置界面重构、模型提供商与麦麦适配器配置重构(引入 TOML 校验、WebSocket 认证逻辑抽取为共享模块统一 WS 端点,升级 React 到 19.2.1 并更新依赖WebUI 配置与可视化全部迁移到主配置及模型配置中,优化配置更新提示、插件详情页面和路径安全校验,并增强模型与梦境等多项配置的可视化和自动检验。
## [0.11.6] - 2025-12-2
### 🌟 重大更新

View File

@ -1,5 +1,5 @@
import random
from typing import List, Tuple, Type, Any
from typing import List, Tuple, Type, Any, Optional
from src.plugin_system import (
BasePlugin,
register_plugin,
@ -17,6 +17,9 @@ from src.plugin_system import (
emoji_api,
)
from src.config.config import global_config
from src.common.logger import get_logger
logger = get_logger("hello_world_plugin")
class CompareNumbersTool(BaseTool):
@ -217,6 +220,39 @@ class RandomEmojis(BaseCommand):
return (True, "已发送随机表情包", True) if success else (False, "发送随机表情包失败", False)
class TestCommand(BaseCommand):
"""响应/test命令"""
command_name = "test"
command_description = "测试命令"
command_pattern = r"^/test$"
async def execute(self) -> Tuple[bool, Optional[str], int]:
"""执行测试命令"""
try:
from src.plugin_system.apis import generator_api
reply_reason = "这是一条测试消息。"
logger.info(f"测试命令:{reply_reason}")
result_status, data = await generator_api.generate_reply(
chat_stream=self.message.chat_stream,
reply_reason=reply_reason,
enable_chinese_typo=False,
extra_info=f"{reply_reason}用于测试bot的功能是否正常。请你按设定的人设表达一句\"测试正常\"",
)
if result_status:
# 发送生成的回复
if data and data.reply_set and data.reply_set.reply_data:
for reply_seg in data.reply_set.reply_data:
send_data = reply_seg.content
await self.send_text(send_data, storage_message=True)
logger.info(f"已回复: {send_data}")
return True, "", 1
except Exception as e:
logger.error(f"表达器生成失败:{e}")
return True, "", 1
# ===== 插件注册 =====
@ -259,6 +295,7 @@ class HelloWorldPlugin(BasePlugin):
(PrintMessage.get_handler_info(), PrintMessage),
(ForwardMessages.get_handler_info(), ForwardMessages),
(RandomEmojis.get_command_info(), RandomEmojis),
(TestCommand.get_command_info(), TestCommand),
]

View File

@ -9,6 +9,7 @@
"""
import traceback
import time
from typing import Tuple, Any, Dict, List, Optional, TYPE_CHECKING
from rich.traceback import install
from src.common.logger import get_logger
@ -118,6 +119,10 @@ async def generate_reply(
Tuple[bool, List[Tuple[str, Any]], Optional[str]]: (是否成功, 回复集合, 提示词)
"""
try:
# 如果 reply_time_point 未传入,设置为当前时间戳
if reply_time_point is None:
reply_time_point = time.time()
# 获取回复器
logger.debug("[GeneratorAPI] 开始生成回复")
replyer = get_replyer(chat_stream, chat_id, request_type=request_type)
@ -152,7 +157,7 @@ async def generate_reply(
enable_tool=enable_tool,
reply_message=reply_message,
reply_reason=reply_reason,
unknown_words=unknown_words,
unknown_words=unknown_words,
think_level=think_level,
from_plugin=from_plugin,
stream_id=chat_stream.stream_id if chat_stream else chat_id,

View File

@ -123,7 +123,7 @@ talk_value_rules = [
[memory]
max_agent_iterations = 3 # 记忆思考深度最低为1
agent_timeout_seconds = 45.0 # 最长回忆时间(秒)
agent_timeout_seconds = 200.0 # 最长回忆时间(秒)
enable_jargon_detection = true # 记忆检索过程中是否启用黑话识别
global_memory = false # 是否允许记忆检索进行全局查询