jarvis-ai-assistant 0.1.222__tar.gz → 0.1.224__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 (117) hide show
  1. {jarvis_ai_assistant-0.1.222/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.224}/PKG-INFO +51 -22
  2. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/README.md +50 -21
  3. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/pyproject.toml +1 -1
  4. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/setup.py +1 -1
  5. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/__init__.py +1 -1
  6. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/__init__.py +5 -1
  7. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/builtin_input_handler.py +1 -7
  8. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_data/config_schema.json +37 -1
  9. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_multi_agent/__init__.py +74 -31
  10. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/kimi.py +2 -2
  11. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/cli.py +1 -1
  12. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/registry.py +36 -19
  13. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/config.py +10 -1
  14. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/git_utils.py +13 -14
  15. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224/src/jarvis_ai_assistant.egg-info}/PKG-INFO +51 -22
  16. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/LICENSE +0 -0
  17. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/MANIFEST.in +0 -0
  18. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/setup.cfg +0 -0
  19. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  20. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  21. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/main.py +0 -0
  22. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  23. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  24. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/prompts.py +0 -0
  25. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/protocols.py +0 -0
  26. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  27. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  28. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  29. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  30. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
  31. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  32. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  33. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  34. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  35. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  36. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  37. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  38. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  39. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  40. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  41. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  42. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  43. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  44. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  45. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  46. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  47. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  48. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  49. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  50. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  51. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  52. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  53. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  54. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_git_details/__init__.py +0 -0
  55. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_git_details/main.py +0 -0
  56. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  57. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_git_squash/main.py +0 -0
  58. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  59. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  60. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  61. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  62. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  63. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_methodology/main.py +0 -0
  64. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  65. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/__init__.py +0 -0
  66. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/ai8.py +0 -0
  67. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/base.py +0 -0
  68. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/human.py +0 -0
  69. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/openai.py +0 -0
  70. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/oyi.py +0 -0
  71. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/registry.py +0 -0
  72. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  73. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  74. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  75. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  76. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  77. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/__init__.py +0 -0
  78. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/cache.py +0 -0
  79. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  80. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  81. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  82. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  83. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/reranker.py +0 -0
  84. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_rag/retriever.py +0 -0
  85. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  86. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  87. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/__init__.py +0 -0
  88. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  89. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/base.py +0 -0
  90. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  91. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  92. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  93. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  94. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  95. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  96. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/methodology.py +0 -0
  97. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/read_code.py +0 -0
  98. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  99. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  100. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/search_web.py +0 -0
  101. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  102. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/__init__.py +0 -0
  103. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  104. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/embedding.py +0 -0
  105. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  106. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/globals.py +0 -0
  107. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/http.py +0 -0
  108. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/input.py +0 -0
  109. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/methodology.py +0 -0
  110. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/output.py +0 -0
  111. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/tag.py +0 -0
  112. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis/jarvis_utils/utils.py +0 -0
  113. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  114. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  115. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  116. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  117. {jarvis_ai_assistant-0.1.222 → jarvis_ai_assistant-0.1.224}/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.1.222
3
+ Version: 0.1.224
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
@@ -148,15 +148,16 @@ pip3 install jarvis-ai-assistant
148
148
  jarvis
149
149
 
150
150
  # 带参数使用
151
- jarvis -p <平台> -m <模型> -t "初始任务"
151
+ jarvis --llm_type thinking -t "初始任务"
152
152
  ```
153
153
 
154
154
  #### 3. 命令行参数
155
155
  | 参数 | 描述 |
156
156
  |------|------|
157
- | `-p/--platform` | 指定AI平台 (yuanbao/kimi/tongyi/openai) |
158
- | `-m/--model` | 指定模型名称 |
159
- | `-t/--task` | 指定初始任务 |
157
+ | `--llm_type` | 使用的LLM类型 (normal/thinking) |
158
+ | `-t/--task` | 直接从命令行输入任务内容 |
159
+ | `-f/--config` | 自定义配置文件的路径 |
160
+ | `--restore-session` | 从 .jarvis/saved_session.json 恢复会话 |
160
161
 
161
162
  #### 4. 工作流程
162
163
  1. 初始化环境
@@ -178,14 +179,14 @@ jarvis -p <平台> -m <模型> -t "初始任务"
178
179
  # 基本使用
179
180
  jarvis
180
181
 
181
- # 指定平台和模型
182
- jarvis -p yuanbao -m deep_seek_v3
182
+ # 指定LLM类型
183
+ jarvis --llm_type thinking
183
184
 
184
185
  # 直接执行任务
185
186
  jarvis -t "分析项目结构并生成架构图"
186
187
 
187
188
  # 组合使用
188
- jarvis -p kimi -m k1 -t "优化项目性能"
189
+ jarvis --llm_type thinking -t "优化项目性能"
189
190
  ```
190
191
 
191
192
  ### 代码代理功能 (jarvis-code-agent)
@@ -207,15 +208,15 @@ jarvis-code-agent
207
208
  jca
208
209
 
209
210
  # 带参数使用
210
- jarvis-code-agent -p <平台> -m <模型> -r "需求描述"
211
+ jarvis-code-agent --llm_type thinking -r "需求描述"
211
212
  ```
212
213
 
213
214
  #### 3. 命令行参数
214
215
  | 参数 | 描述 |
215
216
  |------|------|
216
- | `-p/--platform` | 指定AI平台 (yuanbao/kimi/tongyi/openai) |
217
- | `-m/--model` | 指定模型名称 |
218
- | `-r/--requirement` | 直接指定需求描述 |
217
+ | `--llm_type` | 使用的LLM类型 (normal/thinking) |
218
+ | `-r/--requirement` | 要处理的需求 |
219
+ | `--restore-session` | .jarvis/saved_session.json 恢复会话 |
219
220
 
220
221
  #### 4. 工作流程
221
222
  1. 初始化环境(查找git根目录,检查未提交修改)
@@ -229,8 +230,8 @@ jarvis-code-agent -p <平台> -m <模型> -r "需求描述"
229
230
  # 使用默认平台分析代码
230
231
  jca
231
232
 
232
- # 指定平台和模型
233
- jca -p yuanbao -m deep_seek_v3
233
+ # 指定LLM类型
234
+ jca --llm_type thinking
234
235
 
235
236
  # 直接处理需求
236
237
  jca -r "修复src/example.py中的内存泄漏问题"
@@ -338,6 +339,7 @@ jarvis-agent -f <配置文件> -c <代理定义文件> -t "初始任务"
338
339
  | `-f/--config` | 指定配置文件路径(可选) |
339
340
  | `-c/--agent_definition` | 指定代理定义文件路径(可选) |
340
341
  | `-t/--task` | 指定初始任务(可选) |
342
+ | `--llm_type` | 使用的LLM类型 (normal/thinking),会覆盖配置文件中的设置 |
341
343
 
342
344
  #### 4. 配置文件格式
343
345
  代理定义文件使用YAML格式:
@@ -413,6 +415,8 @@ jarvis-platform-manager chat -p <平台名称> -m <模型名称>
413
415
  - `/shell <命令>` - 执行shell命令
414
416
  - `/save <文件名>` - 保存最后一条消息
415
417
  - `/saveall <文件名>` - 保存完整对话历史
418
+ - `/save_session <文件名>` - 保存当前会话状态
419
+ - `/load_session <文件名>` - 加载会话状态
416
420
 
417
421
  ##### 2.3 启动API服务
418
422
  ```bash
@@ -430,6 +434,7 @@ jarvis-platform-manager service --host <IP地址> --port <端口号> -p <平台
430
434
  ```bash
431
435
  # 加载角色配置文件并开始对话
432
436
  jarvis-platform-manager role -c <配置文件路径>
437
+ # 配置文件默认为 ~/.jarvis/roles.yaml
433
438
  ```
434
439
 
435
440
  角色配置文件格式(YAML):
@@ -604,14 +609,36 @@ jarvis-rag add README.md ./docs/ 'src/jarvis/jarvis_rag/*.py'
604
609
 
605
610
  **参数与选项:**
606
611
 
612
+ | 参数/选项 | 描述 |
613
+ |---|---|
607
614
  | 参数/选项 | 描述 |
608
615
  |---|---|
609
616
  | `paths` | **[必需]** 一个或多个文件路径、目录路径或用引号包裹的通配符模式。 |
610
- | `--collection` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
611
- | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
617
+ | `--collection` / `-c` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
618
+ | `--embedding-model` / `-e` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
612
619
  | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
620
+ | `--batch-size` / `-b` | 单个批次中要处理的文档数(默认为 500)。 |
621
+
622
+ ##### 2.2 列出知识库中的文档 (`list-docs`)
613
623
 
614
- ##### 2.2 查询知识库 (`query`)
624
+ 此命令用于列出知识库中所有唯一的文档来源。
625
+
626
+ ```bash
627
+ # 基本用法
628
+ jarvis-rag list-docs
629
+
630
+ # 指定集合
631
+ jarvis-rag list-docs --collection my_collection
632
+ ```
633
+
634
+ **参数与选项:**
635
+
636
+ | 参数/选项 | 描述 |
637
+ |---|---|
638
+ | `--collection` / `-c` | 指定要查询的知识库集合名称。 |
639
+ | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
640
+
641
+ ##### 2.3 查询知识库 (`query`)
615
642
 
616
643
  此命令用于向已建立的知识库提出问题。
617
644
 
@@ -624,18 +651,20 @@ jarvis-rag query "你的问题"
624
651
  jarvis-rag query "请总结一下我添加的文档的核心内容"
625
652
 
626
653
  # 2. 指定使用Kimi模型进行查询
627
- jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --platform kimi --model moonshot-v1-8k
654
+ jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --platform kimi --model kimi
628
655
  ```
629
656
 
630
657
  **参数与选项:**
631
658
 
659
+ | 参数/选项 | 描述 |
660
+ |---|---|
632
661
  | 参数/选项 | 描述 |
633
662
  |---|---|
634
663
  | `question` | **[必需]** 你要向知识库提出的问题。 |
635
- | `--collection` | 指定要查询的知识库集合名称。 |
636
- | `--platform` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
637
- | `--model` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
638
- | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
664
+ | `--collection` / `-c` | 指定要查询的知识库集合名称。 |
665
+ | `--platform` / `-p` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
666
+ | `--model` / `-m` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
667
+ | `--embedding-model` / `-e` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
639
668
 
640
669
  ### 3. 命令替换功能
641
670
  支持使用特殊标记`'<tag>'`触发命令替换功能:
@@ -64,15 +64,16 @@ pip3 install jarvis-ai-assistant
64
64
  jarvis
65
65
 
66
66
  # 带参数使用
67
- jarvis -p <平台> -m <模型> -t "初始任务"
67
+ jarvis --llm_type thinking -t "初始任务"
68
68
  ```
69
69
 
70
70
  #### 3. 命令行参数
71
71
  | 参数 | 描述 |
72
72
  |------|------|
73
- | `-p/--platform` | 指定AI平台 (yuanbao/kimi/tongyi/openai) |
74
- | `-m/--model` | 指定模型名称 |
75
- | `-t/--task` | 指定初始任务 |
73
+ | `--llm_type` | 使用的LLM类型 (normal/thinking) |
74
+ | `-t/--task` | 直接从命令行输入任务内容 |
75
+ | `-f/--config` | 自定义配置文件的路径 |
76
+ | `--restore-session` | 从 .jarvis/saved_session.json 恢复会话 |
76
77
 
77
78
  #### 4. 工作流程
78
79
  1. 初始化环境
@@ -94,14 +95,14 @@ jarvis -p <平台> -m <模型> -t "初始任务"
94
95
  # 基本使用
95
96
  jarvis
96
97
 
97
- # 指定平台和模型
98
- jarvis -p yuanbao -m deep_seek_v3
98
+ # 指定LLM类型
99
+ jarvis --llm_type thinking
99
100
 
100
101
  # 直接执行任务
101
102
  jarvis -t "分析项目结构并生成架构图"
102
103
 
103
104
  # 组合使用
104
- jarvis -p kimi -m k1 -t "优化项目性能"
105
+ jarvis --llm_type thinking -t "优化项目性能"
105
106
  ```
106
107
 
107
108
  ### 代码代理功能 (jarvis-code-agent)
@@ -123,15 +124,15 @@ jarvis-code-agent
123
124
  jca
124
125
 
125
126
  # 带参数使用
126
- jarvis-code-agent -p <平台> -m <模型> -r "需求描述"
127
+ jarvis-code-agent --llm_type thinking -r "需求描述"
127
128
  ```
128
129
 
129
130
  #### 3. 命令行参数
130
131
  | 参数 | 描述 |
131
132
  |------|------|
132
- | `-p/--platform` | 指定AI平台 (yuanbao/kimi/tongyi/openai) |
133
- | `-m/--model` | 指定模型名称 |
134
- | `-r/--requirement` | 直接指定需求描述 |
133
+ | `--llm_type` | 使用的LLM类型 (normal/thinking) |
134
+ | `-r/--requirement` | 要处理的需求 |
135
+ | `--restore-session` | .jarvis/saved_session.json 恢复会话 |
135
136
 
136
137
  #### 4. 工作流程
137
138
  1. 初始化环境(查找git根目录,检查未提交修改)
@@ -145,8 +146,8 @@ jarvis-code-agent -p <平台> -m <模型> -r "需求描述"
145
146
  # 使用默认平台分析代码
146
147
  jca
147
148
 
148
- # 指定平台和模型
149
- jca -p yuanbao -m deep_seek_v3
149
+ # 指定LLM类型
150
+ jca --llm_type thinking
150
151
 
151
152
  # 直接处理需求
152
153
  jca -r "修复src/example.py中的内存泄漏问题"
@@ -254,6 +255,7 @@ jarvis-agent -f <配置文件> -c <代理定义文件> -t "初始任务"
254
255
  | `-f/--config` | 指定配置文件路径(可选) |
255
256
  | `-c/--agent_definition` | 指定代理定义文件路径(可选) |
256
257
  | `-t/--task` | 指定初始任务(可选) |
258
+ | `--llm_type` | 使用的LLM类型 (normal/thinking),会覆盖配置文件中的设置 |
257
259
 
258
260
  #### 4. 配置文件格式
259
261
  代理定义文件使用YAML格式:
@@ -329,6 +331,8 @@ jarvis-platform-manager chat -p <平台名称> -m <模型名称>
329
331
  - `/shell <命令>` - 执行shell命令
330
332
  - `/save <文件名>` - 保存最后一条消息
331
333
  - `/saveall <文件名>` - 保存完整对话历史
334
+ - `/save_session <文件名>` - 保存当前会话状态
335
+ - `/load_session <文件名>` - 加载会话状态
332
336
 
333
337
  ##### 2.3 启动API服务
334
338
  ```bash
@@ -346,6 +350,7 @@ jarvis-platform-manager service --host <IP地址> --port <端口号> -p <平台
346
350
  ```bash
347
351
  # 加载角色配置文件并开始对话
348
352
  jarvis-platform-manager role -c <配置文件路径>
353
+ # 配置文件默认为 ~/.jarvis/roles.yaml
349
354
  ```
350
355
 
351
356
  角色配置文件格式(YAML):
@@ -520,14 +525,36 @@ jarvis-rag add README.md ./docs/ 'src/jarvis/jarvis_rag/*.py'
520
525
 
521
526
  **参数与选项:**
522
527
 
528
+ | 参数/选项 | 描述 |
529
+ |---|---|
523
530
  | 参数/选项 | 描述 |
524
531
  |---|---|
525
532
  | `paths` | **[必需]** 一个或多个文件路径、目录路径或用引号包裹的通配符模式。 |
526
- | `--collection` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
527
- | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
533
+ | `--collection` / `-c` | 指定知识库的集合名称(默认为 `jarvis_rag_collection`)。 |
534
+ | `--embedding-model` / `-e` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
528
535
  | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
536
+ | `--batch-size` / `-b` | 单个批次中要处理的文档数(默认为 500)。 |
537
+
538
+ ##### 2.2 列出知识库中的文档 (`list-docs`)
529
539
 
530
- ##### 2.2 查询知识库 (`query`)
540
+ 此命令用于列出知识库中所有唯一的文档来源。
541
+
542
+ ```bash
543
+ # 基本用法
544
+ jarvis-rag list-docs
545
+
546
+ # 指定集合
547
+ jarvis-rag list-docs --collection my_collection
548
+ ```
549
+
550
+ **参数与选项:**
551
+
552
+ | 参数/选项 | 描述 |
553
+ |---|---|
554
+ | `--collection` / `-c` | 指定要查询的知识库集合名称。 |
555
+ | `--db-path` | 覆盖全局配置,指定向量数据库的存储路径。 |
556
+
557
+ ##### 2.3 查询知识库 (`query`)
531
558
 
532
559
  此命令用于向已建立的知识库提出问题。
533
560
 
@@ -540,18 +567,20 @@ jarvis-rag query "你的问题"
540
567
  jarvis-rag query "请总结一下我添加的文档的核心内容"
541
568
 
542
569
  # 2. 指定使用Kimi模型进行查询
543
- jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --platform kimi --model moonshot-v1-8k
570
+ jarvis-rag query "代码中的 'PlatformRegistry' 类是做什么用的?" --platform kimi --model kimi
544
571
  ```
545
572
 
546
573
  **参数与选项:**
547
574
 
575
+ | 参数/选项 | 描述 |
576
+ |---|---|
548
577
  | 参数/选项 | 描述 |
549
578
  |---|---|
550
579
  | `question` | **[必需]** 你要向知识库提出的问题。 |
551
- | `--collection` | 指定要查询的知识库集合名称。 |
552
- | `--platform` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
553
- | `--model` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
554
- | `--embedding-model` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
580
+ | `--collection` / `-c` | 指定要查询的知识库集合名称。 |
581
+ | `--platform` / `-p` | 指定一个平台名称来回答问题,覆盖默认的“思考”模型。 |
582
+ | `--model` / `-m` | 指定一个模型名称来回答问题,需要与 `--platform` 同时使用。 |
583
+ | `--embedding-model` / `-e` | 覆盖全局配置,强制使用特定的嵌入模型名称。 |
555
584
 
556
585
  ### 3. 命令替换功能
557
586
  支持使用特殊标记`'<tag>'`触发命令替换功能:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.1.222"
7
+ version = "0.1.224"
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" }]
@@ -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.1.222",
6
+ version="0.1.224",
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",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.1.222"
4
+ __version__ = "0.1.224"
@@ -92,6 +92,10 @@ class Agent:
92
92
  # 只有在记录启动时才停止记录
93
93
  delete_agent(self.name)
94
94
 
95
+ def get_tool_usage_prompt(self) -> str:
96
+ """获取工具使用提示"""
97
+ return build_action_prompt(self.output_handler) # type: ignore
98
+
95
99
  def __init__(
96
100
  self,
97
101
  system_prompt: str,
@@ -199,7 +203,7 @@ class Agent:
199
203
 
200
204
  PrettyOutput.print(welcome_message, OutputType.SYSTEM)
201
205
 
202
- action_prompt = build_action_prompt(self.output_handler) # type: ignore
206
+ action_prompt = self.get_tool_usage_prompt()
203
207
 
204
208
  self.model.set_system_prompt(
205
209
  f"""
@@ -38,13 +38,7 @@ def builtin_input_handler(user_input: str, agent_: Any) -> Tuple[str, bool]:
38
38
  agent.clear()
39
39
  return "", True
40
40
  elif tag == "ToolUsage":
41
- from jarvis.jarvis_tools.registry import ToolRegistry
42
-
43
- tool_registry_ = agent.get_tool_registry()
44
- tool_registry: ToolRegistry = (
45
- tool_registry_ if tool_registry_ else ToolRegistry()
46
- )
47
- agent.set_addon_prompt(tool_registry.prompt())
41
+ agent.set_addon_prompt(agent.get_tool_usage_prompt())
48
42
  return "", False
49
43
  elif tag == "ReloadConfig":
50
44
  from jarvis.jarvis_utils.utils import load_config
@@ -176,6 +176,14 @@
176
176
  "description": "是否启用任务分析",
177
177
  "default": true
178
178
  },
179
+ "JARVIS_TOOL_LOAD_DIRS": {
180
+ "type": "array",
181
+ "description": "自定义工具加载目录",
182
+ "items": {
183
+ "type": "string"
184
+ },
185
+ "default": []
186
+ },
179
187
  "JARVIS_PRINT_PROMPT": {
180
188
  "type": "boolean",
181
189
  "description": "是否打印提示",
@@ -229,7 +237,35 @@
229
237
  "template"
230
238
  ]
231
239
  }
240
+ },
241
+ "OPENAI_API_KEY": {
242
+ "type": "string",
243
+ "description": "OpenAI API Key"
244
+ },
245
+ "OPENAI_API_BASE": {
246
+ "type": "string",
247
+ "description": "OpenAI API Base URL"
248
+ },
249
+ "KIMI_API_KEY": {
250
+ "type": "string",
251
+ "description": "Kimi API Key"
252
+ },
253
+ "TONGYI_COOKIES": {
254
+ "type": "string",
255
+ "description": "Tongyi Cookies"
256
+ },
257
+ "YUANBAO_COOKIES": {
258
+ "type": "string",
259
+ "description": "Yuanbao Cookies"
260
+ },
261
+ "AI8_API_KEY": {
262
+ "type": "string",
263
+ "description": "AI8 API Key"
264
+ },
265
+ "OYI_API_KEY": {
266
+ "type": "string",
267
+ "description": "Oyi API Key"
232
268
  }
233
269
  },
234
- "additionalProperties": false
270
+ "additionalProperties": true
235
271
  }
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  import re
3
- from typing import Any, Dict, List, Tuple
3
+ from typing import Any, Dict, List, Optional, Tuple
4
4
 
5
5
  import yaml
6
6
 
@@ -14,9 +14,10 @@ from jarvis.jarvis_utils.tag import ct, ot
14
14
  class MultiAgent(OutputHandler):
15
15
  def __init__(self, agents_config: List[Dict], main_agent_name: str):
16
16
  self.agents_config = agents_config
17
- self.agents = {}
18
- self.init_agents()
17
+ self.agents_config_map = {c["name"]: c for c in agents_config}
18
+ self.agents: Dict[str, Agent] = {}
19
19
  self.main_agent_name = main_agent_name
20
+ self.original_question: Optional[str] = None
20
21
 
21
22
  def prompt(self) -> str:
22
23
  return f"""
@@ -101,43 +102,85 @@ content: |2
101
102
  continue
102
103
  return ret
103
104
 
104
- def init_agents(self):
105
- for config in self.agents_config:
106
- output_handler = config.get("output_handler", [])
107
- if len(output_handler) == 0:
108
- output_handler = [
109
- ToolRegistry(),
110
- self,
111
- ]
112
- else:
105
+ def _get_agent(self, name: str) -> Agent | None:
106
+ if name in self.agents:
107
+ return self.agents[name]
108
+
109
+ if name not in self.agents_config_map:
110
+ return None
111
+
112
+ config = self.agents_config_map[name].copy()
113
+
114
+ if name != self.main_agent_name and self.original_question:
115
+ system_prompt = config.get("system_prompt", "")
116
+ config["system_prompt"] = (
117
+ f"{system_prompt}\n\n# 原始问题\n{self.original_question}"
118
+ )
119
+
120
+ output_handler = config.get("output_handler", [])
121
+ if len(output_handler) == 0:
122
+ output_handler = [
123
+ ToolRegistry(),
124
+ self,
125
+ ]
126
+ else:
127
+ if not any(isinstance(h, MultiAgent) for h in output_handler):
113
128
  output_handler.append(self)
114
- config["output_handler"] = output_handler
115
- agent = Agent(**config)
116
- self.agents[config["name"]] = agent
129
+ config["output_handler"] = output_handler
130
+
131
+ agent = Agent(**config)
132
+ self.agents[name] = agent
133
+ return agent
117
134
 
118
135
  def run(self, user_input: str) -> str:
119
- last_agent = self.main_agent_name
120
- msg = self.agents[self.main_agent_name].run(user_input)
136
+ self.original_question = user_input
137
+ last_agent_name = self.main_agent_name
138
+
139
+ agent = self._get_agent(self.main_agent_name)
140
+ if not agent:
141
+ # This should not happen if main_agent_name is correctly configured
142
+ return f"主智能体 {self.main_agent_name} 未找到"
143
+
144
+ msg: Any = agent.run(user_input)
145
+
121
146
  while msg:
122
147
  if isinstance(msg, str):
123
148
  return msg
124
- elif isinstance(msg, Dict):
125
- prompt = f"""
149
+
150
+ if not isinstance(msg, Dict):
151
+ # Should not happen if agent.run() returns str or Dict
152
+ PrettyOutput.print(f"未知消息类型: {type(msg)}", OutputType.WARNING)
153
+ break
154
+
155
+ prompt = f"""
126
156
  Please handle this message:
127
- from: {last_agent}
157
+ from: {last_agent_name}
128
158
  content: {msg['content']}
129
159
  """
130
- if msg["to"] not in self.agents:
131
- PrettyOutput.print(
132
- f"未找到智能体 {msg['to']},正在重试...", OutputType.WARNING
133
- )
134
- msg = self.agents[last_agent].run(
135
- f"未找到智能体 {msg['to']},可用智能体列表: {self.agents.keys()}"
136
- )
137
- continue
160
+ to_agent_name = msg.get("to")
161
+ if not to_agent_name:
162
+ return f"消息中未指定 `to` 字段"
163
+
164
+ if to_agent_name not in self.agents_config_map:
138
165
  PrettyOutput.print(
139
- f"{last_agent} 正在向 {msg['to']} 发送消息...", OutputType.INFO
166
+ f"未找到智能体 {to_agent_name},正在重试...", OutputType.WARNING
140
167
  )
141
- last_agent = self.agents[msg["to"]].name
142
- msg = self.agents[msg["to"]].run(prompt)
168
+ agent = self._get_agent(last_agent_name)
169
+ if not agent:
170
+ return f"智能体 {last_agent_name} 未找到"
171
+ msg = agent.run(
172
+ f"未找到智能体 {to_agent_name},可用智能体列表: {list(self.agents_config_map.keys())}"
173
+ )
174
+ continue
175
+
176
+ PrettyOutput.print(
177
+ f"{last_agent_name} 正在向 {to_agent_name} 发送消息...", OutputType.INFO
178
+ )
179
+
180
+ agent = self._get_agent(to_agent_name)
181
+ if not agent:
182
+ return f"智能体 {to_agent_name} 未找到"
183
+
184
+ last_agent_name = agent.name
185
+ msg = agent.run(prompt)
143
186
  return ""
@@ -24,8 +24,8 @@ class KimiModel(BasePlatform):
24
24
  def get_model_list(self) -> List[Tuple[str, str]]:
25
25
  """Get model list"""
26
26
  return [
27
- ("kimi", "基于网页的 Kimi,免费接口"),
28
- ("k1", "基于网页的 Kimi,深度思考模型"),
27
+ ("k1.5", "基于网页的 Kimi,免费接口"),
28
+ ("k1.5-thinking", "基于网页的 Kimi,深度思考模型"),
29
29
  ("k2", "基于网页的 Kimi,深度思考模型 K2"),
30
30
  ]
31
31
 
@@ -4,7 +4,7 @@ from pathlib import Path
4
4
  from typing import Optional, List, Literal, cast
5
5
  import mimetypes
6
6
 
7
- import pathspec
7
+ import pathspec # type: ignore
8
8
  import typer
9
9
  from langchain.docstore.document import Document
10
10
  from langchain_community.document_loaders import (