jarvis-ai-assistant 0.1.177__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.
- {jarvis_ai_assistant-0.1.177/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.178}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/pyproject.toml +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/setup.py +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/__init__.py +22 -53
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/openai.py +66 -10
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/ask_codebase.py +2 -1
- jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/edit_file.py +34 -26
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/registry.py +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/config.py +10 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -7
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/base.py +0 -66
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/cpp.py +0 -99
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/go.py +0 -104
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/python.py +0 -58
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/registry.py +0 -169
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_lsp/rust.py +0 -107
- jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +0 -147
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/README.md +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/jarvis.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_data/huggingface.tar.gz +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_dev/main.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_git_details → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_event}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_git_squash → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_git_details}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_details/main.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_platform_manager → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_git_squash}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_methodology/main.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/base.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/human.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/kimi.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_smart_shell → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_platform_manager}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform_manager/main.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_tools → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_smart_shell}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_smart_shell/main.py +0 -0
- {jarvis_ai_assistant-0.1.177/src/jarvis/jarvis_tools/cli → jarvis_ai_assistant-0.1.178/src/jarvis/jarvis_tools}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/chdir.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/cli/main.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/code_plan.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/execute_script.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/file_operation.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/find_methodology.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/search_web.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/globals.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/utils.py +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
- {jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis_ai_assistant.egg-info/top_level.txt +0 -0
|
@@ -8,7 +8,7 @@ default = true
|
|
|
8
8
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "jarvis-ai-assistant"
|
|
11
|
-
version = "0.1.
|
|
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.
|
|
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",
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_agent/__init__.py
RENAMED
|
@@ -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
|
|
|
@@ -342,7 +329,7 @@ class Agent:
|
|
|
342
329
|
addon_prompt = f"""
|
|
343
330
|
[系统提示开始]
|
|
344
331
|
请判断是否已经完成任务,如果已经完成:
|
|
345
|
-
-
|
|
332
|
+
- 直接输出完成原因,不需要再有新的操作,不要输出{ot("TOOL_CALL")}标签
|
|
346
333
|
{complete_prompt}
|
|
347
334
|
如果没有完成,请进行下一步操作:
|
|
348
335
|
- 仅包含一个操作
|
|
@@ -524,34 +511,43 @@ class Agent:
|
|
|
524
511
|
2. 对于子Agent: 可能会生成总结(如果启用)
|
|
525
512
|
3. 使用spinner显示生成状态
|
|
526
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):
|
|
527
528
|
with yaspin(text="正在分析任务...", color="cyan") as spinner:
|
|
528
529
|
try:
|
|
529
530
|
# 让模型判断是否需要生成方法论
|
|
530
531
|
analysis_prompt = f"""<task_analysis>
|
|
531
532
|
<request>
|
|
532
533
|
当前任务已结束,请分析该任务的解决方案:
|
|
533
|
-
|
|
534
534
|
1. 首先检查现有工具或方法论是否已经可以完成该任务,如果可以,直接说明即可,无需生成新内容
|
|
535
535
|
2. 如果现有工具/方法论不足,评估当前任务是否可以通过编写新工具来自动化解决
|
|
536
536
|
3. 如果可以通过工具解决,请设计并提供工具代码
|
|
537
537
|
4. 如果无法通过编写通用工具完成,评估当前的执行流程是否可以总结为通用方法论
|
|
538
538
|
5. 如果以上都不可行,给出详细理由
|
|
539
|
-
|
|
540
539
|
请根据分析结果采取相应行动:说明现有工具/方法论、创建新工具、生成新方法论或说明原因。
|
|
541
540
|
</request>
|
|
542
|
-
|
|
543
541
|
<evaluation_criteria>
|
|
544
542
|
现有资源评估:
|
|
545
543
|
1. 现有工具 - 检查系统中是否已有可以完成该任务的工具
|
|
546
544
|
2. 现有方法论 - 检查是否已有适用于该任务的方法论
|
|
547
545
|
3. 组合使用 - 评估现有工具和方法论组合使用是否可以解决问题
|
|
548
|
-
|
|
549
546
|
工具评估标准:
|
|
550
547
|
1. 通用性 - 该工具是否可以解决一类问题,而不仅仅是当前特定问题
|
|
551
548
|
2. 自动化 - 该工具是否可以减少人工干预,提高效率
|
|
552
549
|
3. 可靠性 - 该工具是否可以在不同场景下稳定工作
|
|
553
550
|
4. 简单性 - 该工具是否易于使用,参数设计是否合理
|
|
554
|
-
|
|
555
551
|
方法论评估标准:
|
|
556
552
|
1. 方法论应聚焦于通用且可重复的解决方案流程
|
|
557
553
|
2. 方法论应该具备足够的通用性,可应用于同类问题
|
|
@@ -559,7 +555,6 @@ class Agent:
|
|
|
559
555
|
4. 如果用户明确指出了某个解决步骤的优化方向,这应该被纳入方法论
|
|
560
556
|
5. 方法论要严格按照实际的执行流程来总结,不要遗漏或增加任何步骤
|
|
561
557
|
</evaluation_criteria>
|
|
562
|
-
|
|
563
558
|
<tool_requirements>
|
|
564
559
|
工具代码要求:
|
|
565
560
|
1. 工具类名应与工具名称保持一致
|
|
@@ -569,13 +564,11 @@ class Agent:
|
|
|
569
564
|
5. 工具描述应详细说明用途、适用场景和使用示例
|
|
570
565
|
6. 参数定义应遵循JSON Schema格式
|
|
571
566
|
7. 不要包含特定任务的细节,保持通用性
|
|
572
|
-
|
|
573
567
|
工具设计关键点:
|
|
574
568
|
1. **使用PrettyOutput打印执行过程**:强烈建议在工具中使用PrettyOutput显示执行过程,
|
|
575
569
|
这样用户可以了解工具在做什么,提升用户体验。示例:
|
|
576
570
|
```python
|
|
577
571
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
578
|
-
|
|
579
572
|
# 执行中打印信息
|
|
580
573
|
PrettyOutput.print("正在处理数据...", OutputType.INFO)
|
|
581
574
|
# 成功信息
|
|
@@ -585,12 +578,10 @@ class Agent:
|
|
|
585
578
|
# 错误信息
|
|
586
579
|
PrettyOutput.print("操作失败", OutputType.ERROR)
|
|
587
580
|
```
|
|
588
|
-
|
|
589
581
|
2. **结构化返回结果**:工具应该始终返回结构化的结果字典,包含以下字段:
|
|
590
582
|
- success: 布尔值,表示操作是否成功
|
|
591
583
|
- stdout: 字符串,包含工具的主要输出内容
|
|
592
584
|
- stderr: 字符串,包含错误信息(如果有)
|
|
593
|
-
|
|
594
585
|
3. **异常处理**:工具应该妥善处理可能发生的异常,并在失败时清理已创建的资源
|
|
595
586
|
```python
|
|
596
587
|
try:
|
|
@@ -610,7 +601,6 @@ class Agent:
|
|
|
610
601
|
}}
|
|
611
602
|
```
|
|
612
603
|
</tool_requirements>
|
|
613
|
-
|
|
614
604
|
<methodology_requirements>
|
|
615
605
|
方法论格式要求:
|
|
616
606
|
1. 问题重述: 简明扼要的问题归纳,不含特定细节
|
|
@@ -618,15 +608,12 @@ class Agent:
|
|
|
618
608
|
3. 注意事项: 执行中可能遇到的常见问题和注意点,尤其是用户指出的问题
|
|
619
609
|
4. 可选步骤: 对于有多种解决路径的问题,标注出可选步骤和适用场景
|
|
620
610
|
</methodology_requirements>
|
|
621
|
-
|
|
622
611
|
<output_requirements>
|
|
623
612
|
根据分析结果,输出以下三种情况之一:
|
|
624
|
-
|
|
625
613
|
1. 如果现有工具/方法论可以解决,直接输出说明:
|
|
626
614
|
已有工具/方法论可以解决该问题,无需创建新内容。
|
|
627
615
|
可用的工具/方法论:[列出工具名称或方法论名称]
|
|
628
616
|
使用方法:[简要说明如何使用]
|
|
629
|
-
|
|
630
617
|
2. 工具创建(如果需要创建新工具):
|
|
631
618
|
{ot("TOOL_CALL")}
|
|
632
619
|
want: 创建新工具来解决XXX问题
|
|
@@ -637,14 +624,12 @@ arguments:
|
|
|
637
624
|
# -*- coding: utf-8 -*-
|
|
638
625
|
from typing import Dict, Any
|
|
639
626
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
640
|
-
|
|
641
627
|
class 工具名称:
|
|
642
628
|
name = "工具名称"
|
|
643
629
|
description = "Tool for text transformation"
|
|
644
630
|
Tool description
|
|
645
631
|
适用场景:1. 格式化文本; 2. 处理标题; 3. 标准化输出
|
|
646
632
|
\"\"\"
|
|
647
|
-
|
|
648
633
|
parameters = {{
|
|
649
634
|
"type": "object",
|
|
650
635
|
"properties": {{
|
|
@@ -652,19 +637,15 @@ arguments:
|
|
|
652
637
|
}},
|
|
653
638
|
"required": []
|
|
654
639
|
}}
|
|
655
|
-
|
|
656
640
|
@staticmethod
|
|
657
641
|
def check() -> bool:
|
|
658
642
|
return True
|
|
659
|
-
|
|
660
643
|
def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
|
|
661
644
|
try:
|
|
662
645
|
# 使用PrettyOutput显示执行过程
|
|
663
646
|
PrettyOutput.print("开始执行操作...", OutputType.INFO)
|
|
664
|
-
|
|
665
647
|
# 实现逻辑
|
|
666
648
|
# ...
|
|
667
|
-
|
|
668
649
|
PrettyOutput.print("操作已完成", OutputType.SUCCESS)
|
|
669
650
|
return {{
|
|
670
651
|
"success": True,
|
|
@@ -679,7 +660,6 @@ arguments:
|
|
|
679
660
|
"stderr": f"操作失败: {{str(e)}}"
|
|
680
661
|
}}
|
|
681
662
|
{ct("TOOL_CALL")}
|
|
682
|
-
|
|
683
663
|
3. 方法论创建(如果需要创建新方法论):
|
|
684
664
|
{ot("TOOL_CALL")}
|
|
685
665
|
want: 添加/更新xxxx的方法论
|
|
@@ -690,7 +670,6 @@ arguments:
|
|
|
690
670
|
content: |2
|
|
691
671
|
方法论内容
|
|
692
672
|
{ct("TOOL_CALL")}
|
|
693
|
-
|
|
694
673
|
如果以上三种情况都不适用,则直接输出原因分析,不要使用工具调用格式。
|
|
695
674
|
</output_requirements>
|
|
696
675
|
</task_analysis>"""
|
|
@@ -706,16 +685,6 @@ arguments:
|
|
|
706
685
|
except Exception as e:
|
|
707
686
|
spinner.text = "分析失败"
|
|
708
687
|
spinner.fail("❌")
|
|
709
|
-
if self.need_summary:
|
|
710
|
-
with yaspin(text="正在生成总结...", color="cyan") as spinner:
|
|
711
|
-
self.prompt = self.summary_prompt
|
|
712
|
-
with spinner.hidden():
|
|
713
|
-
ret = self.model.chat_until_success(self.prompt) # type: ignore
|
|
714
|
-
spinner.text = "总结生成完成"
|
|
715
|
-
spinner.ok("✅")
|
|
716
|
-
return ret
|
|
717
|
-
|
|
718
|
-
return "任务完成"
|
|
719
688
|
|
|
720
689
|
|
|
721
690
|
def run(self, user_input: str) -> Any:
|
|
@@ -738,7 +707,7 @@ arguments:
|
|
|
738
707
|
|
|
739
708
|
self.prompt = f"{user_input}"
|
|
740
709
|
|
|
741
|
-
if self.first:
|
|
710
|
+
if self.first and self.use_methodology:
|
|
742
711
|
|
|
743
712
|
# 先尝试上传方法轮
|
|
744
713
|
platform = self.model if hasattr(self.model, 'upload_files') else None
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_platform/openai.py
RENAMED
|
@@ -2,10 +2,6 @@
|
|
|
2
2
|
from typing import Dict, Generator, List, Tuple
|
|
3
3
|
import os
|
|
4
4
|
from openai import OpenAI
|
|
5
|
-
from rich.live import Live
|
|
6
|
-
from rich.text import Text
|
|
7
|
-
from rich.panel import Panel
|
|
8
|
-
from rich import box
|
|
9
5
|
from jarvis.jarvis_platform.base import BasePlatform
|
|
10
6
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
|
11
7
|
|
|
@@ -49,10 +45,27 @@ class OpenAIModel(BasePlatform):
|
|
|
49
45
|
self.system_message = ""
|
|
50
46
|
|
|
51
47
|
def upload_files(self, file_list: List[str]) -> bool:
|
|
48
|
+
"""
|
|
49
|
+
上传文件到OpenAI平台
|
|
50
|
+
|
|
51
|
+
参数:
|
|
52
|
+
file_list: 需要上传的文件路径列表
|
|
53
|
+
|
|
54
|
+
返回:
|
|
55
|
+
bool: 上传是否成功 (当前实现始终返回False)
|
|
56
|
+
"""
|
|
52
57
|
return False
|
|
53
58
|
|
|
54
59
|
def get_model_list(self) -> List[Tuple[str, str]]:
|
|
55
|
-
"""
|
|
60
|
+
"""
|
|
61
|
+
获取可用的OpenAI模型列表
|
|
62
|
+
|
|
63
|
+
返回:
|
|
64
|
+
List[Tuple[str, str]]: 模型ID和名称的元组列表
|
|
65
|
+
|
|
66
|
+
异常:
|
|
67
|
+
当API调用失败时会打印错误信息并返回空列表
|
|
68
|
+
"""
|
|
56
69
|
try:
|
|
57
70
|
models = self.client.models.list()
|
|
58
71
|
model_list = []
|
|
@@ -64,17 +77,41 @@ class OpenAIModel(BasePlatform):
|
|
|
64
77
|
return []
|
|
65
78
|
|
|
66
79
|
def set_model_name(self, model_name: str):
|
|
67
|
-
"""
|
|
80
|
+
"""
|
|
81
|
+
设置当前使用的模型名称
|
|
82
|
+
|
|
83
|
+
参数:
|
|
84
|
+
model_name: 要设置的模型名称
|
|
85
|
+
"""
|
|
68
86
|
|
|
69
87
|
self.model_name = model_name
|
|
70
88
|
|
|
71
89
|
def set_system_message(self, message: str):
|
|
72
|
-
"""
|
|
90
|
+
"""
|
|
91
|
+
设置系统消息(角色设定)
|
|
92
|
+
|
|
93
|
+
参数:
|
|
94
|
+
message: 系统消息内容
|
|
95
|
+
|
|
96
|
+
说明:
|
|
97
|
+
设置后会立即添加到消息历史中
|
|
98
|
+
"""
|
|
73
99
|
self.system_message = message
|
|
74
100
|
self.messages.append({"role": "system", "content": self.system_message})
|
|
75
101
|
|
|
76
102
|
def chat(self, message: str) -> Generator[str, None, None]:
|
|
77
|
-
"""
|
|
103
|
+
"""
|
|
104
|
+
执行对话并返回生成器
|
|
105
|
+
|
|
106
|
+
参数:
|
|
107
|
+
message: 用户输入的消息内容
|
|
108
|
+
|
|
109
|
+
返回:
|
|
110
|
+
Generator[str, None, None]: 生成器,逐块返回AI响应内容
|
|
111
|
+
|
|
112
|
+
异常:
|
|
113
|
+
当API调用失败时会抛出异常并打印错误信息
|
|
114
|
+
"""
|
|
78
115
|
try:
|
|
79
116
|
|
|
80
117
|
# Add user message to history
|
|
@@ -103,12 +140,25 @@ class OpenAIModel(BasePlatform):
|
|
|
103
140
|
raise Exception(f"Chat failed: {str(e)}")
|
|
104
141
|
|
|
105
142
|
def name(self) -> str:
|
|
106
|
-
"""
|
|
143
|
+
"""
|
|
144
|
+
获取当前使用的模型名称
|
|
145
|
+
|
|
146
|
+
返回:
|
|
147
|
+
str: 当前配置的模型名称
|
|
148
|
+
"""
|
|
107
149
|
return self.model_name
|
|
108
150
|
|
|
109
151
|
|
|
110
152
|
def delete_chat(self)->bool:
|
|
111
|
-
"""
|
|
153
|
+
"""
|
|
154
|
+
删除当前对话历史
|
|
155
|
+
|
|
156
|
+
返回:
|
|
157
|
+
bool: 操作是否成功
|
|
158
|
+
|
|
159
|
+
说明:
|
|
160
|
+
如果设置了系统消息,会保留系统消息
|
|
161
|
+
"""
|
|
112
162
|
if self.system_message:
|
|
113
163
|
self.messages = [{"role": "system", "content": self.system_message}]
|
|
114
164
|
else:
|
|
@@ -116,4 +166,10 @@ class OpenAIModel(BasePlatform):
|
|
|
116
166
|
return True
|
|
117
167
|
|
|
118
168
|
def support_web(self) -> bool:
|
|
169
|
+
"""
|
|
170
|
+
检查是否支持网页访问功能
|
|
171
|
+
|
|
172
|
+
返回:
|
|
173
|
+
bool: 当前是否支持网页访问 (OpenAI平台始终返回False)
|
|
174
|
+
"""
|
|
119
175
|
return False
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/ask_codebase.py
RENAMED
|
@@ -96,7 +96,7 @@ class AskCodebaseTool:
|
|
|
96
96
|
name=f"CodebaseAnalyzer",
|
|
97
97
|
description=f"分析代码库中的功能实现和定位",
|
|
98
98
|
summary_prompt=summary_prompt,
|
|
99
|
-
platform=PlatformRegistry().
|
|
99
|
+
platform=PlatformRegistry().get_thinking_platform(),
|
|
100
100
|
output_handler=[tool_registry],
|
|
101
101
|
execute_tool_confirm=False,
|
|
102
102
|
auto_complete=self.auto_complete
|
|
@@ -160,6 +160,7 @@ class AskCodebaseTool:
|
|
|
160
160
|
5. 根据文件内容提供具体、准确的回答
|
|
161
161
|
6. 确保分析的完整性,收集充分的信息后再得出结论,不要在只掌握部分信息就得出结论
|
|
162
162
|
7. 优先查阅README文件、文档目录和项目文档
|
|
163
|
+
8. 给出的任意结论都要有实际的代码支撑,不能假设和杜撰
|
|
163
164
|
|
|
164
165
|
## 分析步骤
|
|
165
166
|
1. **确定项目的编程语言**:
|
|
File without changes
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/edit_file.py
RENAMED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
"""
|
|
3
|
-
|
|
3
|
+
文件编辑工具类
|
|
4
4
|
|
|
5
5
|
功能概述:
|
|
6
|
-
1.
|
|
6
|
+
1. 提供精确的文件内容搜索和替换功能,支持多组修改
|
|
7
7
|
2. 支持单个文件的编辑操作,包括创建新文件
|
|
8
8
|
3. 实现原子操作:所有修改要么全部成功,要么全部回滚
|
|
9
9
|
4. 严格匹配控制:每个搜索文本必须且只能匹配一次
|
|
10
|
+
5. 支持两种编辑模式:快速编辑(fast_edit)和AI辅助编辑(slow_edit)
|
|
10
11
|
|
|
11
12
|
核心特性:
|
|
12
13
|
- 支持不存在的文件和空文件处理
|
|
13
14
|
- 自动创建所需目录结构
|
|
14
15
|
- 完善的错误处理和回滚机制
|
|
15
16
|
- 严格的格式保持要求
|
|
17
|
+
- 支持大文件处理(自动上传到模型平台)
|
|
18
|
+
- 提供3次重试机制确保操作可靠性
|
|
16
19
|
"""
|
|
17
20
|
from typing import List
|
|
18
21
|
import re
|
|
@@ -32,28 +35,25 @@ from jarvis.jarvis_utils.utils import is_context_overflow
|
|
|
32
35
|
|
|
33
36
|
class FileSearchReplaceTool:
|
|
34
37
|
name = "edit_file"
|
|
35
|
-
description = """
|
|
38
|
+
description = """代码编辑工具,用于精确修改单个文件
|
|
36
39
|
|
|
37
|
-
#
|
|
40
|
+
# 文件编辑工具使用指南
|
|
38
41
|
|
|
39
|
-
## 重要提示
|
|
40
|
-
此工具可以查看和修改单个文件的代码,只需提供要修改的代码片段即可。应尽量精简内容,只包含必要的上下文和修改部分。特别注意:不要提供完整文件内容,只提供需要修改的部分及其上下文!
|
|
41
42
|
|
|
42
43
|
## 基本使用
|
|
43
44
|
1. 指定需要修改的文件路径
|
|
44
|
-
2.
|
|
45
|
-
|
|
45
|
+
2. 提供一组或多组修改,每个修改包含:
|
|
46
|
+
- reason: 修改原因描述
|
|
47
|
+
- search: 需要查找的原始代码(必须包含足够上下文)
|
|
48
|
+
- replace: 替换后的新代码
|
|
49
|
+
3. 工具会自动选择最适合的编辑模式
|
|
46
50
|
|
|
47
51
|
## 核心原则
|
|
48
|
-
1.
|
|
49
|
-
2.
|
|
50
|
-
3.
|
|
52
|
+
1. **精准修改**: 只修改必要的代码部分,保持其他部分不变
|
|
53
|
+
2. **最小补丁原则**: 生成最小范围的补丁,包含必要的上下文
|
|
54
|
+
3. **唯一匹配**: 确保搜索文本在文件中唯一匹配
|
|
55
|
+
4. **格式保持**: 严格保持原始代码的格式风格
|
|
51
56
|
|
|
52
|
-
## 输出格式规范
|
|
53
|
-
- 每个修改必须包含SEARCH部分和REPLACE部分
|
|
54
|
-
- SEARCH部分是需要查找的原始代码,必须能在原文件中**唯一匹配**
|
|
55
|
-
- REPLACE部分是替换后的新代码
|
|
56
|
-
- 如果修改较大,可以使用多个修改块
|
|
57
57
|
|
|
58
58
|
"""
|
|
59
59
|
parameters = {
|
|
@@ -93,24 +93,26 @@ class FileSearchReplaceTool:
|
|
|
93
93
|
pass
|
|
94
94
|
|
|
95
95
|
def execute(self, args: Dict) -> Dict[str, Any]:
|
|
96
|
-
"""
|
|
96
|
+
"""执行文件编辑操作,支持快速编辑和AI辅助编辑两种模式。
|
|
97
97
|
|
|
98
98
|
主要功能:
|
|
99
|
-
1.
|
|
99
|
+
1. 处理文件创建或修改,支持不存在的文件
|
|
100
100
|
2. 原子操作:所有修改要么全部成功,要么全部回滚
|
|
101
|
-
3.
|
|
102
|
-
4.
|
|
101
|
+
3. 自动选择编辑模式(fast_edit或slow_edit)
|
|
102
|
+
4. 保存修改前后的文件状态以便回滚
|
|
103
|
+
5. 提供详细的执行状态输出
|
|
103
104
|
|
|
104
105
|
参数:
|
|
105
106
|
args: 包含以下键的字典:
|
|
106
|
-
- file: 要修改的文件路径
|
|
107
|
-
- changes:
|
|
107
|
+
- file: 要修改的文件路径(必填)
|
|
108
|
+
- changes: 修改列表,每个修改包含(必填):
|
|
108
109
|
- reason: 修改原因描述
|
|
109
|
-
-
|
|
110
|
+
- search: 需要查找的原始代码(必须包含足够上下文)
|
|
111
|
+
- replace: 替换后的新代码
|
|
110
112
|
|
|
111
113
|
返回:
|
|
112
114
|
Dict[str, Any] 包含:
|
|
113
|
-
- success: 操作是否成功
|
|
115
|
+
- success: 操作是否成功(True/False)
|
|
114
116
|
- stdout: 成功时的输出消息
|
|
115
117
|
- stderr: 失败时的错误消息
|
|
116
118
|
|
|
@@ -118,6 +120,14 @@ class FileSearchReplaceTool:
|
|
|
118
120
|
1. 捕获并记录文件操作异常
|
|
119
121
|
2. 失败的修改尝试回滚到原始状态
|
|
120
122
|
3. 新创建的文件在失败时会被删除
|
|
123
|
+
4. 提供3次重试机制确保操作可靠性
|
|
124
|
+
5. 支持大文件处理(自动上传到模型平台)
|
|
125
|
+
|
|
126
|
+
实现细节:
|
|
127
|
+
1. 优先尝试fast_edit模式
|
|
128
|
+
2. 如果fast_edit失败,则尝试slow_edit模式
|
|
129
|
+
3. 严格检查搜索文本的唯一匹配性
|
|
130
|
+
4. 保持原始代码的格式风格
|
|
121
131
|
"""
|
|
122
132
|
import os
|
|
123
133
|
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
@@ -396,7 +406,6 @@ def fast_edit(filepath: str, patches: List[Dict[str,str]], spinner: Yaspin) -> T
|
|
|
396
406
|
if search_text in modified_content:
|
|
397
407
|
# 如果有多处,报错
|
|
398
408
|
if modified_content.count(search_text) > 1:
|
|
399
|
-
spinner.write(f"❌ 补丁 #{patch_count} 应用失败:找到多个匹配的代码段")
|
|
400
409
|
success = False
|
|
401
410
|
break
|
|
402
411
|
# 应用替换
|
|
@@ -404,7 +413,6 @@ def fast_edit(filepath: str, patches: List[Dict[str,str]], spinner: Yaspin) -> T
|
|
|
404
413
|
search_text, replace_text)
|
|
405
414
|
spinner.write(f"✅ 补丁 #{patch_count} 应用成功")
|
|
406
415
|
else:
|
|
407
|
-
spinner.write(f"❌ 补丁 #{patch_count} 应用失败:无法找到匹配的代码段")
|
|
408
416
|
success = False
|
|
409
417
|
break
|
|
410
418
|
if not success:
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_tools/registry.py
RENAMED
|
@@ -216,7 +216,7 @@ class ToolRegistry(OutputHandlerProtocol):
|
|
|
216
216
|
f"工具 {missing_tools} 不存在,可用的工具有: {', '.join(self.tools.keys())}",
|
|
217
217
|
OutputType.WARNING,
|
|
218
218
|
)
|
|
219
|
-
self.tools = {tool_name: self.tools[tool_name] for tool_name in name}
|
|
219
|
+
self.tools = {tool_name: self.tools[tool_name] for tool_name in name if tool_name in self.tools}
|
|
220
220
|
|
|
221
221
|
def dont_use_tools(self, names: List[str]) -> None:
|
|
222
222
|
"""从注册表中移除指定工具
|
{jarvis_ai_assistant-0.1.177 → jarvis_ai_assistant-0.1.178}/src/jarvis/jarvis_utils/config.py
RENAMED
|
@@ -169,4 +169,13 @@ def get_pretty_output() -> bool:
|
|
|
169
169
|
返回:
|
|
170
170
|
bool: 如果启用PrettyOutput则返回True,默认为True
|
|
171
171
|
"""
|
|
172
|
-
return os.getenv('JARVIS_PRETTY_OUTPUT', 'false') == 'true'
|
|
172
|
+
return os.getenv('JARVIS_PRETTY_OUTPUT', 'false') == 'true'
|
|
173
|
+
|
|
174
|
+
def is_use_methodology() -> bool:
|
|
175
|
+
"""
|
|
176
|
+
获取是否启用方法论。
|
|
177
|
+
|
|
178
|
+
返回:
|
|
179
|
+
bool: 如果启用方法论则返回True,默认为True
|
|
180
|
+
"""
|
|
181
|
+
return os.getenv('JARVIS_USE_METHODOLOGY', 'true') == 'true'
|
|
@@ -35,17 +35,12 @@ src/jarvis/jarvis_code_analysis/checklists/swift.py
|
|
|
35
35
|
src/jarvis/jarvis_code_analysis/checklists/web.py
|
|
36
36
|
src/jarvis/jarvis_data/huggingface.tar.gz
|
|
37
37
|
src/jarvis/jarvis_dev/main.py
|
|
38
|
+
src/jarvis/jarvis_event/__init__.py
|
|
38
39
|
src/jarvis/jarvis_git_details/__init__.py
|
|
39
40
|
src/jarvis/jarvis_git_details/main.py
|
|
40
41
|
src/jarvis/jarvis_git_squash/__init__.py
|
|
41
42
|
src/jarvis/jarvis_git_squash/main.py
|
|
42
43
|
src/jarvis/jarvis_git_utils/git_commiter.py
|
|
43
|
-
src/jarvis/jarvis_lsp/base.py
|
|
44
|
-
src/jarvis/jarvis_lsp/cpp.py
|
|
45
|
-
src/jarvis/jarvis_lsp/go.py
|
|
46
|
-
src/jarvis/jarvis_lsp/python.py
|
|
47
|
-
src/jarvis/jarvis_lsp/registry.py
|
|
48
|
-
src/jarvis/jarvis_lsp/rust.py
|
|
49
44
|
src/jarvis/jarvis_mcp/__init__.py
|
|
50
45
|
src/jarvis/jarvis_mcp/sse_mcp_client.py
|
|
51
46
|
src/jarvis/jarvis_mcp/stdio_mcp_client.py
|
|
@@ -77,7 +72,6 @@ src/jarvis/jarvis_tools/file_analyzer.py
|
|
|
77
72
|
src/jarvis/jarvis_tools/file_operation.py
|
|
78
73
|
src/jarvis/jarvis_tools/find_methodology.py
|
|
79
74
|
src/jarvis/jarvis_tools/generate_new_tool.py
|
|
80
|
-
src/jarvis/jarvis_tools/lsp_get_diagnostics.py
|
|
81
75
|
src/jarvis/jarvis_tools/methodology.py
|
|
82
76
|
src/jarvis/jarvis_tools/read_code.py
|
|
83
77
|
src/jarvis/jarvis_tools/read_webpage.py
|