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.
- {jarvis_ai_assistant-0.3.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.3}/PKG-INFO +40 -1
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/README.md +39 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/pyproject.toml +12 -4
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/setup.py +3 -1
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/__init__.py +6 -6
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/share_manager.py +21 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/code_agent.py +6 -4
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/code_review.py +117 -12
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_utils/git_commiter.py +63 -9
- jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_memory_organizer/memory_organizer.py +729 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/base.py +9 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/kimi.py +20 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/openai.py +27 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/tongyi.py +19 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/yuanbao.py +18 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform_manager/main.py +22 -16
- jarvis_ai_assistant-0.3.3/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/globals.py +16 -10
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/utils.py +49 -29
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3/src/jarvis_ai_assistant.egg-info}/PKG-INFO +40 -1
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/entry_points.txt +2 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/config_editor.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/jarvis.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/prompts.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/protocols.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/session_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/task_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/lint.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_data/config_schema.json +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
- {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
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/ai8.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/human.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform/registry.py +0 -0
- {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
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_platform_manager/service.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/cache.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/cli.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/reranker.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_rag/retriever.py +0 -0
- {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
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/cli.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/stats.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/storage.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_stats/visualizer.py +0 -0
- {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
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/cli/main.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/edit_file.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/registry.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/save_memory.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/clipboard.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/config.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/http.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
- {jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
{jarvis_ai_assistant-0.3.2/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.3}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: jarvis-ai-assistant
|
3
|
-
Version: 0.3.
|
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.
|
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
|
-
|
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.
|
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",
|
@@ -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(
|
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(
|
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
|
{jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_agent/share_manager.py
RENAMED
@@ -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(
|
{jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_code_agent/code_agent.py
RENAMED
@@ -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",
|
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,
|
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,
|
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,
|
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
|
-
#
|
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
|
-
|
587
|
-
|
588
|
-
|
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(
|
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 = {
|
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 = {
|
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 = {
|
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)
|
{jarvis_ai_assistant-0.3.2 → jarvis_ai_assistant-0.3.3}/src/jarvis/jarvis_git_utils/git_commiter.py
RENAMED
@@ -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
|
170
|
-
|
171
|
-
|
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
|
-
|
174
|
-
|
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
|
|