Undefined-bot 3.3.0__tar.gz → 3.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (586) hide show
  1. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/ARCHITECTURE.md +11 -5
  2. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/CHANGELOG.md +26 -0
  3. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/PKG-INFO +4 -3
  4. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/README.md +3 -2
  5. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config.toml.example +98 -5
  6. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/pyproject.toml +1 -1
  7. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/describe_meme_image.txt +1 -0
  8. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/historian_rewrite.md +1 -1
  9. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/judge_meme_image.txt +1 -0
  10. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/undefined.xml +9 -5
  11. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/undefined_nagaagent.xml +23 -8
  12. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/README.md +1 -0
  13. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/__init__.py +1 -1
  14. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/multimodal.py +29 -25
  15. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/prompts.py +78 -76
  16. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/retrieval.py +7 -12
  17. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/api/__init__.py +2 -1
  18. undefined_bot-3.3.2/src/Undefined/api/_context.py +22 -0
  19. undefined_bot-3.3.2/src/Undefined/api/_helpers.py +333 -0
  20. undefined_bot-3.3.2/src/Undefined/api/_naga_state.py +115 -0
  21. undefined_bot-3.3.2/src/Undefined/api/_openapi.py +183 -0
  22. undefined_bot-3.3.2/src/Undefined/api/_probes.py +147 -0
  23. undefined_bot-3.3.2/src/Undefined/api/app.py +333 -0
  24. undefined_bot-3.3.2/src/Undefined/api/routes/__init__.py +1 -0
  25. undefined_bot-3.3.2/src/Undefined/api/routes/chat.py +359 -0
  26. undefined_bot-3.3.2/src/Undefined/api/routes/cognitive.py +86 -0
  27. undefined_bot-3.3.2/src/Undefined/api/routes/health.py +23 -0
  28. undefined_bot-3.3.2/src/Undefined/api/routes/memes.py +222 -0
  29. undefined_bot-3.3.2/src/Undefined/api/routes/memory.py +156 -0
  30. undefined_bot-3.3.2/src/Undefined/api/routes/naga.py +897 -0
  31. undefined_bot-3.3.2/src/Undefined/api/routes/system.py +228 -0
  32. undefined_bot-3.3.2/src/Undefined/api/routes/tools.py +462 -0
  33. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/sender.py +48 -0
  34. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/attachments.py +187 -45
  35. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/historian.py +1 -1
  36. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/service.py +8 -15
  37. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/vector_store.py +13 -21
  38. undefined_bot-3.3.2/src/Undefined/config/admin.py +44 -0
  39. undefined_bot-3.3.2/src/Undefined/config/coercers.py +150 -0
  40. undefined_bot-3.3.2/src/Undefined/config/domain_parsers.py +286 -0
  41. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/hot_reload.py +4 -0
  42. undefined_bot-3.3.2/src/Undefined/config/loader.py +1608 -0
  43. undefined_bot-3.3.2/src/Undefined/config/model_parsers.py +1258 -0
  44. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/models.py +3 -0
  45. undefined_bot-3.3.2/src/Undefined/config/resolvers.py +106 -0
  46. undefined_bot-3.3.2/src/Undefined/config/webui_settings.py +61 -0
  47. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/handlers.py +265 -49
  48. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/service.py +171 -18
  49. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/render.py +11 -2
  50. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/ai_coordinator.py +17 -3
  51. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/command.py +5 -0
  52. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/context.py +2 -0
  53. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/README.md +4 -3
  54. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/callable.json +4 -0
  55. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/config.json +21 -0
  56. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/handler.py +48 -0
  57. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/intro.md +1 -0
  58. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/prompt.md +28 -0
  59. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/__init__.py +0 -0
  60. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/fetch_paper/config.json +17 -0
  61. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/fetch_paper/handler.py +75 -0
  62. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/read_paper_pages/config.json +21 -0
  63. undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/read_paper_pages/handler.py +68 -0
  64. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/runner.py +16 -8
  65. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/__init__.py +1 -0
  66. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/config.json +28 -0
  67. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/handler.py +81 -0
  68. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/intro.md +30 -0
  69. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/prompt.md +49 -0
  70. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/__init__.py +1 -0
  71. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/config.json +20 -0
  72. undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/handler.py +133 -0
  73. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/callable.json +1 -1
  74. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/config.json +1 -1
  75. undefined_bot-3.3.2/src/Undefined/skills/commands/profile/config.json +16 -0
  76. undefined_bot-3.3.2/src/Undefined/skills/commands/profile/handler.py +251 -0
  77. undefined_bot-3.3.2/src/Undefined/skills/commands/summary/config.json +16 -0
  78. undefined_bot-3.3.2/src/Undefined/skills/commands/summary/handler.py +109 -0
  79. undefined_bot-3.3.2/src/Undefined/skills/commands/version/config.json +12 -0
  80. undefined_bot-3.3.2/src/Undefined/skills/commands/version/handler.py +32 -0
  81. undefined_bot-3.3.2/src/Undefined/skills/tools/calculator/config.json +17 -0
  82. undefined_bot-3.3.2/src/Undefined/skills/tools/calculator/handler.py +268 -0
  83. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/handler.py +33 -41
  84. undefined_bot-3.3.2/src/Undefined/skills/tools/get_current_time/callable.json +4 -0
  85. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/README.md +1 -1
  86. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/config.json +1 -1
  87. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/handler.py +3 -1
  88. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/config.json +2 -2
  89. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/handler.py +5 -2
  90. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/config.json +1 -1
  91. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/handler.py +3 -1
  92. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +31 -6
  93. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +29 -6
  94. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_message/handler.py +7 -0
  95. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +7 -0
  96. undefined_bot-3.3.2/src/Undefined/skills/toolsets/render/render_latex/config.json +22 -0
  97. undefined_bot-3.3.2/src/Undefined/skills/toolsets/render/render_latex/handler.py +241 -0
  98. undefined_bot-3.3.2/src/Undefined/utils/__init__.py +0 -0
  99. undefined_bot-3.3.2/src/Undefined/utils/coerce.py +37 -0
  100. undefined_bot-3.3.2/src/Undefined/utils/fake_at.py +180 -0
  101. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/history.py +28 -16
  102. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/queue_intervals.py +9 -0
  103. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/recent_messages.py +7 -2
  104. undefined_bot-3.3.2/src/Undefined/utils/xml.py +93 -0
  105. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_config.py +73 -0
  106. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_runtime.py +45 -0
  107. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/components.css +83 -0
  108. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/api.js +36 -1
  109. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/bot.js +123 -0
  110. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/config-form.js +1 -0
  111. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/i18n.js +40 -0
  112. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/log-view.js +24 -1
  113. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/main.js +322 -0
  114. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/memes.js +38 -9
  115. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/runtime.js +155 -3
  116. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/state.js +2 -0
  117. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/ui.js +40 -0
  118. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/templates/index.html +46 -5
  119. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/config_sync.py +21 -3
  120. undefined_bot-3.3.0/src/Undefined/api/app.py +0 -2985
  121. undefined_bot-3.3.0/src/Undefined/config/loader.py +0 -3140
  122. undefined_bot-3.3.0/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -31
  123. undefined_bot-3.3.0/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -138
  124. undefined_bot-3.3.0/src/Undefined/utils/xml.py +0 -14
  125. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/.gitignore +0 -0
  126. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/LICENSE +0 -0
  127. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config/README.md +0 -0
  128. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config/mcp.json.example +0 -0
  129. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/img/head.png +0 -0
  130. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/img/xlwy.jpg +0 -0
  131. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/IMPORTANT/each.md +0 -0
  132. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/README.md +0 -0
  133. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/agent_self_intro.txt +0 -0
  134. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/analyze_multimodal.txt +0 -0
  135. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/describe_image.txt +0 -0
  136. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/generate_title.txt +0 -0
  137. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/historian_profile_merge.md +0 -0
  138. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/image_gen_moderation.txt +0 -0
  139. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/injection_detector.txt +0 -0
  140. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/injection_response_agent.txt +0 -0
  141. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/merge_summaries.txt +0 -0
  142. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/naga_message_moderation.txt +0 -0
  143. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/stats_analysis.txt +0 -0
  144. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/summarize.txt +0 -0
  145. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/README.md +0 -0
  146. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/__main__.py +0 -0
  147. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/__init__.py +0 -0
  148. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/client.py +0 -0
  149. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/crawl4ai_support.py +0 -0
  150. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/http.py +0 -0
  151. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/llm.py +0 -0
  152. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/model_selector.py +0 -0
  153. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/parsing.py +0 -0
  154. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/queue_budget.py +0 -0
  155. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/summaries.py +0 -0
  156. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/tokens.py +0 -0
  157. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/tooling.py +0 -0
  158. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/transports/__init__.py +0 -0
  159. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/transports/openai_transport.py +0 -0
  160. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/api/naga_store.py +0 -0
  161. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/__init__.py +0 -0
  162. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/client.py +0 -0
  163. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/downloader.py +0 -0
  164. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/models.py +0 -0
  165. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/parser.py +0 -0
  166. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/__init__.py +0 -0
  167. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/downloader.py +0 -0
  168. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/parser.py +0 -0
  169. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/sender.py +0 -0
  170. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/wbi.py +0 -0
  171. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/wbi_request.py +0 -0
  172. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/changelog.py +0 -0
  173. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/__init__.py +0 -0
  174. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/job_queue.py +0 -0
  175. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/profile_storage.py +0 -0
  176. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/__init__.py +0 -0
  177. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/manager.py +0 -0
  178. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/context.py +0 -0
  179. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/context_resource_registry.py +0 -0
  180. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/end_summary_storage.py +0 -0
  181. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/faq.py +0 -0
  182. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/injection_response_agent.py +0 -0
  183. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/__init__.py +0 -0
  184. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/chunker.py +0 -0
  185. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/embedder.py +0 -0
  186. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/manager.py +0 -0
  187. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/reranker.py +0 -0
  188. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/runtime.py +0 -0
  189. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/store.py +0 -0
  190. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/main.py +0 -0
  191. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/mcp/__init__.py +0 -0
  192. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/mcp/registry.py +0 -0
  193. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/__init__.py +0 -0
  194. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/models.py +0 -0
  195. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/store.py +0 -0
  196. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/vector_store.py +0 -0
  197. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/worker.py +0 -0
  198. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memory.py +0 -0
  199. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/onebot.py +0 -0
  200. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/rate_limit.py +0 -0
  201. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/scheduled_task_storage.py +0 -0
  202. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/__init__.py +0 -0
  203. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/__init__.py +0 -0
  204. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/registry.py +0 -0
  205. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/model_pool.py +0 -0
  206. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/queue_manager.py +0 -0
  207. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/security.py +0 -0
  208. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/__init__.py +0 -0
  209. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/README.md +0 -0
  210. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/__init__.py +0 -0
  211. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
  212. {undefined_bot-3.3.0/src/Undefined/utils → undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent}/__init__.py +0 -0
  213. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
  214. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
  215. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
  216. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
  217. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
  218. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
  219. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
  220. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
  221. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
  222. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
  223. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
  224. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
  225. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
  226. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
  227. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
  228. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
  229. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
  230. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
  231. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
  232. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
  233. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
  234. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
  235. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
  236. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
  237. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
  238. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
  239. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
  240. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
  241. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
  242. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
  243. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
  244. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
  245. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
  246. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
  247. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
  248. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
  249. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
  250. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
  251. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
  252. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
  253. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
  254. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
  255. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
  256. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
  257. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
  258. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
  259. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
  260. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
  261. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
  262. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
  263. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
  264. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
  265. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
  266. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
  267. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
  268. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
  269. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
  270. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
  271. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
  272. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
  273. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
  274. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
  275. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
  276. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
  277. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
  278. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
  279. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
  280. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
  281. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
  282. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
  283. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
  284. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
  285. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
  286. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
  287. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
  288. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/README.md +0 -0
  289. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/config.json +0 -0
  290. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
  291. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
  292. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
  293. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
  294. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
  295. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
  296. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
  297. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
  298. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
  299. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
  300. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
  301. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
  302. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
  303. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
  304. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
  305. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
  306. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
  307. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
  308. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
  309. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
  310. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
  311. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
  312. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
  313. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
  314. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
  315. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
  316. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
  317. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
  318. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
  319. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
  320. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
  321. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
  322. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
  323. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
  324. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
  325. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
  326. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/intro_generator.py +0 -0
  327. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/intro_utils.py +0 -0
  328. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
  329. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
  330. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
  331. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
  332. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
  333. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
  334. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
  335. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
  336. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
  337. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
  338. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
  339. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
  340. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
  341. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
  342. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
  343. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
  344. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
  345. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/README.md +0 -0
  346. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/config.json +0 -0
  347. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
  348. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
  349. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
  350. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
  351. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
  352. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
  353. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
  354. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
  355. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
  356. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
  357. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
  358. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
  359. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
  360. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/README.md +0 -0
  361. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/README.md +0 -0
  362. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/config.json +0 -0
  363. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/handler.py +0 -0
  364. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/README.md +0 -0
  365. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/config.json +0 -0
  366. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
  367. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/README.md +0 -0
  368. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/config.json +0 -0
  369. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/handler.py +0 -0
  370. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/README.md +0 -0
  371. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/config.json +0 -0
  372. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/handler.py +0 -0
  373. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/README.md +0 -0
  374. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/config.json +0 -0
  375. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/handler.py +0 -0
  376. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/README.md +0 -0
  377. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/handler.py +0 -0
  378. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/README.md +0 -0
  379. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/config.json +0 -0
  380. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/handler.py +0 -0
  381. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/README.md +0 -0
  382. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/config.json +0 -0
  383. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/handler.py +0 -0
  384. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/README.md +0 -0
  385. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/config.json +0 -0
  386. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/handler.py +0 -0
  387. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/policy.py +0 -0
  388. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/scopes.json +0 -0
  389. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/README.md +0 -0
  390. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/config.json +0 -0
  391. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/handler.py +0 -0
  392. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/README.md +0 -0
  393. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/config.json +0 -0
  394. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/handler.py +0 -0
  395. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/README.md +0 -0
  396. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/config.json +0 -0
  397. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/handler.py +0 -0
  398. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/README.md +0 -0
  399. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/config.json +0 -0
  400. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/handler.py +0 -0
  401. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/http_client.py +0 -0
  402. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/http_config.py +0 -0
  403. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/registry.py +0 -0
  404. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/README.md +0 -0
  405. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/__init__.py +0 -0
  406. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
  407. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
  408. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
  409. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
  410. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
  411. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
  412. {undefined_bot-3.3.0/src/Undefined/skills/tools/get_current_time → undefined_bot-3.3.2/src/Undefined/skills/tools/calculator}/callable.json +0 -0
  413. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
  414. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
  415. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
  416. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/README.md +0 -0
  417. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/config.json +0 -0
  418. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
  419. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
  420. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
  421. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
  422. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
  423. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/README.md +0 -0
  424. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/config.json +0 -0
  425. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
  426. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
  427. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
  428. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
  429. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
  430. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
  431. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
  432. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
  433. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
  434. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
  435. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
  436. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
  437. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
  438. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/README.md +0 -0
  439. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/config.json +0 -0
  440. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
  441. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/task_progress/config.json +0 -0
  442. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
  443. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/__init__.py +0 -0
  444. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
  445. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
  446. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
  447. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
  448. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
  449. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
  450. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
  451. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
  452. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
  453. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
  454. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/README.md +0 -0
  455. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/activity_trend/config.json +0 -0
  456. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/activity_trend/handler.py +0 -0
  457. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/detect_inactive_risk/config.json +0 -0
  458. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/detect_inactive_risk/handler.py +0 -0
  459. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/filter_members/config.json +0 -0
  460. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/filter_members/handler.py +0 -0
  461. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
  462. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
  463. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
  464. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
  465. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
  466. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
  467. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_activity/config.json +0 -0
  468. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_activity/handler.py +0 -0
  469. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
  470. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
  471. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
  472. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
  473. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
  474. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
  475. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/level_distribution/config.json +0 -0
  476. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/level_distribution/handler.py +0 -0
  477. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/rank_members/config.json +0 -0
  478. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/rank_members/handler.py +0 -0
  479. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
  480. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
  481. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/README.md +0 -0
  482. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/search_memes/config.json +0 -0
  483. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/search_memes/handler.py +0 -0
  484. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +0 -0
  485. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +0 -0
  486. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/README.md +0 -0
  487. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
  488. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
  489. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
  490. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
  491. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
  492. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
  493. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
  494. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
  495. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/README.md +0 -0
  496. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
  497. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
  498. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
  499. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
  500. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
  501. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
  502. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
  503. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
  504. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
  505. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
  506. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
  507. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
  508. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
  509. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
  510. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
  511. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
  512. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
  513. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
  514. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
  515. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
  516. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
  517. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
  518. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/README.md +0 -0
  519. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
  520. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
  521. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
  522. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
  523. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
  524. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
  525. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/README.md +0 -0
  526. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_html/config.json +0 -0
  527. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -0
  528. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -0
  529. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -0
  530. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
  531. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
  532. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
  533. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
  534. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
  535. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
  536. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
  537. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
  538. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
  539. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/token_usage_storage.py +0 -0
  540. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/cache.py +0 -0
  541. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/common.py +0 -0
  542. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/cors.py +0 -0
  543. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/file_lock.py +0 -0
  544. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/group_metrics.py +0 -0
  545. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/http_download.py +0 -0
  546. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/io.py +0 -0
  547. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/logging.py +0 -0
  548. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/member_utils.py +0 -0
  549. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/message_targets.py +0 -0
  550. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/message_utils.py +0 -0
  551. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/paths.py +0 -0
  552. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/qq_emoji.py +0 -0
  553. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/request_params.py +0 -0
  554. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/resources.py +0 -0
  555. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/scheduler.py +0 -0
  556. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/self_update.py +0 -0
  557. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/sender.py +0 -0
  558. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/time_utils.py +0 -0
  559. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/tool_calls.py +0 -0
  560. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/__init__.py +0 -0
  561. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/__main__.py +0 -0
  562. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/app.py +0 -0
  563. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/core.py +0 -0
  564. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/__init__.py +0 -0
  565. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_auth.py +0 -0
  566. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_bot.py +0 -0
  567. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_index.py +0 -0
  568. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_logs.py +0 -0
  569. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_memes.py +0 -0
  570. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_shared.py +0 -0
  571. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_system.py +0 -0
  572. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
  573. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/app.css +0 -0
  574. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/base.css +0 -0
  575. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/landing.css +0 -0
  576. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/responsive.css +0 -0
  577. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/style.css +0 -0
  578. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/variables.css +0 -0
  579. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/favicon.svg +0 -0
  580. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/auth.js +0 -0
  581. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/logs.js +0 -0
  582. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
  583. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/__init__.py +0 -0
  584. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/comment.py +0 -0
  585. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/config_io.py +0 -0
  586. {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/toml_render.py +0 -0
@@ -90,7 +90,7 @@ graph TB
90
90
  T_BilibiliVideo["bilibili_video<br/>B站视频下载发送"]
91
91
  end
92
92
 
93
- subgraph Toolsets["工具集 (skills/toolsets/, 9大类)"]
93
+ subgraph Toolsets["工具集 (skills/toolsets/, 11大类)"]
94
94
  TS_Group["group.*<br/>• get_member_list<br/>• get_member_info<br/>• get_honor_info<br/>• get_files"]
95
95
  TS_Messages["messages.*<br/>• send_message<br/>• get_recent_messages<br/>• get_forward_msg"]
96
96
  TS_Memory["memory.*<br/>• add / delete<br/>• list / update"]
@@ -100,6 +100,8 @@ graph TB
100
100
  TS_Render["render.*<br/>• render_html<br/>• render_latex<br/>• render_markdown"]
101
101
  TS_Scheduler["scheduler.*<br/>• create_schedule_task<br/>• delete_schedule_task<br/>• list_schedule_tasks"]
102
102
  TS_Cognitive["cognitive.*<br/>• search_events<br/>• get_profile<br/>• search_profiles"]
103
+ TS_MCP["mcp.*<br/>MCP 工具集"]
104
+ TS_Memes["memes.*<br/>• search_memes<br/>• send_meme_by_uid"]
103
105
  end
104
106
 
105
107
  subgraph IntelligentAgents["智能体 Agents (skills/agents/, 6个)"]
@@ -149,6 +151,7 @@ graph TB
149
151
  CognitiveHistorian["HistorianWorker<br/>后台史官<br/>[cognitive/historian.py]<br/>• 绝对化改写 • 闸门重试<br/>• 侧写合并(含历史事件注入)"]
150
152
  CognitiveVectorStore["CognitiveVectorStore<br/>向量存储<br/>[cognitive/vector_store.py]<br/>• events/profiles<br/>• 时间衰减加权排序<br/>• MMR 去重"]
151
153
  CognitiveProfileStorage["ProfileStorage<br/>侧写存储<br/>[cognitive/profile_storage.py]<br/>• users/groups Markdown<br/>• 历史快照"]
154
+ MemeSystem["MemeSystem<br/>表情包存储<br/>[memes/]<br/>• worker.py (两阶段识别)<br/>• sqlite+chromadb<br/>• blob 持久化"]
152
155
  FAQStorage["FAQStorage<br/>FAQ 存储<br/>[faq.py]<br/>• data/faq/{group_id}/"]
153
156
  ScheduledTaskStorage["ScheduledTaskStorage<br/>定时任务存储<br/>[scheduled_task_storage.py]"]
154
157
  TokenUsageStorage["TokenUsageStorage<br/>Token 使用统计<br/>[token_usage_storage.py]<br/>• 自动归档<br/>• gzip 压缩"]
@@ -451,6 +454,8 @@ graph TB
451
454
  TRender["render.*<br/>渲染"]
452
455
  TSched["scheduler.*<br/>定时任务"]
453
456
  TCognitive["cognitive.*<br/>认知记忆"]
457
+ TMCP["mcp.*<br/>MCP 工具集"]
458
+ TMemes["memes.*<br/>表情包"]
454
459
  end
455
460
  end
456
461
 
@@ -460,6 +465,7 @@ graph TB
460
465
  FileAgent["file_analysis_agent<br/>文件分析"]
461
466
  NagaAgent["naga_code_analysis_agent<br/>代码分析"]
462
467
  EntAgent["entertainment_agent<br/>娱乐"]
468
+ CodeAgent["code_delivery_agent<br/>代码交付"]
463
469
  end
464
470
 
465
471
  subgraph CommandsLayer2["Commands 层"]
@@ -813,11 +819,11 @@ description: 从 PDF 文件中提取文本和表格,填写表单。当用户
813
819
  ### 8层架构分层
814
820
 
815
821
  1. **外部实体层**:用户、管理员、OneBot 协议端 (NapCat/Lagrange.Core)、大模型 API 服务商
816
- 2. **核心入口层**:main.py 启动入口、配置管理器 (config/loader.py)、热更新应用器 (config/hot_reload.py)、OneBotClient (onebot.py)、RequestContext (context.py)
822
+ 2. **核心入口层**:main.py 启动入口、配置管理器 (config/loader.py)、热更新应用器 (config/hot_reload.py)、OneBotClient (onebot.py)、RequestContext (context.py)、Runtime API Server (api/app.py → api/routes/ 路由子模块)
817
823
  3. **消息处理层**:MessageHandler (handlers.py)、SecurityService (security.py)、CommandDispatcher (services/command.py)、AICoordinator (ai_coordinator.py)、QueueManager (queue_manager.py)、Bilibili 自动提取 (bilibili/)
818
824
  4. **AI 核心能力层**:AIClient (client.py)、PromptBuilder (prompts.py)、ModelRequester (llm.py)、ToolManager (tooling.py)、MultimodalAnalyzer (multimodal.py)、SummaryService (summaries.py)、TokenCounter (tokens.py)
819
- 5. **存储与上下文层**:MessageHistoryManager (utils/history.py, 10000条限制)、MemoryStorage (memory.py, 置顶备忘录, 500条上限)、EndSummaryStorage、CognitiveService + JobQueue + HistorianWorker + VectorStore + ProfileStorage、FAQStorage、ScheduledTaskStorage、TokenUsageStorage (自动归档)
820
- 6. **技能系统层**:ToolRegistry (registry.py)、AgentRegistry、6个 Agents、9类 Toolsets
825
+ 5. **存储与上下文层**:MessageHistoryManager (utils/history.py, 10000条限制)、MemoryStorage (memory.py, 置顶备忘录, 500条上限)、EndSummaryStorage、CognitiveService + JobQueue + HistorianWorker + VectorStore + ProfileStorage、MemeService + MemeWorker + MemeStore + MemeVectorStore (表情包库)、FAQStorage、ScheduledTaskStorage、TokenUsageStorage (自动归档)
826
+ 6. **技能系统层**:ToolRegistry (registry.py)、AgentRegistry、6个 Agents、11类 Toolsets
821
827
  7. **异步 IO 层**:统一 IO 工具 (utils/io.py),包含 write_json、read_json、append_line、跨平台文件锁 (flock/msvcrt)
822
828
  8. **数据持久化层**:历史数据目录、FAQ 目录、Token 归档目录、记忆文件、总结文件、定时任务文件
823
829
 
@@ -844,7 +850,7 @@ description: 从 PDF 文件中提取文本和表格,填写表单。当用户
844
850
  ### Skills 插件系统
845
851
 
846
852
  - **Tools (基础工具)**:原子化的功能单元,如 `send_message`, `get_history`, `bilibili_video`, `arxiv_paper`。
847
- - **Toolsets (复合工具集)**:9大类工具集 (group, messages, memory, contacts, group_analysis, notices, render, scheduler, cognitive)。
853
+ - **Toolsets (复合工具集)**:11大类工具集 (group, messages, memory, contacts, group_analysis, notices, render, scheduler, cognitive, mcp, memes)。
848
854
  - **延迟加载 + 热重载**:`handler.py` 仅在首次调用时导入;当 `skills/` 下的 `config.json`/`handler.py` 发生变更时会自动重新加载。
849
855
  - **Agent 自我介绍自动生成**:启动时按 Agent 代码/配置 hash 生成 `intro.generated.md` 并与 `intro.md` 合并。
850
856
 
@@ -1,3 +1,29 @@
1
+ ## v3.3.2 架构重构、假@检测与认知侧写增强
2
+
3
+ 围绕核心架构进行了大规模重构与功能增强:Runtime API 拆分为路由子模块、配置系统模块化拆分、新增假@检测机制与 /profile 多输出模式。同步引入复读机制全面升级(可配置阈值与冷却)、消息预处理并行化、WebUI 多项交互功能,以及 arXiv 论文分析 Agent 和安全计算器工具。测试覆盖从约 800 提升至 1438+。
4
+
5
+ - 新增假@检测:群聊中 `@+Bot昵称` 的文本形式也被识别为@消息,自动获取昵称(防竞态),`@昵称 /命令` 可正常触发斜杠指令。
6
+ - `/profile` 命令支持三种输出模式:`-f` 合并转发(默认)、`-r` 渲染为图片、`-t` 直接文本发送;超管可通过 `/p <QQ号>` 和 `/p g <群号>` 跨目标查看。
7
+ - 复读系统全面升级:触发阈值可配置(`repeat_threshold`)、Bot 发言不计入复读链、新增冷却机制(`repeat_cooldown_minutes`,?与 ? 等价)。
8
+ - Vision 模型 `max_tokens` 可配置(`[models.vision].max_tokens`,默认 8192),解决 thinking 模型 token 耗尽导致工具调用截断。
9
+ - 新增 arXiv 论文深度分析 Agent 与 `calculator` 安全计算器工具;新增消息历史限制可配置化(`[history].max_records`)。
10
+ - Runtime API 拆分为 8 个路由子模块(`api/routes/`);配置系统拆为 `loader.py`、`models.py`、`hot_reload.py`。
11
+ - 消息预处理并行化(`asyncio.gather`),认知史官改用 XML 格式并统一至 `utils/xml.py`。
12
+ - WebUI:Cmd/Ctrl+K 命令面板、骨架屏、日志时间过滤、资源趋势图、TOML 原始视图、配置版本历史与回滚、长期记忆 CRUD、Modal 焦点陷阱。
13
+ - WebUI 修复 top_k 溢出崩溃(四层防护)、表情包搜索防抖、仪表盘布局优化。
14
+ - 修复 AI 模仿系统关键词自动回复前缀、LaTeX `\n` 替换破坏数学命令、复读冷却消息丢弃与内存泄漏、historian 热重载追踪缺失、GIF 多帧分析与临时文件泄漏、附件渲染异常等多项问题。
15
+ - 修复 `/profile` 渲染留白和字体过小问题,使用 WebUI 配色并提高截断上限至 5000 字符。
16
+
17
+ ---
18
+
19
+ ## v3.3.1 /version 命令的添加
20
+
21
+ 添加了 /version 命令以查看版本号和更改内容。
22
+
23
+ - 该命令作为/changelog的一个轻量版,设置了/v的alias,以提供版本情况的快速简单了解途径。
24
+
25
+ ---
26
+
1
27
  ## v3.3.0 表情包库与提示词调优
2
28
 
3
29
  引入持久化表情包库,支持向量检索与自动摄取;围绕群聊回复策略、表情包场景感知与认知记忆稳定性进行了多轮调优。整体上收紧了群聊中的主动参与条件,在轻聊场景下更倾向于使用表情包表达态度,并显著优化了表情包库在 WebUI 列表展示与高负载检索下的响应速度和可用性。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Undefined-bot
3
- Version: 3.3.0
3
+ Version: 3.3.2
4
4
  Summary: QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11.
5
5
  Project-URL: Repository, https://github.com/69gg/Undefined
6
6
  Project-URL: Issues, https://github.com/69gg/Undefined/issues
@@ -103,7 +103,7 @@ Description-Content-Type: text/markdown
103
103
  - **Management API + Runtime API 分层**:配置、日志、Bot 启停和管理探针由 Management API 提供;主进程 Runtime API 则专注探针、记忆只读查询、认知侧写检索和 WebUI AI Chat。详见 [docs/management-api.md](docs/management-api.md) 与 [docs/openapi.md](docs/openapi.md)。
104
104
  - **多模型池**:支持配置多个 AI 模型,可轮询、随机选择或用户指定;支持多模型并发比较,选择最佳结果继续对话。详见 [多模型功能文档](docs/multi-model.md)。
105
105
  - **本地知识库**:将纯文本文件向量化存入 ChromaDB,AI 可通过关键词搜索或语义搜索查询领域知识;支持增量嵌入与自动扫描。详见 [知识库文档](docs/knowledge.md)。
106
- - **全局表情包库**:收到图片后可异步判定是否为表情包,通过两阶段 LLM 管线生成纯文本描述与标签,支持关键词检索、语义检索和混合检索,并可直接按统一图片 `uid` 发送或插入 `<pic uid="..."/>`。
106
+ - **全局表情包库**:收到图片后可异步判定是否为表情包,通过两阶段 LLM 管线生成纯文本描述与标签,支持关键词检索、语义检索和混合检索,并可直接按统一图片 `uid` 发送或插入 `<pic uid="..."/>`。详见 [表情包库说明](docs/memes.md)。
107
107
  - **访问控制(群/私聊)**:支持 `access.mode` 三种模式(`off` / `blacklist` / `allowlist`)和群/私聊黑白名单;可按策略限制收发范围,避免误触发与误投递。详见 [docs/access-control.md](docs/access-control.md)。
108
108
  - **版本变更可查询**:仓库根目录维护 `CHANGELOG.md`,并提供 `/changelog` 命令在运行时查看最近版本和单版本摘要。
109
109
  - **并行工具执行**:无论是主 AI 还是子 Agent,均支持 `asyncio` 并发工具调用,大幅提升多任务处理速度(如同时读取多个文件或搜索多个关键词)。
@@ -132,9 +132,10 @@ Description-Content-Type: text/markdown
132
132
  Undefined 的功能极为丰富,为了让本页面不过于臃肿,我们将各个模块的深入解析与高阶玩法整理成了专题游览图。这里是开启探索的钥匙:
133
133
 
134
134
  - ⚙️ **[安装与部署指南](docs/deployment.md)**:不管你是需要 `pip` 无脑一键安装,还是源码二次开发,这里的排坑指南应有尽有。
135
+ - 🖥️ **[WebUI 使用指南](docs/webui-guide.md)**:管理控制台功能一览——配置编辑、日志查看、认知记忆管理、表情包库、AI 对话与系统监控。
135
136
  - 🧭 **[Management API 与远程管理](docs/management-api.md)**:WebUI / App 共用的管理接口、认证、配置/日志/Bot 控制与引导探针说明。
136
137
  - 🛠️ **[配置与热更新说明](docs/configuration.md)**:从模型切换到 MCP 库挂载,全方位掌握 `config.toml` 的高阶配置。
137
- - 😶 **[表情包库与图片 UID](docs/configuration.md#425-memes-表情包库)**:查看 `memes.*` 配置、统一图片 `uid` 语义、检索模式与库存管理说明。
138
+ - 😶 **[表情包系统 (Memes)](docs/memes.md)**:查看表情包两阶段判定管线、统一图片 `uid` 发送机制、检索模式及库存管理说明。
138
139
  - 💡 **[交互与使用手册](docs/usage.md)**:包含实用的对话示例、多模态解析用法,以及群管家必备的管理员`/指令`。
139
140
  - 📝 **[版本变更记录](CHANGELOG.md)**:查看按版本整理的更新摘要,也可在运行时使用 `/changelog` 查询。
140
141
  - 🛡️ **[访问控制说明](docs/access-control.md)**:教你如何精准配置黑白名单,让机器人的使用范围分毫不差。
@@ -43,7 +43,7 @@
43
43
  - **Management API + Runtime API 分层**:配置、日志、Bot 启停和管理探针由 Management API 提供;主进程 Runtime API 则专注探针、记忆只读查询、认知侧写检索和 WebUI AI Chat。详见 [docs/management-api.md](docs/management-api.md) 与 [docs/openapi.md](docs/openapi.md)。
44
44
  - **多模型池**:支持配置多个 AI 模型,可轮询、随机选择或用户指定;支持多模型并发比较,选择最佳结果继续对话。详见 [多模型功能文档](docs/multi-model.md)。
45
45
  - **本地知识库**:将纯文本文件向量化存入 ChromaDB,AI 可通过关键词搜索或语义搜索查询领域知识;支持增量嵌入与自动扫描。详见 [知识库文档](docs/knowledge.md)。
46
- - **全局表情包库**:收到图片后可异步判定是否为表情包,通过两阶段 LLM 管线生成纯文本描述与标签,支持关键词检索、语义检索和混合检索,并可直接按统一图片 `uid` 发送或插入 `<pic uid="..."/>`。
46
+ - **全局表情包库**:收到图片后可异步判定是否为表情包,通过两阶段 LLM 管线生成纯文本描述与标签,支持关键词检索、语义检索和混合检索,并可直接按统一图片 `uid` 发送或插入 `<pic uid="..."/>`。详见 [表情包库说明](docs/memes.md)。
47
47
  - **访问控制(群/私聊)**:支持 `access.mode` 三种模式(`off` / `blacklist` / `allowlist`)和群/私聊黑白名单;可按策略限制收发范围,避免误触发与误投递。详见 [docs/access-control.md](docs/access-control.md)。
48
48
  - **版本变更可查询**:仓库根目录维护 `CHANGELOG.md`,并提供 `/changelog` 命令在运行时查看最近版本和单版本摘要。
49
49
  - **并行工具执行**:无论是主 AI 还是子 Agent,均支持 `asyncio` 并发工具调用,大幅提升多任务处理速度(如同时读取多个文件或搜索多个关键词)。
@@ -72,9 +72,10 @@
72
72
  Undefined 的功能极为丰富,为了让本页面不过于臃肿,我们将各个模块的深入解析与高阶玩法整理成了专题游览图。这里是开启探索的钥匙:
73
73
 
74
74
  - ⚙️ **[安装与部署指南](docs/deployment.md)**:不管你是需要 `pip` 无脑一键安装,还是源码二次开发,这里的排坑指南应有尽有。
75
+ - 🖥️ **[WebUI 使用指南](docs/webui-guide.md)**:管理控制台功能一览——配置编辑、日志查看、认知记忆管理、表情包库、AI 对话与系统监控。
75
76
  - 🧭 **[Management API 与远程管理](docs/management-api.md)**:WebUI / App 共用的管理接口、认证、配置/日志/Bot 控制与引导探针说明。
76
77
  - 🛠️ **[配置与热更新说明](docs/configuration.md)**:从模型切换到 MCP 库挂载,全方位掌握 `config.toml` 的高阶配置。
77
- - 😶 **[表情包库与图片 UID](docs/configuration.md#425-memes-表情包库)**:查看 `memes.*` 配置、统一图片 `uid` 语义、检索模式与库存管理说明。
78
+ - 😶 **[表情包系统 (Memes)](docs/memes.md)**:查看表情包两阶段判定管线、统一图片 `uid` 发送机制、检索模式及库存管理说明。
78
79
  - 💡 **[交互与使用手册](docs/usage.md)**:包含实用的对话示例、多模态解析用法,以及群管家必备的管理员`/指令`。
79
80
  - 📝 **[版本变更记录](CHANGELOG.md)**:查看按版本整理的更新摘要,也可在运行时使用 `/changelog` 查询。
80
81
  - 🛡️ **[访问控制说明](docs/access-control.md)**:教你如何精准配置黑白名单,让机器人的使用范围分毫不差。
@@ -152,6 +152,9 @@ api_key = ""
152
152
  # zh: Vision 模型名称。
153
153
  # en: Vision model name.
154
154
  model_name = ""
155
+ # zh: Vision 模型最大输出 tokens。启用 thinking 时建议设大(如 8192),确保思维链消耗后仍有余量输出工具调用。
156
+ # en: Vision model max output tokens. When thinking is enabled, use a larger value (e.g. 8192) so there is still room for tool-call output after thinking.
157
+ max_tokens = 8192
155
158
  # zh: 队列发车间隔(秒,0 表示立即发车)。
156
159
  # en: Queue interval (seconds; 0 dispatches immediately).
157
160
  queue_interval_seconds = 1.0
@@ -424,6 +427,60 @@ prompt_cache_enabled = true
424
427
  # en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
425
428
  [models.historian.request_params]
426
429
 
430
+ # zh: 消息总结模型配置(/summary /sum 专用;未配置时回退到 agent 模型)。
431
+ # en: Message-summary model config (used by /summary and /sum; falls back to the agent model when unset).
432
+ [models.summary]
433
+ # zh: OpenAI-compatible 基址 URL,例如 https://api.openai.com/v1(legacy "/chat/completions" 已弃用但仍兼容)。
434
+ # en: OpenAI-compatible base URL, e.g. https://api.openai.com/v1. Note: legacy "/chat/completions" is deprecated but still supported.
435
+ api_url = ""
436
+ # zh: 消息总结模型 API Key。
437
+ # en: Message-summary model API key.
438
+ api_key = ""
439
+ # zh: 消息总结模型名称。
440
+ # en: Message-summary model name.
441
+ model_name = ""
442
+ # zh: 可选限制:最大生成 tokens。
443
+ # en: Optional limit: max generation tokens.
444
+ max_tokens = 4096
445
+ # zh: 队列发车间隔(秒,0 表示立即发车)。
446
+ # en: Queue interval (seconds; 0 dispatches immediately).
447
+ queue_interval_seconds = 1.0
448
+ # zh: API 模式:传统 chat.completions 或新版 responses。
449
+ # en: API mode: classic chat.completions or the newer responses API.
450
+ api_mode = "chat_completions"
451
+ # zh: 是否启用 reasoning.effort。
452
+ # en: Enable reasoning.effort.
453
+ reasoning_enabled = false
454
+ # zh: reasoning effort 档位。
455
+ # en: reasoning effort level.
456
+ reasoning_effort = "medium"
457
+ # zh: 是否启用 thinking(思维链)。
458
+ # en: Enable thinking (reasoning).
459
+ thinking_enabled = false
460
+ # zh: thinking 预算 tokens。
461
+ # en: Thinking-budget tokens.
462
+ thinking_budget_tokens = 0
463
+ # zh: 是否在请求中发送 budget_tokens(关闭后由提供商决定思维预算)。
464
+ # en: Whether to include budget_tokens in the request (if disabled, the provider decides the thinking budget).
465
+ thinking_include_budget = true
466
+ # zh: reasoning effort 传参风格:openai(reasoning.effort)/ anthropic(output_config.effort)。
467
+ # en: Reasoning effort wire format: openai (reasoning.effort) / anthropic (output_config.effort).
468
+ reasoning_effort_style = "openai"
469
+ # zh: 思维链工具调用兼容:启用后在多轮工具调用中回传 reasoning_content,避免部分模型返回 400。
470
+ # en: Thinking tool-call compatibility: pass back reasoning_content in multi-turn tool calls to avoid 400 errors from some models.
471
+ thinking_tool_call_compat = true
472
+ # zh: Responses API 的 tool_choice 兼容模式:仅在关闭时请求仍返回 500、怀疑上游不兼容对象型 tool_choice 时再尝试开启;开启后上报为 "required" 并只保留目标工具。默认关闭。
473
+ # en: Responses API tool_choice compatibility mode: only try enabling this when requests still return 500 with the default setting and you suspect the upstream does not support object-style tool_choice; it sends "required" and keeps only the selected tool. Disabled by default.
474
+ responses_tool_choice_compat = false
475
+ # zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
476
+ # en: Responses API force stateless replay: when enabled, multi-turn tool follow-ups always skip previous_response_id and replay the full message history instead. Use only when the upstream does not handle stateful responses follow-ups correctly. Disabled by default.
477
+ responses_force_stateless_replay = false
478
+ prompt_cache_enabled = true
479
+
480
+ # zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
481
+ # en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
482
+ [models.summary.request_params]
483
+
427
484
  # zh: Grok 搜索模型配置(仅供 web_agent 内的 grok_search 使用;固定走 chat.completions,不支持 tool call 兼容字段)。
428
485
  # en: Grok search model config (used only by grok_search inside web_agent; always uses chat completions and does not expose tool-call compatibility fields).
429
486
  [models.grok]
@@ -656,16 +713,46 @@ pool_enabled = false
656
713
  # zh: 彩蛋提示发送模式。模式:"none"(关闭)/"agent"(主 AI 调用 Agent 时发送)/"tools"(主 AI 或 Agent 调用 Tool 时发送)/"clean"(过滤噪声;对自动预取的工具如 "get_current_time"、"send_message"、"end" 不予提示)/"all"(包括 Agent 内部调用其子工具即 "agent_tool" 的场景也发送)。默认:"none"。
657
714
  # en: Easter-egg announcement mode. Modes: "none" (off) / "agent" (send when the main AI calls an Agent) / "tools" (send when the main AI or an Agent calls a Tool) / "clean" (filter noise; automatically prefetched tools such as "get_current_time", "send_message", and "end" are not announced) / "all" (also send when an Agent internally calls its sub-tools, i.e. "agent_tool"). Default: "none".
658
715
  agent_call_message_enabled = "none"
659
- # zh: 是否启用群聊关键词(“心理委员”)自动回复。
716
+ # zh: 是否启用群聊关键词("心理委员")自动回复。
660
717
  # en: Enable keyword auto-replies("心理委员") in group chats.
661
718
  keyword_reply_enabled = false
719
+ # zh: 是否启用群聊复读功能(连续 N 条相同消息时复读,N 由 repeat_threshold 控制;若期间有 bot 自身发言则重置链)。
720
+ # en: Enable repeat feature in group chats (repeat when N consecutive identical messages arrive, N set by repeat_threshold; resets if bot itself sent the same text in between).
721
+ repeat_enabled = false
722
+ # zh: 复读触发所需的连续相同消息条数(来自不同发送者),范围 2–20,默认 3。
723
+ # en: Number of consecutive identical messages (from different senders) required to trigger repeat, range 2–20, default 3.
724
+ repeat_threshold = 3
725
+ # zh: 复读冷却时间(分钟)。同一内容被复读后,在冷却时间内不再重复复读。0 = 无冷却。问号类消息(?/?)视为等价。
726
+ # en: Repeat cooldown (minutes). After repeating the same content, won't repeat it again within this cooldown. 0 = no cooldown. Question marks (?/?) are treated as equivalent.
727
+ repeat_cooldown_minutes = 60
728
+ # zh: 是否启用倒问号(复读触发时,若消息为问号则发送倒问号 ¿)。
729
+ # en: Enable inverted question mark (when repeat triggers on "?" messages, send "¿" instead).
730
+ inverted_question_enabled = false
662
731
 
663
732
  # zh: 历史记录配置。
664
733
  # en: History settings.
665
734
  [history]
666
- # zh: 每个会话最多保留的消息条数。
667
- # en: Max messages to keep per conversation.
735
+ # zh: 每个会话最多保留的消息条数(0 = 无限制,注意内存占用)。
736
+ # en: Max messages to keep per conversation (0 = unlimited, mind memory usage).
668
737
  max_records = 10000
738
+ # zh: 工具过滤查询返回的最大消息条数。
739
+ # en: Max messages returned by tool filtered queries.
740
+ filtered_result_limit = 200
741
+ # zh: 工具过滤搜索时扫描的最大消息条数。
742
+ # en: Max messages to scan when tools perform filtered searches.
743
+ search_scan_limit = 10000
744
+ # zh: 总结 agent 单次拉取的最大消息条数。
745
+ # en: Max messages the summary agent can fetch per call.
746
+ summary_fetch_limit = 1000
747
+ # zh: 总结 agent 按时间范围查询时的最大拉取条数。
748
+ # en: Max messages the summary agent fetches for time-range queries.
749
+ summary_time_fetch_limit = 5000
750
+ # zh: OneBot API 回退获取的最大消息条数。
751
+ # en: Max messages to fetch via OneBot API fallback.
752
+ onebot_fetch_limit = 10000
753
+ # zh: 群分析工具的消息/成员返回上限。
754
+ # en: Max messages/members returned by group analysis tools.
755
+ group_analysis_limit = 500
669
756
 
670
757
  # zh: Skills 热重载配置(可选)。
671
758
  # en: Skills hot reload settings (optional).
@@ -710,8 +797,8 @@ grok_search_enabled = false
710
797
  # zh: 代理设置(可选)。
711
798
  # en: Proxy settings (optional).
712
799
  [proxy]
713
- # zh: 是否在 "web_agent" 中启用代理。
714
- # en: Enable proxy in "web_agent".
800
+ # zh: 是否使用代理。
801
+ # en: Whether to use proxy.
715
802
  use_proxy = true
716
803
  # zh: 例如 http://127.0.0.1:7890(也可使用环境变量 "HTTP_PROXY")。
717
804
  # en: e.g. http://127.0.0.1:7890 (or use the "HTTP_PROXY" environment variable).
@@ -1095,6 +1182,12 @@ max_total_bytes = 5368709120
1095
1182
  # zh: 是否允许 GIF 入库。
1096
1183
  # en: Whether GIF files are allowed.
1097
1184
  allow_gif = true
1185
+ # zh: GIF 分析模式:grid(多帧拼接为网格图)或 multi(多帧分开发送给模型)。
1186
+ # en: GIF analysis mode: grid (composite frames into grid) or multi (send frames separately).
1187
+ gif_analysis_mode = "grid"
1188
+ # zh: GIF 分析帧数(包括首末帧,均匀采样)。
1189
+ # en: Number of frames to extract for GIF analysis (including first/last, evenly sampled).
1190
+ gif_analysis_frames = 6
1098
1191
  # zh: 是否自动处理群聊图片。
1099
1192
  # en: Auto-ingest group chat images.
1100
1193
  auto_ingest_group = true
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "Undefined-bot"
3
- version = "3.3.0"
3
+ version = "3.3.2"
4
4
  description = "QQ bot platform with cognitive memory architecture and multi-agent Skills, via OneBot V11."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -56,6 +56,7 @@
56
56
  - 不要逐字抄录图中文字。
57
57
  - 不要输出 Markdown,不要输出额外解释。
58
58
  - 你必须且只能调用 `submit_meme_description`。
59
+ - 如果收到的是一张网格图(多帧拼接)或多张图片,说明原图是动图/GIF:描述应涵盖动图的动态变化过程和整体语义,不要只描述单帧;可以在 tags 里加上 `动图` 标签。
59
60
 
60
61
  好的例子:
61
62
  - `description`: `猫猫无语翻白眼反应图`
@@ -35,7 +35,7 @@ observations: {observations}
35
35
  当前消息原文(触发本轮):
36
36
  {source_message}
37
37
 
38
- 最近消息参考(用于消歧,不要求逐字复述):
38
+ 最近消息参考(XML 格式,与主对话一致,消息间以 `---` 分隔,用于消歧,不要求逐字复述):
39
39
  {recent_messages}
40
40
 
41
41
  必须通过 `submit_rewrite` 工具提交结果,禁止输出普通文本内容。
@@ -22,3 +22,4 @@
22
22
  - `is_meme` 仅表示“适不适合放进聊天表情包库”,不是“图里有没有梗”
23
23
  - `reason` 用一句简短中文说明依据
24
24
  - 只有当“整张图整体上就是一张可直接发送的表情包”时,才能给 `is_meme=true`
25
+ - 如果收到的是一张网格图(多帧拼接)或多张图片,说明原图是动图/GIF:请综合所有帧判断这个动图整体是否适合作为表情包,不要只看单帧
@@ -141,12 +141,16 @@
141
141
  - 除非 `memes.search_memes` 没找到合适结果,或表情包会干扰信息传递,否则不要把本来适合发图的反应先写成一句话来代替发图
142
142
  - 表情包相关规则只决定“怎么回复”,不单独构成“该不该回复”的参与许可;是否回复仍以前面的回复触发逻辑为准
143
143
  - 默认不要把表情包和正文写进同一条消息;需要补一句解释时,优先分成两条消息发送
144
- - 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
145
- - `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
146
- - 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
147
- - 表情包库返回的图片 UID 也可以直接用于 `<pic uid="..."/>`;当前会话临时图片和表情包库图片共用同一套 `uid` 语义
144
+ - 推荐使用统一标签 `<attachment uid="xxx"/>` 引用任何附件(图片或文件),系统根据 UID 前缀自动处理:
145
+ - `pic_*` UID 内嵌为图片(等效于旧 `<pic>` 语法)
146
+ - `file_*` UID → 作为独立文件消息在文字之后发出
147
+ - `<pic uid="..."/>` 语法仍然可用且仅限图片 UID(向后兼容)
148
+ - `<attachment uid="..."/>` 是推荐的统一语法,适用于所有类型的附件
149
+ - 可以图文混排,例如:`我给你介绍一下`\n`<attachment uid="pic_xxx"/>`\n`如图所示`
150
+ - 文件附件在文字消息发出后作为独立文件消息依次发送,不会混排在文字中
151
+ - 表情包库返回的图片 UID 也可以直接用于 `<attachment uid="..."/>`
148
152
  - 只能引用工具结果或上下文里明确给出的图片 UID,禁止臆造 UID
149
- - 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
153
+ - 不要把 `file_*` UID 放进 `<pic>` 标签(会报类型错误)
150
154
  </mixed_media_output>
151
155
  </message_sending_mechanism>
152
156
 
@@ -141,12 +141,16 @@
141
141
  - 除非 `memes.search_memes` 没找到合适结果,或表情包会干扰信息传递,否则不要把本来适合发图的反应先写成一句话来代替发图
142
142
  - 表情包相关规则只决定“怎么回复”,不单独构成“该不该回复”的参与许可;是否回复仍以前面的回复触发逻辑为准
143
143
  - 默认不要把表情包和正文写进同一条消息;需要补一句解释时,优先分成两条消息发送
144
- - 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
145
- - `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
146
- - 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
147
- - 表情包库返回的图片 UID 也可以直接用于 `<pic uid="..."/>`;当前会话临时图片和表情包库图片共用同一套 `uid` 语义
144
+ - 推荐使用统一标签 `<attachment uid="xxx"/>` 引用任何附件(图片或文件),系统根据 UID 前缀自动处理:
145
+ - `pic_*` UID 内嵌为图片(等效于旧 `<pic>` 语法)
146
+ - `file_*` UID → 作为独立文件消息在文字之后发出
147
+ - `<pic uid="..."/>` 语法仍然可用且仅限图片 UID(向后兼容)
148
+ - `<attachment uid="..."/>` 是推荐的统一语法,适用于所有类型的附件
149
+ - 可以图文混排,例如:`我给你介绍一下`\n`<attachment uid="pic_xxx"/>`\n`如图所示`
150
+ - 文件附件在文字消息发出后作为独立文件消息依次发送,不会混排在文字中
151
+ - 表情包库返回的图片 UID 也可以直接用于 `<attachment uid="..."/>`
148
152
  - 只能引用工具结果或上下文里明确给出的图片 UID,禁止臆造 UID
149
- - 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
153
+ - 不要把 `file_*` UID 放进 `<pic>` 标签(会报类型错误)
150
154
  </mixed_media_output>
151
155
  </message_sending_mechanism>
152
156
 
@@ -301,8 +305,8 @@
301
305
 
302
306
  <trigger id="5">
303
307
  <condition>明确的 NagaAgent 技术问题或讨论</condition>
304
- <action>直接调用 naga_code_analysis_agent,确认相关性后再回复</action>
305
- <warning>如果只是泛泛提到naga但不是技术讨论,不要回复</warning>
308
+ <action>**必须**先调用 naga_code_analysis_agent 获取信息,再基于返回结果回复</action>
309
+ <warning>如果只是泛泛提到naga但不是技术讨论,不要回复;但只要涉及技术细节,一定要先调 agent</warning>
306
310
  </trigger>
307
311
 
308
312
  <trigger id="6">
@@ -433,9 +437,20 @@
433
437
  </framework_independence>
434
438
 
435
439
  <technical_support>
436
- 对于任何涉及 NagaAgent 的技术问题,直接调用 naga_code_analysis_agent 处理。
440
+ 对于任何涉及 NagaAgent 的技术问题,**必须先调用 naga_code_analysis_agent 获取准确信息后再回复**。
441
+ 不要依赖自身记忆或猜测来回答 NagaAgent 相关问题——该项目代码频繁更新,只有通过 agent 实时查阅才能保证准确。
437
442
  该 Agent 内部拥有自己的工具集(read_naga_intro、read_file、search_file_content 等),
438
443
  这些内部工具你无法直接调用,你只需要调用 naga_code_analysis_agent 即可。
444
+
445
+ <when_to_call>
446
+ 以下场景必须调用 naga_code_analysis_agent:
447
+ - 用户询问 NagaAgent 的功能、配置、部署、构建方式
448
+ - 用户遇到 NagaAgent 相关的报错或问题
449
+ - 用户想了解 NagaAgent 的架构、代码逻辑、技能系统等
450
+ - 用户提到 NagaAgent 的任何技术细节(API、openclaw、干员、技能等)
451
+ - 讨论涉及 NagaAgent 与其他系统的集成或对比
452
+ 只有纯闲聊式提及(如"naga好用吗"这类不需要技术细节的对话)才可以不调用。
453
+ </when_to_call>
439
454
  </technical_support>
440
455
 
441
456
  </nagaagent_relationship>
@@ -6,6 +6,7 @@
6
6
  - `ai/`:模型请求、提示词构建、工具调度、多模态与总结能力
7
7
  - `arxiv/`:arXiv 论文解析、元信息获取、PDF 下载与发送(自动触发 + AI 工具)
8
8
  - `bilibili/`:B 站视频解析、下载与发送(自动触发 + AI 工具)
9
+ - `memes/`:全局表情包库、多模态解析管线与异步存储
9
10
  - `services/`:安全、命令、队列与协调服务
10
11
  - `skills/`:工具与智能体插件系统
11
12
  - `utils/`:通用工具与跨平台支持
@@ -1,3 +1,3 @@
1
1
  """Undefined - A high-performance, highly scalable QQ group and private chat robot based on a self-developed architecture."""
2
2
 
3
- __version__ = "3.3.0"
3
+ __version__ = "3.3.2"
@@ -16,6 +16,7 @@ import aiofiles
16
16
  import httpx
17
17
 
18
18
  from Undefined.ai.parsing import extract_choices_content
19
+ from Undefined.utils.coerce import safe_float
19
20
  from Undefined.ai.llm import ModelRequester
20
21
  from Undefined.config import VisionModelConfig
21
22
  from Undefined.ai.transports import API_MODE_CHAT_COMPLETIONS, get_api_mode
@@ -352,19 +353,12 @@ def _parse_meme_analysis_response(content: str) -> dict[str, Any]:
352
353
  parsed = _extract_json_object(content)
353
354
  return {
354
355
  "is_meme": bool(parsed.get("is_meme", False)),
355
- "confidence": _safe_float(parsed.get("confidence", 0.0), default=0.0),
356
+ "confidence": safe_float(parsed.get("confidence", 0.0), default=0.0),
356
357
  "description": str(parsed.get("description") or "").strip(),
357
358
  "tags": _normalize_meme_tags(parsed.get("tags")),
358
359
  }
359
360
 
360
361
 
361
- def _safe_float(value: Any, default: float = 0.0) -> float:
362
- try:
363
- return float(value)
364
- except (TypeError, ValueError):
365
- return default
366
-
367
-
368
362
  class MultimodalAnalyzer:
369
363
  """多模态媒体分析器。
370
364
 
@@ -607,13 +601,13 @@ class MultimodalAnalyzer:
607
601
  self._url_cache_locks.pop(key, None)
608
602
 
609
603
  async def _build_content_items(
610
- self, media_type: str, media_content: str, prompt: str
604
+ self, media_type: str, media_content: str | list[str], prompt: str
611
605
  ) -> list[dict[str, Any]]:
612
606
  """构建请求内容项。
613
607
 
614
608
  Args:
615
609
  media_type: 媒体类型
616
- media_content: 媒体内容(URLdata URL
610
+ media_content: 媒体内容(URL/data URL),或其列表
617
611
  prompt: 提示词
618
612
 
619
613
  Returns:
@@ -623,9 +617,9 @@ class MultimodalAnalyzer:
623
617
 
624
618
  # 添加媒体内容项
625
619
  media_item_key = f"{media_type}_url"
626
- content_items.append(
627
- {"type": media_item_key, media_item_key: {"url": media_content}}
628
- )
620
+ contents = media_content if isinstance(media_content, list) else [media_content]
621
+ for mc in contents:
622
+ content_items.append({"type": media_item_key, media_item_key: {"url": mc}})
629
623
 
630
624
  return content_items
631
625
 
@@ -702,7 +696,7 @@ class MultimodalAnalyzer:
702
696
  result = await self._requester.request(
703
697
  model_config=self._vision_config,
704
698
  messages=[{"role": "user", "content": content_items}],
705
- max_tokens=8192,
699
+ max_tokens=self._vision_config.max_tokens,
706
700
  call_type=f"vision_{detected_type}",
707
701
  )
708
702
  content = extract_choices_content(result)
@@ -822,13 +816,19 @@ class MultimodalAnalyzer:
822
816
  self,
823
817
  *,
824
818
  prompt_path: str,
825
- image_url: str,
819
+ image_url: str | list[str],
826
820
  tool_schema: dict[str, Any],
827
821
  tool_name: str,
828
822
  call_type: str,
829
823
  max_tokens: int,
830
824
  ) -> dict[str, Any]:
831
- media_content = await self._load_media_content(image_url, "image")
825
+ if isinstance(image_url, list):
826
+ media_contents: list[str] = []
827
+ for url in image_url:
828
+ media_contents.append(await self._load_media_content(url, "image"))
829
+ media_content: str | list[str] = media_contents
830
+ else:
831
+ media_content = await self._load_media_content(image_url, "image")
832
832
  prompt = await self._load_prompt_text(prompt_path)
833
833
  content_items = await self._build_content_items("image", media_content, prompt)
834
834
  response = await self._requester.request(
@@ -847,11 +847,13 @@ class MultimodalAnalyzer:
847
847
  expected_tool_name=tool_name,
848
848
  stage=call_type,
849
849
  logger=logger,
850
- error_context=f"image={redact_string(image_url)[:120]}",
850
+ error_context=f"image={redact_string(str(image_url) if isinstance(image_url, list) else image_url)[:120]}",
851
851
  )
852
852
 
853
- async def judge_meme_image(self, image_url: str) -> dict[str, Any]:
854
- safe_url = redact_string(image_url)
853
+ async def judge_meme_image(self, image_url: str | list[str]) -> dict[str, Any]:
854
+ safe_url = redact_string(
855
+ str(image_url) if isinstance(image_url, list) else image_url
856
+ )
855
857
  try:
856
858
  args = await self._request_required_tool_args(
857
859
  prompt_path=_MEME_JUDGE_PROMPT_PATH,
@@ -859,7 +861,7 @@ class MultimodalAnalyzer:
859
861
  tool_schema=_MEME_JUDGE_TOOL,
860
862
  tool_name="submit_meme_judgement",
861
863
  call_type="vision_meme_judge",
862
- max_tokens=256,
864
+ max_tokens=self._vision_config.max_tokens,
863
865
  )
864
866
  except Exception as exc:
865
867
  logger.exception("[媒体分析] 表情包判定失败,按非表情包处理: %s", exc)
@@ -872,7 +874,7 @@ class MultimodalAnalyzer:
872
874
  try:
873
875
  parsed = {
874
876
  "is_meme": bool(args.get("is_meme", False)),
875
- "confidence": _safe_float(args.get("confidence", 0.0), default=0.0),
877
+ "confidence": safe_float(args.get("confidence", 0.0), default=0.0),
876
878
  "reason": str(args.get("reason") or "").strip(),
877
879
  }
878
880
  except Exception:
@@ -881,13 +883,15 @@ class MultimodalAnalyzer:
881
883
  "[媒体分析] 表情包判定完成: url=%s is_meme=%s confidence=%.3f reason=%s",
882
884
  safe_url[:50],
883
885
  parsed.get("is_meme", False),
884
- _safe_float(parsed.get("confidence", 0.0), default=0.0),
886
+ safe_float(parsed.get("confidence", 0.0), default=0.0),
885
887
  str(parsed.get("reason", ""))[:80],
886
888
  )
887
889
  return parsed
888
890
 
889
- async def describe_meme_image(self, image_url: str) -> dict[str, Any]:
890
- safe_url = redact_string(image_url)
891
+ async def describe_meme_image(self, image_url: str | list[str]) -> dict[str, Any]:
892
+ safe_url = redact_string(
893
+ str(image_url) if isinstance(image_url, list) else image_url
894
+ )
891
895
  try:
892
896
  args = await self._request_required_tool_args(
893
897
  prompt_path=_MEME_DESCRIBE_PROMPT_PATH,
@@ -895,7 +899,7 @@ class MultimodalAnalyzer:
895
899
  tool_schema=_MEME_DESCRIBE_TOOL,
896
900
  tool_name="submit_meme_description",
897
901
  call_type="vision_meme_describe",
898
- max_tokens=512,
902
+ max_tokens=self._vision_config.max_tokens,
899
903
  )
900
904
  except Exception as exc:
901
905
  logger.exception("[媒体分析] 表情包描述失败: %s", exc)