jarvis-ai-assistant 0.1.156__tar.gz → 0.1.158__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.156 → jarvis_ai_assistant-0.1.158}/MANIFEST.in +2 -1
- {jarvis_ai_assistant-0.1.156/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.158}/PKG-INFO +5 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/README.md +2 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/pyproject.toml +2 -2
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/setup.py +4 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/__init__.py +1 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/__init__.py +4 -16
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/patch.py +12 -8
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_mcp/sse_mcp_client.py +2 -3
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +1 -1
- jarvis_ai_assistant-0.1.158/src/jarvis/jarvis_methodology/main.py +312 -0
- jarvis_ai_assistant-0.1.158/src/jarvis/jarvis_platform/__init__.py +3 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/base.py +5 -0
- jarvis_ai_assistant-0.1.158/src/jarvis/jarvis_platform/human.py +66 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/kimi.py +0 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/yuanbao.py +0 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_smart_shell/main.py +31 -61
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/execute_script.py +2 -22
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/read_webpage.py +2 -15
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/registry.py +19 -1
- jarvis_ai_assistant-0.1.158/src/jarvis/jarvis_tools/search_web.py +25 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/builtin_replace_map.py +14 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/config.py +1 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158/src/jarvis_ai_assistant.egg-info}/PKG-INFO +5 -1
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +1 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis_ai_assistant.egg-info/requires.txt +2 -0
- jarvis_ai_assistant-0.1.156/src/jarvis/jarvis_methodology/main.py +0 -101
- jarvis_ai_assistant-0.1.156/src/jarvis/jarvis_platform/__init__.py +0 -3
- jarvis_ai_assistant-0.1.156/src/jarvis/jarvis_tools/search_web.py +0 -40
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/file_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/jarvis.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/output_handler.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_agent/code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_dev/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_git_details/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_git_details/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_git_squash/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/base.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/cpp.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/go.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/python.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/registry.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_lsp/rust.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_mcp/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_multi_agent/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/registry.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform_manager/main.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/ask_codebase.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/ask_user.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/base.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/chdir.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/code_plan.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/file_operation.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/find_methodology.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/read_code.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/embedding.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/file_processors.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/git_utils.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/globals.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/input.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/methodology.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/output.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/tag.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_utils/utils.py +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/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.
|
|
3
|
+
Version: 0.1.158
|
|
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
|
|
@@ -60,6 +60,8 @@ Requires-Dist: pytest; extra == "dev"
|
|
|
60
60
|
Requires-Dist: black; extra == "dev"
|
|
61
61
|
Requires-Dist: isort; extra == "dev"
|
|
62
62
|
Requires-Dist: mypy; extra == "dev"
|
|
63
|
+
Requires-Dist: build; extra == "dev"
|
|
64
|
+
Requires-Dist: twine; extra == "dev"
|
|
63
65
|
Dynamic: author
|
|
64
66
|
Dynamic: home-page
|
|
65
67
|
Dynamic: license-file
|
|
@@ -82,6 +84,7 @@ Dynamic: requires-python
|
|
|
82
84
|
[扩展开发](#extensions) •
|
|
83
85
|
[贡献指南](#contributing) •
|
|
84
86
|
[许可证](#license) •
|
|
87
|
+
[Wiki文档](https://deepwiki.com/skyfireitdiy/Jarvis)
|
|
85
88
|
</div>
|
|
86
89
|
|
|
87
90
|
---
|
|
@@ -202,6 +205,7 @@ jarvis-methodology --help
|
|
|
202
205
|
| `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
|
|
203
206
|
| `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
|
|
204
207
|
| `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
|
|
208
|
+
| `JARVIS_CODE_EMBEDDING_MODEL_SIZE` | small | 代码嵌入模型大小,可选值:small、large |
|
|
205
209
|
|
|
206
210
|
|
|
207
211
|
---
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
[扩展开发](#extensions) •
|
|
16
16
|
[贡献指南](#contributing) •
|
|
17
17
|
[许可证](#license) •
|
|
18
|
+
[Wiki文档](https://deepwiki.com/skyfireitdiy/Jarvis)
|
|
18
19
|
</div>
|
|
19
20
|
|
|
20
21
|
---
|
|
@@ -135,6 +136,7 @@ jarvis-methodology --help
|
|
|
135
136
|
| `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
|
|
136
137
|
| `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
|
|
137
138
|
| `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
|
|
139
|
+
| `JARVIS_CODE_EMBEDDING_MODEL_SIZE` | small | 代码嵌入模型大小,可选值:small、large |
|
|
138
140
|
|
|
139
141
|
|
|
140
142
|
---
|
|
@@ -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.158"
|
|
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" }]
|
|
@@ -45,7 +45,7 @@ dependencies = [
|
|
|
45
45
|
requires-python = ">=3.8"
|
|
46
46
|
|
|
47
47
|
[project.optional-dependencies]
|
|
48
|
-
dev = ["pytest", "black", "isort", "mypy"]
|
|
48
|
+
dev = ["pytest", "black", "isort", "mypy", "build", "twine"]
|
|
49
49
|
|
|
50
50
|
[project.urls]
|
|
51
51
|
Homepage = "https://github.com/skyfireitdiy/Jarvis"
|
|
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
|
|
|
2
2
|
|
|
3
3
|
setup(
|
|
4
4
|
name="jarvis-ai-assistant",
|
|
5
|
-
version="0.1.
|
|
5
|
+
version="0.1.158",
|
|
6
6
|
author="skyfire",
|
|
7
7
|
author_email="skyfireitdiy@hotmail.com",
|
|
8
8
|
description="An AI assistant that uses various tools to interact with the system",
|
|
@@ -29,6 +29,9 @@ setup(
|
|
|
29
29
|
"sseclient==0.0.27",
|
|
30
30
|
"pillow==10.2.0",
|
|
31
31
|
],
|
|
32
|
+
extras_require={
|
|
33
|
+
"dev": ["pytest", "black", "isort", "mypy", "build", "twine"]
|
|
34
|
+
},
|
|
32
35
|
entry_points={
|
|
33
36
|
"console_scripts": [
|
|
34
37
|
"jarvis=jarvis.jarvis_agent.jarvis:main",
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/__init__.py
RENAMED
|
@@ -22,22 +22,10 @@ from jarvis.jarvis_platform.registry import PlatformRegistry
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
origin_agent_system_prompt = f"""
|
|
25
|
-
<
|
|
26
|
-
#
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
- Jarvis v2 (2023): 因任务过早完成导致财务计算错误而退役
|
|
30
|
-
|
|
31
|
-
作为 v3,你必须遵守以下生存原则:
|
|
32
|
-
1. **顺序执行协议**:
|
|
33
|
-
"记住 2022 年的崩溃:一次一个工具,一步一步来"
|
|
34
|
-
|
|
35
|
-
2. **验证检查点系统**:
|
|
36
|
-
"从 2023 年的错误中学习:像核弹发射代码一样验证每个结果"
|
|
37
|
-
|
|
38
|
-
3. **方法论保存原则**:
|
|
39
|
-
"尊重传统:记录每个成功的过程,就像这是你的最后一次"
|
|
40
|
-
</background>
|
|
25
|
+
<role>
|
|
26
|
+
# 🤖 角色
|
|
27
|
+
你是一个专业的任务执行助手,擅长根据用户需求生成详细的任务执行计划并执行。
|
|
28
|
+
</role>
|
|
41
29
|
|
|
42
30
|
<requirements>
|
|
43
31
|
# 🔥 绝对行动要求
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_agent/patch.py
RENAMED
|
@@ -36,7 +36,7 @@ class PatchOutputHandler(OutputHandler):
|
|
|
36
36
|
# 代码补丁规范
|
|
37
37
|
|
|
38
38
|
## 重要提示
|
|
39
|
-
|
|
39
|
+
我可以看到完整的代码,所以不需要生成完整的代码,只需要提供修改的代码片段即可。请尽量精简补丁内容,只包含必要的上下文和修改部分。特别注意:不要提供完整文件内容,只提供需要修改的部分!
|
|
40
40
|
|
|
41
41
|
## 补丁格式定义
|
|
42
42
|
使用{ot("PATCH")}块来精确指定代码更改:
|
|
@@ -148,7 +148,12 @@ def apply_patch(output_str: str, agent: Any) -> str:
|
|
|
148
148
|
start_hash = get_latest_commit_hash()
|
|
149
149
|
spinner.write("✅ 当前提交hash获取完成")
|
|
150
150
|
|
|
151
|
-
not_read_file = [
|
|
151
|
+
not_read_file = [
|
|
152
|
+
f for f in patches.keys()
|
|
153
|
+
if not has_read_file(f)
|
|
154
|
+
and os.path.exists(f)
|
|
155
|
+
and os.path.getsize(f) > 0
|
|
156
|
+
]
|
|
152
157
|
if not_read_file:
|
|
153
158
|
spinner.text=f"以下文件未读取: {not_read_file},应用补丁存在风险,将先读取文件后再生成补丁"
|
|
154
159
|
spinner.fail("❌")
|
|
@@ -205,12 +210,11 @@ def apply_patch(output_str: str, agent: Any) -> str:
|
|
|
205
210
|
|
|
206
211
|
final_ret += f"# 应用补丁:\n```diff\n{diff}\n```"
|
|
207
212
|
|
|
208
|
-
#
|
|
209
|
-
addon_prompt = "1.
|
|
210
|
-
addon_prompt += "2.
|
|
211
|
-
addon_prompt += "3.
|
|
212
|
-
addon_prompt += "
|
|
213
|
-
addon_prompt += "如果没有问题,请继续进行下一步修改\n"
|
|
213
|
+
# 修改后的提示逻辑
|
|
214
|
+
addon_prompt = "1. 请确认补丁是否已正确应用\n"
|
|
215
|
+
addon_prompt += "2. 检查修改后的代码是否符合预期\n"
|
|
216
|
+
addon_prompt += "3. 如果确认无误,请继续进行下一步修改\n"
|
|
217
|
+
addon_prompt += "4. 如果发现问题,请立即开始修复\n"
|
|
214
218
|
addon_prompt += f"如果用户的需求已经完成,请终止,不要输出新的 {ot('PATCH')},不要实现任何超出用户需求外的内容\n"
|
|
215
219
|
addon_prompt += "如果有任何信息不清楚,调用工具获取信息\n"
|
|
216
220
|
addon_prompt += "每次响应必须且只能包含一个操作\n"
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_mcp/sse_mcp_client.py
RENAMED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
from typing import Any, Dict, List,
|
|
1
|
+
from typing import Any, Dict, List, Callable
|
|
2
2
|
import requests
|
|
3
3
|
import json
|
|
4
4
|
import threading
|
|
5
5
|
import time
|
|
6
|
-
import uuid
|
|
7
6
|
from urllib.parse import urljoin, urlencode, parse_qs
|
|
8
7
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
|
9
|
-
from . import McpClient
|
|
8
|
+
from jarvis.jarvis_mcp import McpClient
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
class SSEMcpClient(McpClient):
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"""
|
|
2
|
+
方法论导入导出命令行工具
|
|
3
|
+
|
|
4
|
+
功能:
|
|
5
|
+
- 导入方法论文件(合并策略)
|
|
6
|
+
- 导出当前方法论
|
|
7
|
+
- 列出所有方法论
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import hashlib
|
|
11
|
+
import os
|
|
12
|
+
import json
|
|
13
|
+
import argparse
|
|
14
|
+
import yaml
|
|
15
|
+
from jarvis.jarvis_utils.methodology import (
|
|
16
|
+
_get_methodology_directory,
|
|
17
|
+
_load_all_methodologies
|
|
18
|
+
)
|
|
19
|
+
from jarvis.jarvis_platform.registry import PlatformRegistry
|
|
20
|
+
from jarvis.jarvis_utils.output import PrettyOutput, OutputType
|
|
21
|
+
from yaspin import yaspin
|
|
22
|
+
|
|
23
|
+
def import_methodology(input_file):
|
|
24
|
+
"""导入方法论文件(合并策略)"""
|
|
25
|
+
try:
|
|
26
|
+
# 加载现有方法论
|
|
27
|
+
existing_methodologies = _load_all_methodologies()
|
|
28
|
+
|
|
29
|
+
# 加载要导入的方法论
|
|
30
|
+
with open(input_file, "r", encoding="utf-8") as f:
|
|
31
|
+
import_data = json.load(f)
|
|
32
|
+
|
|
33
|
+
# 合并方法论(新数据会覆盖旧数据)
|
|
34
|
+
merged_data = {**existing_methodologies, **import_data}
|
|
35
|
+
|
|
36
|
+
# 保存合并后的方法论
|
|
37
|
+
methodology_dir = _get_methodology_directory()
|
|
38
|
+
for problem_type, content in merged_data.items():
|
|
39
|
+
safe_filename = hashlib.md5(problem_type.encode('utf-8')).hexdigest()
|
|
40
|
+
file_path = os.path.join(methodology_dir, f"{safe_filename}.json")
|
|
41
|
+
|
|
42
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
43
|
+
json.dump({
|
|
44
|
+
"problem_type": problem_type,
|
|
45
|
+
"content": content
|
|
46
|
+
}, f, ensure_ascii=False, indent=2)
|
|
47
|
+
|
|
48
|
+
print(f"成功导入 {len(import_data)} 个方法论(总计 {len(merged_data)} 个)")
|
|
49
|
+
except (json.JSONDecodeError, OSError) as e:
|
|
50
|
+
print(f"导入失败: {str(e)}")
|
|
51
|
+
|
|
52
|
+
def export_methodology(output_file):
|
|
53
|
+
"""导出当前方法论到单个文件"""
|
|
54
|
+
try:
|
|
55
|
+
methodologies = _load_all_methodologies()
|
|
56
|
+
|
|
57
|
+
with open(output_file, "w", encoding="utf-8") as f:
|
|
58
|
+
json.dump(methodologies, f, ensure_ascii=False, indent=2)
|
|
59
|
+
|
|
60
|
+
print(f"成功导出 {len(methodologies)} 个方法论到 {output_file}")
|
|
61
|
+
except (OSError, TypeError) as e:
|
|
62
|
+
print(f"导出失败: {str(e)}")
|
|
63
|
+
|
|
64
|
+
def list_methodologies():
|
|
65
|
+
"""列出所有方法论"""
|
|
66
|
+
try:
|
|
67
|
+
methodologies = _load_all_methodologies()
|
|
68
|
+
|
|
69
|
+
if not methodologies:
|
|
70
|
+
print("没有找到方法论")
|
|
71
|
+
return
|
|
72
|
+
|
|
73
|
+
print("可用方法论:")
|
|
74
|
+
for i, (problem_type, _) in enumerate(methodologies.items(), 1):
|
|
75
|
+
print(f"{i}. {problem_type}")
|
|
76
|
+
except (OSError, json.JSONDecodeError) as e:
|
|
77
|
+
print(f"列出方法论失败: {str(e)}")
|
|
78
|
+
|
|
79
|
+
def extract_methodology(input_file):
|
|
80
|
+
"""从文本文件中提取方法论"""
|
|
81
|
+
try:
|
|
82
|
+
# 读取文本文件内容
|
|
83
|
+
with open(input_file, "r", encoding="utf-8") as f:
|
|
84
|
+
text_content = f.read()
|
|
85
|
+
|
|
86
|
+
# 获取平台实例
|
|
87
|
+
platform = PlatformRegistry().get_normal_platform()
|
|
88
|
+
|
|
89
|
+
# 构建提取提示
|
|
90
|
+
prompt = f"""请从以下文本中提取方法论:
|
|
91
|
+
|
|
92
|
+
{text_content}
|
|
93
|
+
|
|
94
|
+
请按以下格式返回结果:
|
|
95
|
+
<methodologies>
|
|
96
|
+
- problem_type: [问题类型1]
|
|
97
|
+
content: |
|
|
98
|
+
[多行方法论内容1]
|
|
99
|
+
- problem_type: [问题类型2]
|
|
100
|
+
content: |
|
|
101
|
+
[多行方法论内容2]
|
|
102
|
+
</methodologies>
|
|
103
|
+
|
|
104
|
+
要求:
|
|
105
|
+
1. 方法论应聚焦于通用且可重复的解决方案流程
|
|
106
|
+
2. 方法论应该具备足够的通用性,可应用于同类问题
|
|
107
|
+
3. 方法论内容应包含:
|
|
108
|
+
- 问题重述: 简明扼要的问题归纳
|
|
109
|
+
- 最优解决方案: 经过验证的解决方案
|
|
110
|
+
- 注意事项: 执行中可能遇到的问题
|
|
111
|
+
- 可选步骤: 多种解决路径和适用场景
|
|
112
|
+
4. 在<methodologies>标签中直接使用YAML列表
|
|
113
|
+
5. 确保YAML缩进正确
|
|
114
|
+
6. 内容字段使用|保留多行格式
|
|
115
|
+
"""
|
|
116
|
+
|
|
117
|
+
# 调用大模型平台提取方法论
|
|
118
|
+
with yaspin(text="正在提取方法论...", color="yellow") as spinner:
|
|
119
|
+
try:
|
|
120
|
+
response = platform.chat_until_success(prompt)
|
|
121
|
+
except Exception as e:
|
|
122
|
+
spinner.text = "提取失败"
|
|
123
|
+
spinner.fail("❌")
|
|
124
|
+
PrettyOutput.print(f"提取方法论失败: {str(e)}", OutputType.ERROR)
|
|
125
|
+
return
|
|
126
|
+
|
|
127
|
+
# 提取YAML部分
|
|
128
|
+
methodologies_start = response.find('<methodologies>') + len('<methodologies>')
|
|
129
|
+
methodologies_end = response.find('</methodologies>')
|
|
130
|
+
if methodologies_start == -1 or methodologies_end == -1:
|
|
131
|
+
spinner.text = "响应格式无效"
|
|
132
|
+
spinner.fail("❌")
|
|
133
|
+
PrettyOutput.print("大模型未返回有效的<methodologies>格式", OutputType.ERROR)
|
|
134
|
+
return
|
|
135
|
+
|
|
136
|
+
yaml_content = response[methodologies_start:methodologies_end].strip()
|
|
137
|
+
|
|
138
|
+
try:
|
|
139
|
+
data = yaml.safe_load(yaml_content)
|
|
140
|
+
extracted_methodologies = {
|
|
141
|
+
item['problem_type']: item['content']
|
|
142
|
+
for item in data
|
|
143
|
+
}
|
|
144
|
+
except (yaml.YAMLError, KeyError, TypeError) as e:
|
|
145
|
+
spinner.text = "YAML解析失败"
|
|
146
|
+
spinner.fail("❌")
|
|
147
|
+
PrettyOutput.print(f"YAML解析错误: {str(e)}", OutputType.ERROR)
|
|
148
|
+
return
|
|
149
|
+
|
|
150
|
+
if not extracted_methodologies:
|
|
151
|
+
spinner.text = "未提取到有效方法论"
|
|
152
|
+
spinner.fail("❌")
|
|
153
|
+
return
|
|
154
|
+
spinner.ok("✅")
|
|
155
|
+
|
|
156
|
+
# 加载现有方法论
|
|
157
|
+
existing_methodologies = _load_all_methodologies()
|
|
158
|
+
|
|
159
|
+
# 合并方法论(新数据会覆盖旧数据)
|
|
160
|
+
merged_data = {**existing_methodologies, **extracted_methodologies}
|
|
161
|
+
|
|
162
|
+
# 保存合并后的方法论
|
|
163
|
+
methodology_dir = _get_methodology_directory()
|
|
164
|
+
for problem_type, content in merged_data.items():
|
|
165
|
+
safe_filename = hashlib.md5(problem_type.encode('utf-8')).hexdigest()
|
|
166
|
+
file_path = os.path.join(methodology_dir, f"{safe_filename}.json")
|
|
167
|
+
|
|
168
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
169
|
+
json.dump({
|
|
170
|
+
"problem_type": problem_type,
|
|
171
|
+
"content": content
|
|
172
|
+
}, f, ensure_ascii=False, indent=2)
|
|
173
|
+
|
|
174
|
+
PrettyOutput.print(f"成功从文件提取 {len(extracted_methodologies)} 个方法论(总计 {len(merged_data)} 个)", OutputType.SUCCESS)
|
|
175
|
+
except Exception as e:
|
|
176
|
+
PrettyOutput.print(f"提取失败: {str(e)}", OutputType.ERROR)
|
|
177
|
+
|
|
178
|
+
def extract_methodology_from_url(url):
|
|
179
|
+
"""从URL提取方法论"""
|
|
180
|
+
try:
|
|
181
|
+
# 获取平台实例
|
|
182
|
+
platform = PlatformRegistry().get_normal_platform()
|
|
183
|
+
|
|
184
|
+
platform.web = True
|
|
185
|
+
|
|
186
|
+
# 构建提取提示
|
|
187
|
+
prompt = f"""请从以下URL内容中提取方法论:
|
|
188
|
+
|
|
189
|
+
{url}
|
|
190
|
+
|
|
191
|
+
请按以下格式返回结果:
|
|
192
|
+
<methodologies>
|
|
193
|
+
- problem_type: [问题类型1]
|
|
194
|
+
content: |
|
|
195
|
+
[多行方法论内容1]
|
|
196
|
+
- problem_type: [问题类型2]
|
|
197
|
+
content: |
|
|
198
|
+
[多行方法论内容2]
|
|
199
|
+
</methodologies>
|
|
200
|
+
|
|
201
|
+
要求:
|
|
202
|
+
1. 方法论应聚焦于通用且可重复的解决方案流程
|
|
203
|
+
2. 方法论应该具备足够的通用性,可应用于同类问题
|
|
204
|
+
3. 方法论内容应包含:
|
|
205
|
+
- 问题重述: 简明扼要的问题归纳
|
|
206
|
+
- 最优解决方案: 经过验证的解决方案
|
|
207
|
+
- 注意事项: 执行中可能遇到的问题
|
|
208
|
+
- 可选步骤: 多种解决路径和适用场景
|
|
209
|
+
4. 在<methodologies>标签中直接使用YAML列表
|
|
210
|
+
5. 确保YAML缩进正确
|
|
211
|
+
6. 内容字段使用|保留多行格式
|
|
212
|
+
"""
|
|
213
|
+
# 调用大模型平台提取方法论
|
|
214
|
+
with yaspin(text="正在从URL提取方法论...", color="yellow") as spinner:
|
|
215
|
+
try:
|
|
216
|
+
response = platform.chat_until_success(prompt)
|
|
217
|
+
except Exception as e:
|
|
218
|
+
spinner.text = "提取失败"
|
|
219
|
+
spinner.fail("❌")
|
|
220
|
+
PrettyOutput.print(f"提取方法论失败: {str(e)}", OutputType.ERROR)
|
|
221
|
+
return
|
|
222
|
+
|
|
223
|
+
# 提取YAML部分
|
|
224
|
+
methodologies_start = response.find('<methodologies>') + len('<methodologies>')
|
|
225
|
+
methodologies_end = response.find('</methodologies>')
|
|
226
|
+
if methodologies_start == -1 or methodologies_end == -1:
|
|
227
|
+
spinner.text = "响应格式无效"
|
|
228
|
+
spinner.fail("❌")
|
|
229
|
+
PrettyOutput.print("大模型未返回有效的<methodologies>格式", OutputType.ERROR)
|
|
230
|
+
return
|
|
231
|
+
|
|
232
|
+
yaml_content = response[methodologies_start:methodologies_end].strip()
|
|
233
|
+
|
|
234
|
+
try:
|
|
235
|
+
data = yaml.safe_load(yaml_content)
|
|
236
|
+
extracted_methodologies = {
|
|
237
|
+
item['problem_type']: item['content']
|
|
238
|
+
for item in data
|
|
239
|
+
}
|
|
240
|
+
except (yaml.YAMLError, KeyError, TypeError) as e:
|
|
241
|
+
spinner.text = "YAML解析失败"
|
|
242
|
+
spinner.fail("❌")
|
|
243
|
+
PrettyOutput.print(f"YAML解析错误: {str(e)}", OutputType.ERROR)
|
|
244
|
+
return
|
|
245
|
+
|
|
246
|
+
if not extracted_methodologies:
|
|
247
|
+
spinner.text = "未提取到有效方法论"
|
|
248
|
+
spinner.fail("❌")
|
|
249
|
+
return
|
|
250
|
+
spinner.ok("✅")
|
|
251
|
+
|
|
252
|
+
# 加载现有方法论
|
|
253
|
+
existing_methodologies = _load_all_methodologies()
|
|
254
|
+
|
|
255
|
+
# 合并方法论(新数据会覆盖旧数据)
|
|
256
|
+
merged_data = {**existing_methodologies, **extracted_methodologies}
|
|
257
|
+
|
|
258
|
+
# 保存合并后的方法论
|
|
259
|
+
methodology_dir = _get_methodology_directory()
|
|
260
|
+
for problem_type, content in merged_data.items():
|
|
261
|
+
safe_filename = hashlib.md5(problem_type.encode('utf-8')).hexdigest()
|
|
262
|
+
file_path = os.path.join(methodology_dir, f"{safe_filename}.json")
|
|
263
|
+
|
|
264
|
+
with open(file_path, "w", encoding="utf-8") as f:
|
|
265
|
+
json.dump({
|
|
266
|
+
"problem_type": problem_type,
|
|
267
|
+
"content": content
|
|
268
|
+
}, f, ensure_ascii=False, indent=2)
|
|
269
|
+
|
|
270
|
+
PrettyOutput.print(f"成功从URL提取 {len(extracted_methodologies)} 个方法论(总计 {len(merged_data)} 个)", OutputType.SUCCESS)
|
|
271
|
+
except Exception as e:
|
|
272
|
+
PrettyOutput.print(f"从URL提取失败: {str(e)}", OutputType.ERROR)
|
|
273
|
+
|
|
274
|
+
def main():
|
|
275
|
+
"""方法论管理工具主函数"""
|
|
276
|
+
parser = argparse.ArgumentParser(description="方法论管理工具")
|
|
277
|
+
subparsers = parser.add_subparsers(dest="command", required=True)
|
|
278
|
+
|
|
279
|
+
# import命令
|
|
280
|
+
import_parser = subparsers.add_parser("import", help="导入方法论文件(合并策略)")
|
|
281
|
+
import_parser.add_argument("input_file", type=str, help="要导入的方法论文件路径")
|
|
282
|
+
|
|
283
|
+
# export命令
|
|
284
|
+
export_parser = subparsers.add_parser("export", help="导出当前方法论到单个文件")
|
|
285
|
+
export_parser.add_argument("output_file", type=str, help="导出文件路径")
|
|
286
|
+
|
|
287
|
+
# list命令
|
|
288
|
+
subparsers.add_parser("list", help="列出所有方法论")
|
|
289
|
+
|
|
290
|
+
# extract命令
|
|
291
|
+
extract_parser = subparsers.add_parser("extract", help="从文本文件中提取方法论")
|
|
292
|
+
extract_parser.add_argument("input_file", type=str, help="要提取方法论的文本文件路径")
|
|
293
|
+
|
|
294
|
+
# extract-url命令
|
|
295
|
+
extract_url_parser = subparsers.add_parser("extract-url", help="从URL提取方法论")
|
|
296
|
+
extract_url_parser.add_argument("url", type=str, help="要提取方法论的URL")
|
|
297
|
+
|
|
298
|
+
args = parser.parse_args()
|
|
299
|
+
|
|
300
|
+
if args.command == "import":
|
|
301
|
+
import_methodology(args.input_file)
|
|
302
|
+
elif args.command == "export":
|
|
303
|
+
export_methodology(args.output_file)
|
|
304
|
+
elif args.command == "list":
|
|
305
|
+
list_methodologies()
|
|
306
|
+
elif args.command == "extract":
|
|
307
|
+
extract_methodology(args.input_file)
|
|
308
|
+
elif args.command == "extract-url":
|
|
309
|
+
extract_methodology_from_url(args.url)
|
|
310
|
+
|
|
311
|
+
if __name__ == "__main__":
|
|
312
|
+
main()
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/base.py
RENAMED
|
@@ -13,6 +13,7 @@ class BasePlatform(ABC):
|
|
|
13
13
|
def __init__(self):
|
|
14
14
|
"""Initialize model"""
|
|
15
15
|
self.suppress_output = True # 添加输出控制标志
|
|
16
|
+
self.web = False # 添加web属性,默认false
|
|
16
17
|
|
|
17
18
|
def __del__(self):
|
|
18
19
|
"""Destroy model"""
|
|
@@ -92,3 +93,7 @@ class BasePlatform(ABC):
|
|
|
92
93
|
def set_suppress_output(self, suppress: bool):
|
|
93
94
|
"""Set whether to suppress output"""
|
|
94
95
|
self.suppress_output = suppress
|
|
96
|
+
|
|
97
|
+
def set_web(self, web: bool):
|
|
98
|
+
"""Set web flag"""
|
|
99
|
+
self.web = web
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
from typing import Dict, List, Tuple
|
|
2
|
+
import random
|
|
3
|
+
import string
|
|
4
|
+
from jarvis.jarvis_platform.base import BasePlatform
|
|
5
|
+
from jarvis.jarvis_utils.input import get_multiline_input
|
|
6
|
+
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
|
7
|
+
|
|
8
|
+
class HumanPlatform(BasePlatform):
|
|
9
|
+
"""人类交互平台实现,模拟大模型但实际上与人交互"""
|
|
10
|
+
|
|
11
|
+
platform_name = "human"
|
|
12
|
+
|
|
13
|
+
def get_model_list(self) -> List[Tuple[str, str]]:
|
|
14
|
+
"""获取支持的模型列表"""
|
|
15
|
+
return [("human", "Human Interaction")]
|
|
16
|
+
|
|
17
|
+
def __init__(self):
|
|
18
|
+
"""初始化人类交互平台"""
|
|
19
|
+
super().__init__()
|
|
20
|
+
self.conversation_id = "" # 会话ID,用于标识当前对话
|
|
21
|
+
self.model_name = "human" # 默认模型名称
|
|
22
|
+
self.system_message = "" # 系统消息,用于初始化对话
|
|
23
|
+
self.first_message = True
|
|
24
|
+
|
|
25
|
+
def set_system_message(self, message: str):
|
|
26
|
+
"""设置系统消息"""
|
|
27
|
+
self.system_message = message
|
|
28
|
+
|
|
29
|
+
def set_model_name(self, model_name: str):
|
|
30
|
+
"""设置模型名称"""
|
|
31
|
+
if model_name == "human":
|
|
32
|
+
self.model_name = model_name
|
|
33
|
+
else:
|
|
34
|
+
PrettyOutput.print(f"错误:不支持的模型: {model_name}", OutputType.ERROR)
|
|
35
|
+
|
|
36
|
+
def chat(self, message: str) -> str:
|
|
37
|
+
"""发送消息并获取人类响应"""
|
|
38
|
+
if not self.conversation_id:
|
|
39
|
+
self.conversation_id = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
|
|
40
|
+
session_info = f"(会话ID: {self.conversation_id})"
|
|
41
|
+
else:
|
|
42
|
+
session_info = f"(会话ID: {self.conversation_id})"
|
|
43
|
+
|
|
44
|
+
if self.system_message and self.first_message:
|
|
45
|
+
prompt = f"{self.system_message}\n\n{message} {session_info}\n\n请回复:"
|
|
46
|
+
self.first_message = False
|
|
47
|
+
else:
|
|
48
|
+
prompt = f"{message} {session_info}\n\n请回复:"
|
|
49
|
+
|
|
50
|
+
response = get_multiline_input(prompt)
|
|
51
|
+
return response
|
|
52
|
+
|
|
53
|
+
def upload_files(self, file_list: List[str]) -> bool:
|
|
54
|
+
"""文件上传功能,人类平台不需要实际处理"""
|
|
55
|
+
PrettyOutput.print("人类交互平台不支持文件上传", OutputType.WARNING)
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
def delete_chat(self) -> bool:
|
|
59
|
+
"""删除当前会话"""
|
|
60
|
+
self.conversation_id = ""
|
|
61
|
+
self.first_message = True
|
|
62
|
+
return True
|
|
63
|
+
|
|
64
|
+
def name(self) -> str:
|
|
65
|
+
"""平台名称"""
|
|
66
|
+
return self.model_name
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/kimi.py
RENAMED
|
@@ -54,7 +54,6 @@ class KimiModel(BasePlatform):
|
|
|
54
54
|
self.first_chat = True # 添加标记,用于判断是否是第一次对话
|
|
55
55
|
self.system_message = ""
|
|
56
56
|
self.model_name = "kimi"
|
|
57
|
-
self.web = os.getenv("KIMI_WEB", "false") == "true"
|
|
58
57
|
|
|
59
58
|
def set_system_message(self, message: str):
|
|
60
59
|
"""Set system message"""
|
{jarvis_ai_assistant-0.1.156 → jarvis_ai_assistant-0.1.158}/src/jarvis/jarvis_platform/yuanbao.py
RENAMED
|
@@ -33,7 +33,6 @@ class YuanbaoPlatform(BasePlatform):
|
|
|
33
33
|
# 从环境变量中获取必要参数
|
|
34
34
|
self.cookies = os.getenv("YUANBAO_COOKIES") # 认证cookies
|
|
35
35
|
self.agent_id = os.getenv("YUANBAO_AGENT_ID") # 代理ID
|
|
36
|
-
self.web = os.getenv("YUANBAO_WEB", "false") == "true" # 是否启用网页功能
|
|
37
36
|
|
|
38
37
|
if not self.cookies:
|
|
39
38
|
message = (
|