jarvis-ai-assistant 0.3.2__tar.gz → 0.3.3__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 (134) hide show
  1. {jarvis_ai_assistant-0.3.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.3}/PKG-INFO +40 -1
  2. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/README.md +39 -0
  3. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/pyproject.toml +12 -4
  4. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/setup.py +3 -1
  5. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/__init__.py +1 -1
  6. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/__init__.py +6 -6
  7. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/share_manager.py +21 -0
  8. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/code_agent.py +6 -4
  9. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/code_review.py +117 -12
  10. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_utils/git_commiter.py +63 -9
  11. jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_memory_organizer/memory_organizer.py +729 -0
  12. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/base.py +9 -0
  13. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/kimi.py +20 -0
  14. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/openai.py +27 -0
  15. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/tongyi.py +19 -0
  16. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/yuanbao.py +18 -0
  17. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform_manager/main.py +22 -16
  18. jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  19. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/globals.py +16 -10
  20. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/utils.py +49 -29
  21. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3/src/jarvis_ai_assistant.egg-info}/PKG-INFO +40 -1
  22. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
  23. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/entry_points.txt +2 -0
  24. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/LICENSE +0 -0
  25. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/MANIFEST.in +0 -0
  26. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/setup.cfg +0 -0
  27. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  28. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  29. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  30. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  31. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  32. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  33. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/main.py +0 -0
  34. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  35. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  36. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  37. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  38. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/prompts.py +0 -0
  39. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/protocols.py +0 -0
  40. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  41. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  42. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  43. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  44. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  45. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  46. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  47. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  48. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  49. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  50. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  51. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  52. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  53. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  54. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  55. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  56. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  57. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  58. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  59. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  60. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  61. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  62. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  63. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  64. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  65. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  66. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  67. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  68. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_data/config_schema.json +0 -0
  69. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  70. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  71. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_squash/main.py +0 -0
  72. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  73. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  74. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  75. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  76. {jarvis_ai_assistant-0.3.2/src/jarvis/jarvis_platform_manager → jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_memory_organizer}/__init__.py +0 -0
  77. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_methodology/main.py +0 -0
  78. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  79. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  80. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/__init__.py +0 -0
  81. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/ai8.py +0 -0
  82. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/human.py +0 -0
  83. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/registry.py +0 -0
  84. {jarvis_ai_assistant-0.3.2/src/jarvis/jarvis_smart_shell → jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_platform_manager}/__init__.py +0 -0
  85. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  86. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/__init__.py +0 -0
  87. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/cache.py +0 -0
  88. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/cli.py +0 -0
  89. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  90. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  91. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  92. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  93. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/reranker.py +0 -0
  94. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/retriever.py +0 -0
  95. {jarvis_ai_assistant-0.3.2/src/jarvis/jarvis_tools → jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_smart_shell}/__init__.py +0 -0
  96. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  97. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/__init__.py +0 -0
  98. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/cli.py +0 -0
  99. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/stats.py +0 -0
  100. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/storage.py +0 -0
  101. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  102. {jarvis_ai_assistant-0.3.2/src/jarvis/jarvis_tools/cli → jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_tools}/__init__.py +0 -0
  103. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  104. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/base.py +0 -0
  105. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  106. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  107. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  108. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  109. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  110. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  111. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/methodology.py +0 -0
  112. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/read_code.py +0 -0
  113. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  114. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/registry.py +0 -0
  115. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  116. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  117. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  118. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/search_web.py +0 -0
  119. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  120. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/__init__.py +0 -0
  121. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  122. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  123. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/config.py +0 -0
  124. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/embedding.py +0 -0
  125. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  126. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  127. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/http.py +0 -0
  128. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/input.py +0 -0
  129. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/methodology.py +0 -0
  130. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/output.py +0 -0
  131. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/tag.py +0 -0
  132. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  133. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  134. {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-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.3.2
3
+ Version: 0.3.3
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
@@ -202,27 +202,66 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercon
202
202
 
203
203
  #### 手动安装
204
204
  ```bash
205
+ # 1. 克隆仓库
205
206
  git clone https://github.com/skyfireitdiy/Jarvis
207
+
208
+ # 2. 进入项目目录
206
209
  cd Jarvis
210
+
211
+ # 3. 安装项目为可编辑模式
207
212
  pip3 install -e .
208
213
  ```
214
+ > **提示**: 使用 `-e .` (可编辑模式) 安装后,您对源码的任何修改都会立刻生效,非常适合开发者。
215
+
209
216
  或者从PyPI安装 (可能不是最新版):
210
217
  ```bash
211
218
  pip3 install jarvis-ai-assistant
212
219
  ```
213
220
 
221
+ **通过 uv 安装 (推荐)**
222
+ ```bash
223
+ # 1. 安装 uv (如果未安装)
224
+ curl -LsSf https://astral.sh/uv/install.sh | sh
225
+
226
+ # 2. 克隆仓库
227
+ git clone https://github.com/skyfireitdiy/Jarvis
228
+
229
+ # 3. 进入项目目录
230
+ cd Jarvis
231
+
232
+ # 4. 创建虚拟环境并安装
233
+ uv venv
234
+
235
+ # 安装基础功能
236
+ uv pip install .
237
+
238
+ # 可选: 安装RAG功能(包含PyTorch等较重的依赖)
239
+ # uv pip install .[rag]
240
+ ```
241
+
242
+ > **提示**: 安装完成后,建议将虚拟环境激活命令添加到您的 shell 配置文件中:
243
+ > - Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
244
+ > - Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
245
+
214
246
  ### 基本使用
215
247
  Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
216
248
 
217
249
  | 命令 | 快捷方式 | 功能描述 |
218
250
  |------|----------|----------|
219
251
  | `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
252
+ | `jarvis-agent` | `ja` | AI代理基础功能,处理会话和任务 |
220
253
  | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理 |
254
+ | `jarvis-code-review` | `jcr` | 智能代码审查工具 |
221
255
  | `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
256
+ | `jarvis-git-squash` | `jgs` | Git提交历史整理工具 |
222
257
  | `jarvis-platform-manager` | `jpm` | 管理和测试不同的大语言模型平台 |
258
+ | `jarvis-multi-agent` | `jma` | 多智能体协作系统 |
259
+ | `jarvis-tool` | `jt` | 工具管理与调用系统 |
260
+ | `jarvis-methodology` | `jm` | 方法论知识库管理 |
223
261
  | `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
224
262
  | `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
225
263
  | `jarvis-stats` | `jst` | 通用统计模块,支持记录和可视化任意指标数据 |
264
+ | `jarvis-memory-organizer` | `jmo` | 记忆管理工具,支持整理、合并、导入导出记忆 |
226
265
 
227
266
  更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
228
267
 
@@ -117,27 +117,66 @@ iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercon
117
117
 
118
118
  #### 手动安装
119
119
  ```bash
120
+ # 1. 克隆仓库
120
121
  git clone https://github.com/skyfireitdiy/Jarvis
122
+
123
+ # 2. 进入项目目录
121
124
  cd Jarvis
125
+
126
+ # 3. 安装项目为可编辑模式
122
127
  pip3 install -e .
123
128
  ```
129
+ > **提示**: 使用 `-e .` (可编辑模式) 安装后,您对源码的任何修改都会立刻生效,非常适合开发者。
130
+
124
131
  或者从PyPI安装 (可能不是最新版):
125
132
  ```bash
126
133
  pip3 install jarvis-ai-assistant
127
134
  ```
128
135
 
136
+ **通过 uv 安装 (推荐)**
137
+ ```bash
138
+ # 1. 安装 uv (如果未安装)
139
+ curl -LsSf https://astral.sh/uv/install.sh | sh
140
+
141
+ # 2. 克隆仓库
142
+ git clone https://github.com/skyfireitdiy/Jarvis
143
+
144
+ # 3. 进入项目目录
145
+ cd Jarvis
146
+
147
+ # 4. 创建虚拟环境并安装
148
+ uv venv
149
+
150
+ # 安装基础功能
151
+ uv pip install .
152
+
153
+ # 可选: 安装RAG功能(包含PyTorch等较重的依赖)
154
+ # uv pip install .[rag]
155
+ ```
156
+
157
+ > **提示**: 安装完成后,建议将虚拟环境激活命令添加到您的 shell 配置文件中:
158
+ > - Bash/Zsh: 在 ~/.bashrc 或 ~/.zshrc 中添加 `source /path/to/Jarvis/.venv/bin/activate`
159
+ > - Fish: 在 ~/.config/fish/config.fish 中添加 `source /path/to/Jarvis/.venv/bin/activate.fish`
160
+
129
161
  ### 基本使用
130
162
  Jarvis 包含一系列专注于不同任务的工具。以下是主要命令及其快捷方式:
131
163
 
132
164
  | 命令 | 快捷方式 | 功能描述 |
133
165
  |------|----------|----------|
134
166
  | `jarvis` | `jvs` | 通用AI代理,适用于多种任务 |
167
+ | `jarvis-agent` | `ja` | AI代理基础功能,处理会话和任务 |
135
168
  | `jarvis-code-agent` | `jca` | 专注于代码分析、修改和生成的代码代理 |
169
+ | `jarvis-code-review` | `jcr` | 智能代码审查工具 |
136
170
  | `jarvis-git-commit` | `jgc` | 自动化分析代码变更并生成规范的Git提交信息 |
171
+ | `jarvis-git-squash` | `jgs` | Git提交历史整理工具 |
137
172
  | `jarvis-platform-manager` | `jpm` | 管理和测试不同的大语言模型平台 |
173
+ | `jarvis-multi-agent` | `jma` | 多智能体协作系统 |
174
+ | `jarvis-tool` | `jt` | 工具管理与调用系统 |
175
+ | `jarvis-methodology` | `jm` | 方法论知识库管理 |
138
176
  | `jarvis-rag` | `jrg` | 构建和查询本地化的RAG知识库 |
139
177
  | `jarvis-smart-shell` | `jss` | 实验性的智能Shell功能 |
140
178
  | `jarvis-stats` | `jst` | 通用统计模块,支持记录和可视化任意指标数据 |
179
+ | `jarvis-memory-organizer` | `jmo` | 记忆管理工具,支持整理、合并、导入导出记忆 |
141
180
 
142
181
  更多详细用法和参数,请查阅我们的 [**使用指南**](docs/jarvis_book/4.使用指南.md)。
143
182
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.3.2"
7
+ version = "0.3.3"
8
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -80,6 +80,8 @@ jarvis-platform-manager = "jarvis.jarvis_platform_manager.main:main"
80
80
  jpm = "jarvis.jarvis_platform_manager.main:main"
81
81
  jarvis-git-commit = "jarvis.jarvis_git_utils.git_commiter:main"
82
82
  jarvis-code-review = "jarvis.jarvis_code_analysis.code_review:main"
83
+ jarvis-memory-organizer = "jarvis.jarvis_memory_organizer.memory_organizer:main"
84
+ jmo = "jarvis.jarvis_memory_organizer.memory_organizer:main"
83
85
  jcr = "jarvis.jarvis_code_analysis.code_review:main"
84
86
  jgc = "jarvis.jarvis_git_utils.git_commiter:main"
85
87
  jarvis-git-squash = "jarvis.jarvis_git_squash.main:main"
@@ -97,10 +99,16 @@ jrg = "jarvis.jarvis_rag.cli:main"
97
99
  jarvis-stats = "jarvis.jarvis_stats.cli:main"
98
100
  jst = "jarvis.jarvis_stats.cli:main"
99
101
 
100
- [[tool.uv.index]]
101
- url = "https://artsz.zte.com.cn/artifactory/api/pypi/public-pypi-virtual/simple"
102
- default = true
102
+
103
103
 
104
104
  [[tool.uv.index]]
105
105
  name = "tsinghua"
106
106
  url = "https://pypi.tuna.tsinghua.edu.cn/simple"
107
+
108
+ [[tool.uv.index]]
109
+ name = "aliyun"
110
+ url = "https://mirrors.aliyun.com/pypi/simple/"
111
+
112
+ [[tool.uv.index]]
113
+ name = "ustc"
114
+ url = "https://pypi.mirrors.ustc.edu.cn/simple/"
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages # type: ignore
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.3.2",
6
+ version="0.3.3",
7
7
  author="skyfire",
8
8
  author_email="skyfireitdiy@hotmail.com",
9
9
  description="An AI assistant that uses various tools to interact with the system",
@@ -75,6 +75,8 @@ setup(
75
75
  "ja=jarvis.jarvis_agent.main:main",
76
76
  "jarvis-tool=jarvis.jarvis_tools.cli.main:main",
77
77
  "jt=jarvis.jarvis_tools.cli.main:main",
78
+ "jarvis-memory-organizer=jarvis.jarvis_memory_organizer.memory_organizer:main",
79
+ "jmo=jarvis.jarvis_memory_organizer.memory_organizer:main",
78
80
  "jarvis-methodology=jarvis.jarvis_methodology.main:main",
79
81
  "jm=jarvis.jarvis_methodology.main:main",
80
82
  "jarvis-rag=jarvis.jarvis_rag.cli:main",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.3.2"
4
+ __version__ = "0.3.3"
@@ -190,7 +190,9 @@ class Agent:
190
190
 
191
191
  self.model = PlatformRegistry().create_platform(platform_name)
192
192
  if self.model is None:
193
- PrettyOutput.print(f"平台 {platform_name} 不存在,将使用普通模型", OutputType.WARNING)
193
+ PrettyOutput.print(
194
+ f"平台 {platform_name} 不存在,将使用普通模型", OutputType.WARNING
195
+ )
194
196
  self.model = PlatformRegistry().get_normal_platform()
195
197
 
196
198
  if model_name:
@@ -512,10 +514,6 @@ class Agent:
512
514
 
513
515
  if self.use_analysis:
514
516
  self.task_analyzer.analysis_task(satisfaction_feedback)
515
- else:
516
- # 如果没有开启分析,也提示用户是否有值得记忆的信息
517
- if self.force_save_memory:
518
- self.memory_manager.prompt_memory_save()
519
517
 
520
518
  if self.need_summary:
521
519
  print("📄 正在生成总结...")
@@ -689,7 +687,9 @@ class Agent:
689
687
  返回:
690
688
  str: "continue" 或 "complete"
691
689
  """
692
- user_input = self.multiline_inputer(f"{self.name}: 请输入,或输入空行来结束当前任务:")
690
+ user_input = self.multiline_inputer(
691
+ f"{self.name}: 请输入,或输入空行来结束当前任务:"
692
+ )
693
693
 
694
694
  if user_input:
695
695
  self.session.prompt = user_input
@@ -98,6 +98,27 @@ class ShareManager(ABC):
98
98
  )
99
99
  # 如果有远程分支,执行pull
100
100
  if result.stdout.strip():
101
+ # 检查是否有未提交的更改
102
+ status_result = subprocess.run(
103
+ ["git", "status", "--porcelain"],
104
+ cwd=self.repo_path,
105
+ capture_output=True,
106
+ text=True,
107
+ check=True,
108
+ )
109
+ if status_result.stdout:
110
+ if user_confirm(
111
+ f"检测到中心{self.get_resource_type()}仓库 '{self.repo_name}' 存在未提交的更改,是否放弃这些更改并更新?"
112
+ ):
113
+ subprocess.run(
114
+ ["git", "checkout", "."], cwd=self.repo_path, check=True
115
+ )
116
+ else:
117
+ PrettyOutput.print(
118
+ f"跳过更新 '{self.repo_name}' 以保留未提交的更改。",
119
+ OutputType.INFO,
120
+ )
121
+ return
101
122
  subprocess.run(["git", "pull"], cwd=self.repo_path, check=True)
102
123
  else:
103
124
  PrettyOutput.print(
@@ -431,9 +431,6 @@ class CodeAgent:
431
431
  ["git", "commit", "-m", f"CheckPoint #{commit_count + 1}"],
432
432
  check=True,
433
433
  )
434
-
435
- # 统计提交次数
436
- StatsManager.increment("code_commits_accepted", group="code_agent")
437
434
  except subprocess.CalledProcessError as e:
438
435
  PrettyOutput.print(f"提交失败: {str(e)}", OutputType.ERROR)
439
436
 
@@ -484,6 +481,10 @@ class CodeAgent:
484
481
  )
485
482
  git_commiter = GitCommitTool()
486
483
  git_commiter.execute({})
484
+
485
+ # 在用户接受commit后,根据配置决定是否保存记忆
486
+ if self.agent.force_save_memory:
487
+ self.agent.memory_manager.prompt_memory_save()
487
488
  elif start_commit:
488
489
  os.system(f"git reset --hard {str(start_commit)}") # 确保转换为字符串
489
490
  PrettyOutput.print("已重置到初始提交", OutputType.INFO)
@@ -642,7 +643,8 @@ class CodeAgent:
642
643
  def cli(
643
644
  llm_type: str = typer.Option(
644
645
  "normal",
645
- "-t", "--llm_type",
646
+ "-t",
647
+ "--llm_type",
646
648
  help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
647
649
  ),
648
650
  model_group: Optional[str] = typer.Option(
@@ -300,7 +300,11 @@ class CodeReviewTool:
300
300
 
301
301
  # Execute git command and get diff output
302
302
  diff_output = subprocess.check_output(
303
- diff_cmd, shell=True, text=True, encoding="utf-8", errors="replace"
303
+ diff_cmd,
304
+ shell=True,
305
+ text=True,
306
+ encoding="utf-8",
307
+ errors="replace",
304
308
  )
305
309
  if not diff_output:
306
310
  return {
@@ -339,7 +343,11 @@ class CodeReviewTool:
339
343
 
340
344
  # Execute git command and get diff output
341
345
  diff_output = subprocess.check_output(
342
- diff_cmd, shell=True, text=True, encoding="utf-8", errors="replace"
346
+ diff_cmd,
347
+ shell=True,
348
+ text=True,
349
+ encoding="utf-8",
350
+ errors="replace",
343
351
  )
344
352
  if not diff_output:
345
353
  return {
@@ -381,7 +389,11 @@ class CodeReviewTool:
381
389
 
382
390
  # Execute git command and get diff output
383
391
  diff_output = subprocess.check_output(
384
- diff_cmd, shell=True, text=True, encoding="utf-8", errors="replace"
392
+ diff_cmd,
393
+ shell=True,
394
+ text=True,
395
+ encoding="utf-8",
396
+ errors="replace",
385
397
  )
386
398
  if not diff_output:
387
399
  return {
@@ -581,16 +593,48 @@ class CodeReviewTool:
581
593
  tool_registry = ToolRegistry()
582
594
  tool_registry.dont_use_tools(["code_review"])
583
595
 
584
- # Use the provided agent's model_group or get it from globals
596
+ # Get llm_type and model_group from args
597
+ llm_type = args.get("llm_type", "normal")
598
+ model_group = args.get("model_group")
599
+
600
+ # Get platform and model based on llm_type and model_group
601
+ from jarvis.jarvis_utils.config import (
602
+ get_normal_platform_name,
603
+ get_normal_model_name,
604
+ get_thinking_platform_name,
605
+ get_thinking_model_name,
606
+ )
607
+
608
+ if llm_type == "thinking":
609
+ platform_name = get_thinking_platform_name(model_group)
610
+ model_name = get_thinking_model_name(model_group)
611
+ else:
612
+ platform_name = get_normal_platform_name(model_group)
613
+ model_name = get_normal_model_name(model_group)
614
+
615
+ # If no explicit parameters, try to get from existing agent
585
616
  calling_agent = agent or get_agent(current_agent_name)
586
- model_group = None
587
- if calling_agent and hasattr(calling_agent, "model") and calling_agent.model:
588
- model_group = calling_agent.model.model_group
617
+ if (
618
+ not platform_name
619
+ and calling_agent
620
+ and hasattr(calling_agent, "model")
621
+ and calling_agent.model
622
+ ):
623
+ platform_name = calling_agent.model.platform_name()
624
+ model_name = calling_agent.model.name()
625
+
626
+ # Create a new platform instance
627
+ review_model = None
628
+ if platform_name:
629
+ review_model = PlatformRegistry().create_platform(platform_name)
630
+ if review_model and model_name:
631
+ review_model.set_model_name(model_name)
632
+ if model_group:
633
+ review_model.model_group = model_group
589
634
 
590
635
  agent = Agent(
591
636
  system_prompt=system_prompt,
592
637
  name="Code Review Agent",
593
- model_group=model_group,
594
638
  summary_prompt=f"""<code_review_report>
595
639
  <overview>
596
640
  # 整体评估
@@ -660,6 +704,10 @@ class CodeReviewTool:
660
704
  auto_complete=False,
661
705
  )
662
706
 
707
+ # Replace the agent's model with our custom platform instance
708
+ if review_model:
709
+ agent.model = review_model
710
+
663
711
  # Determine if we need to split the diff due to size
664
712
  max_diff_size = 100 * 1024 * 1024 # Limit to 100MB
665
713
 
@@ -693,7 +741,9 @@ class CodeReviewTool:
693
741
 
694
742
  try:
695
743
  # Check if content is too large
696
- is_large_content = is_context_overflow(diff_output, model_group)
744
+ is_large_content = is_context_overflow(
745
+ diff_output, review_model.model_group if review_model else None
746
+ )
697
747
 
698
748
  # Upload the file to the agent's model
699
749
  if is_large_content:
@@ -773,10 +823,25 @@ def extract_code_report(result: str) -> str:
773
823
  def review_commit(
774
824
  commit: str = typer.Argument(..., help="要审查的提交SHA"),
775
825
  root_dir: str = typer.Option(".", "--root-dir", help="代码库根目录路径"),
826
+ llm_type: str = typer.Option(
827
+ "normal",
828
+ "-t",
829
+ "--llm_type",
830
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
831
+ ),
832
+ model_group: Optional[str] = typer.Option(
833
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
834
+ ),
776
835
  ):
777
836
  """审查指定的提交"""
778
837
  tool = CodeReviewTool()
779
- tool_args = {"review_type": "commit", "commit_sha": commit, "root_dir": root_dir}
838
+ tool_args = {
839
+ "review_type": "commit",
840
+ "commit_sha": commit,
841
+ "root_dir": root_dir,
842
+ "llm_type": llm_type,
843
+ "model_group": model_group,
844
+ }
780
845
  result = tool.execute(tool_args)
781
846
  if result["success"]:
782
847
  PrettyOutput.section("自动代码审查结果:", OutputType.SUCCESS)
@@ -789,10 +854,24 @@ def review_commit(
789
854
  @app.command("current")
790
855
  def review_current(
791
856
  root_dir: str = typer.Option(".", "--root-dir", help="代码库根目录路径"),
857
+ llm_type: str = typer.Option(
858
+ "normal",
859
+ "-t",
860
+ "--llm_type",
861
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
862
+ ),
863
+ model_group: Optional[str] = typer.Option(
864
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
865
+ ),
792
866
  ):
793
867
  """审查当前的变更"""
794
868
  tool = CodeReviewTool()
795
- tool_args = {"review_type": "current", "root_dir": root_dir}
869
+ tool_args = {
870
+ "review_type": "current",
871
+ "root_dir": root_dir,
872
+ "llm_type": llm_type,
873
+ "model_group": model_group,
874
+ }
796
875
  result = tool.execute(tool_args)
797
876
  if result["success"]:
798
877
  PrettyOutput.section("自动代码审查结果:", OutputType.SUCCESS)
@@ -807,6 +886,15 @@ def review_range(
807
886
  start_commit: str = typer.Argument(..., help="起始提交SHA"),
808
887
  end_commit: str = typer.Argument(..., help="结束提交SHA"),
809
888
  root_dir: str = typer.Option(".", "--root-dir", help="代码库根目录路径"),
889
+ llm_type: str = typer.Option(
890
+ "normal",
891
+ "-t",
892
+ "--llm_type",
893
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
894
+ ),
895
+ model_group: Optional[str] = typer.Option(
896
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
897
+ ),
810
898
  ):
811
899
  """审查提交范围"""
812
900
  tool = CodeReviewTool()
@@ -815,6 +903,8 @@ def review_range(
815
903
  "start_commit": start_commit,
816
904
  "end_commit": end_commit,
817
905
  "root_dir": root_dir,
906
+ "llm_type": llm_type,
907
+ "model_group": model_group,
818
908
  }
819
909
  result = tool.execute(tool_args)
820
910
  if result["success"]:
@@ -829,10 +919,25 @@ def review_range(
829
919
  def review_file(
830
920
  file: str = typer.Argument(..., help="要审查的文件路径"),
831
921
  root_dir: str = typer.Option(".", "--root-dir", help="代码库根目录路径"),
922
+ llm_type: str = typer.Option(
923
+ "normal",
924
+ "-t",
925
+ "--llm_type",
926
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
927
+ ),
928
+ model_group: Optional[str] = typer.Option(
929
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
930
+ ),
832
931
  ):
833
932
  """审查指定的文件"""
834
933
  tool = CodeReviewTool()
835
- tool_args = {"review_type": "file", "file_path": file, "root_dir": root_dir}
934
+ tool_args = {
935
+ "review_type": "file",
936
+ "file_path": file,
937
+ "root_dir": root_dir,
938
+ "llm_type": llm_type,
939
+ "model_group": model_group,
940
+ }
836
941
  result = tool.execute(tool_args)
837
942
  if result["success"]:
838
943
  PrettyOutput.section("自动代码审查结果:", OutputType.SUCCESS)
@@ -164,14 +164,59 @@ commit信息
164
164
  {ct("COMMIT_MESSAGE")}
165
165
  """
166
166
 
167
- # 获取模型并尝试上传文件
167
+ # Get llm_type and model_group from args
168
+ llm_type = args.get("llm_type", "normal")
169
+ model_group = args.get("model_group")
170
+
171
+ # Get platform and model based on llm_type and model_group
172
+ from jarvis.jarvis_utils.config import (
173
+ get_normal_platform_name,
174
+ get_normal_model_name,
175
+ get_thinking_platform_name,
176
+ get_thinking_model_name,
177
+ )
178
+
179
+ if llm_type == "thinking":
180
+ platform_name = get_thinking_platform_name(model_group)
181
+ model_name = get_thinking_model_name(model_group)
182
+ else:
183
+ platform_name = get_normal_platform_name(model_group)
184
+ model_name = get_normal_model_name(model_group)
185
+
186
+ # If no explicit parameters, try to get from existing agent
168
187
  agent = get_agent(current_agent_name)
169
- if agent:
170
- platform = agent.model
171
- model_group = agent.model.model_group
188
+ if (
189
+ not platform_name
190
+ and agent
191
+ and hasattr(agent, "model")
192
+ and agent.model
193
+ ):
194
+ platform_name = agent.model.platform_name()
195
+ model_name = agent.model.name()
196
+ if not model_group:
197
+ model_group = agent.model.model_group
198
+
199
+ # Create a new platform instance
200
+ if platform_name:
201
+ platform = PlatformRegistry().create_platform(platform_name)
202
+ if platform and model_name:
203
+ platform.set_model_name(model_name)
204
+ if model_group:
205
+ platform.model_group = model_group
172
206
  else:
173
- platform = PlatformRegistry().get_normal_platform()
174
- model_group = None
207
+ if llm_type == "thinking":
208
+ platform = PlatformRegistry().get_thinking_platform()
209
+ else:
210
+ platform = PlatformRegistry().get_normal_platform()
211
+
212
+ # Ensure platform is not None
213
+ if not platform:
214
+ return {
215
+ "success": False,
216
+ "stdout": "",
217
+ "stderr": "错误:无法创建平台实例",
218
+ }
219
+
175
220
  upload_success = False
176
221
 
177
222
  # Check if content is too large
@@ -330,9 +375,7 @@ commit信息
330
375
 
331
376
  @app.command()
332
377
  def cli(
333
- root_dir: str = typer.Option(
334
- ".", "--root-dir", help="Git仓库的根目录路径"
335
- ),
378
+ root_dir: str = typer.Option(".", "--root-dir", help="Git仓库的根目录路径"),
336
379
  prefix: str = typer.Option(
337
380
  "",
338
381
  "--prefix",
@@ -343,6 +386,15 @@ def cli(
343
386
  "--suffix",
344
387
  help="提交信息后缀(用换行分隔)",
345
388
  ),
389
+ llm_type: str = typer.Option(
390
+ "normal",
391
+ "-t",
392
+ "--llm_type",
393
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
394
+ ),
395
+ model_group: Optional[str] = typer.Option(
396
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
397
+ ),
346
398
  ):
347
399
  init_env("欢迎使用 Jarvis-GitCommitTool,您的Git提交助手已准备就绪!")
348
400
  tool = GitCommitTool()
@@ -351,6 +403,8 @@ def cli(
351
403
  "root_dir": root_dir,
352
404
  "prefix": prefix,
353
405
  "suffix": suffix,
406
+ "llm_type": llm_type,
407
+ "model_group": model_group,
354
408
  }
355
409
  )
356
410