jarvis-ai-assistant 0.7.0__py3-none-any.whl → 0.7.6__py3-none-any.whl

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 (159) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +243 -139
  3. jarvis/jarvis_agent/agent_manager.py +5 -10
  4. jarvis/jarvis_agent/builtin_input_handler.py +2 -6
  5. jarvis/jarvis_agent/config_editor.py +2 -7
  6. jarvis/jarvis_agent/event_bus.py +82 -12
  7. jarvis/jarvis_agent/file_context_handler.py +265 -15
  8. jarvis/jarvis_agent/file_methodology_manager.py +3 -4
  9. jarvis/jarvis_agent/jarvis.py +113 -98
  10. jarvis/jarvis_agent/language_extractors/__init__.py +57 -0
  11. jarvis/jarvis_agent/language_extractors/c_extractor.py +21 -0
  12. jarvis/jarvis_agent/language_extractors/cpp_extractor.py +21 -0
  13. jarvis/jarvis_agent/language_extractors/go_extractor.py +21 -0
  14. jarvis/jarvis_agent/language_extractors/java_extractor.py +84 -0
  15. jarvis/jarvis_agent/language_extractors/javascript_extractor.py +79 -0
  16. jarvis/jarvis_agent/language_extractors/python_extractor.py +21 -0
  17. jarvis/jarvis_agent/language_extractors/rust_extractor.py +21 -0
  18. jarvis/jarvis_agent/language_extractors/typescript_extractor.py +84 -0
  19. jarvis/jarvis_agent/language_support_info.py +486 -0
  20. jarvis/jarvis_agent/main.py +6 -12
  21. jarvis/jarvis_agent/memory_manager.py +7 -16
  22. jarvis/jarvis_agent/methodology_share_manager.py +10 -16
  23. jarvis/jarvis_agent/prompt_manager.py +1 -1
  24. jarvis/jarvis_agent/prompts.py +193 -171
  25. jarvis/jarvis_agent/protocols.py +8 -12
  26. jarvis/jarvis_agent/run_loop.py +77 -14
  27. jarvis/jarvis_agent/session_manager.py +2 -3
  28. jarvis/jarvis_agent/share_manager.py +12 -21
  29. jarvis/jarvis_agent/shell_input_handler.py +1 -2
  30. jarvis/jarvis_agent/task_analyzer.py +26 -4
  31. jarvis/jarvis_agent/task_manager.py +11 -27
  32. jarvis/jarvis_agent/tool_executor.py +2 -3
  33. jarvis/jarvis_agent/tool_share_manager.py +12 -24
  34. jarvis/jarvis_agent/web_server.py +55 -20
  35. jarvis/jarvis_c2rust/__init__.py +5 -5
  36. jarvis/jarvis_c2rust/cli.py +461 -499
  37. jarvis/jarvis_c2rust/collector.py +45 -53
  38. jarvis/jarvis_c2rust/constants.py +26 -0
  39. jarvis/jarvis_c2rust/library_replacer.py +264 -132
  40. jarvis/jarvis_c2rust/llm_module_agent.py +162 -190
  41. jarvis/jarvis_c2rust/loaders.py +207 -0
  42. jarvis/jarvis_c2rust/models.py +28 -0
  43. jarvis/jarvis_c2rust/optimizer.py +1592 -395
  44. jarvis/jarvis_c2rust/transpiler.py +1722 -1064
  45. jarvis/jarvis_c2rust/utils.py +385 -0
  46. jarvis/jarvis_code_agent/build_validation_config.py +2 -3
  47. jarvis/jarvis_code_agent/code_agent.py +394 -320
  48. jarvis/jarvis_code_agent/code_analyzer/__init__.py +3 -0
  49. jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +4 -0
  50. jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +17 -2
  51. jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +3 -0
  52. jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +36 -4
  53. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +9 -0
  54. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +9 -0
  55. jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +12 -1
  56. jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +22 -5
  57. jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +57 -32
  58. jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +62 -6
  59. jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +8 -9
  60. jarvis/jarvis_code_agent/code_analyzer/context_manager.py +290 -5
  61. jarvis/jarvis_code_agent/code_analyzer/language_support.py +21 -0
  62. jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +21 -3
  63. jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +72 -4
  64. jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +35 -3
  65. jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +212 -0
  66. jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +254 -0
  67. jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +52 -2
  68. jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +73 -1
  69. jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +280 -0
  70. jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +306 -152
  71. jarvis/jarvis_code_agent/code_analyzer/structured_code.py +556 -0
  72. jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +193 -18
  73. jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +18 -8
  74. jarvis/jarvis_code_agent/lint.py +258 -27
  75. jarvis/jarvis_code_agent/utils.py +0 -1
  76. jarvis/jarvis_code_analysis/code_review.py +19 -24
  77. jarvis/jarvis_data/config_schema.json +53 -26
  78. jarvis/jarvis_git_squash/main.py +4 -5
  79. jarvis/jarvis_git_utils/git_commiter.py +44 -49
  80. jarvis/jarvis_mcp/sse_mcp_client.py +20 -27
  81. jarvis/jarvis_mcp/stdio_mcp_client.py +11 -12
  82. jarvis/jarvis_mcp/streamable_mcp_client.py +15 -14
  83. jarvis/jarvis_memory_organizer/memory_organizer.py +55 -74
  84. jarvis/jarvis_methodology/main.py +32 -48
  85. jarvis/jarvis_multi_agent/__init__.py +79 -61
  86. jarvis/jarvis_multi_agent/main.py +3 -7
  87. jarvis/jarvis_platform/base.py +469 -199
  88. jarvis/jarvis_platform/human.py +7 -8
  89. jarvis/jarvis_platform/kimi.py +30 -36
  90. jarvis/jarvis_platform/openai.py +65 -27
  91. jarvis/jarvis_platform/registry.py +26 -10
  92. jarvis/jarvis_platform/tongyi.py +24 -25
  93. jarvis/jarvis_platform/yuanbao.py +31 -42
  94. jarvis/jarvis_platform_manager/main.py +66 -77
  95. jarvis/jarvis_platform_manager/service.py +8 -13
  96. jarvis/jarvis_rag/cli.py +49 -51
  97. jarvis/jarvis_rag/embedding_manager.py +13 -18
  98. jarvis/jarvis_rag/llm_interface.py +8 -9
  99. jarvis/jarvis_rag/query_rewriter.py +10 -21
  100. jarvis/jarvis_rag/rag_pipeline.py +24 -27
  101. jarvis/jarvis_rag/reranker.py +4 -5
  102. jarvis/jarvis_rag/retriever.py +28 -30
  103. jarvis/jarvis_sec/__init__.py +220 -3520
  104. jarvis/jarvis_sec/agents.py +143 -0
  105. jarvis/jarvis_sec/analysis.py +276 -0
  106. jarvis/jarvis_sec/cli.py +29 -6
  107. jarvis/jarvis_sec/clustering.py +1439 -0
  108. jarvis/jarvis_sec/file_manager.py +427 -0
  109. jarvis/jarvis_sec/parsers.py +73 -0
  110. jarvis/jarvis_sec/prompts.py +268 -0
  111. jarvis/jarvis_sec/report.py +83 -4
  112. jarvis/jarvis_sec/review.py +453 -0
  113. jarvis/jarvis_sec/utils.py +499 -0
  114. jarvis/jarvis_sec/verification.py +848 -0
  115. jarvis/jarvis_sec/workflow.py +7 -0
  116. jarvis/jarvis_smart_shell/main.py +38 -87
  117. jarvis/jarvis_stats/cli.py +1 -1
  118. jarvis/jarvis_stats/stats.py +7 -7
  119. jarvis/jarvis_stats/storage.py +15 -21
  120. jarvis/jarvis_tools/clear_memory.py +3 -20
  121. jarvis/jarvis_tools/cli/main.py +20 -23
  122. jarvis/jarvis_tools/edit_file.py +1066 -0
  123. jarvis/jarvis_tools/execute_script.py +42 -21
  124. jarvis/jarvis_tools/file_analyzer.py +6 -9
  125. jarvis/jarvis_tools/generate_new_tool.py +11 -20
  126. jarvis/jarvis_tools/lsp_client.py +1552 -0
  127. jarvis/jarvis_tools/methodology.py +2 -3
  128. jarvis/jarvis_tools/read_code.py +1525 -87
  129. jarvis/jarvis_tools/read_symbols.py +2 -3
  130. jarvis/jarvis_tools/read_webpage.py +7 -10
  131. jarvis/jarvis_tools/registry.py +370 -181
  132. jarvis/jarvis_tools/retrieve_memory.py +20 -19
  133. jarvis/jarvis_tools/rewrite_file.py +105 -0
  134. jarvis/jarvis_tools/save_memory.py +3 -15
  135. jarvis/jarvis_tools/search_web.py +3 -7
  136. jarvis/jarvis_tools/sub_agent.py +17 -6
  137. jarvis/jarvis_tools/sub_code_agent.py +14 -16
  138. jarvis/jarvis_tools/virtual_tty.py +54 -32
  139. jarvis/jarvis_utils/clipboard.py +7 -10
  140. jarvis/jarvis_utils/config.py +98 -63
  141. jarvis/jarvis_utils/embedding.py +5 -5
  142. jarvis/jarvis_utils/fzf.py +8 -8
  143. jarvis/jarvis_utils/git_utils.py +81 -67
  144. jarvis/jarvis_utils/input.py +24 -49
  145. jarvis/jarvis_utils/jsonnet_compat.py +465 -0
  146. jarvis/jarvis_utils/methodology.py +33 -35
  147. jarvis/jarvis_utils/utils.py +245 -202
  148. {jarvis_ai_assistant-0.7.0.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/METADATA +205 -70
  149. jarvis_ai_assistant-0.7.6.dist-info/RECORD +218 -0
  150. jarvis/jarvis_agent/edit_file_handler.py +0 -584
  151. jarvis/jarvis_agent/rewrite_file_handler.py +0 -141
  152. jarvis/jarvis_agent/task_planner.py +0 -496
  153. jarvis/jarvis_platform/ai8.py +0 -332
  154. jarvis/jarvis_tools/ask_user.py +0 -54
  155. jarvis_ai_assistant-0.7.0.dist-info/RECORD +0 -192
  156. {jarvis_ai_assistant-0.7.0.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/WHEEL +0 -0
  157. {jarvis_ai_assistant-0.7.0.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/entry_points.txt +0 -0
  158. {jarvis_ai_assistant-0.7.0.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/licenses/LICENSE +0 -0
  159. {jarvis_ai_assistant-0.7.0.dist-info → jarvis_ai_assistant-0.7.6.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.7.0
3
+ Version: 0.7.6
4
4
  Summary: Jarvis: An AI assistant that uses tools to interact with the system
5
5
  Home-page: https://github.com/skyfireitdiy/Jarvis
6
6
  Author: skyfire
@@ -55,6 +55,7 @@ Requires-Dist: openai==1.78.1
55
55
  Requires-Dist: tabulate==0.9.0
56
56
  Requires-Dist: pyte==0.8.2
57
57
  Requires-Dist: pyyaml>=5.3.1
58
+ Requires-Dist: jsonnet>=0.20.0
58
59
  Requires-Dist: ddgs==9.0.2
59
60
  Requires-Dist: lxml==6.0.0
60
61
  Requires-Dist: markdownify>=1.1.0
@@ -62,6 +63,24 @@ Requires-Dist: typer
62
63
  Requires-Dist: pathspec
63
64
  Requires-Dist: plotext==5.2.8
64
65
  Requires-Dist: packaging>=24.2
66
+ Requires-Dist: tree-sitter
67
+ Requires-Dist: tree-sitter-python
68
+ Requires-Dist: tree-sitter-javascript
69
+ Requires-Dist: tree-sitter-typescript
70
+ Requires-Dist: tree-sitter-rust
71
+ Requires-Dist: tree-sitter-go
72
+ Requires-Dist: tree-sitter-java
73
+ Requires-Dist: tree-sitter-cpp
74
+ Requires-Dist: tree-sitter-c
75
+ Requires-Dist: tree-sitter-json
76
+ Requires-Dist: tree-sitter-yaml
77
+ Requires-Dist: tree-sitter-markdown
78
+ Requires-Dist: tree-sitter-html
79
+ Requires-Dist: tree-sitter-css
80
+ Requires-Dist: tree-sitter-bash
81
+ Requires-Dist: tree-sitter-ruby
82
+ Requires-Dist: tree-sitter-php
83
+ Requires-Dist: tree-sitter-sql
65
84
  Provides-Extra: dev
66
85
  Requires-Dist: pytest; extra == "dev"
67
86
  Requires-Dist: ruff; extra == "dev"
@@ -166,6 +185,7 @@ Dynamic: license-file
166
185
  Dynamic: requires-python
167
186
 
168
187
  # 🤖 Jarvis AI 助手
188
+
169
189
  <p align="center">
170
190
  <img src="docs/images/jarvis-logo.png" alt="Jarvis Logo" width="200"/>
171
191
  </p>
@@ -186,9 +206,9 @@ Jarvis 的定位是**个人开发者的高效助理**,旨在将研发流程中
186
206
 
187
207
  ### Jarvis 的核心优势
188
208
 
189
- 1. **访问本地资源**: Jarvis 能够直接与您的本地环境交互,执行诸如**软件开发、代码修复、环境搭建**等需要本地文件系统和工具链的复杂任务。
190
- 2. **纯粹的命令行体验**: 作为一款纯命令行工具,Jarvis 可以无缝集成到您喜爱的任何IDE、终端或SSH会话中,不干扰您现有的工作流程。
191
- 3. **Python包形式提供**: Jarvis 以标准的Python包形式分发,可以轻松地作为依赖项集成到您自己构建的AI应用或自动化脚本中。
209
+ 1. **访问本地资源**: Jarvis 能够直接与您的本地环境交互,执行诸如**软件开发、代码修复、环境搭建**等需要本地文件系统和工具链的复杂任务。
210
+ 2. **纯粹的命令行体验**: 作为一款纯命令行工具,Jarvis 可以无缝集成到您喜爱的任何IDE、终端或SSH会话中,不干扰您现有的工作流程。
211
+ 3. **Python包形式提供**: Jarvis 以标准的Python包形式分发,可以轻松地作为依赖项集成到您自己构建的AI应用或自动化脚本中。
192
212
 
193
213
  ### 💡 Jarvis 的价值:工作流对比
194
214
 
@@ -196,35 +216,38 @@ Jarvis 的定位是**个人开发者的高效助理**,旨在将研发流程中
196
216
 
197
217
  **传统工作流 (没有 Jarvis):**
198
218
 
199
- 1. **理解需求**: 阅读需求文档,在代码库中全局搜索,定位可能需要修改的文件和函数。
200
- 2. **切换上下文**: 在IDE、浏览器(查资料)、终端(执行命令)之间反复切换。
201
- 3. **编写代码**: 手动编写新功能、单元测试和相关文档。
202
- 4. **调试**: 反复运行、打印日志、设置断点来定位和修复bug。
203
- 5. **代码提交**: 手动检查代码变更,撰写符合团队规范的 Git Commit Message。
219
+ 1. **理解需求**: 阅读需求文档,在代码库中全局搜索,定位可能需要修改的文件和函数。
220
+ 2. **切换上下文**: 在IDE、浏览器(查资料)、终端(执行命令)之间反复切换。
221
+ 3. **编写代码**: 手动编写新功能、单元测试和相关文档。
222
+ 4. **调试**: 反复运行、打印日志、设置断点来定位和修复bug。
223
+ 5. **代码提交**: 手动检查代码变更,撰写符合团队规范的 Git Commit Message。
224
+
204
225
  > 这个过程不仅耗时,而且频繁的上下文切换极易打断心流,消耗大量精力。
205
226
 
206
227
  **Jarvis 增强工作流:**
207
228
 
208
- 1. **任务启动**: 在项目根目录,用自然语言向 `jca` (代码助理) 描述需求:`jca "为 'user' 模块增加 'profile' 接口,需要包含用户信息查询和更新功能"`。
209
- 2. **AI 分析与编码**:
210
- * Jarvis 自动分析代码结构,定位相关文件 (`user/service.py`, `user/controller.py`, `tests/test_user.py`)。
211
- * 自动生成新接口的代码、必要的单元测试,并提出修改方案。
212
- 3. **人机协作与迭代**:
213
- * 你审查 AI 生成的代码,并提出修改意见:`"字段名需要用驼峰式"` 或 `"增加一个输入校验"`。
214
- * Jarvis 根据反馈快速迭代,更新代码。
215
- 4. **自动化提交**:
216
- * 完成开发后,执行 `jgc` (Git 提交助理)。
217
- * Jarvis 自动分析代码变更,生成一条规范的 Git Commit Message (例如: `feat(user): add user profile api with query and update`)
218
- > 通过 Jarvis,整个流程从“手动执行”变为了“监督和指导”,开发者可以将精力集中在**架构设计和代码审查**等高价值活动上,而不是繁琐的编码和调试细节。
229
+ 1. **任务启动**: 在项目根目录,用自然语言向 `jca` (代码助理) 描述需求:`jca "为 'user' 模块增加 'profile' 接口,需要包含用户信息查询和更新功能"`。
230
+ 2. **AI 分析与编码**:
231
+ * Jarvis 使用 LSP 客户端工具自动分析代码结构,通过符号名称快速定位相关文件 (`user/service.py`, `user/controller.py`, `tests/test_user.py`)。
232
+ * 使用结构化编辑工具(edit_file)精确修改代码,自动生成新接口的代码、必要的单元测试,并提出修改方案。
233
+ * 自动检查依赖关系,确保修改不会破坏现有功能。
234
+ 3. **人机协作与迭代**:
235
+ * 你审查 AI 生成的代码,并提出修改意见:`"字段名需要用驼峰式"` 或 `"增加一个输入校验"`。
236
+ * Jarvis 根据反馈快速迭代,更新代码。
237
+ 4. **自动化提交**:
238
+ * 完成开发后,执行 `jgc` (Git 提交助理)。
239
+ * Jarvis 自动分析代码变更,生成一条规范的 Git Commit Message (例如: `feat(user): add user profile api with query and update`)。
240
+
241
+ > 通过 Jarvis,整个流程从"手动执行"变为了"监督和指导",开发者可以将精力集中在**架构设计和代码审查**等高价值活动上,而不是繁琐的编码和调试细节。
219
242
 
220
243
  #### 示例二:用 Jarvis 完善本文档
221
244
 
222
245
  您正在阅读的这部分文档,其诞生过程本身就是 Jarvis 价值的体现。
223
246
 
224
- 1. **初始指令**: `“在README.md中补充jarvis的用户群体和应用场景等信息”`
225
- 2. **探索与学习**: Jarvis 使用 `fd` 和 `read_code` 工具,分析了 `docs/` 目录下的说明文档,快速学习了项目的核心定位和功能。
226
- 3. **迭代完善**: 根据 “补充用户群体”、“增加工作流对比”、“再增加一个例子” 等一系列追加指令,Jarvis 通过多次 `PATCH` 操作,逐步、精确地将新内容添加到本文档的指定位置。
227
- 4. **人机协作**: 在整个过程中,人类提供高层次的目标和方向,Jarvis 负责具体的探索、总结和代码(文档)修改任务,将一个模糊的想法快速落地为结构清晰的文档。
247
+ 1. **初始指令**: `“在README.md中补充jarvis的用户群体和应用场景等信息”`
248
+ 2. **探索与学习**: Jarvis 使用 `fd` 和 `read_code` 工具,分析了 `docs/` 目录下的说明文档,快速学习了项目的核心定位和功能。
249
+ 3. **迭代完善**: 根据 “补充用户群体”、“增加工作流对比”、“再增加一个例子” 等一系列追加指令,Jarvis 通过多次 `PATCH` 操作,逐步、精确地将新内容添加到本文档的指定位置。
250
+ 4. **人机协作**: 在整个过程中,人类提供高层次的目标和方向,Jarvis 负责具体的探索、总结和代码(文档)修改任务,将一个模糊的想法快速落地为结构清晰的文档。
228
251
 
229
252
  ### Vibe Working: 一种更直觉的工作流
230
253
 
@@ -232,13 +255,13 @@ Jarvis 的核心理念与一种新兴的人机协作模式 **"Vibe Working"** (
232
255
 
233
256
  这不再是传统的“指令-执行”模式,而是一种**对话式、迭代式**的共同创造过程。
234
257
 
235
- * **从一个“感觉”开始**: 传统的自动化需要精确的输入和规则。而使用 Jarvis,你可以从一个模糊的目标开始,比如 `jca "给我写个脚本,监控这个网站的变化"` 或者 `jca "重构 'user' 模块,让它看起来更清爽"`。你提供的是方向和“感觉”,而不是详细的规格书。
258
+ * **从一个“感觉”开始**: 传统的自动化需要精确的输入和规则。而使用 Jarvis,你可以从一个模糊的目标开始,比如 `jca "给我写个脚本,监控这个网站的变化"` 或者 `jca "重构 'user' 模块,让它看起来更清爽"`。你提供的是方向和“感觉”,而不是详细的规格书。
236
259
 
237
- * **迭代中逼近完美**: Jarvis (或其背后的LLM) 会提供一个初步的实现。这个版本可能不完美,但它是一个坚实的起点。接下来,你通过反馈来指导它,比如 `“这个地方的逻辑不对,应该先检查A再处理B”` 或者 `“变量名能再语义化一点吗?”`。通过这种快速的反馈循环,AI的产出将逐步逼近你的真实意图。
260
+ * **迭代中逼近完美**: Jarvis (或其背后的LLM) 会提供一个初步的实现。这个版本可能不完美,但它是一个坚实的起点。接下来,你通过反馈来指导它,比如 `“这个地方的逻辑不对,应该先检查A再处理B”` 或者 `“变量名能再语义化一点吗?”`。通过这种快速的反馈循环,AI的产出将逐步逼近你的真实意图。
238
261
 
239
- * **人与AI的角色转变**:
240
- * **你 (人类)**: 扮演**创意总监、品味判断者和方向引领者**。你负责提供愿景、经验和高层次的判断力,确保最终结果的质量和方向。
241
- * **Jarvis (AI)**: 扮演**强大的执行伙伴和灵感催化剂**。它负责处理所有繁重、重复和技术性的细节,并能提供意想不到的解决方案,激发你的新想法。
262
+ * **人与AI的角色转变**:
263
+ * **你 (人类)**: 扮演**创意总监、品味判断者和方向引领者**。你负责提供愿景、经验和高层次的判断力,确保最终结果的质量和方向。
264
+ * **Jarvis (AI)**: 扮演**强大的执行伙伴和灵感催化剂**。它负责处理所有繁重、重复和技术性的细节,并能提供意想不到的解决方案,激发你的新想法。
242
265
 
243
266
  Jarvis 正是为这种工作流而设计的工具。它通过无缝的命令行集成和强大的本地交互能力,将 "Vibe Working" 从一个抽象概念,变为了开发者触手可及的日常生产力工具,让你能更专注于**高价值的创造性思考**,而非琐碎的实现细节。
244
267
 
@@ -246,14 +269,14 @@ Jarvis 正是为这种工作流而设计的工具。它通过无缝的命令行
246
269
 
247
270
  **谁适合使用 Jarvis?**
248
271
 
249
- * **个人开发者和极客**: 希望通过AI提升个人开发、学习和探索效率的用户。
250
- * **需要处理碎片化任务的工程师**: 面对各种一次性、非标准化的技术任务,例如快速编写脚本、调试代码、搭建新环境等。
251
- * **AI应用探索者**: 希望有一个灵活的本地框架来实验和集成不同的大语言模型和工具。
272
+ * **个人开发者和极客**: 希望通过AI提升个人开发、学习和探索效率的用户。
273
+ * **需要处理碎片化任务的工程师**: 面对各种一次性、非标准化的技术任务,例如快速编写脚本、调试代码、搭建新环境等。
274
+ * **AI应用探索者**: 希望有一个灵活的本地框架来实验和集成不同的大语言模型和工具。
252
275
 
253
276
  **谁可能不适合?**
254
277
 
255
- * **寻求固定工作流自动化的人**: 如果您的需求是高度固定和重复的,例如“每天定时抓取数据并生成报告”,那么编写一个专门的、功能单一的脚本可能是更直接、更高效的解决方案。Jarvis 更擅长处理多变和探索性的任务。
256
- * **企业级团队协作者**: Jarvis 被设计为个人工具,不包含团队管理、权限控制等面向企业级协作的功能。
278
+ * **寻求固定工作流自动化的人**: 如果您的需求是高度固定和重复的,例如“每天定时抓取数据并生成报告”,那么编写一个专门的、功能单一的脚本可能是更直接、更高效的解决方案。Jarvis 更擅长处理多变和探索性的任务。
279
+ * **企业级团队协作者**: Jarvis 被设计为个人工具,不包含团队管理、权限控制等面向企业级协作的功能。
257
280
 
258
281
  总之,Jarvis 是为每一位开发者量身打造的个人助手,而非用于团队协作的集中式平台。
259
282
 
@@ -262,20 +285,26 @@ Jarvis 正是为这种工作流而设计的工具。它通过无缝的命令行
262
285
  ## 🚀 快速开始 <a id="quick-start"></a>
263
286
 
264
287
  ### 系统要求
265
- - **Linux**: 完全支持。
266
- - **Windows**: 完全支持(需要 PowerShell)。
288
+
289
+ * **Linux**: 完全支持。
290
+
291
+ * **Windows**: 完全支持(需要 PowerShell)。
292
+ * **Docker**: 支持通过 Docker 镜像使用,无需本地安装 Python/Rust 环境。
267
293
 
268
294
  ### 安装
269
295
 
270
296
  #### 一键安装 (推荐)
297
+
271
298
  只需一行命令即可完成所有安装和配置:
272
299
 
273
300
  **Linux/macOS:**
301
+
274
302
  ```bash
275
303
  bash -c "$(curl -fsSL https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/scripts/install.sh)"
276
304
  ```
277
305
 
278
306
  **Windows (PowerShell):**
307
+
279
308
  ```powershell
280
309
  iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/skyfireitdiy/Jarvis/main/scripts/install.ps1'))
281
310
  ```
@@ -283,6 +312,7 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercon
283
312
  > 该脚本会自动检测Python环境、克隆项目、安装依赖并设置好路径。
284
313
 
285
314
  #### 手动安装
315
+
286
316
  ```bash
287
317
  # 1. 克隆仓库
288
318
  git clone https://github.com/skyfireitdiy/Jarvis
@@ -293,14 +323,17 @@ cd Jarvis
293
323
  # 3. 安装项目为可编辑模式
294
324
  pip3 install -e .
295
325
  ```
326
+
296
327
  > **提示**: 使用 `-e .` (可编辑模式) 安装后,您对源码的任何修改都会立刻生效,非常适合开发者。
297
328
 
298
329
  或者从PyPI安装 (可能不是最新版):
330
+
299
331
  ```bash
300
332
  pip3 install jarvis-ai-assistant
301
333
  ```
302
334
 
303
335
  **通过 uv 安装 (推荐)**
336
+
304
337
  ```bash
305
338
  # 1. 安装 uv (如果未安装)
306
339
  curl -LsSf https://astral.sh/uv/install.sh | sh
@@ -322,17 +355,111 @@ uv pip install .
322
355
  ```
323
356
 
324
357
  > **提示**: 安装完成后,建议将虚拟环境激活命令添加到您的 shell 配置文件中:
325
- > - Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
326
- > - Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
358
+ >
359
+ > * Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
360
+ > * Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
361
+
362
+ #### Docker 镜像安装 (推荐用于隔离环境)
363
+
364
+ 使用 Docker 镜像可以避免本地环境配置,所有依赖都已预装。镜像已发布到 GitHub Container Registry (GHCR),**公开可用,无需登录**。
365
+
366
+ **从 GitHub Container Registry 拉取镜像:**
367
+
368
+ ```bash
369
+ # 拉取最新版本
370
+ docker pull ghcr.io/skyfireitdiy/jarvis:latest
371
+
372
+ # 或拉取特定版本(例如 v1.0.0)
373
+ docker pull ghcr.io/skyfireitdiy/jarvis:v1.0.0
374
+ ```
375
+
376
+ > **提示**:
377
+ >
378
+ > * 镜像默认公开,无需登录即可拉取
379
+ > * 每次发布新版本时,会自动生成多个标签:`latest`、`v1.0.0`、`1.0`、`1` 等
380
+ > * 建议使用 `latest` 标签获取最新版本
381
+
382
+ **使用 Docker Compose(推荐):**
383
+
384
+ ```bash
385
+ # 1. 设置用户 ID 和组 ID(Linux/macOS,防止文件权限问题)
386
+ export UID=$(id -u)
387
+ export GID=$(id -g)
388
+
389
+ # 2. 构建并运行容器
390
+ docker-compose build
391
+ docker-compose run --rm jarvis
392
+ ```
393
+
394
+ **直接使用 Docker 命令:**
395
+
396
+ ```bash
397
+ # 基本运行(使用 root 用户)
398
+ docker run -it --rm ghcr.io/skyfireitdiy/jarvis:latest
399
+
400
+ # 挂载当前目录到容器(使用 root 用户)
401
+ docker run -it --rm \
402
+ -v $(pwd):/workspace \
403
+ -v $HOME/.jarvis:/root/.jarvis \
404
+ -w /workspace \
405
+ ghcr.io/skyfireitdiy/jarvis:latest
406
+
407
+ # 推荐:使用非 root 用户(避免文件权限问题)
408
+ docker run -it --rm \
409
+ -u $(id -u):$(id -g) \
410
+ -v $(pwd):/workspace \
411
+ -v $HOME/.jarvis:/home/jarvis/.jarvis \
412
+ -w /workspace \
413
+ -e USER=jarvis \
414
+ -e HOME=/home/jarvis \
415
+ ghcr.io/skyfireitdiy/jarvis:latest
416
+ ```
417
+
418
+ **本地构建镜像(可选):**
419
+
420
+ ```bash
421
+ # 克隆仓库
422
+ git clone https://github.com/skyfireitdiy/Jarvis
423
+ cd Jarvis
424
+
425
+ # 构建镜像
426
+ docker build -t jarvis:latest .
427
+
428
+ # 运行容器(使用 root 用户)
429
+ docker run -it --rm \
430
+ -v $(pwd):/workspace \
431
+ -v $HOME/.jarvis:/root/.jarvis \
432
+ -w /workspace \
433
+ jarvis:latest
434
+
435
+ # 或使用非 root 用户(推荐,避免文件权限问题)
436
+ docker run -it --rm \
437
+ -u $(id -u):$(id -g) \
438
+ -v $(pwd):/workspace \
439
+ -v $HOME/.jarvis:/home/jarvis/.jarvis \
440
+ -w /workspace \
441
+ -e USER=jarvis \
442
+ -e HOME=/home/jarvis \
443
+ jarvis:latest
444
+ ```
445
+
446
+ > **提示**:
447
+ >
448
+ > * Docker 镜像已预装所有工具(Python 3.12、Rust、Clang、Fish shell 等),开箱即用
449
+ > * 容器启动后会自动进入 fish shell,虚拟环境已激活
450
+ > * 使用 `-v` 挂载目录可以方便地在容器内处理本地代码
451
+ > * 使用 `-v $HOME/.jarvis:/root/.jarvis` 可以保留您的 Jarvis 配置
452
+ > * 推荐直接使用 GHCR 上的预构建镜像,无需本地构建
327
453
 
328
454
  ### 基本使用
455
+
329
456
  Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
330
457
 
331
458
  | 命令 | 快捷方式 | 功能描述 |
332
459
  |------|----------|----------|
333
460
  | `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
334
461
  | `jarvis-agent` | `ja` | AI代理基础功能,处理会话和任务 |
335
- | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理 |
462
+ | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理,集成 LSP 客户端支持智能符号分析 |
336
463
  | `jarvis-code-review` | `jcr` | 智能代码审查工具 |
337
464
  | `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
338
465
  | `jarvis-git-squash` | `jgs` | Git提交历史整理工具 |
@@ -344,8 +471,8 @@ Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及
344
471
  | `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
345
472
  | `jarvis-stats` | `jst` | 通用统计模块,支持记录和可视化任意指标数据 |
346
473
  | `jarvis-memory-organizer` | `jmo` | 记忆管理工具,支持整理、合并、导入导出记忆 |
347
- | `jarvis-sec` | `jsec` | 安全分析套件,对代码工程进行安全扫描和分析 |
348
- | `jarvis-c2rust` | `jc2r` | C→Rust 迁移套件,将 C/C++ 代码迁移到 Rust |
474
+ | `jarvis-sec` | `jsec` | 安全分析套件,结合启发式扫描和 AI 深度验证,支持 C/C++ 和 Rust 语言 |
475
+ | `jarvis-c2rust` | `jc2r` | C→Rust 迁移套件,支持渐进式迁移、断点续跑和智能库替代 |
349
476
 
350
477
  更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
351
478
 
@@ -353,16 +480,16 @@ Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及
353
480
 
354
481
  ## 🌟 核心功能 <a id="core-features"></a>
355
482
 
356
- - **🆓 零成本接入**: 无缝集成腾讯元宝、Kimi等优质模型,无需支付API费用。
357
- - **🛠️ 工具驱动**: 内置丰富工具集,涵盖脚本执行、代码开发、网页搜索、终端操作等。
358
- - **🤖 人机协作**: 支持实时交互,用户可随时介入指导,确保AI行为符合预期。
359
- - **🔌 高度可扩展**: 支持自定义工具、模型平台和MCP,轻松打造个性化工作流。
360
- - **🧠 RAG 增强**: 内置RAG功能,可将本地文档作为知识库,实现精准问答。
361
-
362
- ### 视频演示
363
- - [使用`jca`为Jarvis快速扩展功能](https://www.bilibili.com/video/BV1TCgLzvE6Q/)
364
- - [10分钟搭建aarch64容器化Rust开发环境](https://www.bilibili.com/video/BV1K3ghzkEzZ/)
365
- - [`jarvis-code-agent` 功能演示](https://www.bilibili.com/video/BV1KugbzKE6U/)
483
+ * **🆓 零成本接入**: 无缝集成腾讯元宝、Kimi等优质模型,无需支付API费用。
484
+ * **🛠️ 工具驱动**: 内置丰富工具集,涵盖脚本执行、代码开发、网页搜索、终端操作等。
485
+ * **🤖 人机协作**: 支持实时交互,用户可随时介入指导,确保AI行为符合预期。
486
+ * **🔌 高度可扩展**: 支持自定义工具、模型平台和MCP,轻松打造个性化工作流。
487
+ * **🧠 RAG 增强**: 内置RAG功能,可将本地文档作为知识库,实现精准问答。
488
+ * **💾 记忆系统**: 三层记忆架构(短期、项目长期、全局长期),支持知识持久化和智能检索。
489
+ * **📚 方法论系统**: 将成功经验沉淀为可复用的方法论,支持本地和中心化共享。
490
+ * **🔍 LSP 代码分析**: CodeAgent 集成 LSP 客户端,支持基于符号名称的智能代码分析,无需行列号。
491
+ * **🛡️ 安全分析**: 内置安全扫描套件(jsec),支持启发式扫描和 AI 深度验证。
492
+ * **🦀 代码迁移**: C→Rust 迁移套件(jc2r),支持渐进式迁移和断点续跑。
366
493
 
367
494
  ---
368
495
 
@@ -371,6 +498,7 @@ Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及
371
498
  Jarvis 的主要配置文件位于 `~/.jarvis/config.yaml`。您可以在此文件中配置模型、平台和其他行为。
372
499
 
373
500
  **基本配置示例 (腾讯元宝):**
501
+
374
502
  ```yaml
375
503
  # ~/.jarvis/config.yaml
376
504
 
@@ -387,16 +515,21 @@ ENV:
387
515
  ```
388
516
 
389
517
  提示:错误回溯输出控制
390
- - 默认情况下,当 PrettyOutput 打印错误信息(OutputType.ERROR)时,不会自动打印回溯调用链。
391
- - 如需全局启用错误回溯,请在配置中设置:
518
+
519
+ * 默认情况下,当 PrettyOutput 打印错误信息(OutputType.ERROR)时,不会自动打印回溯调用链。
520
+ * 如需全局启用错误回溯,请在配置中设置:
521
+
392
522
  ```yaml
393
523
  JARVIS_PRINT_ERROR_TRACEBACK: true
394
524
  ```
395
- - 也可以在单次调用时通过传入 `traceback=True` 临时开启回溯打印。
525
+
526
+ * 也可以在单次调用时通过传入 `traceback=True` 临时开启回溯打印。
396
527
 
397
528
  提示:AI 工具筛选阈值
398
- - 当可用工具数量过多时,可能会干扰模型的决策。Jarvis 支持在可用工具数量超过阈值时,先让 AI 自动筛选相关工具再启动,以专注于本次任务。
399
- - 默认阈值为 30,可在配置中调整:
529
+
530
+ * 当可用工具数量过多时,可能会干扰模型的决策。Jarvis 支持在可用工具数量超过阈值时,先让 AI 自动筛选相关工具再启动,以专注于本次任务。
531
+ * 默认阈值为 30,可在配置中调整:
532
+
400
533
  ```yaml
401
534
  # ~/.jarvis/config.yaml
402
535
  JARVIS_TOOL_FILTER_THRESHOLD: 30
@@ -411,9 +544,10 @@ Jarvis 支持多种平台,包括 **Kimi**, **通义千问**, **OpenAI** 等。
411
544
  ## 🛠️ 扩展开发 <a id="extensions"></a>
412
545
 
413
546
  Jarvis 被设计为高度可扩展的框架。您可以轻松地:
414
- - **添加新工具**: 在 `~/.jarvis/tools/` 目录下创建新的工具实现。
415
- - **集成新LLM平台**: 在 `~/.jarvis/platforms/` 目录下添加新的平台适配器。
416
- - **定义MCP**: 通过配置文件集成外部或自定义的命令协议。
547
+
548
+ * **添加新工具**: 在 `~/.jarvis/tools/` 目录下创建新的工具实现。
549
+ * **集成新LLM平台**: 在 `~/.jarvis/platforms/` 目录下添加新的平台适配器。
550
+ * **定义MCP**: 通过配置文件集成外部或自定义的命令协议。
417
551
 
418
552
  有关扩展开发的详细指南和[**技术细节**](docs/technical_documentation.md),请访问我们的 [**开发者文档**](docs/jarvis_book/5.功能扩展.md)。
419
553
 
@@ -423,21 +557,22 @@ Jarvis 被设计为高度可扩展的框架。您可以轻松地:
423
557
 
424
558
  欢迎阅读 Jarvis 的官方文档,这本开源书籍旨在为您提供从入门到精通的全方位指南。
425
559
 
426
- - **[第一章:项目介绍](docs/jarvis_book/1.项目介绍.md)**
427
- - **[第二章:快速开始](docs/jarvis_book/2.快速开始.md)**
428
- - **[第三章:核心概念与架构](docs/jarvis_book/3.核心概念与架构.md)**
429
- - **[第四章:使用指南](docs/jarvis_book/4.使用指南.md)**
430
- - **[第五章:功能扩展](docs/jarvis_book/5.功能扩展.md)**
431
- - **[第六章:高级主题](docs/jarvis_book/6.高级主题.md)**
432
- - **[第七章:参与贡献](docs/jarvis_book/7.参与贡献.md)**
433
- - **[第八章:常见问题](docs/jarvis_book/8.常见问题.md)**
434
- - **[第九章:附录](docs/jarvis_book/9.附录.md)**
560
+ * **[第一章:项目介绍](docs/jarvis_book/1.项目介绍.md)**
561
+ * **[第二章:快速开始](docs/jarvis_book/2.快速开始.md)**
562
+ * **[第三章:核心概念与架构](docs/jarvis_book/3.核心概念与架构.md)**
563
+ * **[第四章:使用指南](docs/jarvis_book/4.使用指南.md)**
564
+ * **[第五章:功能扩展](docs/jarvis_book/5.功能扩展.md)**
565
+ * **[第六章:高级主题](docs/jarvis_book/6.高级主题.md)**
566
+ * **[第七章:参与贡献](docs/jarvis_book/7.参与贡献.md)**
567
+ * **[第八章:常见问题](docs/jarvis_book/8.常见问题.md)**
568
+ * **[第九章:附录](docs/jarvis_book/9.附录.md)**
435
569
 
436
570
  ---
437
571
 
438
572
  ## 🤝 贡献指南 <a id="contributing"></a>
439
573
 
440
574
  我们欢迎任何形式的贡献!
575
+
441
576
  1. Fork 本仓库
442
577
  2. 创建您的特性分支 (`git checkout -b feature/AmazingFeature`)
443
578
  3. 提交您的更改 (`git commit -m 'Add some AmazingFeature'`)
@@ -448,8 +583,8 @@ Jarvis 被设计为高度可扩展的框架。您可以轻松地:
448
583
 
449
584
  ## ⚠️ 免责声明 <a id="disclaimer"></a>
450
585
 
451
- - **模型使用风险**: 频繁使用通过非官方API(如腾讯元宝、Kimi、通义千问等)接入的模型可能会导致您的账户被平台封禁。请合理使用,并自行承担相应风险。
452
- - **命令执行风险**: Jarvis具备执行系统命令的能力。请确保您了解将要执行的命令,并避免输入可能导致系统风险的指令。为了增强安全性,您可以在配置文件中启用工具执行确认(`JARVIS_EXECUTE_TOOL_CONFIRM: true`),以便在执行每个工具前进行手动确认。
586
+ * **模型使用风险**: 频繁使用通过非官方API(如腾讯元宝、Kimi、通义千问等)接入的模型可能会导致您的账户被平台封禁。请合理使用,并自行承担相应风险。
587
+ * **命令执行风险**: Jarvis具备执行系统命令的能力。请确保您了解将要执行的命令,并避免输入可能导致系统风险的指令。为了增强安全性,您可以在配置文件中启用工具执行确认(`JARVIS_EXECUTE_TOOL_CONFIRM: true`),以便在执行每个工具前进行手动确认。
453
588
 
454
589
  ---
455
590