jarvis-ai-assistant 0.3.31__tar.gz → 1.0.9__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 (332) hide show
  1. jarvis_ai_assistant-1.0.9/PKG-INFO +760 -0
  2. jarvis_ai_assistant-1.0.9/README.md +573 -0
  3. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/pyproject.toml +73 -1
  4. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/setup.py +70 -2
  5. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/__init__.py +1 -1
  6. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/__init__.py +1927 -0
  7. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/agent_manager.py +30 -18
  8. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/builtin_input_handler.py +153 -0
  9. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/config_editor.py +5 -5
  10. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/event_bus.py +127 -0
  11. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/events.py +19 -1
  12. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/file_context_handler.py +337 -0
  13. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/file_methodology_manager.py +56 -35
  14. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/jarvis.py +1187 -0
  15. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/__init__.py +64 -0
  16. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/c_extractor.py +24 -0
  17. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/cpp_extractor.py +26 -0
  18. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/go_extractor.py +24 -0
  19. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/java_extractor.py +100 -0
  20. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/javascript_extractor.py +84 -0
  21. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/python_extractor.py +24 -0
  22. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/rust_extractor.py +24 -0
  23. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_extractors/typescript_extractor.py +89 -0
  24. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/language_support_info.py +515 -0
  25. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/main.py +34 -13
  26. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/memory_manager.py +21 -25
  27. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/methodology_share_manager.py +21 -21
  28. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/output_handler.py +4 -2
  29. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/prompt_builder.py +7 -6
  30. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/prompt_manager.py +206 -0
  31. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/prompts.py +479 -0
  32. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/protocols.py +32 -0
  33. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/run_loop.py +369 -0
  34. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/session_manager.py +9 -6
  35. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/share_manager.py +33 -28
  36. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/shell_input_handler.py +12 -9
  37. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/stdio_redirect.py +295 -0
  38. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/task_analyzer.py +59 -26
  39. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/task_list.py +871 -0
  40. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/task_manager.py +30 -43
  41. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/tool_executor.py +6 -6
  42. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/tool_share_manager.py +24 -26
  43. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/user_interaction.py +3 -3
  44. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_agent/utils.py +14 -2
  45. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/web_bridge.py +208 -0
  46. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/web_output_sink.py +56 -0
  47. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_agent/web_server.py +914 -0
  48. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/__init__.py +26 -0
  49. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/cli.py +712 -0
  50. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/collector.py +270 -0
  51. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/constants.py +86 -0
  52. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer.py +488 -0
  53. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_checkpoint.py +133 -0
  54. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_llm.py +294 -0
  55. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_loader.py +191 -0
  56. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_output.py +134 -0
  57. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_prompts.py +124 -0
  58. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/library_replacer_utils.py +188 -0
  59. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent.py +326 -0
  60. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_apply.py +170 -0
  61. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_executor.py +305 -0
  62. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_loader.py +170 -0
  63. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_prompts.py +268 -0
  64. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_types.py +57 -0
  65. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_utils.py +150 -0
  66. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/llm_module_agent_validator.py +119 -0
  67. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/loaders.py +225 -0
  68. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/models.py +31 -0
  69. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer.py +370 -0
  70. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_build_fix.py +286 -0
  71. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_clippy.py +723 -0
  72. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_config.py +49 -0
  73. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_docs.py +183 -0
  74. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_options.py +48 -0
  75. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_progress.py +471 -0
  76. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_report.py +52 -0
  77. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_unsafe.py +309 -0
  78. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_utils.py +469 -0
  79. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/optimizer_visibility.py +185 -0
  80. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/scanner.py +1744 -0
  81. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler.py +921 -0
  82. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_agents.py +506 -0
  83. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_build.py +1534 -0
  84. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_codegen.py +269 -0
  85. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_compile.py +146 -0
  86. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_config.py +178 -0
  87. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_context.py +122 -0
  88. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_executor.py +519 -0
  89. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_generation.py +294 -0
  90. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_git.py +163 -0
  91. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_mod_utils.py +226 -0
  92. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_modules.py +454 -0
  93. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_planning.py +411 -0
  94. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_review.py +1175 -0
  95. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/transpiler_symbols.py +177 -0
  96. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_c2rust/utils.py +575 -0
  97. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/after_change.py +233 -0
  98. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/build_validation_config.py +139 -0
  99. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/builtin_rules.py +71 -0
  100. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent.py +1492 -0
  101. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_build.py +227 -0
  102. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_diff.py +248 -0
  103. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_git.py +525 -0
  104. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_impact.py +177 -0
  105. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_lint.py +283 -0
  106. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_postprocess.py +105 -0
  107. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_prompts.py +46 -0
  108. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_agent_rules.py +307 -0
  109. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/__init__.py +69 -0
  110. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/base_language.py +76 -0
  111. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +45 -0
  112. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +110 -0
  113. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +83 -0
  114. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +579 -0
  115. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +83 -0
  116. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +74 -0
  117. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +58 -0
  118. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +51 -0
  119. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +72 -0
  120. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +134 -0
  121. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +188 -0
  122. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +237 -0
  123. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +207 -0
  124. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/build_validator.py +49 -0
  125. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/context_manager.py +650 -0
  126. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +19 -0
  127. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +141 -0
  128. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +416 -0
  129. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +855 -0
  130. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/language_registry.py +193 -0
  131. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/language_support.py +118 -0
  132. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +55 -0
  133. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +329 -0
  134. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +250 -0
  135. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +245 -0
  136. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +284 -0
  137. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +307 -0
  138. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +315 -0
  139. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +314 -0
  140. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +605 -0
  141. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +264 -0
  142. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +130 -0
  143. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/diff_visualizer.py +998 -0
  144. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/lint.py +343 -0
  145. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/rule_share_manager.py +158 -0
  146. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_agent/utils.py +151 -0
  147. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/loader.py +21 -21
  148. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_code_analysis/code_review.py +871 -0
  149. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_config/__init__.py +12 -0
  150. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_config/cli.py +140 -0
  151. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_config/schema_parser.py +618 -0
  152. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_config/web_app.py +1413 -0
  153. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_data/config_schema.json +628 -0
  154. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_git_squash/main.py +9 -8
  155. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_git_utils/git_commiter.py +83 -92
  156. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_mcp/__init__.py +5 -2
  157. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_mcp/sse_mcp_client.py +39 -36
  158. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +28 -21
  159. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +36 -26
  160. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +88 -84
  161. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_methodology/main.py +46 -53
  162. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_multi_agent/__init__.py +453 -0
  163. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_multi_agent/main.py +34 -5
  164. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_platform/base.py +742 -0
  165. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_platform/claude.py +322 -0
  166. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/human.py +27 -17
  167. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/kimi.py +55 -54
  168. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_platform/openai.py +409 -0
  169. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/registry.py +102 -23
  170. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/tongyi.py +66 -37
  171. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/yuanbao.py +59 -54
  172. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform_manager/main.py +105 -100
  173. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform_manager/service.py +26 -21
  174. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/README_CONFIG.md +314 -0
  175. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +311 -0
  176. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/README_ONLINE_MODELS.md +230 -0
  177. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/__init__.py +64 -0
  178. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/cache.py +3 -1
  179. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/cli.py +58 -80
  180. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embedding_interface.py +39 -0
  181. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embedding_manager.py +10 -0
  182. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/__init__.py +41 -0
  183. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/base.py +114 -0
  184. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/cohere.py +66 -0
  185. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/edgefn.py +117 -0
  186. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_rag/embedding_manager.py → jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/local.py +60 -38
  187. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/openai.py +62 -0
  188. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/embeddings/registry.py +293 -0
  189. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/llm_interface.py +11 -10
  190. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/query_rewriter.py +11 -23
  191. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/rag_pipeline.py +64 -58
  192. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/reranker.py +10 -0
  193. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/reranker_interface.py +32 -0
  194. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/__init__.py +41 -0
  195. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/base.py +109 -0
  196. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/cohere.py +67 -0
  197. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/edgefn.py +140 -0
  198. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/jina.py +79 -0
  199. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_rag/reranker.py → jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/local.py +23 -13
  200. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_rag/rerankers/registry.py +293 -0
  201. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_rag/retriever.py +62 -49
  202. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/__init__.py +231 -0
  203. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/agents.py +146 -0
  204. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/analysis.py +335 -0
  205. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/checkers/__init__.py +26 -0
  206. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/checkers/c_checker.py +2988 -0
  207. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/checkers/rust_checker.py +1126 -0
  208. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/cli.py +161 -0
  209. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/clustering.py +1622 -0
  210. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/file_manager.py +471 -0
  211. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/parsers.py +80 -0
  212. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/prompts.py +269 -0
  213. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/report.py +358 -0
  214. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/review.py +526 -0
  215. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/status.py +273 -0
  216. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/types.py +23 -0
  217. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/utils.py +578 -0
  218. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/verification.py +1082 -0
  219. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_sec/workflow.py +332 -0
  220. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_smart_shell/main.py +38 -100
  221. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_stats/cli.py +27 -25
  222. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_stats/stats.py +39 -30
  223. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_stats/storage.py +36 -36
  224. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_stats/visualizer.py +13 -8
  225. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/base.py +9 -7
  226. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/clear_memory.py +14 -27
  227. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/cli/main.py +32 -29
  228. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/edit_file.py +770 -0
  229. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/execute_script.py +267 -0
  230. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/meta_agent.py +288 -0
  231. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/methodology.py +7 -6
  232. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/read_code.py +752 -0
  233. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/read_symbols.py +173 -0
  234. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/read_webpage.py +26 -26
  235. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/registry.py +1434 -0
  236. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/retrieve_memory.py +34 -28
  237. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/save_memory.py +10 -20
  238. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/search_web.py +50 -45
  239. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/sub_agent.py +53 -57
  240. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/sub_code_agent.py +63 -73
  241. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_tools/task_list_manager.py +2181 -0
  242. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/virtual_tty.py +72 -40
  243. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/__init__.py +4 -0
  244. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/builtin_replace_map.py +2 -1
  245. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/clipboard.py +9 -11
  246. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_utils/collections.py +329 -0
  247. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_utils/config.py +1444 -0
  248. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_utils/dialogue_recorder.py +294 -0
  249. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/embedding.py +8 -5
  250. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/file_processors.py +7 -1
  251. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/fzf.py +17 -11
  252. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/git_utils.py +244 -40
  253. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/globals.py +121 -35
  254. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/http.py +10 -6
  255. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/input.py +399 -114
  256. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_utils/jsonnet_compat.py +483 -0
  257. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/methodology.py +83 -58
  258. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/output.py +264 -46
  259. jarvis_ai_assistant-1.0.9/src/jarvis/jarvis_utils/utils.py +2499 -0
  260. jarvis_ai_assistant-1.0.9/src/jarvis_ai_assistant.egg-info/PKG-INFO +760 -0
  261. jarvis_ai_assistant-1.0.9/src/jarvis_ai_assistant.egg-info/SOURCES.txt +296 -0
  262. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis_ai_assistant.egg-info/entry_points.txt +6 -0
  263. jarvis_ai_assistant-1.0.9/src/jarvis_ai_assistant.egg-info/requires.txt +166 -0
  264. jarvis_ai_assistant-0.3.31/PKG-INFO +0 -381
  265. jarvis_ai_assistant-0.3.31/README.md +0 -296
  266. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/__init__.py +0 -1298
  267. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -88
  268. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/config.py +0 -92
  269. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/edit_file_handler.py +0 -543
  270. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/event_bus.py +0 -48
  271. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/jarvis.py +0 -588
  272. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/prompt_manager.py +0 -82
  273. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/prompts.py +0 -225
  274. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/protocols.py +0 -33
  275. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_agent/run_loop.py +0 -113
  276. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_code_agent/code_agent.py +0 -888
  277. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_code_agent/lint.py +0 -151
  278. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_code_analysis/code_review.py +0 -931
  279. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_data/config_schema.json +0 -491
  280. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_multi_agent/__init__.py +0 -188
  281. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_platform/ai8.py +0 -332
  282. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_platform/base.py +0 -352
  283. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_platform/openai.py +0 -260
  284. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_rag/__init__.py +0 -11
  285. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/ask_user.py +0 -54
  286. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/edit_file.py +0 -208
  287. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/execute_script.py +0 -179
  288. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/file_analyzer.py +0 -120
  289. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/generate_new_tool.py +0 -212
  290. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/read_code.py +0 -179
  291. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/registry.py +0 -917
  292. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_tools/rewrite_file.py +0 -191
  293. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_utils/config.py +0 -738
  294. jarvis_ai_assistant-0.3.31/src/jarvis/jarvis_utils/utils.py +0 -2016
  295. jarvis_ai_assistant-0.3.31/src/jarvis_ai_assistant.egg-info/PKG-INFO +0 -381
  296. jarvis_ai_assistant-0.3.31/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -142
  297. jarvis_ai_assistant-0.3.31/src/jarvis_ai_assistant.egg-info/requires.txt +0 -40
  298. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/LICENSE +0 -0
  299. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/MANIFEST.in +0 -0
  300. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/setup.cfg +0 -0
  301. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  302. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  303. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  304. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  305. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  306. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  307. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  308. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  309. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  310. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  311. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  312. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  313. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  314. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  315. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  316. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  317. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  318. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  319. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  320. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  321. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  322. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  323. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  324. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform/__init__.py +0 -0
  325. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  326. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  327. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_stats/__init__.py +0 -0
  328. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/__init__.py +0 -0
  329. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  330. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis/jarvis_utils/tag.py +0 -0
  331. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  332. {jarvis_ai_assistant-0.3.31 → jarvis_ai_assistant-1.0.9}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
@@ -0,0 +1,760 @@
1
+ Metadata-Version: 2.4
2
+ Name: jarvis-ai-assistant
3
+ Version: 1.0.9
4
+ Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
+ Home-page: https://github.com/skyfireitdiy/Jarvis
6
+ Author: skyfire
7
+ Author-email: skyfire <skyfireitdiy@hotmail.com>
8
+ License: MIT License
9
+
10
+ Copyright (c) 2025 skyfire
11
+
12
+ Permission is hereby granted, free of charge, to any person obtaining a copy
13
+ of this software and associated documentation files (the "Software"), to deal
14
+ in the Software without restriction, including without limitation the rights
15
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16
+ copies of the Software, and to permit persons to whom the Software is
17
+ furnished to do so, subject to the following conditions:
18
+
19
+ The above copyright notice and this permission notice shall be included in all
20
+ copies or substantial portions of the Software.
21
+
22
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28
+ SOFTWARE.
29
+ Project-URL: Homepage, https://github.com/skyfireitdiy/Jarvis
30
+ Keywords: jarvis,ai,assistant,tools,automation
31
+ Classifier: Development Status :: 3 - Alpha
32
+ Classifier: Intended Audience :: Developers
33
+ Classifier: License :: OSI Approved :: MIT License
34
+ Classifier: Operating System :: POSIX :: Linux
35
+ Classifier: Programming Language :: Python :: 3
36
+ Classifier: Programming Language :: Python :: 3.9
37
+ Classifier: Programming Language :: Python :: 3.10
38
+ Classifier: Programming Language :: Python :: 3.11
39
+ Classifier: Programming Language :: Python :: 3.12
40
+ Requires-Python: >=3.9,<3.13
41
+ Description-Content-Type: text/markdown
42
+ License-File: LICENSE
43
+ Requires-Dist: requests==2.32.3
44
+ Requires-Dist: colorama==0.4.6
45
+ Requires-Dist: prompt_toolkit==3.0.50
46
+ Requires-Dist: pygments==2.19.1
47
+ Requires-Dist: fuzzywuzzy==0.18.0
48
+ Requires-Dist: fastapi==0.115.12
49
+ Requires-Dist: uvicorn==0.33.0
50
+ Requires-Dist: rich==14.0.0
51
+ Requires-Dist: python-Levenshtein==0.25.1
52
+ Requires-Dist: tiktoken==0.7.0
53
+ Requires-Dist: pillow==10.2.0
54
+ Requires-Dist: openai==1.78.1
55
+ Requires-Dist: anthropic>=0.40.0
56
+ Requires-Dist: tabulate==0.9.0
57
+ Requires-Dist: pyte==0.8.2
58
+ Requires-Dist: pyyaml>=5.3.1
59
+ Requires-Dist: jsonnet>=0.20.0
60
+ Requires-Dist: ddgs==9.0.2
61
+ Requires-Dist: lxml==6.0.0
62
+ Requires-Dist: markdownify>=1.1.0
63
+ Requires-Dist: typer
64
+ Requires-Dist: pathspec
65
+ Requires-Dist: plotext==5.2.8
66
+ Requires-Dist: packaging>=24.2
67
+ Requires-Dist: tree-sitter
68
+ Requires-Dist: tree-sitter-python
69
+ Requires-Dist: tree-sitter-javascript
70
+ Requires-Dist: tree-sitter-typescript
71
+ Requires-Dist: tree-sitter-rust
72
+ Requires-Dist: tree-sitter-go
73
+ Requires-Dist: tree-sitter-java
74
+ Requires-Dist: tree-sitter-cpp
75
+ Requires-Dist: tree-sitter-c
76
+ Requires-Dist: tree-sitter-json
77
+ Requires-Dist: tree-sitter-yaml
78
+ Requires-Dist: tree-sitter-markdown
79
+ Requires-Dist: tree-sitter-html
80
+ Requires-Dist: tree-sitter-css
81
+ Requires-Dist: tree-sitter-bash
82
+ Requires-Dist: tree-sitter-ruby
83
+ Requires-Dist: tree-sitter-php
84
+ Requires-Dist: tree-sitter-sql
85
+ Provides-Extra: dev
86
+ Requires-Dist: pytest; extra == "dev"
87
+ Requires-Dist: ruff; extra == "dev"
88
+ Requires-Dist: mypy; extra == "dev"
89
+ Requires-Dist: build; extra == "dev"
90
+ Requires-Dist: twine; extra == "dev"
91
+ Provides-Extra: rag
92
+ Requires-Dist: langchain; extra == "rag"
93
+ Requires-Dist: langchain-community; extra == "rag"
94
+ Requires-Dist: langchain-huggingface; extra == "rag"
95
+ Requires-Dist: chromadb; extra == "rag"
96
+ Requires-Dist: diskcache; extra == "rag"
97
+ Requires-Dist: sentence-transformers==2.7.0; extra == "rag"
98
+ Requires-Dist: torch>=2.6; extra == "rag"
99
+ Requires-Dist: unstructured[md]; extra == "rag"
100
+ Requires-Dist: rank-bm25; extra == "rag"
101
+ Provides-Extra: clang16
102
+ Requires-Dist: clang==16.*; extra == "clang16"
103
+ Provides-Extra: clang17
104
+ Requires-Dist: clang==17.*; extra == "clang17"
105
+ Provides-Extra: clang18
106
+ Requires-Dist: clang==18.*; extra == "clang18"
107
+ Provides-Extra: clang19
108
+ Requires-Dist: clang==19.*; extra == "clang19"
109
+ Provides-Extra: clang20
110
+ Requires-Dist: clang==20.*; extra == "clang20"
111
+ Provides-Extra: clang21
112
+ Requires-Dist: clang==21.*; extra == "clang21"
113
+ Provides-Extra: tree-sitter-python
114
+ Requires-Dist: tree-sitter; extra == "tree-sitter-python"
115
+ Requires-Dist: tree-sitter-python; extra == "tree-sitter-python"
116
+ Provides-Extra: tree-sitter-javascript
117
+ Requires-Dist: tree-sitter; extra == "tree-sitter-javascript"
118
+ Requires-Dist: tree-sitter-javascript; extra == "tree-sitter-javascript"
119
+ Provides-Extra: tree-sitter-typescript
120
+ Requires-Dist: tree-sitter; extra == "tree-sitter-typescript"
121
+ Requires-Dist: tree-sitter-typescript; extra == "tree-sitter-typescript"
122
+ Provides-Extra: tree-sitter-rust
123
+ Requires-Dist: tree-sitter; extra == "tree-sitter-rust"
124
+ Requires-Dist: tree-sitter-rust; extra == "tree-sitter-rust"
125
+ Provides-Extra: tree-sitter-go
126
+ Requires-Dist: tree-sitter; extra == "tree-sitter-go"
127
+ Requires-Dist: tree-sitter-go; extra == "tree-sitter-go"
128
+ Provides-Extra: tree-sitter-java
129
+ Requires-Dist: tree-sitter; extra == "tree-sitter-java"
130
+ Requires-Dist: tree-sitter-java; extra == "tree-sitter-java"
131
+ Provides-Extra: tree-sitter-cpp
132
+ Requires-Dist: tree-sitter; extra == "tree-sitter-cpp"
133
+ Requires-Dist: tree-sitter-cpp; extra == "tree-sitter-cpp"
134
+ Provides-Extra: tree-sitter-c
135
+ Requires-Dist: tree-sitter; extra == "tree-sitter-c"
136
+ Requires-Dist: tree-sitter-c; extra == "tree-sitter-c"
137
+ Provides-Extra: tree-sitter-json
138
+ Requires-Dist: tree-sitter; extra == "tree-sitter-json"
139
+ Requires-Dist: tree-sitter-json; extra == "tree-sitter-json"
140
+ Provides-Extra: tree-sitter-yaml
141
+ Requires-Dist: tree-sitter; extra == "tree-sitter-yaml"
142
+ Requires-Dist: tree-sitter-yaml; extra == "tree-sitter-yaml"
143
+ Provides-Extra: tree-sitter-markdown
144
+ Requires-Dist: tree-sitter; extra == "tree-sitter-markdown"
145
+ Requires-Dist: tree-sitter-markdown; extra == "tree-sitter-markdown"
146
+ Provides-Extra: tree-sitter-html
147
+ Requires-Dist: tree-sitter; extra == "tree-sitter-html"
148
+ Requires-Dist: tree-sitter-html; extra == "tree-sitter-html"
149
+ Provides-Extra: tree-sitter-css
150
+ Requires-Dist: tree-sitter; extra == "tree-sitter-css"
151
+ Requires-Dist: tree-sitter-css; extra == "tree-sitter-css"
152
+ Provides-Extra: tree-sitter-bash
153
+ Requires-Dist: tree-sitter; extra == "tree-sitter-bash"
154
+ Requires-Dist: tree-sitter-bash; extra == "tree-sitter-bash"
155
+ Provides-Extra: tree-sitter-ruby
156
+ Requires-Dist: tree-sitter; extra == "tree-sitter-ruby"
157
+ Requires-Dist: tree-sitter-ruby; extra == "tree-sitter-ruby"
158
+ Provides-Extra: tree-sitter-php
159
+ Requires-Dist: tree-sitter; extra == "tree-sitter-php"
160
+ Requires-Dist: tree-sitter-php; extra == "tree-sitter-php"
161
+ Provides-Extra: tree-sitter-sql
162
+ Requires-Dist: tree-sitter; extra == "tree-sitter-sql"
163
+ Requires-Dist: tree-sitter-sql; extra == "tree-sitter-sql"
164
+ Provides-Extra: tree-sitter-all
165
+ Requires-Dist: tree-sitter; extra == "tree-sitter-all"
166
+ Requires-Dist: tree-sitter-python; extra == "tree-sitter-all"
167
+ Requires-Dist: tree-sitter-javascript; extra == "tree-sitter-all"
168
+ Requires-Dist: tree-sitter-typescript; extra == "tree-sitter-all"
169
+ Requires-Dist: tree-sitter-rust; extra == "tree-sitter-all"
170
+ Requires-Dist: tree-sitter-go; extra == "tree-sitter-all"
171
+ Requires-Dist: tree-sitter-java; extra == "tree-sitter-all"
172
+ Requires-Dist: tree-sitter-cpp; extra == "tree-sitter-all"
173
+ Requires-Dist: tree-sitter-c; extra == "tree-sitter-all"
174
+ Requires-Dist: tree-sitter-json; extra == "tree-sitter-all"
175
+ Requires-Dist: tree-sitter-yaml; extra == "tree-sitter-all"
176
+ Requires-Dist: tree-sitter-markdown; extra == "tree-sitter-all"
177
+ Requires-Dist: tree-sitter-html; extra == "tree-sitter-all"
178
+ Requires-Dist: tree-sitter-css; extra == "tree-sitter-all"
179
+ Requires-Dist: tree-sitter-bash; extra == "tree-sitter-all"
180
+ Requires-Dist: tree-sitter-ruby; extra == "tree-sitter-all"
181
+ Requires-Dist: tree-sitter-php; extra == "tree-sitter-all"
182
+ Requires-Dist: tree-sitter-sql; extra == "tree-sitter-all"
183
+ Dynamic: author
184
+ Dynamic: home-page
185
+ Dynamic: license-file
186
+ Dynamic: requires-python
187
+
188
+ # 🤖 Jarvis AI 助手
189
+
190
+ <p align="center">
191
+ <img src="docs/images/jarvis-logo.png" alt="Jarvis Logo" width="200"/>
192
+ </p>
193
+ <div align="center">
194
+
195
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
196
+
197
+ _您的智能开发和系统交互助手_
198
+
199
+ [快速开始](#quick-start) • [核心功能](#core-features) • [配置说明](#configuration) • [Jarvis Book](#jarvis-book) • [Wiki文档](docs/jarvis_book/1.项目介绍.md) • [贡献指南](#contributing) • [许可证](#license)
200
+
201
+ </div>
202
+
203
+ ---
204
+
205
+ ## 🎯 定位与优势
206
+
207
+ Jarvis 的定位是**AI应用开发SDK**,提供强大而灵活的基础组件,帮助开发者快速构建专业的AI应用。与传统的`workflow`形式Agent平台(如Dify)不同,Jarvis以Python SDK的形式提供,强调可编程性和可扩展性,让开发者能够自由定制AI应用的行为和逻辑。
208
+
209
+ ### Jarvis 的核心优势
210
+
211
+ 1. **强大而灵活的基础组件**: 提供 `Agent` 和 `CodeAgent` 等精心设计的基础组件,开发者可以快速基于这些组件构建专业的AI应用,无需从零开始。
212
+ 2. **高度可编程的SDK**: 以纯Python SDK形式提供,开发者可以自由组合各种能力,编写符合自己业务逻辑的AI应用,而非受限于固定的工作流。
213
+ 3. **开箱即用的工具生态**: 内置丰富的工具集(代码分析、文件操作、命令执行等),开发者可以直接使用,也可以轻松扩展自定义工具。
214
+
215
+ ### 💡 Jarvis 的价值:工作流对比
216
+
217
+ #### 示例一:开发代码分析Agent
218
+
219
+ **传统开发方式 (没有 Jarvis SDK):**
220
+
221
+ 1. **设计Agent架构**: 从零开始设计Agent的决策流程、工具调用机制、上下文管理等核心模块。
222
+ 2. **实现工具系统**: 手动实现工具注册、参数解析、结果处理等基础设施。
223
+ 3. **集成LLM**: 编写代码调用各种大模型API,处理流式输出、错误重试等复杂逻辑。
224
+ 4. **开发特定能力**: 针对代码分析需求,实现代码解析、符号查找、编辑操作等专门功能。
225
+ 5. **测试与调试**: 反复测试Agent行为,修复各种边界情况和错误场景。
226
+
227
+ > 这个过程需要大量时间和精力投入在基础设施开发上,而非核心业务逻辑。
228
+
229
+ **使用 Jarvis SDK 开发:**
230
+
231
+ ```python
232
+ from jarvis import CodeAgent
233
+
234
+ # 创建CodeAgent实例,内置代码分析、编辑、执行等能力
235
+ agent = CodeAgent()
236
+
237
+ # 让Agent自主完成任务,自动使用内置工具
238
+ result = agent.run('为 user/service.py 添加用户profile接口')
239
+
240
+ # CodeAgent会自动:
241
+ # 1. 分析代码结构,定位相关文件
242
+ # 2. 使用read_code读取文件内容
243
+ # 3. 使用edit_file精确修改代码
244
+ # 4. 使用execute_script运行测试
245
+ # 5. 验证修改是否成功
246
+ ```
247
+
248
+ > 通过 Jarvis SDK,开发者只需几行代码就能构建功能完善的AI应用,将精力集中在**业务逻辑和用户体验**等高价值活动上,而非重复造轮子。
249
+
250
+ #### 示例二:开发文档生成Agent
251
+
252
+ 基于Jarvis SDK,您可以轻松构建文档生成Agent,自动维护项目文档。
253
+
254
+ ```python
255
+ from jarvis import Agent
256
+
257
+ # 创建文档生成Agent,通过system_prompt定制行为
258
+ agent = Agent(
259
+ system_prompt="""你是一个专业的文档维护助手。
260
+ 能够分析现有文档,并根据指令改进文档内容。
261
+ """,
262
+ name="DocGenerator"
263
+ )
264
+
265
+ # 让Agent自主完成文档维护任务
266
+ agent.run('分析README.md,补充用户群体和应用场景信息')
267
+
268
+ # 继续迭代文档
269
+ agent.run('在README中增加一个工作流对比示例')
270
+
271
+ # Agent会自动:
272
+ # 1. 使用read_code读取文档内容
273
+ # 2. 分析现有结构和风格
274
+ # 3. 使用edit_file精确修改文档
275
+ # 4. 确保格式和风格一致
276
+ ```
277
+
278
+ > 通过简单的SDK调用,就能构建出功能完善的文档生成Agent,将文档维护从手动操作转为自动化流程。
279
+
280
+ ### Vibe Working: 一种更直觉的工作流
281
+
282
+ Jarvis 的核心理念与一种新兴的人机协作模式 **"Vibe Working"** (氛围式工作)不谋而合。这个概念源于AI研究者Andrej Karpathy,指的是利用大语言模型(LLM),将人类头脑中模糊、直觉性的想法(即“Vibe”)高效转化为具体的、结构化的成果。
283
+
284
+ 这不再是传统的“指令-执行”模式,而是一种**对话式、迭代式**的共同创造过程。
285
+
286
+ - **从一个“感觉”开始**: 传统的自动化需要精确的输入和规则。而使用 Jarvis,你可以从一个模糊的目标开始,比如 `jca "给我写个脚本,监控这个网站的变化"` 或者 `jca "重构 'user' 模块,让它看起来更清爽"`。你提供的是方向和“感觉”,而不是详细的规格书。
287
+
288
+ - **迭代中逼近完美**: Jarvis (或其背后的LLM) 会提供一个初步的实现。这个版本可能不完美,但它是一个坚实的起点。接下来,你通过反馈来指导它,比如 `“这个地方的逻辑不对,应该先检查A再处理B”` 或者 `“变量名能再语义化一点吗?”`。通过这种快速的反馈循环,AI的产出将逐步逼近你的真实意图。
289
+
290
+ - **人与AI的角色转变**:
291
+ - **你 (人类)**: 扮演**创意总监、品味判断者和方向引领者**。你负责提供愿景、经验和高层次的判断力,确保最终结果的质量和方向。
292
+ - **Jarvis (AI)**: 扮演**强大的执行伙伴和灵感催化剂**。它负责处理所有繁重、重复和技术性的细节,并能提供意想不到的解决方案,激发你的新想法。
293
+
294
+ Jarvis 正是为这种工作流而设计的工具。它通过无缝的命令行集成和强大的本地交互能力,将 "Vibe Working" 从一个抽象概念,变为了开发者触手可及的日常生产力工具,让你能更专注于**高价值的创造性思考**,而非琐碎的实现细节。
295
+
296
+ ### 👥 目标用户
297
+
298
+ **谁适合使用 Jarvis?**
299
+
300
+ - **个人开发者和极客**: 希望通过AI提升个人开发、学习和探索效率的用户。
301
+ - **需要处理碎片化任务的工程师**: 面对各种一次性、非标准化的技术任务,例如快速编写脚本、调试代码、搭建新环境等。
302
+ - **AI应用探索者**: 希望有一个灵活的本地框架来实验和集成不同的大语言模型和工具。
303
+
304
+ **谁可能不适合?**
305
+
306
+ - **寻求固定工作流自动化的人**: 如果您的需求是高度固定和重复的,例如“每天定时抓取数据并生成报告”,那么编写一个专门的、功能单一的脚本可能是更直接、更高效的解决方案。Jarvis 更擅长处理多变和探索性的任务。
307
+ - **企业级团队协作者**: Jarvis 被设计为个人工具,不包含团队管理、权限控制等面向企业级协作的功能。
308
+
309
+ 总之,Jarvis 是为每一位开发者量身打造的个人助手,而非用于团队协作的集中式平台。
310
+
311
+ ---
312
+
313
+ ## 🚀 快速开始 <a id="quick-start"></a>
314
+
315
+ ### 系统要求
316
+
317
+ - **操作系统**: Jarvis 的许多核心工具依赖于Linux环境,因此目前主要支持在 **Linux** 系统下使用。
318
+ - **Windows用户**: 虽然未经原生测试,但 Windows 10/11 用户可以通过 **WSL (Windows Subsystem for Linux)** 来完整地体验 Jarvis 的所有功能。
319
+ - **Python版本**: 需要 Python 3.9 或更高版本(支持 3.9-3.12)。
320
+ - **Docker**(可选): 支持通过 Docker 镜像使用,无需本地安装 Python/Rust 环境。
321
+
322
+ ### 安装
323
+
324
+ #### 一键安装 (推荐)
325
+
326
+ 只需一行命令即可完成所有安装和配置:
327
+
328
+ **Linux/macOS:**
329
+
330
+ ```bash
331
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/scripts/install.sh)"
332
+ ```
333
+
334
+ **Windows (PowerShell):**
335
+
336
+ ```powershell
337
+ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/scripts/install.ps1'))
338
+ ```
339
+
340
+ > 该脚本会自动检测Python环境、克隆项目、安装依赖并设置好路径。
341
+
342
+ #### 手动安装
343
+
344
+ ```bash
345
+ # 1. 克隆仓库
346
+ git clone https://github.com/skyfireitdiy/Jarvis
347
+
348
+ # 2. 进入项目目录
349
+ cd Jarvis
350
+
351
+ # 3. 安装项目为可编辑模式
352
+ pip3 install -e .
353
+ ```
354
+
355
+ > **提示**: 使用 `-e .` (可编辑模式) 安装后,您对源码的任何修改都会立刻生效,非常适合开发者。
356
+
357
+ 或者从PyPI安装 (可能不是最新版):
358
+
359
+ ```bash
360
+ pip3 install jarvis-ai-assistant
361
+ ```
362
+
363
+ **通过 uv 安装 (推荐)**
364
+
365
+ ```bash
366
+ # 1. 安装 uv (如果未安装)
367
+ curl -LsSf https://astral.sh/uv/install.sh | sh
368
+
369
+ # 2. 克隆仓库
370
+ git clone https://github.com/skyfireitdiy/Jarvis
371
+
372
+ # 3. 进入项目目录
373
+ cd Jarvis
374
+
375
+ # 4. 创建虚拟环境并安装
376
+ uv venv
377
+
378
+ # 安装基础功能
379
+ uv pip install .
380
+
381
+ # 可选: 安装RAG功能(包含PyTorch等较重的依赖)
382
+ # uv pip install .[rag]
383
+ ```
384
+
385
+ > **提示**: 安装完成后,建议将虚拟环境激活命令添加到您的 shell 配置文件中:
386
+ >
387
+ > - Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
388
+ > - Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
389
+
390
+ #### Docker 镜像安装 (推荐用于隔离环境)
391
+
392
+ 使用 Docker 镜像可以避免本地环境配置,所有依赖都已预装。镜像已发布到 GitHub Container Registry (GHCR),**公开可用,无需登录**。
393
+
394
+ **从 GitHub Container Registry 拉取镜像:**
395
+
396
+ ```bash
397
+ # 拉取最新版本
398
+ docker pull ghcr.io/skyfireitdiy/jarvis:latest
399
+
400
+ # 或拉取特定版本(例如 v1.0.0)
401
+ docker pull ghcr.io/skyfireitdiy/jarvis:v1.0.0
402
+ ```
403
+
404
+ > **提示**:
405
+ >
406
+ > - 镜像默认公开,无需登录即可拉取
407
+ > - 每次发布新版本时,会自动生成多个标签:`latest`、`v1.0.0`、`1.0`、`1` 等
408
+ > - 建议使用 `latest` 标签获取最新版本
409
+
410
+ **使用 Docker Compose(推荐):**
411
+
412
+ Docker Compose 配置默认使用**非 root 用户**(jarvis 用户,UID 1000),避免文件权限问题:
413
+
414
+ ```bash
415
+ # 运行容器(使用预构建镜像,无需本地构建)
416
+ docker-compose run --rm jarvis
417
+ ```
418
+
419
+ > **说明**:
420
+ >
421
+ > - 容器使用 jarvis 用户(UID 1000)运行,GID 可通过环境变量 `GID` 设置(默认 1000),建议设置为当前用户的组 ID 以避免文件权限问题
422
+ > - 容器内创建的文件将属于 jarvis 用户,如果 GID 匹配宿主机组,外部可以直接访问,无需调整权限
423
+ > - 配置文件(`.jarvis` 和 `.gitconfig`)会自动挂载到容器内用户的主目录
424
+
425
+ **直接使用 Docker 命令:**
426
+
427
+ **使用非 root 用户(推荐,避免权限问题):**
428
+
429
+ ```bash
430
+ # 使用当前用户运行(推荐)
431
+ docker run -it --rm \
432
+ --user "$(id -u):$(id -g)" \
433
+ -v $(pwd):/workspace \
434
+ -v $HOME/.jarvis:/home/jarvis/.jarvis \
435
+ -v $HOME/.gitconfig:/home/jarvis/.gitconfig:ro \
436
+ -w /workspace \
437
+ ghcr.io/skyfireitdiy/jarvis:latest
438
+ ```
439
+
440
+ **使用 root 用户(简单但不推荐,可能产生权限问题):**
441
+
442
+ ```bash
443
+ # 基本运行(root 用户)
444
+ docker run -it --rm ghcr.io/skyfireitdiy/jarvis:latest
445
+
446
+ # 挂载当前目录到容器(root 用户)
447
+ docker run -it --rm \
448
+ -v $(pwd):/workspace \
449
+ -v $HOME/.jarvis:/root/.jarvis \
450
+ -v $HOME/.gitconfig:/root/.gitconfig:ro \
451
+ -w /workspace \
452
+ ghcr.io/skyfireitdiy/jarvis:latest
453
+ ```
454
+
455
+ > **注意**:使用 root 用户时,容器内创建的文件将属于 root,在宿主机上可能需要使用 `sudo` 或调整文件权限。
456
+
457
+ **本地构建镜像(可选):**
458
+
459
+ ```bash
460
+ # 克隆仓库
461
+ git clone https://github.com/skyfireitdiy/Jarvis
462
+ cd Jarvis
463
+
464
+ # 构建镜像
465
+ docker build -t jarvis:latest .
466
+
467
+ # 运行容器(非 root 用户,推荐)
468
+ docker run -it --rm \
469
+ --user "$(id -u):$(id -g)" \
470
+ -v $(pwd):/workspace \
471
+ -v $HOME/.jarvis:/home/jarvis/.jarvis \
472
+ -v $HOME/.gitconfig:/home/jarvis/.gitconfig:ro \
473
+ -w /workspace \
474
+ jarvis:latest
475
+
476
+ # 或使用 root 用户
477
+ docker run -it --rm \
478
+ -v $(pwd):/workspace \
479
+ -v $HOME/.jarvis:/root/.jarvis \
480
+ -v $HOME/.gitconfig:/root/.gitconfig:ro \
481
+ -w /workspace \
482
+ jarvis:latest
483
+ ```
484
+
485
+ > **提示**:
486
+ >
487
+ > - `$(pwd)` 可以替换为其他工程目录
488
+ > - `.gitconfig` 文件可以保留 Git 用户信息,方便在容器内使用 Git
489
+ > - `.jarvis` 文件可以保留主机 Jarvis 配置信息,方便在容器内使用 Jarvis
490
+ > - Docker 镜像已预装所有工具(Python 3.12、Rust、Clang、Fish shell 等),开箱即用
491
+ > - 容器启动后会自动进入 fish shell,虚拟环境已激活
492
+ > - 使用 `-v` 挂载目录可以方便地在容器内处理本地代码
493
+ > - **推荐使用非 root 用户**,避免文件权限问题,容器内创建的文件可直接在宿主机访问
494
+ > - 使用 Docker Compose 是最简单的方式,自动处理用户权限配置和文件挂载
495
+ > - 推荐直接使用 GHCR 上的预构建镜像,无需本地构建
496
+
497
+ ### 基本使用
498
+
499
+ Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
500
+
501
+ | 命令 | 快捷方式 | 功能描述 |
502
+ | ------------------------- | -------- | ------------------------------------------------------------------------ |
503
+ | `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
504
+ | `jarvis-agent` | `ja` | AI代理基础功能,处理会话和任务 |
505
+ | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理,支持智能符号分析 |
506
+ | `jarvis-code-review` | `jcr` | 智能代码审查工具 |
507
+ | `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
508
+ | `jarvis-git-squash` | `jgs` | Git提交历史整理工具 |
509
+ | `jarvis-platform-manager` | `jpm` | 管理和测试不同的大语言模型平台 |
510
+ | `jarvis-multi-agent` | `jma` | 多智能体协作系统 |
511
+ | `jarvis-tool` | `jt` | 工具管理与调用系统 |
512
+ | `jarvis-methodology` | `jm` | 方法论知识库管理 |
513
+ | `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
514
+ | `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
515
+ | `jarvis-stats` | `jst` | 通用统计模块,支持记录和可视化任意指标数据 |
516
+ | `jarvis-memory-organizer` | `jmo` | 记忆管理工具,支持整理、合并、导入导出记忆 |
517
+ | `jarvis-sec` | `jsec` | 安全分析套件,结合启发式扫描和 AI 深度验证,支持 C/C++ 和 Rust 语言 |
518
+ | `jarvis-c2rust` | `jc2r` | C→Rust 迁移套件,支持渐进式迁移、断点续跑和智能库替代 |
519
+ | `jarvis-config` | `jcfg` | 配置管理工具,基于 JSON Schema 动态生成配置 Web 页面,提供可视化配置界面 |
520
+
521
+ 更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
522
+
523
+ ### SDK 快速开始
524
+
525
+ Jarvis SDK 可以轻松集成到您的 Python 项目中。以下是一些快速上手的示例:
526
+
527
+ #### 使用 CodeAgent 处理代码任务
528
+
529
+ ```python
530
+ from jarvis import CodeAgent
531
+
532
+ # 创建 CodeAgent
533
+ agent = CodeAgent()
534
+
535
+ # 执行代码修改任务
536
+ agent.run('修复 user/service.py 中的登录验证 bug')
537
+ ```
538
+
539
+ #### 使用 Agent 构建专用应用
540
+
541
+ ```python
542
+ from jarvis import Agent
543
+
544
+ # 创建定制化的 Agent
545
+ agent = Agent(
546
+ system_prompt="你是一个数据分析师,专注于数据清洗和可视化。",
547
+ name="DataAnalyst"
548
+ )
549
+
550
+ # 执行数据分析任务
551
+ agent.run('分析 sales.csv 数据,生成月度销售趋势图')
552
+ ```
553
+
554
+ #### 在 Python 脚本中使用
555
+
556
+ ```python
557
+ from jarvis import CodeAgent
558
+ import os
559
+
560
+ # 设置工作目录
561
+ os.chdir('/path/to/your/project')
562
+
563
+ # 创建并运行 Agent
564
+ agent = CodeAgent()
565
+ result = agent.run('优化代码性能,减少数据库查询次数')
566
+
567
+ print(f"任务完成: {result}")
568
+ ```
569
+
570
+ > 💡 更多 SDK 使用示例和高级用法,请参阅 [开发者文档](docs/jarvis_book/)
571
+
572
+ ---
573
+
574
+ ## 🌟 核心功能 <a id="core-features"></a>
575
+
576
+ Jarvis SDK 提供强大的基础组件和可扩展能力,帮助开发者快速构建专业的AI应用。
577
+
578
+ ### 基础组件
579
+
580
+ - **Agent (通用AI代理)**: 提供完整的任务执行能力,支持工具调用、记忆管理、任务规划等核心功能。开发者只需通过 system_prompt 定义行为,即可快速定制专用Agent。
581
+ - **CodeAgent (代码专用代理)**: 继承自 Agent,专为代码任务优化。内置代码分析、符号查找、精确编辑、构建验证等专业能力,大幅简化代码类AI应用的开发。
582
+
583
+ ### 工具系统
584
+
585
+ - **丰富内置工具**: SDK内置 `read_code`、`edit_file`、`execute_script` 等30+工具,覆盖文件操作、代码分析、命令执行等常见场景。
586
+ - **轻松扩展自定义工具**: 通过简单接口即可添加自定义工具,无缝集成到Agent的工具链中,实现个性化能力扩展。
587
+
588
+ ### 能力模块
589
+
590
+ - **记忆系统**: 三层记忆架构(短期、项目长期、全局长期),支持知识持久化和智能检索,让Agent能够记住并复用关键信息。
591
+ - **RAG增强**: 内置RAG功能,可将本地文档作为知识库,实现精准的上下文增强和问答。
592
+ - **方法论系统**: 将成功经验沉淀为可复用的方法论,支持本地和中心化共享,提升任务执行效率。
593
+
594
+ ### 可扩展性
595
+
596
+ - **多模型支持**: 支持腾讯元宝、Kimi、OpenAI等多种模型平台,可根据需求灵活切换。
597
+ - **自定义模型平台**: 提供统一的平台接口,开发者可轻松集成新的LLM提供商。
598
+
599
+ ### 专业套件
600
+
601
+ - **安全分析**: 内置安全扫描套件(jsec),支持启发式扫描和AI深度验证,适用于C/C++和Rust语言。
602
+ - **代码迁移**: C→Rust迁移套件(jc2r),支持渐进式迁移和断点续跑。
603
+ - **代码审查**: 智能代码审查工具,自动化检查代码质量和潜在问题。
604
+
605
+ ---
606
+
607
+ ## ⚙️ 配置说明 <a id="configuration"></a>
608
+
609
+ Jarvis 的主要配置文件位于 `~/.jarvis/config.yaml`。您可以在此文件中配置模型、平台和其他行为。
610
+
611
+ **首次运行配置:**
612
+
613
+ 首次运行任何 Jarvis 命令时,系统会检测是否缺少配置文件。如果未找到配置,Jarvis 将自动启动交互式配置向导,引导您完成所有必要设置。
614
+
615
+ **基本配置示例(推荐使用新的配置方式):**
616
+
617
+ ```yaml
618
+ # yaml-language-server: $schema=https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/docs/schema/config.schema.json
619
+
620
+ # ====== 基础配置 ======
621
+ # 设置默认使用的模型组
622
+ llm_group: default
623
+
624
+ # ====== 模型组配置 ======
625
+ # 可以定义多个模型组,通过llm_group切换
626
+ llm_groups:
627
+ default: # 默认模型组
628
+ normal_llm: gpt-5 # 引用下面llms中定义的模型
629
+ # 可选配置廉价模型和智能模型
630
+ # cheap_llm: gpt-3.5-turbo
631
+ # smart_llm: gpt-5
632
+
633
+ # ====== 模型定义 ======
634
+ llms:
635
+ gpt-5:
636
+ platform: openai # 平台类型
637
+ model: gpt-5 # 模型名称
638
+ max_input_token_count: 128000 # 模型最大输入token数
639
+
640
+ # 模型特定配置 (llm_config)
641
+ llm_config:
642
+ openai_api_key: "your-api-key-here" # 替换为你的API密钥
643
+ openai_api_base: "https://api.openai.com/v1" # API基础地址,可用于代理
644
+ openai_extra_headers: '{"X-Source": "jarvis"}' # 额外的HTTP头(可选)
645
+
646
+ # ====== 环境变量配置 ======
647
+ # 旧版配置方式(仍支持,但推荐使用上面的 llm_config)
648
+ ENV:
649
+ # 腾讯元宝
650
+ YUANBAO_COOKIES: "在此处粘贴您的元宝Cookies"
651
+
652
+ # Kimi
653
+ KIMI_API_KEY: ""
654
+
655
+ # 通义千问
656
+ TONGYI_COOKIES: ""
657
+
658
+ # OpenAI
659
+ OPENAI_API_KEY: ""
660
+ OPENAI_API_BASE: ""
661
+ ```
662
+
663
+ > **注意**: 新版本推荐使用 `llm_groups` 和 `llms` 配置方式,它提供了更灵活的模型管理能力。`ENV` 配置方式仍然支持,但建议迁移到新的配置方式。
664
+
665
+ 提示:错误回溯输出控制
666
+
667
+ - 默认情况下,当 PrettyOutput 打印错误信息(OutputType.ERROR)时,不会自动打印回溯调用链。
668
+ - 如需全局启用错误回溯,请在配置中设置:
669
+
670
+ ```yaml
671
+ print_error_traceback: true
672
+ ```
673
+
674
+ - 也可以在单次调用时通过传入 `traceback=True` 临时开启回溯打印。
675
+
676
+ 提示:AI 工具筛选阈值
677
+
678
+ - 当可用工具数量过多时,可能会干扰模型的决策。Jarvis 支持在可用工具数量超过阈值时,先让 AI 自动筛选相关工具再启动,以专注于本次任务。
679
+ - 默认阈值为 30,可在配置中调整:
680
+
681
+ ```yaml
682
+ # ~/.jarvis/config.yaml
683
+ tool_filter_threshold: 30
684
+ ```
685
+
686
+ Jarvis 支持多种平台,包括 **Kimi**, **通义千问**, **OpenAI** 等。详细的配置选项、模型组设置以及所有可用参数,请参阅 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
687
+
688
+ > **模型推荐**: 目前效果较好的模型是 `claude-opus-4-20250514`,可以通过国内代理商购买,例如 [FoxiAI](https://foxi-ai.top)。
689
+
690
+ ---
691
+
692
+ ## 🛠️ 扩展开发 <a id="extensions"></a>
693
+
694
+ Jarvis SDK 提供强大的可扩展能力,让您能够快速开发专业的AI应用。
695
+
696
+ ### 快速开发专业Agent
697
+
698
+ 基于 `Agent` 和 `CodeAgent` 基础组件,您可以快速构建各种专业Agent:
699
+
700
+ - **文档助手**: 基于 Agent 定制 system_prompt,实现文档生成、维护和优化
701
+ - **代码分析器**: 基于 CodeAgent,利用内置代码分析能力,快速构建代码审查、重构工具
702
+ - **自动化测试**: 集成测试工具,自动化执行测试用例并分析结果
703
+ - **数据处理**: 扩展数据处理工具,实现自动化数据清洗、转换和分析
704
+
705
+ ### 扩展能力
706
+
707
+ - **自定义工具**: 在 `~/.jarvis/tools/` 目录下创建新的工具实现,无缝集成到Agent
708
+ - **集成新LLM平台**: 在 `~/.jarvis/platforms/` 目录下添加新的平台适配器
709
+ - **定义MCP**: 通过配置文件集成外部或自定义的命令协议
710
+
711
+ 有关扩展开发的详细指南和[**技术细节**](docs/technical_documentation.md),请访问我们的 [**开发者文档**](docs/jarvis_book/5.功能扩展.md)。
712
+
713
+ ---
714
+
715
+ ## 📖 Jarvis Book <a id="jarvis-book"></a>
716
+
717
+ 欢迎阅读 Jarvis 的官方文档,这本开源书籍旨在为您提供从入门到精通的全方位指南。
718
+
719
+ - **[第一章:项目介绍](docs/jarvis_book/1.项目介绍.md)**
720
+ - **[第二章:快速开始](docs/jarvis_book/2.快速开始.md)**
721
+ - **[第三章:核心概念与架构](docs/jarvis_book/3.核心概念与架构.md)**
722
+ - **[第四章:使用指南](docs/jarvis_book/4.使用指南.md)**
723
+ - **[第五章:功能扩展](docs/jarvis_book/5.功能扩展.md)**
724
+ - **[第六章:高级主题](docs/jarvis_book/6.高级主题.md)**
725
+ - **[第七章:参与贡献](docs/jarvis_book/7.参与贡献.md)**
726
+ - **[第八章:常见问题](docs/jarvis_book/8.常见问题.md)**
727
+ - **[第九章:附录](docs/jarvis_book/9.附录.md)**
728
+
729
+ ---
730
+
731
+ ## 🤝 贡献指南 <a id="contributing"></a>
732
+
733
+ 我们欢迎任何形式的贡献!
734
+
735
+ 1. Fork 本仓库
736
+ 2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
737
+ 3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
738
+ 4. 推送到分支 (`git push origin feature/AmazingFeature`)
739
+ 5. 开启一个 Pull Request
740
+
741
+ ---
742
+
743
+ ## ⚠️ 免责声明 <a id="disclaimer"></a>
744
+
745
+ - **模型使用风险**: 频繁使用通过非官方API(如腾讯元宝、Kimi、通义千问等)接入的模型可能会导致您的账户被平台封禁。请合理使用,并自行承担相应风险。
746
+ - **命令执行风险**: Jarvis具备执行系统命令的能力。请确保您了解将要执行的命令,并避免输入可能导致系统风险的指令。为了增强安全性,您可以在配置文件中启用工具执行确认(`execute_tool_confirm: true`),以便在执行每个工具前进行手动确认。
747
+
748
+ ---
749
+
750
+ ## 📄 许可证 <a id="license"></a>
751
+
752
+ 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
753
+
754
+ ---
755
+
756
+ <div align="center">
757
+ 由 Jarvis 团队用 ❤️ 制作
758
+ </div>
759
+
760
+ ![Jarvis技术支持群](docs/images/wechat.png)