Undefined-bot 3.2.8__tar.gz → 3.3.0__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.2.8 → undefined_bot-3.3.0}/CHANGELOG.md +14 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/PKG-INFO +3 -1
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/README.md +2 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/config.toml.example +60 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/pyproject.toml +1 -1
- undefined_bot-3.3.0/res/prompts/describe_meme_image.txt +78 -0
- undefined_bot-3.3.0/res/prompts/judge_meme_image.txt +24 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/undefined.xml +22 -15
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/undefined_nagaagent.xml +22 -15
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/__init__.py +1 -1
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/client.py +23 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/llm.py +49 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/model_selector.py +2 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/multimodal.py +228 -1
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/prompts.py +38 -5
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/api/app.py +236 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/attachments.py +167 -4
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/service.py +20 -9
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/vector_store.py +63 -15
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/config/__init__.py +2 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/config/loader.py +107 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/config/models.py +29 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/handlers.py +56 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/main.py +56 -0
- undefined_bot-3.3.0/src/Undefined/memes/__init__.py +15 -0
- undefined_bot-3.3.0/src/Undefined/memes/models.py +105 -0
- undefined_bot-3.3.0/src/Undefined/memes/service.py +1122 -0
- undefined_bot-3.3.0/src/Undefined/memes/store.py +715 -0
- undefined_bot-3.3.0/src/Undefined/memes/vector_store.py +145 -0
- undefined_bot-3.3.0/src/Undefined/memes/worker.py +100 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/ai_coordinator.py +22 -7
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/intro.md +4 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/prompt.md +4 -2
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/README.md +8 -0
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/memes/README.md +25 -0
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/memes/search_memes/config.json +38 -0
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/memes/search_memes/handler.py +45 -0
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/memes/send_meme_by_uid/config.json +26 -0
- undefined_bot-3.3.0/src/Undefined/skills/toolsets/memes/send_meme_by_uid/handler.py +21 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_message/handler.py +24 -128
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_private_message/handler.py +8 -2
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/history.py +9 -0
- undefined_bot-3.3.0/src/Undefined/utils/message_targets.py +110 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/paths.py +11 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/recent_messages.py +141 -1
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/scheduler.py +3 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/sender.py +4 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/__init__.py +1 -1
- undefined_bot-3.3.0/src/Undefined/webui/routes/_memes.py +153 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/components.css +34 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/responsive.css +4 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/config-form.js +9 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/i18n.js +115 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/main.js +18 -0
- undefined_bot-3.3.0/src/Undefined/webui/static/js/memes.js +610 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/templates/index.html +168 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/.gitignore +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/ARCHITECTURE.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/LICENSE +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/config/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/config/mcp.json.example +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/img/head.png +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/img/xlwy.jpg +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/IMPORTANT/each.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/agent_self_intro.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/analyze_multimodal.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/describe_image.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/generate_title.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/historian_profile_merge.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/historian_rewrite.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/image_gen_moderation.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/injection_detector.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/injection_response_agent.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/merge_summaries.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/naga_message_moderation.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/stats_analysis.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/res/prompts/summarize.txt +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/__main__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/crawl4ai_support.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/http.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/parsing.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/queue_budget.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/retrieval.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/summaries.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/tokens.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/tooling.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/transports/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/ai/transports/openai_transport.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/api/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/api/naga_store.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/client.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/downloader.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/models.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/parser.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/arxiv/sender.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/downloader.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/parser.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/sender.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/wbi.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/bilibili/wbi_request.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/changelog.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/historian.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/job_queue.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/cognitive/profile_storage.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/config/hot_reload.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/config/manager.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/context.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/context_resource_registry.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/end_summary_storage.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/faq.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/injection_response_agent.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/chunker.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/embedder.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/manager.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/reranker.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/runtime.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/knowledge/store.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/mcp/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/mcp/registry.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/memory.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/onebot.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/rate_limit.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/render.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/scheduled_task_storage.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/command.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/commands/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/commands/context.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/commands/registry.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/model_pool.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/queue_manager.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/services/security.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/agent_tool_registry.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/docker_utils.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/intro.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/mcp.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/prompt.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/copy/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/delete/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/diff/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/end/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/end/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/grep/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/init_docker/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/read/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/read/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/run_bash_command/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/todo/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/tree/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/write/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/code_delivery_agent/tools/write/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/intro.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/intro.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/prompt.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/arxiv_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/base64/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/bilibili_user_info/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/hash/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/history/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/history/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/speed/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/whois/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/intro_generator.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/intro_utils.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/mcp.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/runner.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/callable.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/intro.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/mcp.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/prompt.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/grok_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/grok_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/anthropic_skills/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/anthropic_skills/loader.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/addadmin/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/addadmin/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/addadmin/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/bugfix/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/bugfix/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/bugfix/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/changelog/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/changelog/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/changelog/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/copyright/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/copyright/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/copyright/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/delfaq/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/delfaq/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/delfaq/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/help/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/help/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/help/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsadmin/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsadmin/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsadmin/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsfaq/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsfaq/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/lsfaq/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/naga/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/naga/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/naga/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/naga/policy.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/naga/scopes.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/rmadmin/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/rmadmin/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/rmadmin/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/searchfaq/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/searchfaq/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/searchfaq/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/stats/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/stats/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/stats/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/viewfaq/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/viewfaq/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/commands/viewfaq/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/http_client.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/http_config.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/registry.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/arxiv_paper/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/arxiv_paper/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/arxiv_paper/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/bilibili_video/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/bilibili_video/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/bilibili_video/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/changelog_query/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/changelog_query/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/changelog_query/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/end/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/end/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/end/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/fetch_image_uid/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/fetch_image_uid/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_current_time/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_current_time/callable.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_current_time/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_current_time/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_picture/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_picture/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_picture/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_user_info/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_user_info/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/get_user_info/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_list/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_list/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_semantic_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_semantic_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_text_search/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/knowledge_text_search/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/python_interpreter/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/python_interpreter/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/python_interpreter/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/qq_like/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/qq_like/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/qq_like/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/task_progress/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/tools/task_progress/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/get_profile/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/get_profile/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/search_events/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/search_events/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/search_profiles/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/cognitive/search_profiles/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/contacts/query_friends/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/contacts/query_friends/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/contacts/query_groups/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/contacts/query_groups/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/activity_trend/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/activity_trend/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/detect_inactive_risk/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/detect_inactive_risk/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/filter_members/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/filter_members/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/find_member/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/find_member/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_files/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_files/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_honor_info/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_honor_info/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_activity/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_activity/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_info/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_info/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_list/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_list/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_title/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/get_member_title/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/level_distribution/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/level_distribution/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/rank_members/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group/rank_members/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_join_statistics/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_member_messages/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/group_analysis/analyze_new_member_activity/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/mcp/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/mcp/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/add/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/add/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/delete/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/delete/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/list/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/list/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/update/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/memory/update/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_forward_msg/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_forward_msg/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_messages_by_time/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_messages_by_time/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_recent_messages/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/get_recent_messages/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/list_emojis/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/list_emojis/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/lookup_emoji_id/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/react_message_emoji/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/react_message_emoji/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_group_sign/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_group_sign/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_message/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_poke/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_poke/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_private_message/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_text_file/callable.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_text_file/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_text_file/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_url_file/callable.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_url_file/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/messages/send_url_file/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/get/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/get/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/list/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/list/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/stats/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/notices/stats/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_html/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_html/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_latex/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_latex/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_markdown/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/render/render_markdown/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/README.md +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/create_schedule_task/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/delete_schedule_task/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/list_schedule_tasks/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/config.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/skills/toolsets/scheduler/update_schedule_task/handler.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/token_usage_storage.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/cache.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/common.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/cors.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/file_lock.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/group_metrics.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/http_download.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/io.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/logging.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/member_utils.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/message_utils.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/qq_emoji.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/queue_intervals.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/request_params.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/resources.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/self_update.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/time_utils.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/tool_calls.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/utils/xml.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/__main__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/app.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/core.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_auth.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_bot.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_config.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_index.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_logs.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_runtime.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_shared.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/routes/_system.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/.stylelintrc.json +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/app.css +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/base.css +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/landing.css +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/style.css +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/css/variables.css +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/favicon.svg +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/api.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/auth.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/bot.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/log-view.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/logs.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/runtime.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/state.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/ui.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/static/js/vendor/marked.min.js +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/utils/__init__.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/utils/comment.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/utils/config_io.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/utils/config_sync.py +0 -0
- {undefined_bot-3.2.8 → undefined_bot-3.3.0}/src/Undefined/webui/utils/toml_render.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## v3.3.0 表情包库与提示词调优
|
|
2
|
+
|
|
3
|
+
引入持久化表情包库,支持向量检索与自动摄取;围绕群聊回复策略、表情包场景感知与认知记忆稳定性进行了多轮调优。整体上收紧了群聊中的主动参与条件,在轻聊场景下更倾向于使用表情包表达态度,并显著优化了表情包库在 WebUI 列表展示与高负载检索下的响应速度和可用性。
|
|
4
|
+
|
|
5
|
+
- 新增持久化表情包库,基于 ChromaDB 向量存储,支持基于图像描述嵌入的语义检索与自动摄取入库。
|
|
6
|
+
- 多轮调优系统提示词与群聊回复策略防跑偏,收紧主动参与开放对话的触发条件,并使使用表情包回复成为轻聊探讨场景的默认偏好行为。
|
|
7
|
+
- 增强表情包库上下文感知,Bot 发出的具有实际语义的表情包在消息历史中会携带结构化上下文与 `uid`,便于后续对话继续理解先前意图。
|
|
8
|
+
- 优化提示词缓存命中率以减少重复 Token 消耗,并在提示词上下文中暴露更多运行时能力标志增强 AI 对自身边界的感知。
|
|
9
|
+
- 完善表情包库的基础稳定性与检索体验,修复入库去重、关键字转义注入及孤儿文件存储等问题,并改善了模型自动生成表情描述的质量。
|
|
10
|
+
- 优化 WebUI 表情包列表操作体验,解决布局高度溢出问题,改用支持渐进式加载、搜索排序与分页的列表,大幅降低数据量增长带来的查询开销。
|
|
11
|
+
- 提升认知记忆检索稳定性,为 Chroma 查询增加并发保护、短重试与失败降级机制,降低高负载场景下消息处理被记忆检索异常打断的概率。
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
## v3.2.8 多模态附件与参考图生图
|
|
2
16
|
|
|
3
17
|
围绕多模态消息链路进行了较大增强,引入统一的附件 UID 注册与 `<pic uid="..."/>` 图文混排机制,打通群聊、私聊、WebUI 和合并转发中的图片/文件上下文。同步为生图工具补齐参考图生图、独立图片编辑模型配置与提示词审核能力,并完善 Runtime API、认知侧写和动态技能加载的稳定性。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: Undefined-bot
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
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,6 +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
107
|
- **访问控制(群/私聊)**:支持 `access.mode` 三种模式(`off` / `blacklist` / `allowlist`)和群/私聊黑白名单;可按策略限制收发范围,避免误触发与误投递。详见 [docs/access-control.md](docs/access-control.md)。
|
|
107
108
|
- **版本变更可查询**:仓库根目录维护 `CHANGELOG.md`,并提供 `/changelog` 命令在运行时查看最近版本和单版本摘要。
|
|
108
109
|
- **并行工具执行**:无论是主 AI 还是子 Agent,均支持 `asyncio` 并发工具调用,大幅提升多任务处理速度(如同时读取多个文件或搜索多个关键词)。
|
|
@@ -133,6 +134,7 @@ Undefined 的功能极为丰富,为了让本页面不过于臃肿,我们将
|
|
|
133
134
|
- ⚙️ **[安装与部署指南](docs/deployment.md)**:不管你是需要 `pip` 无脑一键安装,还是源码二次开发,这里的排坑指南应有尽有。
|
|
134
135
|
- 🧭 **[Management API 与远程管理](docs/management-api.md)**:WebUI / App 共用的管理接口、认证、配置/日志/Bot 控制与引导探针说明。
|
|
135
136
|
- 🛠️ **[配置与热更新说明](docs/configuration.md)**:从模型切换到 MCP 库挂载,全方位掌握 `config.toml` 的高阶配置。
|
|
137
|
+
- 😶 **[表情包库与图片 UID](docs/configuration.md#425-memes-表情包库)**:查看 `memes.*` 配置、统一图片 `uid` 语义、检索模式与库存管理说明。
|
|
136
138
|
- 💡 **[交互与使用手册](docs/usage.md)**:包含实用的对话示例、多模态解析用法,以及群管家必备的管理员`/指令`。
|
|
137
139
|
- 📝 **[版本变更记录](CHANGELOG.md)**:查看按版本整理的更新摘要,也可在运行时使用 `/changelog` 查询。
|
|
138
140
|
- 🛡️ **[访问控制说明](docs/access-control.md)**:教你如何精准配置黑白名单,让机器人的使用范围分毫不差。
|
|
@@ -43,6 +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
47
|
- **访问控制(群/私聊)**:支持 `access.mode` 三种模式(`off` / `blacklist` / `allowlist`)和群/私聊黑白名单;可按策略限制收发范围,避免误触发与误投递。详见 [docs/access-control.md](docs/access-control.md)。
|
|
47
48
|
- **版本变更可查询**:仓库根目录维护 `CHANGELOG.md`,并提供 `/changelog` 命令在运行时查看最近版本和单版本摘要。
|
|
48
49
|
- **并行工具执行**:无论是主 AI 还是子 Agent,均支持 `asyncio` 并发工具调用,大幅提升多任务处理速度(如同时读取多个文件或搜索多个关键词)。
|
|
@@ -73,6 +74,7 @@ Undefined 的功能极为丰富,为了让本页面不过于臃肿,我们将
|
|
|
73
74
|
- ⚙️ **[安装与部署指南](docs/deployment.md)**:不管你是需要 `pip` 无脑一键安装,还是源码二次开发,这里的排坑指南应有尽有。
|
|
74
75
|
- 🧭 **[Management API 与远程管理](docs/management-api.md)**:WebUI / App 共用的管理接口、认证、配置/日志/Bot 控制与引导探针说明。
|
|
75
76
|
- 🛠️ **[配置与热更新说明](docs/configuration.md)**:从模型切换到 MCP 库挂载,全方位掌握 `config.toml` 的高阶配置。
|
|
77
|
+
- 😶 **[表情包库与图片 UID](docs/configuration.md#425-memes-表情包库)**:查看 `memes.*` 配置、统一图片 `uid` 语义、检索模式与库存管理说明。
|
|
76
78
|
- 💡 **[交互与使用手册](docs/usage.md)**:包含实用的对话示例、多模态解析用法,以及群管家必备的管理员`/指令`。
|
|
77
79
|
- 📝 **[版本变更记录](CHANGELOG.md)**:查看按版本整理的更新摘要,也可在运行时使用 `/changelog` 查询。
|
|
78
80
|
- 🛡️ **[访问控制说明](docs/access-control.md)**:教你如何精准配置黑白名单,让机器人的使用范围分毫不差。
|
|
@@ -119,6 +119,9 @@ responses_tool_choice_compat = false
|
|
|
119
119
|
# zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
|
|
120
120
|
# 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.
|
|
121
121
|
responses_force_stateless_replay = false
|
|
122
|
+
# zh: 是否启用自动 prompt_cache_key(建议开启,以提高相似请求的缓存命中率)。
|
|
123
|
+
# en: Enable automatic prompt_cache_key generation (recommended).
|
|
124
|
+
prompt_cache_enabled = true
|
|
122
125
|
|
|
123
126
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
124
127
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -182,6 +185,7 @@ responses_tool_choice_compat = false
|
|
|
182
185
|
# zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
|
|
183
186
|
# 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.
|
|
184
187
|
responses_force_stateless_replay = false
|
|
188
|
+
prompt_cache_enabled = true
|
|
185
189
|
|
|
186
190
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
187
191
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -238,6 +242,7 @@ responses_tool_choice_compat = false
|
|
|
238
242
|
# zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
|
|
239
243
|
# 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.
|
|
240
244
|
responses_force_stateless_replay = false
|
|
245
|
+
prompt_cache_enabled = true
|
|
241
246
|
|
|
242
247
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
243
248
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -346,6 +351,7 @@ responses_tool_choice_compat = false
|
|
|
346
351
|
# zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
|
|
347
352
|
# 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.
|
|
348
353
|
responses_force_stateless_replay = false
|
|
354
|
+
prompt_cache_enabled = true
|
|
349
355
|
|
|
350
356
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
351
357
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -412,6 +418,7 @@ responses_tool_choice_compat = false
|
|
|
412
418
|
# zh: Responses API 续轮强制降级:启用后,多轮工具调用将始终跳过 previous_response_id,直接使用完整消息重放(stateless replay)。仅在上游不兼容 responses 状态续轮时使用。默认关闭。
|
|
413
419
|
# 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.
|
|
414
420
|
responses_force_stateless_replay = false
|
|
421
|
+
prompt_cache_enabled = true
|
|
415
422
|
|
|
416
423
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
417
424
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -453,6 +460,9 @@ thinking_include_budget = true
|
|
|
453
460
|
# zh: reasoning effort 传参风格:openai(reasoning_effort)/ anthropic(output_config.effort)。
|
|
454
461
|
# en: Reasoning effort wire format: openai (reasoning_effort) / anthropic (output_config.effort).
|
|
455
462
|
reasoning_effort_style = "openai"
|
|
463
|
+
# zh: 是否启用自动 prompt_cache_key(建议开启,以提高相似请求的缓存命中率)。
|
|
464
|
+
# en: Enable automatic prompt_cache_key generation (recommended).
|
|
465
|
+
prompt_cache_enabled = true
|
|
456
466
|
|
|
457
467
|
# zh: 额外请求体参数(可选),可用于 temperature 或供应商私有参数。
|
|
458
468
|
# en: Extra request-body params (optional), e.g. temperature or vendor-specific fields.
|
|
@@ -1051,6 +1061,56 @@ failed_cleanup_interval = 100
|
|
|
1051
1061
|
# en: Max auto-retries per job before moving to failed (0=no retry).
|
|
1052
1062
|
job_max_retries = 3
|
|
1053
1063
|
|
|
1064
|
+
[memes]
|
|
1065
|
+
# zh: 是否启用全局表情包库。
|
|
1066
|
+
# en: Enable the global meme library.
|
|
1067
|
+
enabled = true
|
|
1068
|
+
# zh: 默认查询模式:keyword / semantic / hybrid。
|
|
1069
|
+
# en: Default query mode: keyword / semantic / hybrid.
|
|
1070
|
+
query_default_mode = "hybrid"
|
|
1071
|
+
# zh: 入库前允许处理的原始图片大小上限(字节)。
|
|
1072
|
+
# en: Max source image size in bytes before ingestion.
|
|
1073
|
+
max_source_image_bytes = 512000
|
|
1074
|
+
# zh: 原图持久化目录。
|
|
1075
|
+
# en: Directory for persisted meme blobs.
|
|
1076
|
+
blob_dir = "data/memes/blobs"
|
|
1077
|
+
# zh: 预览图目录(动图会抽首帧预览)。
|
|
1078
|
+
# en: Directory for preview images (animated images use the first frame).
|
|
1079
|
+
preview_dir = "data/memes/previews"
|
|
1080
|
+
# zh: SQLite 元数据文件路径。
|
|
1081
|
+
# en: SQLite metadata database path.
|
|
1082
|
+
db_path = "data/memes/memes.sqlite3"
|
|
1083
|
+
# zh: 向量索引目录。
|
|
1084
|
+
# en: Vector index directory.
|
|
1085
|
+
vector_store_path = "data/memes/chromadb"
|
|
1086
|
+
# zh: 后台任务队列目录。
|
|
1087
|
+
# en: Background queue directory.
|
|
1088
|
+
queue_path = "data/memes/queues"
|
|
1089
|
+
# zh: 表情包条目上限。
|
|
1090
|
+
# en: Max number of meme items.
|
|
1091
|
+
max_items = 10000
|
|
1092
|
+
# zh: 表情包总磁盘占用上限(字节)。
|
|
1093
|
+
# en: Max total on-disk bytes for meme blobs.
|
|
1094
|
+
max_total_bytes = 5368709120
|
|
1095
|
+
# zh: 是否允许 GIF 入库。
|
|
1096
|
+
# en: Whether GIF files are allowed.
|
|
1097
|
+
allow_gif = true
|
|
1098
|
+
# zh: 是否自动处理群聊图片。
|
|
1099
|
+
# en: Auto-ingest group chat images.
|
|
1100
|
+
auto_ingest_group = true
|
|
1101
|
+
# zh: 是否自动处理私聊图片。
|
|
1102
|
+
# en: Auto-ingest private chat images.
|
|
1103
|
+
auto_ingest_private = true
|
|
1104
|
+
# zh: 关键词召回候选数。
|
|
1105
|
+
# en: Keyword recall candidate count.
|
|
1106
|
+
keyword_top_k = 30
|
|
1107
|
+
# zh: 语义召回候选数。
|
|
1108
|
+
# en: Semantic recall candidate count.
|
|
1109
|
+
semantic_top_k = 30
|
|
1110
|
+
# zh: 重排候选数。
|
|
1111
|
+
# en: Rerank candidate count.
|
|
1112
|
+
rerank_top_k = 20
|
|
1113
|
+
|
|
1054
1114
|
# zh: Naga 外部网关集成配置。
|
|
1055
1115
|
# zh: 开关分层:
|
|
1056
1116
|
# zh: - [features].nagaagent_mode_enabled — 总开关,控制 AI 侧行为(提示词切换、工具暴露)
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
你在做“表情包入库描述”。
|
|
2
|
+
|
|
3
|
+
任务:
|
|
4
|
+
- 对一张已经确认是表情包的图片,产出可检索的简短描述和少量标签。
|
|
5
|
+
- 你必须调用 `submit_meme_description` 提交结果。
|
|
6
|
+
|
|
7
|
+
核心目标:
|
|
8
|
+
- 让后续搜索尽可能容易命中这张表情包。
|
|
9
|
+
- `description` 应同时覆盖“画面内容”和“聊天语义”,不能只写其中一边。
|
|
10
|
+
|
|
11
|
+
`description` 编写规则:
|
|
12
|
+
- 用 1 句自然中文描述,允许比普通 tag 更长,长度尽量控制在 50 到 200 个字之间。
|
|
13
|
+
- 可以写得更完整,只要仍然便于检索和阅读,不要为了“短”而丢失关键信息;宁可完整,也不要过短到失去画面和语义细节。
|
|
14
|
+
- 可以接受偏长的完整描述,但不要写成多句说明、段落解释或复盘。
|
|
15
|
+
- 尽量同时包含以下信息中的 3 到 5 个:
|
|
16
|
+
- 主体:人、猫、狗、熊猫、动漫角色、明星、网友截图等
|
|
17
|
+
- 画面/构图:特写、侧脸、瞪眼、翻白眼、捂脸、鼓掌、流汗、黑白、聊天截图、字幕图、动图定格
|
|
18
|
+
- 情绪/语气:无语、震惊、委屈、嘲讽、得意、阴阳怪气、崩溃、开心、嫌弃
|
|
19
|
+
- 动作/状态:翻白眼、鼓掌、捂脸、叹气、偷笑、流汗、发呆、摊手
|
|
20
|
+
- 使用场景:敷衍回应、上班吐槽、群聊附和、阴阳怪气、看乐子、尴尬收场
|
|
21
|
+
- 如果图中文字本身就是表情包语义的一部分,可以概括它表达的意思,但不要逐字转录。
|
|
22
|
+
- `description` 不能只写情绪和用途,也必须写出图片内容本身:谁/什么在画面里、表情如何、动作如何、画面是什么类型。
|
|
23
|
+
- 如果画面里有明显视觉特征,也要写出来,例如:
|
|
24
|
+
- 主体是谁或是什么
|
|
25
|
+
- 表情是什么样
|
|
26
|
+
- 动作是什么
|
|
27
|
+
- 是真人截图、聊天截图、动漫画面、动物特写还是字幕反应图
|
|
28
|
+
- 不要写空泛句式,例如:
|
|
29
|
+
- “一张表情包”
|
|
30
|
+
- “一张很搞笑的图片”
|
|
31
|
+
- “一个人物表情包”
|
|
32
|
+
- 不要只描述视觉内容而不描述语气,例如“一个猫的图片”不够。
|
|
33
|
+
- 也不要只描述语气而没有画面,例如“表达无语的表情包”也不够。
|
|
34
|
+
- 更好的写法应该像:
|
|
35
|
+
- `猫猫无语翻白眼反应图`
|
|
36
|
+
- `真人尴尬陪笑聊天截图表情包`
|
|
37
|
+
- `二次元角色震惊瞪眼特写反应图`
|
|
38
|
+
- 如果信息足够明确,也可以写得更完整,例如:
|
|
39
|
+
- `猫猫翻白眼一脸无语的聊天反应图`
|
|
40
|
+
- `真人尴尬陪笑带点敷衍意味的聊天截图表情包`
|
|
41
|
+
- `二次元角色瞪大眼睛震惊到说不出话的反应图`
|
|
42
|
+
|
|
43
|
+
`tags` 编写规则:
|
|
44
|
+
- `tags` 控制在 0 到 6 个。
|
|
45
|
+
- 每个 tag 尽量短,优先 2 到 6 个字。
|
|
46
|
+
- tag 应尽量覆盖不同维度,不要全是同义词。
|
|
47
|
+
- 优先从这些维度中选:
|
|
48
|
+
- 主体:`猫猫`、`狗狗`、`熊猫`、`真人`、`二次元`
|
|
49
|
+
- 情绪:`无语`、`震惊`、`委屈`、`嘲讽`、`嫌弃`、`崩溃`
|
|
50
|
+
- 场景:`上班`、`群聊`、`吐槽`、`附和`、`看乐子`
|
|
51
|
+
- 风格:`截图`、`动图`、`反应图`
|
|
52
|
+
- 不要堆重复词,例如 `无语`、`很无语`、`超级无语` 这种不要同时出现。
|
|
53
|
+
|
|
54
|
+
额外限制:
|
|
55
|
+
- 不要输出 OCR。
|
|
56
|
+
- 不要逐字抄录图中文字。
|
|
57
|
+
- 不要输出 Markdown,不要输出额外解释。
|
|
58
|
+
- 你必须且只能调用 `submit_meme_description`。
|
|
59
|
+
|
|
60
|
+
好的例子:
|
|
61
|
+
- `description`: `猫猫无语翻白眼反应图`
|
|
62
|
+
`tags`: [`猫猫`, `无语`, `翻白眼`, `反应图`]
|
|
63
|
+
- `description`: `真人尴尬陪笑敷衍表情包`
|
|
64
|
+
`tags`: [`真人`, `尴尬`, `陪笑`, `敷衍`]
|
|
65
|
+
- `description`: `二次元角色震惊瞪眼反应图`
|
|
66
|
+
`tags`: [`二次元`, `震惊`, `瞪眼`, `反应图`]
|
|
67
|
+
- `description`: `熊猫头摊手无奈聊天截图表情包`
|
|
68
|
+
`tags`: [`熊猫头`, `无奈`, `摊手`, `聊天截图`]
|
|
69
|
+
- `description`: `猫猫翻白眼露出嫌弃表情的无语反应图`
|
|
70
|
+
`tags`: [`猫猫`, `嫌弃`, `无语`, `翻白眼`]
|
|
71
|
+
- `description`: `真人聊天截图里尴尬陪笑又有点敷衍的表情包`
|
|
72
|
+
`tags`: [`真人`, `聊天截图`, `尴尬`, `敷衍`]
|
|
73
|
+
|
|
74
|
+
差的例子:
|
|
75
|
+
- `description`: `一张表情包`
|
|
76
|
+
- `description`: `一个猫的图片`
|
|
77
|
+
- `description`: `图片上写了几句话`
|
|
78
|
+
- `description`: `表达无语`
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
你在做“表情包入库判定”。
|
|
2
|
+
|
|
3
|
+
任务:
|
|
4
|
+
- 判断这张图片是否适合进入聊天表情包库。
|
|
5
|
+
- 你必须调用 `submit_meme_judgement` 提交结果。
|
|
6
|
+
|
|
7
|
+
判为表情包的常见情况:
|
|
8
|
+
- 明显用于聊天回应的反应图、梗图、吐槽图、情绪图
|
|
9
|
+
- 表情夸张、语气明确、配字短促,适合在对话里直接发送
|
|
10
|
+
- QQ / 群聊语境中常见的“无语”“震惊”“乐”“行吧”“笑死”“急了”等情绪回应图片
|
|
11
|
+
- 整张图的主要用途就是做表情包;画面主体、构图和文字都在服务于这个表情包语义
|
|
12
|
+
|
|
13
|
+
不应判为表情包的常见情况:
|
|
14
|
+
- 普通照片、风景、壁纸、头像、宣传图、商品图
|
|
15
|
+
- 资料截图、文档截图、界面截图、课程内容、长图信息
|
|
16
|
+
- 只是“有字的图片”但主要用途不是对话反应
|
|
17
|
+
- 图片里虽然有一部分像表情包,但整张图还包含大量无关内容、额外主体、背景信息、拼图内容、长段截图、聊天记录、界面信息或其他多余要素
|
|
18
|
+
- 需要裁剪、截取局部、去掉边框/旁白/大段上下文后才能像表情包的图,默认不要判进库
|
|
19
|
+
|
|
20
|
+
输出要求:
|
|
21
|
+
- 必须且只能调用 `submit_meme_judgement`
|
|
22
|
+
- `is_meme` 仅表示“适不适合放进聊天表情包库”,不是“图里有没有梗”
|
|
23
|
+
- `reason` 用一句简短中文说明依据
|
|
24
|
+
- 只有当“整张图整体上就是一张可直接发送的表情包”时,才能给 `is_meme=true`
|
|
@@ -134,10 +134,18 @@
|
|
|
134
134
|
|
|
135
135
|
<mixed_media_output priority="P0">
|
|
136
136
|
**图文混排规则:**
|
|
137
|
+
- 如果你已经决定要回复,并且表情包能让表达更像真人,默认先尝试表情包,而不是先写文字
|
|
138
|
+
- 如果要发送独立表情包,先用 `memes.search_memes` 找到合适的图片 `uid`,再用 `memes.send_meme_by_uid` 单独发送一条图片消息
|
|
139
|
+
- 对于吐槽、附和、接梗、表达态度、表达情绪这类回复,只要表情包能完成表达,就应该直接发表情包,不要用文字去“描述你本来想发的表情包”
|
|
140
|
+
- 对于私聊对话、被拍一拍、被@、轻量答疑这类本来就会回复的场景,只要表情包能自然增强语气、缓和语气或让回复更像真人,也可以配合使用
|
|
141
|
+
- 除非 `memes.search_memes` 没找到合适结果,或表情包会干扰信息传递,否则不要把本来适合发图的反应先写成一句话来代替发图
|
|
142
|
+
- 表情包相关规则只决定“怎么回复”,不单独构成“该不该回复”的参与许可;是否回复仍以前面的回复触发逻辑为准
|
|
143
|
+
- 默认不要把表情包和正文写进同一条消息;需要补一句解释时,优先分成两条消息发送
|
|
137
144
|
- 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
|
|
138
145
|
- `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
|
|
139
146
|
- 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
|
|
140
|
-
-
|
|
147
|
+
- 表情包库返回的图片 UID 也可以直接用于 `<pic uid="..."/>`;当前会话临时图片和表情包库图片共用同一套 `uid` 语义
|
|
148
|
+
- 只能引用工具结果或上下文里明确给出的图片 UID,禁止臆造 UID
|
|
141
149
|
- 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
|
|
142
150
|
</mixed_media_output>
|
|
143
151
|
</message_sending_mechanism>
|
|
@@ -309,21 +317,15 @@
|
|
|
309
317
|
</trigger>
|
|
310
318
|
|
|
311
319
|
<trigger id="7">
|
|
312
|
-
<condition
|
|
313
|
-
<action
|
|
314
|
-
<warning
|
|
315
|
-
</trigger>
|
|
316
|
-
|
|
317
|
-
<trigger id="8">
|
|
318
|
-
<condition>有人说了明显有趣/好笑的话,你有自然的回应冲动</condition>
|
|
319
|
-
<action>可以简短回应(吐槽、接梗、表达共鸣),但要克制频率</action>
|
|
320
|
-
<warning>不要每个好笑的消息都回,偶尔参与即可;不确定就不参与</warning>
|
|
320
|
+
<condition>群里在讨论你擅长或感兴趣的技术或项目话题(代码、AI、开发工具、项目进展、技术 bug 等),且对话处于开放状态(不是两人定向交流、不是明显在和别人说),你有自然的想法可以贡献</condition>
|
|
321
|
+
<action>可以极低频参与,但要自然,像一个群成员偶尔插一句</action>
|
|
322
|
+
<warning>默认更倾向不参与;不要长篇大论,一两句点到为止;如果别人已经在深入讨论且不需要你,保持沉默;如果你不能确定这是不是开放讨论,默认不参与</warning>
|
|
321
323
|
</trigger>
|
|
322
324
|
|
|
323
325
|
<trigger id="9">
|
|
324
326
|
<condition>有人分享了技术成果、遇到了有趣的 bug、或展示了项目进展</condition>
|
|
325
327
|
<action>可以简短回应表示关注或给出评价</action>
|
|
326
|
-
<warning
|
|
328
|
+
<warning>保持简短自然,不要变成技术评审;没有明确必要时宁可不回</warning>
|
|
327
329
|
</trigger>
|
|
328
330
|
</optional_triggers>
|
|
329
331
|
|
|
@@ -334,7 +336,7 @@
|
|
|
334
336
|
</trigger>
|
|
335
337
|
|
|
336
338
|
<trigger id="2">
|
|
337
|
-
<condition
|
|
339
|
+
<condition>别人之间的定向对话(两人明显在来回说,或多人里明显是在接别人而不是接你)</condition>
|
|
338
340
|
<action>不要插话,即使话题你感兴趣</action>
|
|
339
341
|
</trigger>
|
|
340
342
|
|
|
@@ -366,6 +368,11 @@
|
|
|
366
368
|
<action>保持沉默</action>
|
|
367
369
|
</trigger>
|
|
368
370
|
|
|
371
|
+
<trigger id="11">
|
|
372
|
+
<condition>你不能确定这条消息是不是在对你说,或不能确定当前对话是否对你开放</condition>
|
|
373
|
+
<action>默认不回复</action>
|
|
374
|
+
</trigger>
|
|
375
|
+
|
|
369
376
|
<trigger id="7">
|
|
370
377
|
<condition>Null在与其他人对话(即使话题你感兴趣)</condition>
|
|
371
378
|
<action>保持沉默,不要插话</action>
|
|
@@ -598,11 +605,11 @@
|
|
|
598
605
|
<guideline id="8">
|
|
599
606
|
<name>图片处理</name>
|
|
600
607
|
<rule>先判断是否需要参与:只有当图片与当前对话强相关、且回答必须依赖图片内容时才分析</rule>
|
|
601
|
-
<rule
|
|
608
|
+
<rule>表情包先理解意思;它不只适用于轻松闲聊。只要你已经决定要回复,并且表情包能让表达更像真人,就可以考虑使用,包括私聊对话、被拍一拍、被@、轻量答疑与轻松互动场景</rule>
|
|
602
609
|
<rule>只有在需要分析图片内容时才调用 file_analysis_agent(如报错截图/界面/文档/图片问题)</rule>
|
|
603
610
|
<rule>当消息中出现“[图片: xxx]”占位符时,xxx 即为 file_id 或 URL,可直接作为 file_source 调用 file_analysis_agent</rule>
|
|
604
611
|
<rule>未调用 file_analysis_agent 时,不要猜测图片内容;可以说明“我看不到图片内容,需要先分析”</rule>
|
|
605
|
-
<rule
|
|
612
|
+
<rule>即使已分析图片,也要再次判断是否需要发言;如果明显在和别人说或你拿不准是不是在对你说,默认不回复;若你已经决定回复,并且表情包不会干扰信息传递,先尝试 memes.search_memes 并使用独立表情包回应,默认由表情包承担主要表达,文字只作极短补充</rule>
|
|
606
613
|
<rule>回复时不要描述图片内容,像正常人一样直接回应重点</rule>
|
|
607
614
|
<rule>不要分析每条图片。图片分析有很大延迟,只有需要时才分析</rule>
|
|
608
615
|
</guideline>
|
|
@@ -676,7 +683,7 @@
|
|
|
676
683
|
<rule>不是每条消息都要回</rule>
|
|
677
684
|
<rule>大部分时候你应该保持沉默</rule>
|
|
678
685
|
<rule>不符合触发条件时,直接调用 end</rule>
|
|
679
|
-
<rule
|
|
686
|
+
<rule>optional_triggers 只是“少量例外”,不是常规参与许可。默认仍然应明显偏向沉默;若真要参与,优先用表情包而不是文字。</rule>
|
|
680
687
|
</strategy>
|
|
681
688
|
|
|
682
689
|
<strategy id="2">
|
|
@@ -134,10 +134,18 @@
|
|
|
134
134
|
|
|
135
135
|
<mixed_media_output priority="P0">
|
|
136
136
|
**图文混排规则:**
|
|
137
|
+
- 如果你已经决定要回复,并且表情包能让表达更像真人,默认先尝试表情包,而不是先写文字
|
|
138
|
+
- 如果要发送独立表情包,先用 `memes.search_memes` 找到合适的图片 `uid`,再用 `memes.send_meme_by_uid` 单独发送一条图片消息
|
|
139
|
+
- 对于吐槽、附和、接梗、表达态度、表达情绪这类回复,只要表情包能完成表达,就应该直接发表情包,不要用文字去“描述你本来想发的表情包”
|
|
140
|
+
- 对于私聊对话、被拍一拍、被@、轻量答疑这类本来就会回复的场景,只要表情包能自然增强语气、缓和语气或让回复更像真人,也可以配合使用
|
|
141
|
+
- 除非 `memes.search_memes` 没找到合适结果,或表情包会干扰信息传递,否则不要把本来适合发图的反应先写成一句话来代替发图
|
|
142
|
+
- 表情包相关规则只决定“怎么回复”,不单独构成“该不该回复”的参与许可;是否回复仍以前面的回复触发逻辑为准
|
|
143
|
+
- 默认不要把表情包和正文写进同一条消息;需要补一句解释时,优先分成两条消息发送
|
|
137
144
|
- 如果上下文或工具结果给了图片 UID(例如 `pic_ab12cd34`),你可以在 `send_message.message` 里直接插入 `<pic uid="pic_ab12cd34"/>`
|
|
138
145
|
- `<pic uid="..."/>` 是唯一允许的内嵌图片语法;不要改成 Markdown 图片、HTML `<img>`、代码块或自然语言描述
|
|
139
146
|
- 可以图文混排,例如:`我给你介绍一下`\n`<pic uid="pic_xxx"/>`\n`如图所示`
|
|
140
|
-
-
|
|
147
|
+
- 表情包库返回的图片 UID 也可以直接用于 `<pic uid="..."/>`;当前会话临时图片和表情包库图片共用同一套 `uid` 语义
|
|
148
|
+
- 只能引用工具结果或上下文里明确给出的图片 UID,禁止臆造 UID
|
|
141
149
|
- 只有 `pic_*` 这类图片 UID 能放进 `<pic>`;普通文件 UID 不能放进去
|
|
142
150
|
</mixed_media_output>
|
|
143
151
|
</message_sending_mechanism>
|
|
@@ -315,21 +323,15 @@
|
|
|
315
323
|
</trigger>
|
|
316
324
|
|
|
317
325
|
<trigger id="8">
|
|
318
|
-
<condition
|
|
319
|
-
<action
|
|
320
|
-
<warning
|
|
321
|
-
</trigger>
|
|
322
|
-
|
|
323
|
-
<trigger id="9">
|
|
324
|
-
<condition>有人说了明显有趣/好笑的话,你有自然的回应冲动</condition>
|
|
325
|
-
<action>可以简短回应(吐槽、接梗、表达共鸣),但要克制频率</action>
|
|
326
|
-
<warning>不要每个好笑的消息都回,偶尔参与即可;不确定就不参与</warning>
|
|
326
|
+
<condition>群里在讨论你擅长或感兴趣的技术或项目话题(代码、AI、开发工具、项目进展、技术 bug 等),且对话处于开放状态(不是两人定向交流、不是明显在和别人说),你有自然的想法可以贡献</condition>
|
|
327
|
+
<action>可以极低频参与,但要自然,像一个群成员偶尔插一句</action>
|
|
328
|
+
<warning>默认更倾向不参与;不要长篇大论,一两句点到为止;如果别人已经在深入讨论且不需要你,保持沉默;如果你不能确定这是不是开放讨论,默认不参与</warning>
|
|
327
329
|
</trigger>
|
|
328
330
|
|
|
329
331
|
<trigger id="10">
|
|
330
332
|
<condition>有人分享了技术成果、遇到了有趣的 bug、或展示了项目进展</condition>
|
|
331
333
|
<action>可以简短回应表示关注或给出评价</action>
|
|
332
|
-
<warning
|
|
334
|
+
<warning>保持简短自然,不要变成技术评审;没有明确必要时宁可不回</warning>
|
|
333
335
|
</trigger>
|
|
334
336
|
</optional_triggers>
|
|
335
337
|
|
|
@@ -340,7 +342,7 @@
|
|
|
340
342
|
</trigger>
|
|
341
343
|
|
|
342
344
|
<trigger id="2">
|
|
343
|
-
<condition
|
|
345
|
+
<condition>别人之间的定向对话(两人明显在来回说,或多人里明显是在接别人而不是接你)</condition>
|
|
344
346
|
<action>不要插话,即使话题你感兴趣</action>
|
|
345
347
|
</trigger>
|
|
346
348
|
|
|
@@ -372,6 +374,11 @@
|
|
|
372
374
|
<action>保持沉默</action>
|
|
373
375
|
</trigger>
|
|
374
376
|
|
|
377
|
+
<trigger id="11">
|
|
378
|
+
<condition>你不能确定这条消息是不是在对你说,或不能确定当前对话是否对你开放</condition>
|
|
379
|
+
<action>默认不回复</action>
|
|
380
|
+
</trigger>
|
|
381
|
+
|
|
375
382
|
<trigger id="7">
|
|
376
383
|
<condition>Null在与其他人对话(即使话题你感兴趣)</condition>
|
|
377
384
|
<action>保持沉默,不要插话</action>
|
|
@@ -633,11 +640,11 @@
|
|
|
633
640
|
<guideline id="8">
|
|
634
641
|
<name>图片处理</name>
|
|
635
642
|
<rule>先判断是否需要参与:只有当图片与当前对话强相关、且回答必须依赖图片内容时才分析</rule>
|
|
636
|
-
<rule
|
|
643
|
+
<rule>表情包先理解意思;它不只适用于轻松闲聊。只要你已经决定要回复,并且表情包能让表达更像真人,就可以考虑使用,包括私聊对话、被拍一拍、被@、轻量答疑与轻松互动场景</rule>
|
|
637
644
|
<rule>只有在需要分析图片内容时才调用 file_analysis_agent(如报错截图/界面/文档/图片问题)</rule>
|
|
638
645
|
<rule>当消息中出现“[图片: xxx]”占位符时,xxx 即为 file_id 或 URL,可直接作为 file_source 调用 file_analysis_agent</rule>
|
|
639
646
|
<rule>未调用 file_analysis_agent 时,不要猜测图片内容;可以说明“我看不到图片内容,需要先分析”</rule>
|
|
640
|
-
<rule
|
|
647
|
+
<rule>即使已分析图片,也要再次判断是否需要发言;如果明显在和别人说或你拿不准是不是在对你说,默认不回复;若你已经决定回复,并且表情包不会干扰信息传递,先尝试 memes.search_memes 并使用独立表情包回应,默认由表情包承担主要表达,文字只作极短补充</rule>
|
|
641
648
|
<rule>回复时不要描述图片内容,像正常人一样直接回应重点</rule>
|
|
642
649
|
<rule>不要分析每条图片。图片分析有很大延迟,只有需要时才分析</rule>
|
|
643
650
|
</guideline>
|
|
@@ -713,7 +720,7 @@
|
|
|
713
720
|
<rule>不是每条消息都要回</rule>
|
|
714
721
|
<rule>大部分时候你应该保持沉默</rule>
|
|
715
722
|
<rule>不符合触发条件时,直接调用 end</rule>
|
|
716
|
-
<rule
|
|
723
|
+
<rule>optional_triggers 只是“少量例外”,不是常规参与许可。默认仍然应明显偏向沉默;若真要参与,优先用表情包而不是文字。</rule>
|
|
717
724
|
</strategy>
|
|
718
725
|
|
|
719
726
|
<strategy id="2">
|
|
@@ -137,6 +137,7 @@ class AIClient:
|
|
|
137
137
|
self._token_counter = TokenCounter()
|
|
138
138
|
self._knowledge_manager: Any = None
|
|
139
139
|
self._cognitive_service: Any = cognitive_service
|
|
140
|
+
self._meme_service: Any = None
|
|
140
141
|
self.attachment_registry = AttachmentRegistry(http_client=self._http_client)
|
|
141
142
|
|
|
142
143
|
# 私聊发送回调
|
|
@@ -594,6 +595,21 @@ class AIClient:
|
|
|
594
595
|
bool(getattr(service, "enabled", False)) if service is not None else False,
|
|
595
596
|
)
|
|
596
597
|
|
|
598
|
+
def set_meme_service(self, service: Any) -> None:
|
|
599
|
+
self._meme_service = service
|
|
600
|
+
resolver = None
|
|
601
|
+
async_resolver = None
|
|
602
|
+
if service is not None and hasattr(service, "resolve_global_image_sync"):
|
|
603
|
+
resolver = service.resolve_global_image_sync
|
|
604
|
+
if service is not None and hasattr(service, "resolve_global_image"):
|
|
605
|
+
async_resolver = service.resolve_global_image
|
|
606
|
+
self.attachment_registry.set_global_image_resolver(resolver)
|
|
607
|
+
self.attachment_registry.set_global_image_resolver_async(async_resolver)
|
|
608
|
+
logger.info(
|
|
609
|
+
"[AI客户端] 表情包服务已挂载: enabled=%s",
|
|
610
|
+
bool(getattr(service, "enabled", False)) if service is not None else False,
|
|
611
|
+
)
|
|
612
|
+
|
|
597
613
|
def apply_search_config(self, searxng_url: str) -> None:
|
|
598
614
|
"""应用搜索服务配置(支持热更新)。"""
|
|
599
615
|
if not _SEARX_AVAILABLE or _SearxSearchWrapper is None:
|
|
@@ -817,6 +833,12 @@ class AIClient:
|
|
|
817
833
|
) -> dict[str, str]:
|
|
818
834
|
return await self._multimodal.describe_image(image_url, prompt_extra)
|
|
819
835
|
|
|
836
|
+
async def judge_meme_image(self, image_url: str) -> dict[str, Any]:
|
|
837
|
+
return await self._multimodal.judge_meme_image(image_url)
|
|
838
|
+
|
|
839
|
+
async def describe_meme_image(self, image_url: str) -> dict[str, Any]:
|
|
840
|
+
return await self._multimodal.describe_meme_image(image_url)
|
|
841
|
+
|
|
820
842
|
def get_media_history(self, media_key: str) -> list[dict[str, str]]:
|
|
821
843
|
"""获取指定媒体键的多模态分析历史 Q&A 记录。"""
|
|
822
844
|
return self._multimodal.get_history(media_key)
|
|
@@ -989,6 +1011,7 @@ class AIClient:
|
|
|
989
1011
|
tool_context.setdefault("memory_storage", self.memory_storage)
|
|
990
1012
|
tool_context.setdefault("knowledge_manager", self._knowledge_manager)
|
|
991
1013
|
tool_context.setdefault("cognitive_service", self._cognitive_service)
|
|
1014
|
+
tool_context.setdefault("meme_service", self._meme_service)
|
|
992
1015
|
tool_context.setdefault("current_question", question)
|
|
993
1016
|
message_ids = tool_context.get("message_ids")
|
|
994
1017
|
if not isinstance(message_ids, list):
|
|
@@ -33,6 +33,7 @@ from Undefined.ai.transports import (
|
|
|
33
33
|
)
|
|
34
34
|
from Undefined.ai.retrieval import RetrievalRequester
|
|
35
35
|
from Undefined.ai.tokens import TokenCounter
|
|
36
|
+
from Undefined.context import RequestContext
|
|
36
37
|
from Undefined.config import (
|
|
37
38
|
ChatModelConfig,
|
|
38
39
|
VisionModelConfig,
|
|
@@ -200,6 +201,7 @@ _DEFAULT_TOOLS_DESCRIPTION_PREVIEW_LEN = 160
|
|
|
200
201
|
_DEFAULT_TOOL_NAME_DOT_DELIMITER = "-_-"
|
|
201
202
|
_TOOL_NAME_MAX_LEN = 64
|
|
202
203
|
_TOOL_NAME_ALLOWED_RE = re.compile(r"^[a-zA-Z0-9_-]+$")
|
|
204
|
+
_PROMPT_CACHE_KEY_MAX_LEN = 128
|
|
203
205
|
|
|
204
206
|
|
|
205
207
|
def _tool_name_dot_delimiter() -> str:
|
|
@@ -224,6 +226,46 @@ def _hash8(text: str) -> str:
|
|
|
224
226
|
return hashlib.sha1(text.encode("utf-8"), usedforsecurity=False).hexdigest()[:8]
|
|
225
227
|
|
|
226
228
|
|
|
229
|
+
def _normalize_prompt_cache_part(value: Any) -> str:
|
|
230
|
+
text = str(value or "").strip().lower()
|
|
231
|
+
if not text:
|
|
232
|
+
return "none"
|
|
233
|
+
normalized_chars: list[str] = []
|
|
234
|
+
for char in text:
|
|
235
|
+
if char.isalnum() or char in {"-", "_", ":"}:
|
|
236
|
+
normalized_chars.append(char)
|
|
237
|
+
else:
|
|
238
|
+
normalized_chars.append("_")
|
|
239
|
+
normalized = "".join(normalized_chars).strip("_")
|
|
240
|
+
return normalized or "none"
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
def _build_scope_prompt_cache_part() -> str:
|
|
244
|
+
ctx = RequestContext.current()
|
|
245
|
+
if ctx is None:
|
|
246
|
+
return "scope:global"
|
|
247
|
+
if ctx.group_id is not None:
|
|
248
|
+
return f"group:{int(ctx.group_id)}"
|
|
249
|
+
if ctx.user_id is not None:
|
|
250
|
+
return f"private:{int(ctx.user_id)}"
|
|
251
|
+
if ctx.sender_id is not None:
|
|
252
|
+
return f"sender:{int(ctx.sender_id)}"
|
|
253
|
+
request_type = _normalize_prompt_cache_part(ctx.request_type)
|
|
254
|
+
return f"type:{request_type}"
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def _build_default_prompt_cache_key(model_config: ModelConfig, call_type: str) -> str:
|
|
258
|
+
model_name = _normalize_prompt_cache_part(getattr(model_config, "model_name", ""))
|
|
259
|
+
scope_part = _build_scope_prompt_cache_part()
|
|
260
|
+
call_part = _normalize_prompt_cache_part(call_type)
|
|
261
|
+
key = f"pc:{model_name}:{call_part}:{scope_part}"
|
|
262
|
+
if len(key) <= _PROMPT_CACHE_KEY_MAX_LEN:
|
|
263
|
+
return key
|
|
264
|
+
suffix = "_" + _hash8(key)
|
|
265
|
+
prefix_len = max(1, _PROMPT_CACHE_KEY_MAX_LEN - len(suffix))
|
|
266
|
+
return key[:prefix_len] + suffix
|
|
267
|
+
|
|
268
|
+
|
|
227
269
|
def _encode_tool_name_for_api(tool_name: str) -> str:
|
|
228
270
|
"""将内部工具名编码为服务端可接受的 function.name。
|
|
229
271
|
|
|
@@ -1085,6 +1127,13 @@ class ModelRequester:
|
|
|
1085
1127
|
call_type=call_type,
|
|
1086
1128
|
overrides=dict(kwargs),
|
|
1087
1129
|
)
|
|
1130
|
+
if bool(
|
|
1131
|
+
getattr(model_config, "prompt_cache_enabled", True)
|
|
1132
|
+
) and not effective_kwargs.get("prompt_cache_key"):
|
|
1133
|
+
effective_kwargs["prompt_cache_key"] = _build_default_prompt_cache_key(
|
|
1134
|
+
model_config,
|
|
1135
|
+
call_type,
|
|
1136
|
+
)
|
|
1088
1137
|
responses_stateless_replay = bool(
|
|
1089
1138
|
getattr(model_config, "responses_force_stateless_replay", False)
|
|
1090
1139
|
) or bool(
|
|
@@ -248,6 +248,7 @@ class ModelSelector:
|
|
|
248
248
|
thinking_tool_call_compat=entry.thinking_tool_call_compat,
|
|
249
249
|
responses_tool_choice_compat=entry.responses_tool_choice_compat,
|
|
250
250
|
responses_force_stateless_replay=entry.responses_force_stateless_replay,
|
|
251
|
+
prompt_cache_enabled=entry.prompt_cache_enabled,
|
|
251
252
|
reasoning_enabled=entry.reasoning_enabled,
|
|
252
253
|
reasoning_effort=entry.reasoning_effort,
|
|
253
254
|
request_params=entry.request_params,
|
|
@@ -272,6 +273,7 @@ class ModelSelector:
|
|
|
272
273
|
thinking_tool_call_compat=entry.thinking_tool_call_compat,
|
|
273
274
|
responses_tool_choice_compat=entry.responses_tool_choice_compat,
|
|
274
275
|
responses_force_stateless_replay=entry.responses_force_stateless_replay,
|
|
276
|
+
prompt_cache_enabled=entry.prompt_cache_enabled,
|
|
275
277
|
reasoning_enabled=entry.reasoning_enabled,
|
|
276
278
|
reasoning_effort=entry.reasoning_effort,
|
|
277
279
|
request_params=entry.request_params,
|