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.
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/ARCHITECTURE.md +11 -5
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/CHANGELOG.md +26 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/PKG-INFO +4 -3
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/README.md +3 -2
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config.toml.example +98 -5
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/pyproject.toml +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/describe_meme_image.txt +1 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/historian_rewrite.md +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/judge_meme_image.txt +1 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/undefined.xml +9 -5
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/undefined_nagaagent.xml +23 -8
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/README.md +1 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/__init__.py +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/multimodal.py +29 -25
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/prompts.py +78 -76
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/retrieval.py +7 -12
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/api/__init__.py +2 -1
- undefined_bot-3.3.2/src/Undefined/api/_context.py +22 -0
- undefined_bot-3.3.2/src/Undefined/api/_helpers.py +333 -0
- undefined_bot-3.3.2/src/Undefined/api/_naga_state.py +115 -0
- undefined_bot-3.3.2/src/Undefined/api/_openapi.py +183 -0
- undefined_bot-3.3.2/src/Undefined/api/_probes.py +147 -0
- undefined_bot-3.3.2/src/Undefined/api/app.py +333 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/__init__.py +1 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/chat.py +359 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/cognitive.py +86 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/health.py +23 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/memes.py +222 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/memory.py +156 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/naga.py +897 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/system.py +228 -0
- undefined_bot-3.3.2/src/Undefined/api/routes/tools.py +462 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/sender.py +48 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/attachments.py +187 -45
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/historian.py +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/service.py +8 -15
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/vector_store.py +13 -21
- undefined_bot-3.3.2/src/Undefined/config/admin.py +44 -0
- undefined_bot-3.3.2/src/Undefined/config/coercers.py +150 -0
- undefined_bot-3.3.2/src/Undefined/config/domain_parsers.py +286 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/hot_reload.py +4 -0
- undefined_bot-3.3.2/src/Undefined/config/loader.py +1608 -0
- undefined_bot-3.3.2/src/Undefined/config/model_parsers.py +1258 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/models.py +3 -0
- undefined_bot-3.3.2/src/Undefined/config/resolvers.py +106 -0
- undefined_bot-3.3.2/src/Undefined/config/webui_settings.py +61 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/handlers.py +265 -49
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/service.py +171 -18
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/render.py +11 -2
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/ai_coordinator.py +17 -3
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/command.py +5 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/context.py +2 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/README.md +4 -3
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/callable.json +4 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/config.json +21 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/handler.py +48 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/intro.md +1 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/prompt.md +28 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/__init__.py +0 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/fetch_paper/config.json +17 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/fetch_paper/handler.py +75 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/read_paper_pages/config.json +21 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent/tools/read_paper_pages/handler.py +68 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/runner.py +16 -8
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/__init__.py +1 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/config.json +28 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/handler.py +81 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/intro.md +30 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/prompt.md +49 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/__init__.py +1 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/config.json +20 -0
- undefined_bot-3.3.2/src/Undefined/skills/agents/summary_agent/tools/fetch_messages/handler.py +133 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/callable.json +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/config.json +1 -1
- undefined_bot-3.3.2/src/Undefined/skills/commands/profile/config.json +16 -0
- undefined_bot-3.3.2/src/Undefined/skills/commands/profile/handler.py +251 -0
- undefined_bot-3.3.2/src/Undefined/skills/commands/summary/config.json +16 -0
- undefined_bot-3.3.2/src/Undefined/skills/commands/summary/handler.py +109 -0
- undefined_bot-3.3.2/src/Undefined/skills/commands/version/config.json +12 -0
- undefined_bot-3.3.2/src/Undefined/skills/commands/version/handler.py +32 -0
- undefined_bot-3.3.2/src/Undefined/skills/tools/calculator/config.json +17 -0
- undefined_bot-3.3.2/src/Undefined/skills/tools/calculator/handler.py +268 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/handler.py +33 -41
- undefined_bot-3.3.2/src/Undefined/skills/tools/get_current_time/callable.json +4 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/README.md +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/config.json +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/handler.py +3 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/config.json +2 -2
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/handler.py +5 -2
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/config.json +1 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/handler.py +3 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +31 -6
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +29 -6
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_message/handler.py +7 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +7 -0
- undefined_bot-3.3.2/src/Undefined/skills/toolsets/render/render_latex/config.json +22 -0
- undefined_bot-3.3.2/src/Undefined/skills/toolsets/render/render_latex/handler.py +241 -0
- undefined_bot-3.3.2/src/Undefined/utils/__init__.py +0 -0
- undefined_bot-3.3.2/src/Undefined/utils/coerce.py +37 -0
- undefined_bot-3.3.2/src/Undefined/utils/fake_at.py +180 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/history.py +28 -16
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/queue_intervals.py +9 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/recent_messages.py +7 -2
- undefined_bot-3.3.2/src/Undefined/utils/xml.py +93 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_config.py +73 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_runtime.py +45 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/components.css +83 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/api.js +36 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/bot.js +123 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/config-form.js +1 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/i18n.js +40 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/log-view.js +24 -1
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/main.js +322 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/memes.js +38 -9
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/runtime.js +155 -3
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/state.js +2 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/ui.js +40 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/templates/index.html +46 -5
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/config_sync.py +21 -3
- undefined_bot-3.3.0/src/Undefined/api/app.py +0 -2985
- undefined_bot-3.3.0/src/Undefined/config/loader.py +0 -3140
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -31
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -138
- undefined_bot-3.3.0/src/Undefined/utils/xml.py +0 -14
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/.gitignore +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/LICENSE +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/config/mcp.json.example +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/img/head.png +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/img/xlwy.jpg +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/IMPORTANT/each.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/agent_self_intro.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/analyze_multimodal.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/describe_image.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/generate_title.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/historian_profile_merge.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/image_gen_moderation.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/injection_detector.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/injection_response_agent.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/merge_summaries.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/naga_message_moderation.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/stats_analysis.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/res/prompts/summarize.txt +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/__main__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/client.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/crawl4ai_support.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/http.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/llm.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/model_selector.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/parsing.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/queue_budget.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/summaries.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/tokens.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/tooling.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/transports/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/ai/transports/openai_transport.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/api/naga_store.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/client.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/downloader.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/models.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/arxiv/parser.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/downloader.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/parser.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/sender.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/wbi.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/bilibili/wbi_request.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/changelog.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/job_queue.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/cognitive/profile_storage.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/config/manager.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/context.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/context_resource_registry.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/end_summary_storage.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/faq.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/injection_response_agent.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/chunker.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/embedder.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/manager.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/reranker.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/runtime.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/knowledge/store.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/main.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/mcp/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/mcp/registry.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/models.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/store.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/vector_store.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memes/worker.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/memory.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/onebot.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/rate_limit.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/scheduled_task_storage.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/commands/registry.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/model_pool.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/queue_manager.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/services/security.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
- {undefined_bot-3.3.0/src/Undefined/utils → undefined_bot-3.3.2/src/Undefined/skills/agents/arxiv_analysis_agent}/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
- {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
- {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
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
- {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
- {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
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
- {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
- {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
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/intro_generator.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/intro_utils.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/addadmin/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/changelog/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/copyright/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/delfaq/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/help/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsadmin/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/lsfaq/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/policy.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/naga/scopes.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/rmadmin/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/searchfaq/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/stats/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/commands/viewfaq/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/http_client.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/http_config.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/registry.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
- {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
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/end/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/task_progress/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/activity_trend/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/activity_trend/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/detect_inactive_risk/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/detect_inactive_risk/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/filter_members/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/filter_members/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_activity/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_activity/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/level_distribution/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/level_distribution/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/rank_members/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/group/rank_members/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/search_memes/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/search_memes/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_html/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/token_usage_storage.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/cache.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/common.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/cors.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/file_lock.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/group_metrics.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/http_download.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/io.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/logging.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/member_utils.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/message_targets.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/message_utils.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/paths.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/qq_emoji.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/request_params.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/resources.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/scheduler.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/self_update.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/sender.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/time_utils.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/utils/tool_calls.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/__main__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/app.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/core.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_auth.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_bot.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_index.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_logs.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_memes.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_shared.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/routes/_system.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/app.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/base.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/landing.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/responsive.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/style.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/css/variables.css +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/favicon.svg +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/auth.js +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/logs.js +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/__init__.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/comment.py +0 -0
- {undefined_bot-3.3.0 → undefined_bot-3.3.2}/src/Undefined/webui/utils/config_io.py +0 -0
- {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/,
|
|
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、
|
|
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 (复合工具集)**:
|
|
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.
|
|
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
|
-
- 😶 **[
|
|
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
|
-
- 😶 **[
|
|
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:
|
|
714
|
-
# en:
|
|
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
|
|
@@ -141,12 +141,16 @@
|
|
|
141
141
|
- 除非 `memes.search_memes` 没找到合适结果,或表情包会干扰信息传递,否则不要把本来适合发图的反应先写成一句话来代替发图
|
|
142
142
|
- 表情包相关规则只决定“怎么回复”,不单独构成“该不该回复”的参与许可;是否回复仍以前面的回复触发逻辑为准
|
|
143
143
|
- 默认不要把表情包和正文写进同一条消息;需要补一句解释时,优先分成两条消息发送
|
|
144
|
-
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
-
|
|
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
|
-
-
|
|
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
|
|
305
|
-
<warning>如果只是泛泛提到naga
|
|
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
|
|
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>
|
|
@@ -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":
|
|
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: 媒体内容(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
|
-
|
|
627
|
-
|
|
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=
|
|
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
|
-
|
|
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(
|
|
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=
|
|
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":
|
|
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
|
-
|
|
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(
|
|
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=
|
|
902
|
+
max_tokens=self._vision_config.max_tokens,
|
|
899
903
|
)
|
|
900
904
|
except Exception as exc:
|
|
901
905
|
logger.exception("[媒体分析] 表情包描述失败: %s", exc)
|