jarvis-ai-assistant 0.1.176__tar.gz → 0.1.178__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.

Potentially problematic release.


This version of jarvis-ai-assistant might be problematic. Click here for more details.

Files changed (110) hide show
  1. {jarvis_ai_assistant-0.1.176/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.178}/PKG-INFO +4 -4
  2. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/README.md +3 -3
  3. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/pyproject.toml +1 -1
  4. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/setup.py +1 -1
  5. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/__init__.py +1 -1
  6. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/__init__.py +33 -62
  7. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/jarvis.py +10 -10
  8. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/main.py +6 -6
  9. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_agent/code_agent.py +10 -6
  10. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/code_review.py +1 -1
  11. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_dev/main.py +1 -1
  12. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_details/main.py +1 -1
  13. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_squash/main.py +1 -1
  14. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_utils/git_commiter.py +1 -1
  15. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_multi_agent/main.py +1 -1
  16. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/base.py +6 -3
  17. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/openai.py +66 -10
  18. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/yuanbao.py +1 -1
  19. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform_manager/main.py +1 -1
  20. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_smart_shell/main.py +4 -2
  21. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/ask_codebase.py +3 -2
  22. jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  23. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/cli/main.py +28 -1
  24. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/edit_file.py +186 -118
  25. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/read_code.py +0 -2
  26. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/registry.py +31 -1
  27. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/config.py +13 -4
  28. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/output.py +36 -7
  29. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/utils.py +19 -1
  30. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178/src/jarvis_ai_assistant.egg-info}/PKG-INFO +4 -4
  31. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -7
  32. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/base.py +0 -66
  33. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/cpp.py +0 -99
  34. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/go.py +0 -104
  35. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/python.py +0 -58
  36. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/registry.py +0 -169
  37. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_lsp/rust.py +0 -107
  38. jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +0 -147
  39. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/LICENSE +0 -0
  40. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/MANIFEST.in +0 -0
  41. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/setup.cfg +0 -0
  42. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  43. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  44. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  45. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  46. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  47. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  48. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  49. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  50. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  51. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  52. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  53. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  54. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  55. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  56. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  57. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  58. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  59. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  60. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  61. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  62. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  63. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  64. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  65. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  66. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_data/huggingface.tar.gz +0 -0
  67. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_git_details → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_event}/__init__.py +0 -0
  68. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_git_squash → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_git_details}/__init__.py +0 -0
  69. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_platform_manager → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_git_squash}/__init__.py +0 -0
  70. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  71. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  72. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  73. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_methodology/main.py +0 -0
  74. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  75. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/__init__.py +0 -0
  76. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/human.py +0 -0
  77. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/kimi.py +0 -0
  78. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/registry.py +0 -0
  79. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_smart_shell → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_platform_manager}/__init__.py +0 -0
  80. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_tools → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_smart_shell}/__init__.py +0 -0
  81. {jarvis_ai_assistant-0.1.176/src/jarvis/jarvis_tools/cli → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_tools}/__init__.py +0 -0
  82. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  83. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/base.py +0 -0
  84. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/chdir.py +0 -0
  85. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/code_plan.py +0 -0
  86. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
  87. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
  88. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  89. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  90. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/file_operation.py +0 -0
  91. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/find_methodology.py +0 -0
  92. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  93. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/methodology.py +0 -0
  94. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  95. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  96. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/search_web.py +0 -0
  97. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  98. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/__init__.py +0 -0
  99. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  100. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/embedding.py +0 -0
  101. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  102. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  103. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/globals.py +0 -0
  104. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/input.py +0 -0
  105. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/methodology.py +0 -0
  106. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/tag.py +0 -0
  107. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  108. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  109. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  110. {jarvis_ai_assistant-0.1.176 → jarvis_ai_assistant-0.1.178}/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.176
3
+ Version: 0.1.178
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
@@ -201,7 +201,7 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
201
201
  ### 环境变量配置
202
202
  | 变量名称 | 默认值 | 说明 |
203
203
  |----------|--------|------|
204
- | `JARVIS_MAX_TOKEN_COUNT` | 102400000 | 上下文窗口的最大token数量 |
204
+ | `JARVIS_MAX_TOKEN_COUNT` | 960000 | 上下文窗口的最大token数量 |
205
205
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
206
206
  | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能(任务判定完成的时候会自动终止) |
207
207
  | `JARVIS_SHELL_NAME` | bash | 系统shell名称 |
@@ -211,9 +211,9 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
211
211
  | `JARVIS_THINKING_MODEL` | JARVIS_MODEL | 推理任务使用的模型 |
212
212
  | `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
213
213
  | `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
214
- | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
214
+ | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数,如果是0表示无限制 |
215
215
  | `JARVIS_AUTO_UPDATE` | true | 是否自动更新Jarvis(仅在以git仓库方式安装时有效) |
216
- | `JARVIS_MAX_BIG_CONTENT_SIZE` | 96000 | 最大大内容大小 |
216
+ | `JARVIS_MAX_BIG_CONTENT_SIZE` | 1024000 | 最大大内容大小 |
217
217
  | `JARVIS_PRETTY_OUTPUT` | false | 是否启用PrettyOutput |
218
218
 
219
219
  所有配置编写到`~/.jarvis/env`文件中即可生效。
@@ -131,7 +131,7 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
131
131
  ### 环境变量配置
132
132
  | 变量名称 | 默认值 | 说明 |
133
133
  |----------|--------|------|
134
- | `JARVIS_MAX_TOKEN_COUNT` | 102400000 | 上下文窗口的最大token数量 |
134
+ | `JARVIS_MAX_TOKEN_COUNT` | 960000 | 上下文窗口的最大token数量 |
135
135
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
136
136
  | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能(任务判定完成的时候会自动终止) |
137
137
  | `JARVIS_SHELL_NAME` | bash | 系统shell名称 |
@@ -141,9 +141,9 @@ OPENAI_API_BASE=https://api.openai.com/v1 # 可选,默认为官方API地址
141
141
  | `JARVIS_THINKING_MODEL` | JARVIS_MODEL | 推理任务使用的模型 |
142
142
  | `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
143
143
  | `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
144
- | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
144
+ | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数,如果是0表示无限制 |
145
145
  | `JARVIS_AUTO_UPDATE` | true | 是否自动更新Jarvis(仅在以git仓库方式安装时有效) |
146
- | `JARVIS_MAX_BIG_CONTENT_SIZE` | 96000 | 最大大内容大小 |
146
+ | `JARVIS_MAX_BIG_CONTENT_SIZE` | 1024000 | 最大大内容大小 |
147
147
  | `JARVIS_PRETTY_OUTPUT` | false | 是否启用PrettyOutput |
148
148
 
149
149
  所有配置编写到`~/.jarvis/env`文件中即可生效。
@@ -8,7 +8,7 @@ default = true
8
8
 
9
9
  [project]
10
10
  name = "jarvis-ai-assistant"
11
- version = "0.1.176"
11
+ version = "0.1.178"
12
12
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
13
13
  readme = "README.md"
14
14
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.1.176",
6
+ version="0.1.178",
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.176"
4
+ __version__ = "0.1.178"
@@ -10,7 +10,7 @@ from jarvis.jarvis_platform.base import BasePlatform
10
10
  from jarvis.jarvis_platform.registry import PlatformRegistry
11
11
  from jarvis.jarvis_utils.output import PrettyOutput, OutputType
12
12
  from jarvis.jarvis_utils.embedding import get_context_token_count
13
- from jarvis.jarvis_utils.config import get_max_tool_call_count, is_auto_complete, is_execute_tool_confirm
13
+ from jarvis.jarvis_utils.config import get_max_tool_call_count, is_auto_complete, is_execute_tool_confirm, is_use_methodology
14
14
  from jarvis.jarvis_utils.methodology import load_methodology, upload_methodology
15
15
  from jarvis.jarvis_utils.globals import make_agent_name, set_agent, delete_agent
16
16
  from jarvis.jarvis_utils.input import get_multiline_input
@@ -150,7 +150,8 @@ class Agent:
150
150
  input_handler: Optional[List[Callable[[str, Any], Tuple[str, bool]]]] = None,
151
151
  execute_tool_confirm: Optional[bool] = None,
152
152
  need_summary: bool = True,
153
- multiline_inputer: Optional[Callable[[str], str]] = None):
153
+ multiline_inputer: Optional[Callable[[str], str]] = None,
154
+ use_methodology: Optional[bool] = None):
154
155
  """初始化Jarvis Agent实例
155
156
 
156
157
  参数:
@@ -167,6 +168,7 @@ class Agent:
167
168
  execute_tool_confirm: 执行工具前是否需要确认
168
169
  need_summary: 是否需要生成总结
169
170
  multiline_inputer: 多行输入处理器
171
+ use_methodology: 是否使用方法论
170
172
  """
171
173
  self.name = make_agent_name(name)
172
174
  self.description = description
@@ -193,6 +195,8 @@ class Agent:
193
195
 
194
196
  self.multiline_inputer = multiline_inputer if multiline_inputer else get_multiline_input
195
197
 
198
+ self.use_methodology = use_methodology if use_methodology is not None else is_use_methodology()
199
+
196
200
  self.prompt = ""
197
201
  self.conversation_length = 0 # Use length counter instead
198
202
  self.system_prompt = system_prompt
@@ -266,29 +270,12 @@ class Agent:
266
270
  5. 如果对操作使用不清楚,请请求帮助
267
271
  </rules>
268
272
  </actions>
269
- """
270
-
271
- complete_prompt = ""
272
- if self.auto_complete:
273
- complete_prompt = f"""
274
- <completion>
275
- <instruction>
276
- ## 任务完成
277
- 当任务完成时,你应该打印以下信息:
278
- </instruction>
279
-
280
- <marker>
281
- {ot("!!!COMPLETE!!!")}
282
- </marker>
283
- </completion>
284
273
  """
285
274
 
286
275
  self.model.set_system_message(f"""
287
276
  {self.system_prompt}
288
277
 
289
278
  {action_prompt}
290
-
291
- {complete_prompt}
292
279
  """)
293
280
  self.first = True
294
281
 
@@ -340,15 +327,17 @@ class Agent:
340
327
  complete_prompt = f"- 输出{ot('!!!COMPLETE!!!')}" if need_complete and self.auto_complete else ""
341
328
 
342
329
  addon_prompt = f"""
343
- 请判断是否已经完成任务,如果已经完成:
344
- - 说明完成原因,不需要再有新的操作
345
- {complete_prompt}
346
- 如果没有完成,请进行下一步操作:
347
- - 仅包含一个操作
348
- - 如果信息不明确,请请求用户补充
349
- - 如果执行过程中连续失败5次,请使用ask_user询问用户操作
350
- - 操作列表:
351
- {action_handlers}
330
+ [系统提示开始]
331
+ 请判断是否已经完成任务,如果已经完成:
332
+ - 直接输出完成原因,不需要再有新的操作,不要输出{ot("TOOL_CALL")}标签
333
+ {complete_prompt}
334
+ 如果没有完成,请进行下一步操作:
335
+ - 仅包含一个操作
336
+ - 如果信息不明确,请请求用户补充
337
+ - 如果执行过程中连续失败5次,请使用ask_user询问用户操作
338
+ - 操作列表:
339
+ {action_handlers}
340
+ [系统提示结束]
352
341
 
353
342
  请继续。
354
343
  """
@@ -490,7 +479,7 @@ class Agent:
490
479
  return False, f"操作失败:检测到多个操作。一次只能执行一个操作。尝试执行的操作:{', '.join([handler.name() for handler in tool_list])}"
491
480
  if len(tool_list) == 0:
492
481
  return False, ""
493
- if self.tool_call_count >= self.max_tool_call_count:
482
+ if self.max_tool_call_count > 0 and self.tool_call_count >= self.max_tool_call_count:
494
483
  if user_confirm(f"工具调用次数超过限制,是否继续执行?", True):
495
484
  self.reset_tool_call_count()
496
485
  else:
@@ -522,34 +511,43 @@ class Agent:
522
511
  2. 对于子Agent: 可能会生成总结(如果启用)
523
512
  3. 使用spinner显示生成状态
524
513
  """
514
+ if self.use_methodology:
515
+ self._analysis_task()
516
+ if self.need_summary:
517
+ with yaspin(text="正在生成总结...", color="cyan") as spinner:
518
+ self.prompt = self.summary_prompt
519
+ with spinner.hidden():
520
+ ret = self.model.chat_until_success(self.prompt) # type: ignore
521
+ spinner.text = "总结生成完成"
522
+ spinner.ok("✅")
523
+ return ret
524
+
525
+ return "任务完成"
526
+
527
+ def _analysis_task(self):
525
528
  with yaspin(text="正在分析任务...", color="cyan") as spinner:
526
529
  try:
527
530
  # 让模型判断是否需要生成方法论
528
531
  analysis_prompt = f"""<task_analysis>
529
532
  <request>
530
533
  当前任务已结束,请分析该任务的解决方案:
531
-
532
534
  1. 首先检查现有工具或方法论是否已经可以完成该任务,如果可以,直接说明即可,无需生成新内容
533
535
  2. 如果现有工具/方法论不足,评估当前任务是否可以通过编写新工具来自动化解决
534
536
  3. 如果可以通过工具解决,请设计并提供工具代码
535
537
  4. 如果无法通过编写通用工具完成,评估当前的执行流程是否可以总结为通用方法论
536
538
  5. 如果以上都不可行,给出详细理由
537
-
538
539
  请根据分析结果采取相应行动:说明现有工具/方法论、创建新工具、生成新方法论或说明原因。
539
540
  </request>
540
-
541
541
  <evaluation_criteria>
542
542
  现有资源评估:
543
543
  1. 现有工具 - 检查系统中是否已有可以完成该任务的工具
544
544
  2. 现有方法论 - 检查是否已有适用于该任务的方法论
545
545
  3. 组合使用 - 评估现有工具和方法论组合使用是否可以解决问题
546
-
547
546
  工具评估标准:
548
547
  1. 通用性 - 该工具是否可以解决一类问题,而不仅仅是当前特定问题
549
548
  2. 自动化 - 该工具是否可以减少人工干预,提高效率
550
549
  3. 可靠性 - 该工具是否可以在不同场景下稳定工作
551
550
  4. 简单性 - 该工具是否易于使用,参数设计是否合理
552
-
553
551
  方法论评估标准:
554
552
  1. 方法论应聚焦于通用且可重复的解决方案流程
555
553
  2. 方法论应该具备足够的通用性,可应用于同类问题
@@ -557,7 +555,6 @@ class Agent:
557
555
  4. 如果用户明确指出了某个解决步骤的优化方向,这应该被纳入方法论
558
556
  5. 方法论要严格按照实际的执行流程来总结,不要遗漏或增加任何步骤
559
557
  </evaluation_criteria>
560
-
561
558
  <tool_requirements>
562
559
  工具代码要求:
563
560
  1. 工具类名应与工具名称保持一致
@@ -567,13 +564,11 @@ class Agent:
567
564
  5. 工具描述应详细说明用途、适用场景和使用示例
568
565
  6. 参数定义应遵循JSON Schema格式
569
566
  7. 不要包含特定任务的细节,保持通用性
570
-
571
567
  工具设计关键点:
572
568
  1. **使用PrettyOutput打印执行过程**:强烈建议在工具中使用PrettyOutput显示执行过程,
573
569
  这样用户可以了解工具在做什么,提升用户体验。示例:
574
570
  ```python
575
571
  from jarvis.jarvis_utils.output import PrettyOutput, OutputType
576
-
577
572
  # 执行中打印信息
578
573
  PrettyOutput.print("正在处理数据...", OutputType.INFO)
579
574
  # 成功信息
@@ -583,12 +578,10 @@ class Agent:
583
578
  # 错误信息
584
579
  PrettyOutput.print("操作失败", OutputType.ERROR)
585
580
  ```
586
-
587
581
  2. **结构化返回结果**:工具应该始终返回结构化的结果字典,包含以下字段:
588
582
  - success: 布尔值,表示操作是否成功
589
583
  - stdout: 字符串,包含工具的主要输出内容
590
584
  - stderr: 字符串,包含错误信息(如果有)
591
-
592
585
  3. **异常处理**:工具应该妥善处理可能发生的异常,并在失败时清理已创建的资源
593
586
  ```python
594
587
  try:
@@ -608,7 +601,6 @@ class Agent:
608
601
  }}
609
602
  ```
610
603
  </tool_requirements>
611
-
612
604
  <methodology_requirements>
613
605
  方法论格式要求:
614
606
  1. 问题重述: 简明扼要的问题归纳,不含特定细节
@@ -616,15 +608,12 @@ class Agent:
616
608
  3. 注意事项: 执行中可能遇到的常见问题和注意点,尤其是用户指出的问题
617
609
  4. 可选步骤: 对于有多种解决路径的问题,标注出可选步骤和适用场景
618
610
  </methodology_requirements>
619
-
620
611
  <output_requirements>
621
612
  根据分析结果,输出以下三种情况之一:
622
-
623
613
  1. 如果现有工具/方法论可以解决,直接输出说明:
624
614
  已有工具/方法论可以解决该问题,无需创建新内容。
625
615
  可用的工具/方法论:[列出工具名称或方法论名称]
626
616
  使用方法:[简要说明如何使用]
627
-
628
617
  2. 工具创建(如果需要创建新工具):
629
618
  {ot("TOOL_CALL")}
630
619
  want: 创建新工具来解决XXX问题
@@ -635,14 +624,12 @@ arguments:
635
624
  # -*- coding: utf-8 -*-
636
625
  from typing import Dict, Any
637
626
  from jarvis.jarvis_utils.output import PrettyOutput, OutputType
638
-
639
627
  class 工具名称:
640
628
  name = "工具名称"
641
629
  description = "Tool for text transformation"
642
630
  Tool description
643
631
  适用场景:1. 格式化文本; 2. 处理标题; 3. 标准化输出
644
632
  \"\"\"
645
-
646
633
  parameters = {{
647
634
  "type": "object",
648
635
  "properties": {{
@@ -650,19 +637,15 @@ arguments:
650
637
  }},
651
638
  "required": []
652
639
  }}
653
-
654
640
  @staticmethod
655
641
  def check() -> bool:
656
642
  return True
657
-
658
643
  def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
659
644
  try:
660
645
  # 使用PrettyOutput显示执行过程
661
646
  PrettyOutput.print("开始执行操作...", OutputType.INFO)
662
-
663
647
  # 实现逻辑
664
648
  # ...
665
-
666
649
  PrettyOutput.print("操作已完成", OutputType.SUCCESS)
667
650
  return {{
668
651
  "success": True,
@@ -677,7 +660,6 @@ arguments:
677
660
  "stderr": f"操作失败: {{str(e)}}"
678
661
  }}
679
662
  {ct("TOOL_CALL")}
680
-
681
663
  3. 方法论创建(如果需要创建新方法论):
682
664
  {ot("TOOL_CALL")}
683
665
  want: 添加/更新xxxx的方法论
@@ -688,7 +670,6 @@ arguments:
688
670
  content: |2
689
671
  方法论内容
690
672
  {ct("TOOL_CALL")}
691
-
692
673
  如果以上三种情况都不适用,则直接输出原因分析,不要使用工具调用格式。
693
674
  </output_requirements>
694
675
  </task_analysis>"""
@@ -704,16 +685,6 @@ arguments:
704
685
  except Exception as e:
705
686
  spinner.text = "分析失败"
706
687
  spinner.fail("❌")
707
- if self.need_summary:
708
- with yaspin(text="正在生成总结...", color="cyan") as spinner:
709
- self.prompt = self.summary_prompt
710
- with spinner.hidden():
711
- ret = self.model.chat_until_success(self.prompt) # type: ignore
712
- spinner.text = "总结生成完成"
713
- spinner.ok("✅")
714
- return ret
715
-
716
- return "任务完成"
717
688
 
718
689
 
719
690
  def run(self, user_input: str) -> Any:
@@ -736,7 +707,7 @@ arguments:
736
707
 
737
708
  self.prompt = f"{user_input}"
738
709
 
739
- if self.first:
710
+ if self.first and self.use_methodology:
740
711
 
741
712
  # 先尝试上传方法轮
742
713
  platform = self.model if hasattr(self.model, 'upload_files') else None
@@ -3,7 +3,7 @@ import argparse
3
3
  import os
4
4
  import sys
5
5
 
6
- from typing import Dict # 仅保留实际使用的类型导入
6
+ from typing import Dict, List, Tuple # 增加必要的类型导入
7
7
 
8
8
  from jarvis.jarvis_utils.config import get_data_dir
9
9
  from prompt_toolkit import prompt
@@ -39,10 +39,10 @@ def _load_tasks() -> Dict[str, str]:
39
39
  for name, desc in user_tasks.items():
40
40
  if desc:
41
41
  tasks[str(name)] = str(desc)
42
- spinner.text = "预定义任务加载完成"
42
+ spinner.text = f"预定义任务加载完成{pre_command_path}"
43
43
  spinner.ok("✅")
44
44
  except (yaml.YAMLError, OSError):
45
- spinner.text = "预定义任务加载失败"
45
+ spinner.text = f"预定义任务加载失败{pre_command_path}"
46
46
  spinner.fail("❌")
47
47
 
48
48
  # Check .jarvis/pre-command in current directory
@@ -58,10 +58,10 @@ def _load_tasks() -> Dict[str, str]:
58
58
  for name, desc in local_tasks.items():
59
59
  if desc:
60
60
  tasks[str(name)] = str(desc)
61
- spinner.text = "预定义任务加载完成"
61
+ spinner.text = f"预定义任务加载完成{pre_command_path}"
62
62
  spinner.ok("✅")
63
63
  except (yaml.YAMLError, OSError):
64
- spinner.text = "预定义任务加载失败"
64
+ spinner.text = f"预定义任务加载失败{pre_command_path}"
65
65
  spinner.fail("❌")
66
66
 
67
67
  return tasks
@@ -90,6 +90,7 @@ def _select_task(tasks: Dict[str, str]) -> str:
90
90
  return ""
91
91
  if 1 <= choice <= len(task_names):
92
92
  selected_task = tasks[task_names[choice - 1]]
93
+ PrettyOutput.print(f"将要执行任务:\n {selected_task}", OutputType.INFO)
93
94
  # 询问是否需要补充信息
94
95
  need_additional = user_confirm("需要为此任务添加补充信息吗?", default=False)
95
96
  if need_additional:
@@ -105,11 +106,10 @@ def _select_task(tasks: Dict[str, str]) -> str:
105
106
  PrettyOutput.print(f"选择任务失败: {str(val_err)}", OutputType.ERROR)
106
107
 
107
108
 
108
-
109
-
110
109
  def main() -> None:
111
- """Jarvis main entry point"""
112
- init_env()
110
+
111
+
112
+ init_env("欢迎使用 Jarvis AI 助手,您的智能助理已准备就绪!")
113
113
  parser = argparse.ArgumentParser(description='Jarvis AI assistant')
114
114
  parser.add_argument('-p', '--platform', type=str, help='Platform to use')
115
115
  parser.add_argument('-m', '--model', type=str, help='Model to use')
@@ -138,7 +138,7 @@ def main() -> None:
138
138
 
139
139
  tasks = _load_tasks()
140
140
  if tasks and (selected_task := _select_task(tasks)):
141
- PrettyOutput.print(f"执行任务: {selected_task}", OutputType.INFO)
141
+ PrettyOutput.print(f"开始执行任务: \n{selected_task}", OutputType.INFO)
142
142
  agent.run(selected_task)
143
143
  sys.exit(0)
144
144
 
@@ -9,13 +9,13 @@ from jarvis.jarvis_utils.utils import init_env
9
9
 
10
10
 
11
11
  def load_config(config_path: str) -> dict:
12
- """Load configuration from YAML file
12
+ """YAML文件加载配置
13
13
 
14
- Args:
15
- config_path: Path to the YAML configuration file
14
+ 参数:
15
+ config_path: YAML配置文件的路径
16
16
 
17
- Returns:
18
- dict: Configuration dictionary
17
+ 返回:
18
+ dict: 配置字典
19
19
  """
20
20
  if not os.path.exists(config_path):
21
21
  PrettyOutput.print(f"配置文件 {config_path} 不存在,使用默认配置", OutputType.WARNING)
@@ -32,7 +32,7 @@ def load_config(config_path: str) -> dict:
32
32
  def main():
33
33
  """Main entry point for Jarvis agent"""
34
34
  # Initialize environment
35
- init_env()
35
+ init_env("欢迎使用 Jarvis AI 助手,您的智能助理已准备就绪!")
36
36
 
37
37
  # Set up argument parser
38
38
  parser = argparse.ArgumentParser(description='Jarvis AI assistant')
@@ -31,7 +31,7 @@ from jarvis.jarvis_utils.git_utils import (
31
31
  from jarvis.jarvis_utils.input import get_multiline_input
32
32
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
33
33
  from jarvis.jarvis_utils.utils import init_env, user_confirm
34
-
34
+ from jarvis import __version__
35
35
 
36
36
  class CodeAgent:
37
37
  """Jarvis系统的代码修改代理。
@@ -372,10 +372,14 @@ class CodeAgent:
372
372
  final_ret += f"# 应用补丁:\n```diff\n{diff}\n```"
373
373
 
374
374
  # 修改后的提示逻辑
375
- addon_prompt = "如果对应语言有静态检查工具,请使用静态检查工具检查修改的代码,如果本次修改引入了警告和错误,请根据警告和错误信息修复代码\n"
376
- addon_prompt += "在引入警告和错误都被修复的前提下,如果用户的需求未完成,请继续修改代码,如果已经完成,请终止,不要实现任何超出用户需求外的内容\n"
377
- addon_prompt += "如果有任何信息不明确,调用工具获取信息\n"
378
- addon_prompt += "每次响应必须且只能包含一个操作\n"
375
+ addon_prompt = """
376
+ [系统提示开始]
377
+ 如果对应语言有静态检查工具,请使用静态检查工具检查修改的代码,如果本次修改引入了警告和错误,请根据警告和错误信息修复代码
378
+ 在引入警告和错误都被修复的前提下,如果用户的需求未完成,请继续修改代码,如果已经完成,请终止,不要实现任何超出用户需求外的内容
379
+ 如果有任何信息不明确,调用工具获取信息
380
+ 每次响应必须且只能包含一个操作
381
+ [系统提示结束]
382
+ """
379
383
 
380
384
  agent.set_addon_prompt(addon_prompt)
381
385
 
@@ -403,7 +407,7 @@ class CodeAgent:
403
407
 
404
408
  def main() -> None:
405
409
  """Jarvis主入口点。"""
406
- init_env()
410
+ init_env("欢迎使用 Jarvis-CodeAgent,您的代码工程助手已准备就绪!")
407
411
 
408
412
  parser = argparse.ArgumentParser(description='Jarvis Code Agent')
409
413
  parser.add_argument('-p', '--platform', type=str,
@@ -661,7 +661,7 @@ def main():
661
661
  """CLI entry point"""
662
662
  import argparse
663
663
 
664
- init_env()
664
+ init_env("欢迎使用 Jarvis-CodeReview,您的代码审查助手已准备就绪!")
665
665
 
666
666
  parser = argparse.ArgumentParser(description='Autonomous code review tool')
667
667
  subparsers = parser.add_subparsers(dest='type')
@@ -1257,7 +1257,7 @@ def create_dev_team() -> MultiAgent:
1257
1257
  def main():
1258
1258
  """Main entry point for the development team simulation."""
1259
1259
 
1260
- init_env()
1260
+ init_env("欢迎使用 Jarvis-Dev,您的开发团队已准备就绪!")
1261
1261
 
1262
1262
  # Create the development team
1263
1263
  dev_team = create_dev_team()
@@ -233,7 +233,7 @@ def main():
233
233
  """主函数,用于命令行接口"""
234
234
  import argparse
235
235
 
236
- init_env()
236
+ init_env("欢迎使用 Jarvis-GitCommitAnalyzer,您的Git Commit分析助手已准备就绪!")
237
237
 
238
238
  parser = argparse.ArgumentParser(description='Git Commit Analyzer')
239
239
  group = parser.add_mutually_exclusive_group(required=True)
@@ -46,7 +46,7 @@ class GitSquashTool:
46
46
  PrettyOutput.print(f"压缩提交失败: {str(e)}", OutputType.WARNING)
47
47
 
48
48
  def main():
49
- init_env()
49
+ init_env("欢迎使用 Jarvis-GitSquash,您的Git压缩助手已准备就绪!")
50
50
  parser = argparse.ArgumentParser(description='Git squash tool')
51
51
  parser.add_argument('commit_hash', type=str, help='Base commit hash to squash from')
52
52
  parser.add_argument('--lang', type=str, default='Chinese', help='Language for commit messages')
@@ -265,7 +265,7 @@ class GitCommitTool:
265
265
  }
266
266
 
267
267
  def main():
268
- init_env()
268
+ init_env("欢迎使用 Jarvis-GitCommitTool,您的Git提交助手已准备就绪!")
269
269
  parser = argparse.ArgumentParser(description='Git commit tool')
270
270
  parser.add_argument('--lang', type=str, default='Chinese', help='Language for commit messages')
271
271
  parser.add_argument('--root-dir', type=str, default='.', help='Root directory of the Git repository')
@@ -10,7 +10,7 @@ def main():
10
10
  Returns:
11
11
  最终处理结果
12
12
  """
13
- init_env()
13
+ init_env("欢迎使用 Jarvis-MultiAgent,您的多智能体系统已准备就绪!")
14
14
  import argparse
15
15
  parser = argparse.ArgumentParser(description="多智能体系统启动器")
16
16
  parser.add_argument("--config", "-c", required=True, help="YAML配置文件路径")
@@ -58,7 +58,7 @@ class BasePlatform(ABC):
58
58
 
59
59
  if input_token_count > get_max_input_token_count():
60
60
  max_chunk_size = get_max_input_token_count() - 1024 # 留出一些余量
61
- min_chunk_size = max_chunk_size // 2 # 最小块大小设为最大块大小的一半
61
+ min_chunk_size = get_max_input_token_count() - 2048
62
62
  inputs = split_text_into_chunks(message, max_chunk_size, min_chunk_size)
63
63
  with yaspin(text="正在提交长上下文...", color="cyan") as spinner:
64
64
  prefix_prompt = f"""
@@ -66,10 +66,13 @@ class BasePlatform(ABC):
66
66
  """
67
67
  while_true(lambda: while_success(lambda: self.chat(prefix_prompt), 5), 5)
68
68
  submit_count = 0
69
+ length = 0
69
70
  for input in inputs:
70
71
  submit_count += 1
71
- spinner.text = f"正在提交第{submit_count}部分(共{len(inputs)}部分)"
72
- while_true(lambda: while_success(lambda: self.chat(f"<part_content>{input}</part_content>请返回已收到"), 5), 5)
72
+ length += len(input)
73
+ spinner.text = f"正在提交第{submit_count}部分(共{len(inputs)}部分({length}/{len(message)}))"
74
+ list(while_true(lambda: while_success(lambda: self.chat(f"<part_content>{input}</part_content>请返回已收到"), 5), 5))
75
+ spinner.write(f"提交第{submit_count}部分完成,当前进度:{length}/{len(message)}")
73
76
  spinner.text = "提交完成"
74
77
  spinner.ok("✅")
75
78
  response = while_true(lambda: while_success(lambda: self._chat("内容已经全部提供完毕,请继续"), 5), 5)