Commit Graph

2482 Commits

Author SHA1 Message Date
liuwei
b15b060afb ui: 收敛Dify配置项并补充字段说明
变更项:

1. Dify 应用配置区保留刚需字段:name、provider_template、app_key、workflow_output_key(out key)。

2. 隐藏非刚需覆盖字段(mode/endpoint/response_mode/request_timeout),降低维护复杂度。

3. app_key 输入改为密码样式:默认小圆点展示,支持眼睛按钮切换明文。

4. 在 Provider 模板与 Dify 应用区新增字段说明提示,便于快速理解配置含义。
2026-04-20 15:20:43 +08:00
liuwei
08ded8baee refactor: 移除t_llm_config相关代码依赖
变更项:

1. 删除废弃数据层文件 db/llm_config_db.py。

2. Robot 启动流程移除 llm_config_db 初始化与导入逻辑。

3. DashboardServer 移除 llm_config_db 挂载引用。

4. 复查确认代码中已无 t_llm_config/llm_config_db/LLMConfigDBOperator 运行时依赖。
2026-04-20 15:15:38 +08:00
liuwei
061f2b8084 feat: 重构LLM配置为Provider模板+Dify应用+Scene绑定
变更项:

1. 新增 LLM 目录数据层(t_llm_provider_templates/t_llm_dify_apps/t_llm_backends/t_llm_scenes/t_llm_catalog_meta),支持三层配置管理。

2. Robot 启动接入 llm_catalog_db:自动建表并从旧 llm(backends/scenes) 配置迁移初始化。

3. LLMRegistry 改为优先读取目录模型并按 scene 解析:dify_app 自动合并 Provider 模板与 app_key 差异,降低重复配置。

4. system 蓝图 /api/system/llm_config 改为目录模型读写,新增完整校验(provider引用、app_key、scene目标合法性)。

5. system_llm 页面重构为四块:Provider 模板、Dify 应用、通用 Backend、Scene 绑定,并展示插件依赖拓扑。

6. 保留 YAML 旧结构兜底展示与运行时回退,保证目录表异常时系统仍可运行。
2026-04-20 15:09:24 +08:00
liuwei
1446bf5f39 feat: 将LLM配置主存储迁移到MySQL
变更项: 1) 新增 t_llm_config 数据访问层与建表逻辑。 2) Robot 启动时自动初始化并在空库时从 YAML 导入。 3) 后台 system LLM API 改为读写 MySQL。 4) LLMRegistry 改为优先 MySQL 读取并回退 YAML。 5) DashboardServer 挂载 llm_config_db 提供后台访问。
2026-04-20 14:51:43 +08:00
liuwei
ef49588485 refactor: 移除LLM旧兼容入口并统一scene单路由
变更项:

1. LLMRegistry 仅保留 scene 入口,删除 backend_name/backend_ref/scene_ref 等兼容解析分支,未声明 scene 时仅保留直连配置。

2. Dify/GlobalNews/GameTask 插件初始化改为仅传 scene,不再拼接 backend/provider/url 等旧兼容字段。

3. 清理插件配置冗余:dify/global_news/game_task/douyu 的 config.toml 删除 backend 字段,统一由 scene 映射后端。

4. 后台 system API 调整为严格模式:插件依赖扫描仅采集 scene;scene 保存时必须绑定有效 backend。

5. 后台页面去除拓扑中的配置Backend冗余列,并新增前端校验,禁止提交空场景或未绑定后端。
2026-04-20 14:45:03 +08:00
liuwei
7b6bd19781 feat: 引入LLM场景路由与后台拓扑管理能力
变更项:

1. 新增 llm.scenes 场景路由层,支持 scene->backend 统一映射,并补充默认场景配置。

2. 扩展 LLMRegistry,新增 scene 解析逻辑;当声明 scene 时强制按场景路由结果生效,保持旧 backend 配置兼容。

3. 扩展后台 /api/system/llm_config 读写能力,支持 scenes 配置保存;新增插件 LLM 依赖扫描与拓扑数据输出。

4. 升级 system_llm 页面:新增场景路由管理区、插件依赖拓扑表,支持可视化查看 插件->scene->backend->provider。

5. 迁移核心插件配置到 scene 模式(保留兼容字段):dify/global_news/game_task/message_summary/ai_auto_response/member_context/douyu。

6. 调整部分插件初始化默认 llm_config,补充 scene 字段,确保后台场景切换可直接生效。
2026-04-20 14:36:56 +08:00
liuwei
09daaf956c 清理无效代码 2026-04-20 14:18:19 +08:00
liuwei
db08a4a15e 插件群状态弹窗支持按群开启/关闭,复用原有群权限缓存管理逻辑 2026-04-20 14:13:51 +08:00
liuwei
634fb4d67e 插件管理新增群状态按钮与群开关明细弹窗,后端补充按插件查询群启用状态接口 2026-04-20 14:09:00 +08:00
liuwei
f18e4329d2 加入设计skill文档 2026-04-20 13:48:19 +08:00
liuwei
1eef1b5bf2 修复斗鱼日报Dify max_length字段类型错误
变更项:\n1. 将斗鱼日报传给 Dify 的 max_length 入参由 int 改为 string。\n2. 增加中文注释说明原因:对应 Workflow 输入表单字段为 paragraph 类型,必须传字符串,否则触发 invalid_param 400。\n3. 保持其他字段与逻辑不变,最小化改动范围,确保快速恢复日报链路。
2026-04-20 13:39:12 +08:00
liuwei
382f3967bd 修复斗鱼日报Dify 400请求并增强错误诊断
变更项:\n1. 在斗鱼插件新增 daily_report_include_structured_inputs 配置(默认 false),Dify 入参默认改为精简字段(task_type/query/system_prompt/user_prompt/room_id 等),避免复杂对象输入触发 400。\n2. 调整 _build_dify_daily_report_inputs:仅在 include_structured_inputs=true 时才附带 report_payload_json,大幅降低 Workflow 入参类型不匹配风险。\n3. 在初始化流程中读取 report_api.include_structured_inputs,支持按环境开关结构化入参。\n4. 在 UnifiedLLMClient 的 Dify 调用中新增 HTTPError 细粒度处理,last_error 与日志会追加 response_body 片段,便于快速定位 Dify 侧具体报错原因。\n5. 更新 douyu 配置模板注释,明确复杂输入导致 400 的风险与开关用途,方便后续维护。
2026-04-20 13:36:56 +08:00
liuwei
6386cd5940 修复斗鱼日报手动触发未走Dify的问题
变更项:\n1. 将普通命令
2026-04-20 13:31:50 +08:00
liuwei
a89eedff15 群聊总结默认改回markdown渲染以保证样式稳定
变更项:\n1. 将 message_summary 插件代码中的 summary_image_mode 默认值从 template 调整为 markdown,确保配置缺失时也走历史稳定样式。\n2. 更新 plugins/message_summary/config.toml 的默认渲染模式为 markdown,立即生效并避免模板样式未完善导致展示异常。\n3. 保留 template 模式能力与失败回退逻辑,后续模板优化完成后可通过配置无缝切回。
2026-04-20 13:29:54 +08:00
liuwei
f719b10c4a 模板化改造斗鱼日报与群聊总结图片渲染,支持HTML模板独立维护
变更项:\n1. 将 plugins/douyu/report_template.py 从内联HTML重构为模板渲染,新增 plugins/douyu/templates/daily_report.html 承载完整样式与结构,Python侧仅保留数据组装与安全注入。\n2. 修复斗鱼日报模板迁移后的样式缺失问题,补齐 metric-card、insight-card、badge-wall、active-user-grid、chart 等所有关键类样式,确保视觉与旧版一致。\n3. 在 plugins/message_summary/main.py 新增模板化图片渲染链路:优先使用 HtmlTemplateRenderer + html_to_image 生成总结图片,模板异常时自动回退 convert_md_str_to_image,保证稳定性。\n4. 新增 plugins/message_summary/templates/summary_card.html 作为群聊总结卡片模板,后续可仅改模板文件完成UI迭代。\n5. 扩展 plugins/message_summary/config.toml 输出配置,增加 summary_image_mode 与 summary_image_template_path,支持模板模式与回退模式按配置切换。\n6. 保持原有业务流程与发送逻辑不变,仅改造渲染层,降低后续维护成本。
2026-04-20 13:23:54 +08:00
liuwei
f1a6f6d565 新增通用HTML模板渲染器并将机器人菜单改为模板驱动输出 2026-04-20 13:12:44 +08:00
liuwei
cfb8af334b 调整菜单卡片功能标题与功能键字号为12 2026-04-20 13:06:11 +08:00
liuwei
77a0fbe33f 移除菜单图片中设计风格来源外露文案 2026-04-20 13:03:45 +08:00
liuwei
d8a57a768d 下调菜单功能卡片字体尺寸以提升三列紧凑展示密度 2026-04-20 13:03:07 +08:00
liuwei
ee368d697b 菜单生图固定三列卡片并移除响应式折叠逻辑 2026-04-20 12:27:27 +08:00
liuwei
7541bba4cd 菜单功能卡片调整为三列紧凑布局并补充分级响应式断点 2026-04-20 12:24:58 +08:00
liuwei
311655de5a 按PlayStation设计规范重构菜单生图并恢复全量功能卡片展示 2026-04-20 12:22:58 +08:00
liuwei
adee05290d 菜单改为小卡片形态并在功能卡片展示开启关闭状态 2026-04-20 12:00:16 +08:00
liuwei
90266804dc 按技能规范重构菜单UI为纵向紧凑风格并聚焦用户可用指令 2026-04-20 11:56:43 +08:00
liuwei
73c92c0735 优化菜单图片风格为纵向紧凑布局并增强视觉层次 2026-04-20 11:53:23 +08:00
liuwei
08810c98c3 优化菜单生图为紧凑使用手册并移除状态与管理员展示 2026-04-20 11:50:03 +08:00
liuwei
64e7e82712 优化积分流水写入为昵称优先并覆盖打劫/保释场景 2026-04-20 11:44:26 +08:00
liuwei
00f874665d 限制群级插件配置仅开放群成员变更监控并增加后端白名单校验 2026-04-20 11:28:05 +08:00
liuwei
f5dfe0b296 feat(群级配置): 优化群显示、模板入口和JSON编辑体验
- 列表中群信息改为群名主展示,ID弱化展示
- 模板入口改为按插件动态显示:仅选择群成员变更监控时显示欢迎模板按钮
- 移除顶部通用快捷模板,减少误导
- JSON编辑区升级为多行自适应编辑器,增加等宽字体与格式化按钮
2026-04-20 11:23:55 +08:00
liuwei
492711ea0c feat(通讯录): 在群权限面板内嵌进群欢迎表单配置
在通讯录-群详情-群功能权限区域新增群级欢迎配置表单,支持文本与卡片模板的直观维护、变量提示与实时预览;打开群详情自动加载当前群欢迎配置,保存时直接调用群级配置接口写入MySQL并刷新Redis,避免跳转到独立页面查找配置。
2026-04-20 11:01:21 +08:00
liuwei
7d45fdd61d fix(群级配置): 增加结构化表单快捷入口并补充引导提示 2026-04-20 10:53:41 +08:00
liuwei
d4732d79ee feat(群级配置): 新增结构化表单模式降低JSON维护门槛
- 为群成员变更监控/welcome 配置新增标准表单编辑模式,覆盖欢迎文本与卡片关键字段
- 保留高级JSON模式,支持标准表单与JSON双模式切换
- 新增变量提示与实时预览,便于运营同学所见即所得配置文案
- 增加URL与必填项校验,保存前拦截常见配置错误
- 标准表单字段变更实时同步JSON文本,确保两种模式数据一致
2026-04-20 10:48:31 +08:00
liuwei
d4b7cb32f6 feat(群级配置): 新增MySQL+Redis持久缓存并接入进群欢迎差异化配置
新增群级插件配置表与服务层,采用MySQL持久化+Redis长期缓存(TTL=-1);后台新增群级插件配置管理页面与API,支持按群按插件维护JSON配置并在修改后同步回填MySQL和刷新Redis;已将群成员变更监控插件接入该配置,支持欢迎文案与卡片URL等按群差异化。
2026-04-20 10:42:46 +08:00
liuwei
6cf90c02e5 refactor(菜单): 抽离菜单渲染工具为独立模块便于维护\n\n- 新增 plugins/robot_menu/menu_render_tool.py,封装菜单渲染与图片发送能力\n- 将输出模式归一化、Markdown/HTML 生成、自定义样式模板、发送与回退策略统一迁移到工具类\n- main.py 仅保留菜单业务流程与命令处理,改为调用独立工具,降低主文件复杂度\n- 使用相对导入接入新工具模块,减少路径耦合风险\n- 补充详细中文注释,说明拆分目的与关键设计 2026-04-20 10:27:14 +08:00
liuwei
b9edf51ca8 feat(菜单): 使用自定义HTML样式生成菜单图片并增强指令展示\n\n- 新增机器人菜单专用 HTML 模板与 CSS 视觉样式,不再依赖 md2image 默认 Markdown 样式\n- 菜单图片新增基础命令区、管理员命令区、功能明细卡片区,展示更规范\n- 每个功能卡片增加状态徽标、功能键、触发方式与启用/关闭管理命令示例\n- 图片发送逻辑改为优先 html_to_image 渲染,自定义模板失败时仍可回退 Markdown 转图兜底\n- 补充详细中文注释,明确渲染策略、兼容策略与超时保护设计 2026-04-20 10:22:43 +08:00
liuwei
9819b43656 feat(菜单): 支持菜单文本/图片可配置输出并接入md2image\n\n- 新增 RobotMenu.output_mode 配置,支持 text 与 image 两种菜单发送模式\n- 新增图片相关配置:image_fallback_to_text、image_render_timeout_seconds、image_render_retries\n- 菜单与菜单状态命令支持按配置走 md2image 生成图片后发送\n- 新增菜单 Markdown 生成逻辑,图片中展示每个插件的序号、功能键、状态、说明、指令信息\n- 图片发送失败时按配置决定是否回退文本,并补充失败提示与日志\n- 补充详细中文注释并保持原文本发送逻辑兼容 2026-04-20 10:19:16 +08:00
liuwei
7768cebe42 加入斗鱼总结dify内容 2026-04-20 09:35:43 +08:00
liuwei
674ecce4e0 新增斗鱼Dify工作流配置文件
1. 参考群总结AI.yml导出格式创建斗鱼日报AI工作流。\n2. 补充斗鱼插件调用所需输入字段:task_type、system_prompt、user_prompt、report_payload_json、room_id、anchor_day、nickname、max_length。\n3. 配置workflow输出字段为text,便于直接对接斗鱼插件workflow_output_key=text。\n4. 提示词中增加任务路由规则,兼容daily_report与danmu_summary两种生成模式。
2026-04-20 09:16:56 +08:00
liuwei
a933881ab9 斗鱼日报切换Dify工作流并补齐迁移文档
1. douyu插件新增Dify专用日报调用封装,按provider分流,Dify走run(inputs)并传task_type与结构化payload。\n2. 修正斗鱼日报与弹幕总结生成路径,统一改为新封装,保证Dify workflow可接收完整提示词与元信息。\n3. 新增llm后端dify_workflow_douyu_daily_report模板配置,约定workflow_output_key=text与更高超时。\n4. 斗鱼插件report_api后端切换为dify_workflow_douyu_daily_report。\n5. 新增Dify工作流设计文档,包含输入字段、节点编排、代码节点示例与上线检查步骤。
2026-04-20 09:13:49 +08:00
liuwei
23d2f2562e 启用md2img强保活模式:移除浏览器主动关闭逻辑
1. safe_close_browser 改为保活模式下直接返回,不执行 browser.close\n2. 去除 safe_close_browser 中的 terminate/kill 进程树逻辑\n3. 保留函数签名与调用链,确保现有流程兼容\n4. 增加中文注释说明长期常驻场景下的设计意图
2026-04-17 11:46:35 +08:00
liuwei
cc5c49954f 调整md2img保活策略:取消截图后立即重建,改为心跳确认后再自愈
1. 去除截图后探测失败即刻 restart_browser 的逻辑\n2. 改为仅记录告警并推进断连计数,交由心跳任务统一确认后重建\n3. 保留截图失败时的重试重建能力,避免功能不可用\n4. 增加详细中文注释,明确保活优先与误判抑制设计
2026-04-17 11:44:28 +08:00
liuwei
02e34960d3 优化md2img浏览器健康探测,减少截图后误判断连重建
1. _is_browser_alive 增加短重试机制,避免单次瞬时失败被判定为断连\n2. 截图后健康检查由单次探测改为多次探测(超时与间隔可控)\n3. 保留真实断连自动重建能力,但降低误触发概率\n4. 补充详细中文注释,说明探测策略与设计意图
2026-04-17 11:27:27 +08:00
liuwei
59a044a0e2 新增强制重生成日报指令,支持跳过缓存验证弹幕总结效果
1. 新增指令:#强制斗鱼弹幕日报(支持带日期参数)\n2. 强制指令执行时跳过日报缓存读取,直接重生成文本与图片并覆盖缓存\n3. _send_daily_reports 增加 force_regenerate 参数并向下传递\n4. 保留原 #斗鱼弹幕日报 行为不变,兼容既有使用方式\n5. 补充中文注释,说明强制重生成的用途与行为
2026-04-17 11:19:28 +08:00
liuwei
5098c191de 优化斗鱼弹幕总结:新增粉丝向弹幕萃取区块并调整提示词语气 2026-04-17 11:17:16 +08:00
liuwei
e56c0069cc 优化自动回复触发逻辑:疑问句默认仅@机器人时触发
变更项:

1. 在 triggers 中新增 question_requires_at 配置,默认要求@机器人才将疑问句升级为 question_trigger。

2. 在 response_planner 中收紧问答兜底策略,疑问句仅在 directed 场景进入模型。

3. 在 config.toml 增加 priority.question_requires_at=true,避免群聊普通疑问句高频误触发。
2026-04-17 10:38:30 +08:00
liuwei
1cf2cfd6e3 修复md2img运行时并发单例问题,避免预热双启动日志 2026-04-17 10:28:35 +08:00
liuwei
3d98b3c0a2 修复转图运行时重复启动与高频误重建问题
变更项:\n1. 修复 md2img 运行时并发启动竞争,新增启动中标记,避免同名线程被重复拉起。\n2. 优化浏览器心跳探测策略:由高频激进重建改为断连连续判定后再重建,降低误判。\n3. 新增截图进行中保护,截图期间心跳跳过探测,避免与业务并发导致误重建。\n4. 为浏览器重建增加 reason 日志字段,便于线上追踪重建触发原因。\n5. 保留截图后断连自愈能力,但改为更稳健的触发路径,减少无意义重建。
2026-04-17 10:26:10 +08:00
liuwei
97bc4560b6 增强转图浏览器保活:截图后探活并自动重建,增加后台心跳巡检 2026-04-17 10:14:04 +08:00
liuwei
2a87863d9c 修复转图任务返回时序误判:等待runtime任务完成后再返回,避免先报失败后截图 2026-04-17 10:12:15 +08:00
liuwei
c49f5e509c 新增转图运行时健康监控与手动预热
变更项:\n1. 在 markdown_to_image 增加 get_md2img_health_snapshot 健康快照能力,输出 runtime 线程、事件循环、浏览器连接、启动来源与 PID 状态。\n2. 新增系统接口 GET /api/system/md2img_health,支持后台查询转图运行时健康信息。\n3. 新增系统接口 POST /api/system/md2img_warmup,支持后台手动触发转图预热并返回最新状态。\n4. 在资源监控页面接入转图健康状态条,展示运行时在线状态、浏览器连接状态及关键摘要信息。\n5. 在资源监控页面增加转图预热与状态刷新按钮,便于线上快速自愈与排障。\n6. 补充中文注释与错误提示,保持后端与前端可观测性一致。
2026-04-17 10:04:18 +08:00