Undefined-bot 2.1.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.
Files changed (233) hide show
  1. undefined_bot-2.1.0/.env.example +75 -0
  2. undefined_bot-2.1.0/.github/release.yml +32 -0
  3. undefined_bot-2.1.0/.github/workflows/release.yml +95 -0
  4. undefined_bot-2.1.0/.gitignore +46 -0
  5. undefined_bot-2.1.0/.gitmodules +3 -0
  6. undefined_bot-2.1.0/LICENSE +7 -0
  7. undefined_bot-2.1.0/PKG-INFO +259 -0
  8. undefined_bot-2.1.0/README.md +213 -0
  9. undefined_bot-2.1.0/data/.gitignore +3 -0
  10. undefined_bot-2.1.0/data/debug/.gitignore +1 -0
  11. undefined_bot-2.1.0/data/debug/.gitkeep +0 -0
  12. undefined_bot-2.1.0/data/faq/.gitignore +1 -0
  13. undefined_bot-2.1.0/data/faq/.gitkeep +0 -0
  14. undefined_bot-2.1.0/data/img/head.jpg +0 -0
  15. undefined_bot-2.1.0/data/img/xlwy.jpg +0 -0
  16. undefined_bot-2.1.0/img/.gitignore +2 -0
  17. undefined_bot-2.1.0/img/.gitkeep +0 -0
  18. undefined_bot-2.1.0/pyproject.toml +80 -0
  19. undefined_bot-2.1.0/res/prepared_messages/help_message.txt +47 -0
  20. undefined_bot-2.1.0/res/prompts/analyze_multimodal.txt +164 -0
  21. undefined_bot-2.1.0/res/prompts/describe_image.txt +86 -0
  22. undefined_bot-2.1.0/res/prompts/injection_detector.txt +91 -0
  23. undefined_bot-2.1.0/res/prompts/injection_response_agent.txt +35 -0
  24. undefined_bot-2.1.0/res/prompts/merge_summaries.txt +25 -0
  25. undefined_bot-2.1.0/res/prompts/summarize.txt +21 -0
  26. undefined_bot-2.1.0/res/prompts/undefined.xml +717 -0
  27. undefined_bot-2.1.0/src/Undefined/__init__.py +3 -0
  28. undefined_bot-2.1.0/src/Undefined/__main__.py +6 -0
  29. undefined_bot-2.1.0/src/Undefined/ai.py +1215 -0
  30. undefined_bot-2.1.0/src/Undefined/config.py +371 -0
  31. undefined_bot-2.1.0/src/Undefined/end_summary_storage.py +48 -0
  32. undefined_bot-2.1.0/src/Undefined/faq.py +244 -0
  33. undefined_bot-2.1.0/src/Undefined/handlers.py +1247 -0
  34. undefined_bot-2.1.0/src/Undefined/injection_response_agent.py +131 -0
  35. undefined_bot-2.1.0/src/Undefined/main.py +126 -0
  36. undefined_bot-2.1.0/src/Undefined/memory.py +120 -0
  37. undefined_bot-2.1.0/src/Undefined/onebot.py +512 -0
  38. undefined_bot-2.1.0/src/Undefined/rate_limit.py +130 -0
  39. undefined_bot-2.1.0/src/Undefined/render.py +123 -0
  40. undefined_bot-2.1.0/src/Undefined/scheduled_task_storage.py +88 -0
  41. undefined_bot-2.1.0/src/Undefined/services/__init__.py +1 -0
  42. undefined_bot-2.1.0/src/Undefined/services/queue_manager.py +206 -0
  43. undefined_bot-2.1.0/src/Undefined/skills/README.md +53 -0
  44. undefined_bot-2.1.0/src/Undefined/skills/__init__.py +10 -0
  45. undefined_bot-2.1.0/src/Undefined/skills/agents/README.md +144 -0
  46. undefined_bot-2.1.0/src/Undefined/skills/agents/__init__.py +116 -0
  47. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/config.json +17 -0
  48. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/handler.py +220 -0
  49. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/intro.md +25 -0
  50. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/prompt.md +20 -0
  51. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/__init__.py +1 -0
  52. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/config.json +34 -0
  53. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/ai_draw_one/handler.py +62 -0
  54. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/ai_study_helper/config.json +22 -0
  55. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/ai_study_helper/handler.py +35 -0
  56. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/get_current_time/config.json +12 -0
  57. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/get_current_time/handler.py +5 -0
  58. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/config.json +24 -0
  59. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/horoscope/handler.py +141 -0
  60. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/config.json +43 -0
  61. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/minecraft_skin/handler.py +55 -0
  62. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/novel_search/config.json +25 -0
  63. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/novel_search/handler.py +31 -0
  64. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/renjian/config.json +12 -0
  65. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/renjian/handler.py +30 -0
  66. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/config.json +12 -0
  67. undefined_bot-2.1.0/src/Undefined/skills/agents/entertainment_agent/tools/wenchang_dijun/handler.py +44 -0
  68. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/__init__.py +1 -0
  69. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/config.json +21 -0
  70. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/handler.py +248 -0
  71. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/intro.md +22 -0
  72. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/prompt.md +36 -0
  73. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/__init__.py +1 -0
  74. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/config.json +17 -0
  75. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_code/handler.py +427 -0
  76. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/config.json +25 -0
  77. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/analyze_multimodal/handler.py +178 -0
  78. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/config.json +16 -0
  79. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/cleanup_temp/handler.py +35 -0
  80. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/config.json +17 -0
  81. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/detect_file_type/handler.py +221 -0
  82. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/config.json +21 -0
  83. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/download_file/handler.py +124 -0
  84. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/config.json +25 -0
  85. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_archive/handler.py +190 -0
  86. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/config.json +17 -0
  87. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_docx/handler.py +78 -0
  88. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/config.json +21 -0
  89. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pdf/handler.py +67 -0
  90. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/config.json +17 -0
  91. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_pptx/handler.py +73 -0
  92. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/config.json +17 -0
  93. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/extract_xlsx/handler.py +101 -0
  94. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/get_current_time/config.json +12 -0
  95. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/get_current_time/handler.py +5 -0
  96. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/config.json +21 -0
  97. undefined_bot-2.1.0/src/Undefined/skills/agents/file_analysis_agent/tools/read_text_file/handler.py +90 -0
  98. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/config.json +17 -0
  99. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/handler.py +220 -0
  100. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/intro.md +22 -0
  101. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/prompt.md +27 -0
  102. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/__init__.py +1 -0
  103. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/baiduhot/config.json +18 -0
  104. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/baiduhot/handler.py +49 -0
  105. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/base64/config.json +22 -0
  106. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/base64/handler.py +44 -0
  107. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/douyinhot/config.json +18 -0
  108. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/douyinhot/handler.py +53 -0
  109. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/get_current_time/config.json +12 -0
  110. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/get_current_time/handler.py +5 -0
  111. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/gold_price/config.json +12 -0
  112. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/gold_price/handler.py +58 -0
  113. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/hash/config.json +22 -0
  114. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/hash/handler.py +43 -0
  115. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/history/config.json +12 -0
  116. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/history/handler.py +37 -0
  117. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/net_check/config.json +17 -0
  118. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/net_check/handler.py +117 -0
  119. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/news_tencent/config.json +17 -0
  120. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/news_tencent/handler.py +38 -0
  121. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/qq_level_query/config.json +29 -0
  122. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/qq_level_query/handler.py +48 -0
  123. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/speed/config.json +17 -0
  124. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/speed/handler.py +37 -0
  125. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/tcping/config.json +21 -0
  126. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/tcping/handler.py +53 -0
  127. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/weather_query/config.json +22 -0
  128. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/weather_query/handler.py +207 -0
  129. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/weibohot/config.json +18 -0
  130. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/weibohot/handler.py +49 -0
  131. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/whois/config.json +17 -0
  132. undefined_bot-2.1.0/src/Undefined/skills/agents/info_agent/tools/whois/handler.py +63 -0
  133. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/config.json +17 -0
  134. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/handler.py +222 -0
  135. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/intro.md +17 -0
  136. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/prompt.md +19 -0
  137. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/__init__.py +1 -0
  138. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/get_current_time/config.json +12 -0
  139. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/get_current_time/handler.py +5 -0
  140. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/config.json +17 -0
  141. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/glob/handler.py +37 -0
  142. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/config.json +17 -0
  143. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/list_directory/handler.py +31 -0
  144. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/config.json +17 -0
  145. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_file/handler.py +66 -0
  146. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/config.json +12 -0
  147. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/read_naga_intro/handler.py +327 -0
  148. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/config.json +25 -0
  149. undefined_bot-2.1.0/src/Undefined/skills/agents/naga_code_analysis_agent/tools/search_file_content/handler.py +46 -0
  150. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/__init__.py +1 -0
  151. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/config.json +17 -0
  152. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/handler.py +218 -0
  153. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/intro.md +17 -0
  154. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/prompt.md +67 -0
  155. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/__init__.py +1 -0
  156. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/create_schedule_task/config.json +37 -0
  157. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/create_schedule_task/handler.py +68 -0
  158. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/delete_schedule_task/config.json +19 -0
  159. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/delete_schedule_task/handler.py +26 -0
  160. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/get_current_time/config.json +12 -0
  161. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/get_current_time/handler.py +5 -0
  162. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/list_schedule_tasks/config.json +11 -0
  163. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/list_schedule_tasks/handler.py +47 -0
  164. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/update_schedule_task/config.json +39 -0
  165. undefined_bot-2.1.0/src/Undefined/skills/agents/scheduler_agent/tools/update_schedule_task/handler.py +46 -0
  166. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/config.json +17 -0
  167. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/handler.py +220 -0
  168. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/intro.md +17 -0
  169. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/prompt.md +19 -0
  170. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/__init__.py +1 -0
  171. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/bilibili_search/config.json +21 -0
  172. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/bilibili_search/handler.py +68 -0
  173. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/bilibili_user_info/config.json +17 -0
  174. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/bilibili_user_info/handler.py +68 -0
  175. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/get_current_time/config.json +12 -0
  176. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/get_current_time/handler.py +5 -0
  177. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_global_search/config.json +21 -0
  178. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_global_search/handler.py +47 -0
  179. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_info_get/config.json +22 -0
  180. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_info_get/handler.py +35 -0
  181. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_lyrics/config.json +22 -0
  182. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/music_lyrics/handler.py +26 -0
  183. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/video_random_recommend/config.json +21 -0
  184. undefined_bot-2.1.0/src/Undefined/skills/agents/social_agent/tools/video_random_recommend/handler.py +21 -0
  185. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/config.json +17 -0
  186. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/handler.py +221 -0
  187. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/intro.md +14 -0
  188. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/prompt.md +16 -0
  189. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/__init__.py +1 -0
  190. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/config.json +21 -0
  191. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/crawl_webpage/handler.py +102 -0
  192. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/get_current_time/config.json +12 -0
  193. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/get_current_time/handler.py +5 -0
  194. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/web_search/config.json +21 -0
  195. undefined_bot-2.1.0/src/Undefined/skills/agents/web_agent/tools/web_search/handler.py +29 -0
  196. undefined_bot-2.1.0/src/Undefined/skills/tools/README.md +85 -0
  197. undefined_bot-2.1.0/src/Undefined/skills/tools/__init__.py +120 -0
  198. undefined_bot-2.1.0/src/Undefined/skills/tools/debug/config.json +17 -0
  199. undefined_bot-2.1.0/src/Undefined/skills/tools/debug/handler.py +35 -0
  200. undefined_bot-2.1.0/src/Undefined/skills/tools/end/config.json +17 -0
  201. undefined_bot-2.1.0/src/Undefined/skills/tools/end/handler.py +24 -0
  202. undefined_bot-2.1.0/src/Undefined/skills/tools/get_current_time/config.json +12 -0
  203. undefined_bot-2.1.0/src/Undefined/skills/tools/get_current_time/handler.py +5 -0
  204. undefined_bot-2.1.0/src/Undefined/skills/tools/get_forward_msg/config.json +17 -0
  205. undefined_bot-2.1.0/src/Undefined/skills/tools/get_forward_msg/handler.py +131 -0
  206. undefined_bot-2.1.0/src/Undefined/skills/tools/get_group_member_info/config.json +38 -0
  207. undefined_bot-2.1.0/src/Undefined/skills/tools/get_group_member_info/handler.py +142 -0
  208. undefined_bot-2.1.0/src/Undefined/skills/tools/get_messages_by_time/config.json +30 -0
  209. undefined_bot-2.1.0/src/Undefined/skills/tools/get_messages_by_time/handler.py +128 -0
  210. undefined_bot-2.1.0/src/Undefined/skills/tools/get_picture/config.json +45 -0
  211. undefined_bot-2.1.0/src/Undefined/skills/tools/get_picture/handler.py +191 -0
  212. undefined_bot-2.1.0/src/Undefined/skills/tools/get_recent_messages/config.json +30 -0
  213. undefined_bot-2.1.0/src/Undefined/skills/tools/get_recent_messages/handler.py +88 -0
  214. undefined_bot-2.1.0/src/Undefined/skills/tools/qq_like/config.json +22 -0
  215. undefined_bot-2.1.0/src/Undefined/skills/tools/qq_like/handler.py +58 -0
  216. undefined_bot-2.1.0/src/Undefined/skills/tools/render_html/config.json +26 -0
  217. undefined_bot-2.1.0/src/Undefined/skills/tools/render_html/handler.py +39 -0
  218. undefined_bot-2.1.0/src/Undefined/skills/tools/render_latex/config.json +26 -0
  219. undefined_bot-2.1.0/src/Undefined/skills/tools/render_latex/handler.py +78 -0
  220. undefined_bot-2.1.0/src/Undefined/skills/tools/render_markdown/config.json +26 -0
  221. undefined_bot-2.1.0/src/Undefined/skills/tools/render_markdown/handler.py +63 -0
  222. undefined_bot-2.1.0/src/Undefined/skills/tools/save_memory/config.json +17 -0
  223. undefined_bot-2.1.0/src/Undefined/skills/tools/save_memory/handler.py +17 -0
  224. undefined_bot-2.1.0/src/Undefined/skills/tools/send_message/config.json +21 -0
  225. undefined_bot-2.1.0/src/Undefined/skills/tools/send_message/handler.py +60 -0
  226. undefined_bot-2.1.0/src/Undefined/skills/tools/send_private_message/config.json +21 -0
  227. undefined_bot-2.1.0/src/Undefined/skills/tools/send_private_message/handler.py +35 -0
  228. undefined_bot-2.1.0/src/Undefined/utils/__init__.py +0 -0
  229. undefined_bot-2.1.0/src/Undefined/utils/common.py +186 -0
  230. undefined_bot-2.1.0/src/Undefined/utils/history.py +284 -0
  231. undefined_bot-2.1.0/src/Undefined/utils/scheduler.py +286 -0
  232. undefined_bot-2.1.0/src/Undefined/utils/sender.py +140 -0
  233. undefined_bot-2.1.0/uv.lock +3265 -0
@@ -0,0 +1,75 @@
1
+ # ================================
2
+ # 机器人小号配置
3
+ # ================================
4
+ BOT_QQ= # 机器人QQ号
5
+ SUPERADMIN_QQ= # 超级管理员QQ号(唯一,可添加其他管理员)
6
+ ADMIN_QQ= # 初始管理员QQ号列表(逗号分隔,可选)
7
+ FORWARD_PROXY_QQ= # 音频转发代理QQ号(用于群聊音频转发,可选)
8
+
9
+ # ================================
10
+ # OneBot WebSocket 配置
11
+ # ================================
12
+ ONEBOT_WS_URL=ws://127.0.0.1:3001 # NapCat WebSocket 地址
13
+ ONEBOT_TOKEN= # Access Token(可选)
14
+
15
+ # ================================
16
+ # 对话模型配置 (用于总结聊天记录)
17
+ # ================================
18
+ CHAT_MODEL_API_URL=
19
+ CHAT_MODEL_API_KEY=
20
+ CHAT_MODEL_NAME=
21
+ CHAT_MODEL_MAX_TOKENS=8192
22
+ CHAT_MODEL_THINKING_ENABLED=false # 是否启用 thinking(思维链)
23
+ CHAT_MODEL_THINKING_BUDGET_TOKENS=20000 # thinking budget tokens
24
+
25
+ # ================================
26
+ # 视觉模型配置 (用于图片描述和OCR)
27
+ # ================================
28
+ VISION_MODEL_API_URL=
29
+ VISION_MODEL_API_KEY=
30
+ VISION_MODEL_NAME=
31
+ VISION_MODEL_THINKING_ENABLED=false # 是否启用 thinking(思维链)
32
+ VISION_MODEL_THINKING_BUDGET_TOKENS=20000 # thinking budget tokens
33
+
34
+ # ================================
35
+ # 安全模型配置 (用于防注入检测和注入后的回复生成)
36
+ # ================================
37
+ SECURITY_MODEL_API_URL=
38
+ SECURITY_MODEL_API_KEY=
39
+ SECURITY_MODEL_NAME=
40
+ SECURITY_MODEL_MAX_TOKENS=100 # 可选限制
41
+ SECURITY_MODEL_THINKING_ENABLED=false # 是否启用 thinking(思维链)
42
+ SECURITY_MODEL_THINKING_BUDGET_TOKENS=0 # thinking budget tokens
43
+
44
+ # ================================
45
+ # Agent 模型配置 (用于执行 agents)
46
+ # ================================
47
+ AGENT_MODEL_API_URL=
48
+ AGENT_MODEL_API_KEY=
49
+ AGENT_MODEL_NAME=
50
+ AGENT_MODEL_MAX_TOKENS=4096 # 可选限制
51
+ AGENT_MODEL_THINKING_ENABLED=false # 是否启用 thinking(思维链)
52
+ AGENT_MODEL_THINKING_BUDGET_TOKENS=0 # thinking budget tokens
53
+
54
+ # ================================
55
+ # 日志配置
56
+ # ================================
57
+ LOG_LEVEL=INFO # 日志级别(DEBUG/INFO/WARNING/ERROR)
58
+ LOG_FILE_PATH=logs/bot.log # 日志文件路径
59
+ LOG_MAX_SIZE_MB=10 # 单个日志文件最大大小(MB)
60
+ LOG_BACKUP_COUNT=5 # 保留日志文件数量
61
+
62
+ # ================================
63
+ # 搜索服务配置 (SearXNG)
64
+ # ================================
65
+ SEARXNG_URL= # SearXNG 搜索服务地址,如 http://127.0.0.1:8849
66
+
67
+ # ================================
68
+ # 天气API配置 (心知天气)
69
+ # ================================
70
+ WEATHER_API_KEY= # 心知天气API密钥,从 https://www.seniverse.com/ 获取
71
+
72
+ # ================================
73
+ # XXAPI API 配置
74
+ # ================================
75
+ XXAPI_API_TOKEN= # XXAPI Token,前往 https://xxapi.cn 获取
@@ -0,0 +1,32 @@
1
+ changelog:
2
+ exclude:
3
+ labels:
4
+ - ignore-for-release
5
+ authors:
6
+ - github-actions
7
+ categories:
8
+ - title: "🚀 New Features | 新功能"
9
+ labels:
10
+ - enhancement
11
+ - feature
12
+ - "new feature"
13
+ - title: "🐛 Bug Fixes | Bug 修复"
14
+ labels:
15
+ - bug
16
+ - fix
17
+ - error
18
+ - title: "📚 Documentation | 文档"
19
+ labels:
20
+ - documentation
21
+ - doc
22
+ - docs
23
+ - title: "🛠 Maintenance | 维护与重构"
24
+ labels:
25
+ - chore
26
+ - maintenance
27
+ - refactor
28
+ - style
29
+ - test
30
+ - title: "📦 Dependencies | 依赖更新"
31
+ labels:
32
+ - dependencies
@@ -0,0 +1,95 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ build-and-release:
14
+ name: Build and Release
15
+ runs-on: ubuntu-latest
16
+ environment: release
17
+ steps:
18
+ - name: Checkout code
19
+ uses: actions/checkout@v4
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - name: Fetch tags
24
+ run: git fetch --tags --force
25
+
26
+ - name: Install uv
27
+ uses: astral-sh/setup-uv@v5
28
+ with:
29
+ enable-cache: true
30
+
31
+ - name: Set up Python
32
+ run: uv python install 3.12
33
+
34
+ - name: Build project
35
+ run: uv build
36
+
37
+ - name: Create Release
38
+ env:
39
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
+ run: |
41
+ # 1. 检查是否为注解标签 (Annotated Tag)
42
+ TAG_TYPE=$(git cat-file -t ${{ github.ref_name }})
43
+ TAG_CONTENT=""
44
+
45
+ if [ "$TAG_TYPE" = "tag" ]; then
46
+ # 使用 %(contents) 获取完整的 Tag Message
47
+ TAG_CONTENT=$(git tag -l --format='%(contents)' ${{ github.ref_name }})
48
+ # 移除 PGP 签名(如果存在)
49
+ TAG_CONTENT=$(echo "$TAG_CONTENT" | sed '/-----BEGIN PGP SIGNATURE-----/,/-----END PGP SIGNATURE-----/d')
50
+ fi
51
+
52
+ # 2. 获取上一个 Tag
53
+ PREV_TAG=$(git describe --tags --abbrev=0 ${{ github.ref_name }}^ 2>/dev/null || git rev-list --max-parents=0 HEAD)
54
+
55
+ # 3. 初始化 tag_message.txt
56
+ if [ -n "$TAG_CONTENT" ]; then
57
+ echo "$TAG_CONTENT" > tag_message.txt
58
+ echo -e "\n---\n" >> tag_message.txt
59
+ else
60
+ touch tag_message.txt
61
+ fi
62
+
63
+ # 4. 追加"Detailed Changes"标题
64
+ echo -e "## 📝 Detailed Changes\n" >> tag_message.txt
65
+
66
+ # 5. 自动生成基于 Commit 的详细列表 (Angular 规范分类)
67
+ # 仅在有对应 commits 时才显示标题
68
+ FEAT_COMMITS=$(git log ${PREV_TAG}..${{ github.ref_name }} --grep="^feat" --pretty=format:"* %s (%h)" 2>/dev/null || true)
69
+ if [ -n "$FEAT_COMMITS" ]; then
70
+ echo -e "### 🚀 Features" >> tag_message.txt
71
+ echo "$FEAT_COMMITS" >> tag_message.txt
72
+ echo -e "\n" >> tag_message.txt
73
+ fi
74
+
75
+ FIX_COMMITS=$(git log ${PREV_TAG}..${{ github.ref_name }} --grep="^fix" --pretty=format:"* %s (%h)" 2>/dev/null || true)
76
+ if [ -n "$FIX_COMMITS" ]; then
77
+ echo -e "### 🐛 Bug Fixes" >> tag_message.txt
78
+ echo "$FIX_COMMITS" >> tag_message.txt
79
+ echo -e "\n" >> tag_message.txt
80
+ fi
81
+
82
+ OTHER_COMMITS=$(git log ${PREV_TAG}..${{ github.ref_name }} --grep="^feat\|^fix" --invert-grep --pretty=format:"* %s (%h)" 2>/dev/null || true)
83
+ if [ -n "$OTHER_COMMITS" ]; then
84
+ echo -e "### 🛠 Maintenance & Others" >> tag_message.txt
85
+ echo "$OTHER_COMMITS" >> tag_message.txt
86
+ fi
87
+
88
+ # 6. 创建 Release
89
+ gh release create ${{ github.ref_name }} dist/* \
90
+ --title "Undefined ${{ github.ref_name }}" \
91
+ --notes-file tag_message.txt \
92
+ --generate-notes
93
+
94
+ - name: Publish to PyPI
95
+ run: uv publish
@@ -0,0 +1,46 @@
1
+ # Compiled and build artifacts
2
+ *.pyc
3
+ __pycache__/
4
+
5
+ # Dependencies
6
+ .venv/
7
+ venv/
8
+ node_modules/
9
+
10
+ # Logs and temp files
11
+ *.log
12
+ *.tmp
13
+ *.swp
14
+ temp/
15
+
16
+ # Environment
17
+ .env
18
+
19
+ # Editors
20
+ .vscode/
21
+ .idea/
22
+
23
+ # Coverage reports
24
+ coverage/
25
+ htmlcov/
26
+ .coverage
27
+
28
+ # Python specific
29
+ *.pyc
30
+ __pycache__/
31
+ *.pyo
32
+ *.pyd
33
+ .Python
34
+ *.so
35
+
36
+ # Testing
37
+ .pytest_cache/
38
+ .mypy_cache/
39
+
40
+ logs/*
41
+
42
+ AGENTS.md
43
+ .DS_Store
44
+ .claude/
45
+
46
+ config.local.json
@@ -0,0 +1,3 @@
1
+ [submodule "code/NagaAgent"]
2
+ path = code/NagaAgent
3
+ url = https://github.com/Xxiii8322766509/NagaAgent.git
@@ -0,0 +1,7 @@
1
+ Copyright (c) <2025> <Null>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,259 @@
1
+ Metadata-Version: 2.4
2
+ Name: Undefined-bot
3
+ Version: 2.1.0
4
+ Summary: A high-performance, highly scalable QQ group and private chat robot based on a self-developed architecture.
5
+ Project-URL: Homepage, https://www.pylindex.top
6
+ Project-URL: Repository, https://github.com/69gg/Undefined
7
+ Project-URL: Issues, https://github.com/69gg/Undefined/issues
8
+ Author-email: Null <pylindex@qq.com>
9
+ License-File: LICENSE
10
+ Requires-Python: <=3.13,>=3.12
11
+ Requires-Dist: aiofiles>=25.1.0
12
+ Requires-Dist: aiohttp>=3.13.2
13
+ Requires-Dist: apscheduler>=3.10.0
14
+ Requires-Dist: chardet>=5.2.0
15
+ Requires-Dist: crawl4ai>=0.3.0
16
+ Requires-Dist: croniter>=2.0.0
17
+ Requires-Dist: httpx>=0.27.0
18
+ Requires-Dist: imgkit
19
+ Requires-Dist: langchain-community>=0.3.0
20
+ Requires-Dist: linkify-it-py>=2.0.3
21
+ Requires-Dist: markdown-it-py[plugins]>=4.0.0
22
+ Requires-Dist: markdown>=3.10
23
+ Requires-Dist: matplotlib
24
+ Requires-Dist: mdit-py-plugins>=0.5.0
25
+ Requires-Dist: openpyxl>=3.1.5
26
+ Requires-Dist: pillow
27
+ Requires-Dist: playwright>=1.57.0
28
+ Requires-Dist: py7zr>=1.1.0
29
+ Requires-Dist: pymdown-extensions>=10.20
30
+ Requires-Dist: pymupdf>=1.26.7
31
+ Requires-Dist: python-docx>=1.2.0
32
+ Requires-Dist: python-dotenv>=1.0.0
33
+ Requires-Dist: python-markdown-math>=0.9
34
+ Requires-Dist: python-pptx>=1.0.2
35
+ Requires-Dist: rarfile>=4.2
36
+ Requires-Dist: tiktoken>=0.7.0
37
+ Requires-Dist: types-aiofiles>=25.1.0.20251011
38
+ Requires-Dist: types-markdown>=3.10.0.20251106
39
+ Requires-Dist: websockets>=12.0
40
+ Provides-Extra: dev
41
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
42
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
43
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
44
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
45
+ Description-Content-Type: text/markdown
46
+
47
+ <table border="0">
48
+ <tr>
49
+ <td width="70%" valign="top">
50
+ <div align="center">
51
+ <h1>Undefined</h1>
52
+ <em>A high-performance, highly scalable QQ group and private chat robot based on a self-developed architecture.</em>
53
+ <br/><br/>
54
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/Python-3.12-blue.svg" alt="Python"></a>
55
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License"></a>
56
+ <br/><br/>
57
+ <p>大鹏一日同风起,扶摇直上九万里。</p>
58
+ </div>
59
+ <h3>项目简介</h3>
60
+ <p>
61
+ <strong>Undefined</strong> 是一个功能强大的 QQ 机器人平台,采用全新的 <strong>自研 Skills</strong> 架构。基于现代 Python 异步技术栈构建,它不仅提供基础的对话能力,更通过内置的多个智能 Agent 实现了代码分析、网络搜索、娱乐互动等多模态综合能力。
62
+ </p>
63
+ </td>
64
+ <td width="30%">
65
+ <img src="./data/img/head.jpg" width="100%" alt="Undefined" />
66
+ </td>
67
+ </tr>
68
+ </table>
69
+
70
+ ### _与 [NagaAgent](https://github.com/Xxiii8322766509/NagaAgent) 进行联动!_
71
+
72
+ ## 立即体验
73
+
74
+ [点击添加官方实例QQ](https://qm.qq.com/q/cvjJoNysGA)
75
+
76
+ ## 核心特性
77
+
78
+ - **Skills 架构**:全新设计的技能系统,将基础工具(Tools)与智能代理(Agents)分层管理,支持自动发现与注册。
79
+ - **并行工具执行**:无论是主 AI 还是子 Agent,均支持 `asyncio` 并发工具调用,大幅提升多任务处理速度(如同时读取多个文件或搜索多个关键词)。
80
+ - **智能 Agent 矩阵**:内置多个专业 Agent,分工协作处理复杂任务。
81
+ - **思维链支持**:支持开启思维链,提升复杂逻辑推理能力。
82
+ - **高并发架构**:基于 `asyncio` 全异步设计,支持多队列消息处理与工具并发执行,轻松应对高并发场景。
83
+ - **安全防护**:内置独立的安全模型,实时检测注入攻击与恶意内容。
84
+ - **OneBot 协议**:完美兼容 OneBot V11 协议,支持多种前端实现(如 NapCat)。
85
+
86
+ ## 安装与部署
87
+
88
+ ### 方式一:使用 pip 安装(推荐)
89
+
90
+ 如果您只是想使用机器人,推荐直接从 Release 下载安装包或通过 pip 安装。
91
+
92
+ #### 1. 安装
93
+
94
+ 直接通过 PyPI 安装:
95
+
96
+ ```bash
97
+ pip install Undefined-bot
98
+ ```
99
+
100
+ 或者下载 Release 中的 `.whl` 文件运行:
101
+
102
+ ```bash
103
+ pip install /path/to/Undefined_bot-x.x.x-py3-none-any.whl
104
+ ```
105
+
106
+ 还需要安装浏览器内核(如果尚未安装):
107
+
108
+ ```bash
109
+ playwright install
110
+ ```
111
+
112
+ #### 2. 配置与运行
113
+
114
+ 1. 创建一个文件夹作为机器人的**工作目录**。
115
+ 2. 克隆 [_NagaAgent_ 仓库](https://github.com/Xxiii8322766509/NagaAgent) 至 `./code/NagaAgent`。
116
+ 3. 在工作目录下创建一个 `.env` 文件,填入您的配置信息(参考下方配置说明或于 Github 中打开 `.env.example` 查看注释)。
117
+ 4. 在工作目录下打开终端,直接输入命令启动:
118
+
119
+ ```bash
120
+ Undefined
121
+ ```
122
+
123
+ > **注意**:程序会自动读取当前运行目录下的 `.env` 文件作为配置。
124
+
125
+ ### 方式二:源码部署(开发)
126
+
127
+ 如果您想进行二次开发或调试,请使用此方式。
128
+
129
+ #### 1. 克隆项目
130
+
131
+ 由于项目中使用了 `NagaAgent` 作为子模块,请使用以下命令克隆项目:
132
+
133
+ ```bash
134
+ git clone --recursive https://github.com/69gg/Undefined.git
135
+ cd Undefined
136
+ ```
137
+
138
+ 如果已经克隆了项目但没有初始化子模块:
139
+
140
+ ```bash
141
+ git submodule update --init --recursive
142
+ ```
143
+
144
+ #### 2. 安装依赖
145
+
146
+ 推荐使用 `uv` 进行依赖管理:
147
+
148
+ ```bash
149
+ uv sync
150
+ ```
151
+
152
+ #### 3. 配置环境
153
+
154
+ 复制所有的示例配置文件(.env.example -> .env)并填写你的配置信息。
155
+
156
+ ```bash
157
+ cp .env.example .env
158
+ ```
159
+
160
+ #### 4. 启动运行
161
+
162
+ ```bash
163
+ uv run -m Undefined
164
+ ```
165
+
166
+ ### 配置说明(通用)
167
+
168
+ 无论使用哪种方式,都需要配置 `.env` 文件:
169
+
170
+ - **基础配置**:`BOT_QQ`, `SUPERADMIN_QQ`, `ONEBOT_WS_URL`
171
+ - **模型配置**:
172
+ - `CHAT_MODEL_*`:主对话模型
173
+ - `VISION_MODEL_*`:视觉识别模型
174
+ - `AGENT_MODEL_*`:Agent 专用模型(建议使用能力更强的模型)
175
+ - `SECURITY_MODEL_*`:安全审核模型
176
+ - **功能配置**:`LOG_LEVEL` 等
177
+
178
+ > 启动项目需要 OneBot 实例,推荐使用 [NapCat](https://napneko.github.io/)。
179
+
180
+ ## 使用说明
181
+
182
+ ### 部署后的初始化
183
+
184
+ 机器人启动后会自动连接到 OneBot 实例。如果连接成功,您会在日志中看到机器人 QQ 号及管理员信息。
185
+
186
+ ### Agent 能力展示
187
+
188
+ 机器人通过自然语言自动调用相应的 Agent 完成任务:
189
+
190
+ #### 1. 网络与信息
191
+ - "搜索一下最近的 AI 新闻"
192
+ - "看看今天的微博热搜"
193
+ - "查询北京明天的天气"
194
+
195
+ #### 2. 代码与开发
196
+ - "分析一下当前项目的目录结构"
197
+ - "读取 src/main.py 的内容并解释"
198
+ - "在代码库中搜索 'AgentRegistry'"
199
+
200
+ #### 3. 娱乐与社交
201
+ - "搜一首周杰伦的歌"
202
+ - "找一下 B 站关于 Python 的教程"
203
+ - "画一只赛博朋克风格的猫"
204
+ - "看一下今天的运势"
205
+
206
+ ### 管理员命令
207
+
208
+ ```bash
209
+ /help # 查看帮助
210
+ /lsadmin # 查看管理员列表
211
+ /addadmin <QQ> # 添加管理员(仅超级管理员)
212
+ /rmadmin <QQ> # 移除管理员(仅超级管理员)
213
+ /bugfix <QQ> <Time> # 生成 Bug 修复报告
214
+ ```
215
+
216
+ ### 消息优先级
217
+
218
+ 系统采用多级优先队列设计:
219
+ 1. **最高**:超级管理员私聊
220
+ 2. **高**:普通私聊
221
+ 3. **中**:群聊被 @
222
+ 4. **低**:群聊普通消息
223
+
224
+ ## 目录结构
225
+
226
+ ```
227
+ src/Undefined/
228
+ ├── skills/
229
+ │ ├── agents/ # 智能体集合 (Web, Code, Social...)
230
+ │ └── tools/ # 基础工具 (SendMsg, Render...)
231
+ ├── config.py # 配置管理
232
+ ├── handlers.py # 消息处理器
233
+ └── ai.py # AI 核心逻辑
234
+ ```
235
+
236
+ ## 扩展与开发
237
+
238
+ Undefined 采用模块化的 **Skills** 架构,扩展非常简单:
239
+
240
+ - **添加工具**: 在 `skills/tools/` 下新建目录,添加 `config.json` 和 `handler.py`。
241
+ - **添加 Agent**: 在 `skills/agents/` 下新建目录,定义 `intro.md` 和 `prompt.md`。
242
+
243
+ ## 致谢与友链
244
+
245
+ ### NagaAgent
246
+
247
+ 本项目集成 **NagaAgent** 子模块。Undefined 诞生于 NagaAgent 社区,感谢作者及社区的支持。
248
+
249
+ > [NagaAgent - A simple yet powerful agent framework.](https://github.com/Xxiii8322766509/NagaAgent)
250
+
251
+ ## 开源协议
252
+
253
+ 本项目遵循 [MIT License](LICENSE) 开源协议。
254
+
255
+ <div align="center">
256
+
257
+ **⭐ 如果这个项目对您有帮助,请考虑给我们一个 Star**
258
+
259
+ </div>