jarvis-ai-assistant 0.1.163__tar.gz → 0.1.165__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.163/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.165}/PKG-INFO +12 -2
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/README.md +10 -1
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/pyproject.toml +2 -1
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/setup.py +6 -1
- jarvis_ai_assistant-0.1.165/src/jarvis/__init__.py +4 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/builtin_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/file_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/jarvis.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/main.py +1 -0
- jarvis_ai_assistant-0.1.165/src/jarvis/jarvis_agent/output_handler.py +48 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/shell_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_agent/code_agent.py +5 -26
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/devops.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/docs.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/go.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/java.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/loader.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/php.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/python.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/rust.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/shell.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/sql.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/swift.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/web.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/code_review.py +1 -0
- jarvis_ai_assistant-0.1.165/src/jarvis/jarvis_data/huggingface.tar.gz +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_dev/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_details/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_squash/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_utils/git_commiter.py +55 -30
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/base.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/cpp.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/go.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/python.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/registry.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/rust.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/sse_mcp_client.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_methodology/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_multi_agent/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_multi_agent/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/base.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/human.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/kimi.py +1 -0
- jarvis_ai_assistant-0.1.165/src/jarvis/jarvis_platform/openai.py +117 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/registry.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/yuanbao.py +2 -1
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform_manager/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_smart_shell/main.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/ask_codebase.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/ask_user.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/base.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/chdir.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/code_plan.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/create_code_agent.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/create_sub_agent.py +1 -0
- jarvis_ai_assistant-0.1.165/src/jarvis/jarvis_tools/edit_file.py +351 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/execute_script.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/file_analyzer.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/file_operation.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/find_methodology.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/methodology.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/read_code.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/read_webpage.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/registry.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/rewrite_file.py +4 -3
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/search_web.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/virtual_tty.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/builtin_replace_map.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/config.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/embedding.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/file_processors.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/git_utils.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/globals.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/input.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/methodology.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/output.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/tag.py +1 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/utils.py +18 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165/src/jarvis_ai_assistant.egg-info}/PKG-INFO +12 -2
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/requires.txt +1 -0
- jarvis_ai_assistant-0.1.163/src/jarvis/__init__.py +0 -3
- jarvis_ai_assistant-0.1.163/src/jarvis/jarvis_agent/output_handler.py +0 -23
- jarvis_ai_assistant-0.1.163/src/jarvis/jarvis_tools/edit_file.py +0 -279
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_details/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.163 → jarvis_ai_assistant-0.1.165}/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.165
|
|
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
|
|
@@ -55,6 +55,7 @@ Requires-Dist: torch==2.4.1
|
|
|
55
55
|
Requires-Dist: python-Levenshtein==0.25.1
|
|
56
56
|
Requires-Dist: sseclient==0.0.27
|
|
57
57
|
Requires-Dist: pillow==10.2.0
|
|
58
|
+
Requires-Dist: openai==1.78.1
|
|
58
59
|
Provides-Extra: dev
|
|
59
60
|
Requires-Dist: pytest; extra == "dev"
|
|
60
61
|
Requires-Dist: black; extra == "dev"
|
|
@@ -77,6 +78,7 @@ Dynamic: requires-python
|
|
|
77
78
|
|
|
78
79
|
*您的智能开发和系统交互助手*
|
|
79
80
|
|
|
81
|
+
[核心特色](#core-features) •
|
|
80
82
|
[视频介绍](#video-introduction) •
|
|
81
83
|
[快速开始](#quick-start) •
|
|
82
84
|
[配置说明](#configuration) •
|
|
@@ -89,6 +91,15 @@ Dynamic: requires-python
|
|
|
89
91
|
|
|
90
92
|
---
|
|
91
93
|
|
|
94
|
+
## 🌟 核心特色 <a id="core-features"></a>
|
|
95
|
+
|
|
96
|
+
- 🆓 零成本接入:无缝集成元宝、Kimi等优质模型,无需支付API费用,同时保留强大的文件处理、搜索和推理能力
|
|
97
|
+
- 🛠️ 工具驱动:内置丰富工具集,涵盖脚本执行、代码开发、网页搜索、终端操作等核心功能
|
|
98
|
+
- 👥 人机协作:支持实时交互,用户可随时介入指导,确保AI行为符合预期
|
|
99
|
+
- 🔌 高度可扩展:支持自定义工具和平台,轻松集成MCP协议
|
|
100
|
+
- 📈 智能进化:内置方法论系统,持续学习优化,越用越智能
|
|
101
|
+
|
|
102
|
+
|
|
92
103
|
## 📺 视频介绍<a id="video-introduction"></a>
|
|
93
104
|
|
|
94
105
|
[](https://player.bilibili.com/player.html?isOutside=true&aid=114306578382907&bvid=BV1x2dAYeEpM&cid=29314583629&p=1)
|
|
@@ -205,7 +216,6 @@ jarvis-methodology --help
|
|
|
205
216
|
| `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
|
|
206
217
|
| `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
|
|
207
218
|
| `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
|
|
208
|
-
| `JARVIS_CODE_EMBEDDING_MODEL_SIZE` | small | 代码嵌入模型大小,可选值:small、large |
|
|
209
219
|
|
|
210
220
|
|
|
211
221
|
---
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
*您的智能开发和系统交互助手*
|
|
10
10
|
|
|
11
|
+
[核心特色](#core-features) •
|
|
11
12
|
[视频介绍](#video-introduction) •
|
|
12
13
|
[快速开始](#quick-start) •
|
|
13
14
|
[配置说明](#configuration) •
|
|
@@ -20,6 +21,15 @@
|
|
|
20
21
|
|
|
21
22
|
---
|
|
22
23
|
|
|
24
|
+
## 🌟 核心特色 <a id="core-features"></a>
|
|
25
|
+
|
|
26
|
+
- 🆓 零成本接入:无缝集成元宝、Kimi等优质模型,无需支付API费用,同时保留强大的文件处理、搜索和推理能力
|
|
27
|
+
- 🛠️ 工具驱动:内置丰富工具集,涵盖脚本执行、代码开发、网页搜索、终端操作等核心功能
|
|
28
|
+
- 👥 人机协作:支持实时交互,用户可随时介入指导,确保AI行为符合预期
|
|
29
|
+
- 🔌 高度可扩展:支持自定义工具和平台,轻松集成MCP协议
|
|
30
|
+
- 📈 智能进化:内置方法论系统,持续学习优化,越用越智能
|
|
31
|
+
|
|
32
|
+
|
|
23
33
|
## 📺 视频介绍<a id="video-introduction"></a>
|
|
24
34
|
|
|
25
35
|
[](https://player.bilibili.com/player.html?isOutside=true&aid=114306578382907&bvid=BV1x2dAYeEpM&cid=29314583629&p=1)
|
|
@@ -136,7 +146,6 @@ jarvis-methodology --help
|
|
|
136
146
|
| `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
|
|
137
147
|
| `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | true | 应用补丁前是否需要确认 |
|
|
138
148
|
| `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
|
|
139
|
-
| `JARVIS_CODE_EMBEDDING_MODEL_SIZE` | small | 代码嵌入模型大小,可选值:small、large |
|
|
140
149
|
|
|
141
150
|
|
|
142
151
|
---
|
|
@@ -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.165"
|
|
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" }]
|
|
@@ -41,6 +41,7 @@ dependencies = [
|
|
|
41
41
|
"python-Levenshtein==0.25.1",
|
|
42
42
|
"sseclient==0.0.27",
|
|
43
43
|
"pillow==10.2.0",
|
|
44
|
+
"openai==1.78.1",
|
|
44
45
|
]
|
|
45
46
|
requires-python = ">=3.8"
|
|
46
47
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
1
2
|
from setuptools import setup, find_packages
|
|
2
3
|
|
|
3
4
|
setup(
|
|
4
5
|
name="jarvis-ai-assistant",
|
|
5
|
-
version="0.1.
|
|
6
|
+
version="0.1.165",
|
|
6
7
|
author="skyfire",
|
|
7
8
|
author_email="skyfireitdiy@hotmail.com",
|
|
8
9
|
description="An AI assistant that uses various tools to interact with the system",
|
|
@@ -12,6 +13,9 @@ setup(
|
|
|
12
13
|
packages=find_packages(where="src"),
|
|
13
14
|
package_dir={"": "src"},
|
|
14
15
|
include_package_data=True,
|
|
16
|
+
package_data={
|
|
17
|
+
"jarvis": ["jarvis_data/huggingface.tar.gz"],
|
|
18
|
+
},
|
|
15
19
|
install_requires=[
|
|
16
20
|
"requests==2.32.3",
|
|
17
21
|
"colorama==0.4.6",
|
|
@@ -28,6 +32,7 @@ setup(
|
|
|
28
32
|
"python-Levenshtein==0.25.1",
|
|
29
33
|
"sseclient==0.0.27",
|
|
30
34
|
"pillow==10.2.0",
|
|
35
|
+
"openai==1.78.1",
|
|
31
36
|
],
|
|
32
37
|
extras_require={
|
|
33
38
|
"dev": ["pytest", "black", "isort", "mypy", "build", "twine"]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
from abc import ABC, abstractmethod
|
|
3
|
+
from typing import Any, Tuple
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class OutputHandler(ABC):
|
|
7
|
+
@abstractmethod
|
|
8
|
+
def handle(self, response: str, agent: Any) -> Tuple[bool, Any]:
|
|
9
|
+
"""处理响应数据
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
response: 需要处理的响应字符串
|
|
13
|
+
agent: 执行处理的agent实例
|
|
14
|
+
|
|
15
|
+
Returns:
|
|
16
|
+
Tuple[bool, Any]: 返回处理结果元组,第一个元素表示是否处理成功,第二个元素为处理后的数据
|
|
17
|
+
"""
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
@abstractmethod
|
|
21
|
+
def can_handle(self, response: str) -> bool:
|
|
22
|
+
"""判断是否能处理给定的响应
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
response: 需要判断的响应字符串
|
|
26
|
+
|
|
27
|
+
Returns:
|
|
28
|
+
bool: 返回是否能处理该响应
|
|
29
|
+
"""
|
|
30
|
+
pass
|
|
31
|
+
|
|
32
|
+
@abstractmethod
|
|
33
|
+
def prompt(self) -> str:
|
|
34
|
+
"""获取处理器的提示信息
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
str: 返回处理器的提示字符串
|
|
38
|
+
"""
|
|
39
|
+
pass
|
|
40
|
+
|
|
41
|
+
@abstractmethod
|
|
42
|
+
def name(self) -> str:
|
|
43
|
+
"""获取处理器的名称
|
|
44
|
+
|
|
45
|
+
Returns:
|
|
46
|
+
str: 返回处理器的名称字符串
|
|
47
|
+
"""
|
|
48
|
+
pass
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
1
2
|
"""Jarvis代码代理模块。
|
|
2
3
|
|
|
3
4
|
该模块提供CodeAgent类,用于处理代码修改任务。
|
|
@@ -86,32 +87,10 @@ class CodeAgent:
|
|
|
86
87
|
- 代码阅读:优先使用read_code工具
|
|
87
88
|
- 仅在命令行工具不足时使用专用工具
|
|
88
89
|
|
|
89
|
-
##
|
|
90
|
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
- 每个搜索文本在文件中必须唯一匹配,确保修改的准确性
|
|
94
|
-
- 为新文件创建时,使用空字符串作为搜索文本,替换文本作为完整内容
|
|
95
|
-
- 保持与原代码完全一致的格式和缩进风格
|
|
96
|
-
|
|
97
|
-
### 文件重写工具使用
|
|
98
|
-
- rewrite_file工具用于完全重写文件内容或创建新文件
|
|
99
|
-
- 当需要替换整个文件内容时,优先使用rewrite_file工具
|
|
100
|
-
- 创建新文件时,使用rewrite_file工具提供完整的文件内容
|
|
101
|
-
- 保持与原代码相同的格式、缩进和编码风格
|
|
102
|
-
- 确保提供格式良好的完整文件内容
|
|
103
|
-
|
|
104
|
-
### 最小补丁原则
|
|
105
|
-
- 对于任何代码修改,只提供需要修改的代码部分,不提供完整文件内容
|
|
106
|
-
- 严格保持原始代码的缩进、空行和格式风格
|
|
107
|
-
- 提供最小必要的上下文,确保修改位置精确
|
|
108
|
-
- 每个修改必须包含清晰的修改理由
|
|
109
|
-
|
|
110
|
-
### 格式兼容要求
|
|
111
|
-
- 保持与原代码相同的缩进方式(空格或制表符)
|
|
112
|
-
- 保持原代码的空行数量和位置
|
|
113
|
-
- 不改变原代码的换行风格
|
|
114
|
-
- 对新文件可提供完整内容,对现有文件只提供差异部分
|
|
90
|
+
## 文件编辑工具使用规范
|
|
91
|
+
- 对于部分文件内容修改,使用edit_file工具
|
|
92
|
+
- 对于需要重写整个文件内容,使用rewrite_file工具
|
|
93
|
+
- 对于简单的修改,可以使用execute_script工具执行shell命令完成
|
|
115
94
|
</code_engineer_guide>
|
|
116
95
|
"""
|
|
117
96
|
# Dynamically add ask_codebase based on task complexity if really needed
|
|
Binary file
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
1
2
|
import re
|
|
2
3
|
import shlex
|
|
3
4
|
import subprocess
|
|
@@ -32,6 +33,16 @@ class GitCommitTool:
|
|
|
32
33
|
"type": "string",
|
|
33
34
|
"description": "Git仓库的根目录路径(可选)",
|
|
34
35
|
"default": "."
|
|
36
|
+
},
|
|
37
|
+
"prefix": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "提交信息前缀(可选)",
|
|
40
|
+
"default": ""
|
|
41
|
+
},
|
|
42
|
+
"suffix": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"description": "提交信息后缀(可选)",
|
|
45
|
+
"default": ""
|
|
35
46
|
}
|
|
36
47
|
},
|
|
37
48
|
"required": []
|
|
@@ -60,6 +71,8 @@ class GitCommitTool:
|
|
|
60
71
|
"""Execute automatic commit process with support for multi-line messages and special characters"""
|
|
61
72
|
try:
|
|
62
73
|
root_dir = args.get("root_dir", ".")
|
|
74
|
+
prefix = args.get("prefix", "")
|
|
75
|
+
suffix = args.get("suffix", "")
|
|
63
76
|
|
|
64
77
|
# Store current directory
|
|
65
78
|
original_dir = os.getcwd()
|
|
@@ -112,21 +125,21 @@ class GitCommitTool:
|
|
|
112
125
|
# 准备提示信息
|
|
113
126
|
base_prompt = f'''根据代码差异生成提交信息:
|
|
114
127
|
提交信息应使用{args.get('lang', '中文')}书写
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
128
|
+
# 必需结构
|
|
129
|
+
必须使用以下格式:
|
|
130
|
+
{ot("COMMIT_MESSAGE")}
|
|
131
|
+
<类型>(<范围>): <主题>
|
|
132
|
+
|
|
133
|
+
[可选] 详细描述变更内容和原因
|
|
134
|
+
{ct("COMMIT_MESSAGE")}
|
|
135
|
+
# 格式规则
|
|
136
|
+
1. 类型: fix(修复bug), feat(新功能), docs(文档), style(格式), refactor(重构), test(测试), chore(其他)
|
|
137
|
+
2. 范围表示变更的模块或组件 (例如: auth, database, ui)
|
|
138
|
+
3. 主题行不超过72个字符,不以句号结尾,使用祈使语气
|
|
139
|
+
4. 如有详细描述,使用空行分隔主题和详细描述
|
|
140
|
+
5. 详细描述部分应解释"是什么"和"为什么",而非"如何"
|
|
141
|
+
6. 仅输出提交信息,不要输出其他内容
|
|
142
|
+
'''
|
|
130
143
|
|
|
131
144
|
# 获取模型并尝试上传文件
|
|
132
145
|
platform = PlatformRegistry().get_normal_platform()
|
|
@@ -159,12 +172,12 @@ class GitCommitTool:
|
|
|
159
172
|
spinner.text = "正在生成提交消息..."
|
|
160
173
|
# 使用上传的文件
|
|
161
174
|
prompt = base_prompt + f'''
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
175
|
+
# 变更概述
|
|
176
|
+
- 变更文件数量: {file_count} 个文件
|
|
177
|
+
- 已上传包含完整代码差异的文件
|
|
178
|
+
|
|
179
|
+
请详细分析已上传的代码差异文件,生成符合上述格式的提交信息。
|
|
180
|
+
'''
|
|
168
181
|
commit_message = platform.chat_until_success(prompt)
|
|
169
182
|
else:
|
|
170
183
|
# 如果上传失败但内容较大,使用chat_big_content
|
|
@@ -174,9 +187,9 @@ class GitCommitTool:
|
|
|
174
187
|
else:
|
|
175
188
|
# 直接在提示中包含差异内容
|
|
176
189
|
prompt = base_prompt + f'''
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
190
|
+
# 分析材料
|
|
191
|
+
{diff}
|
|
192
|
+
'''
|
|
180
193
|
commit_message = platform.chat_until_success(prompt)
|
|
181
194
|
|
|
182
195
|
while True:
|
|
@@ -187,13 +200,18 @@ class GitCommitTool:
|
|
|
187
200
|
# 如果成功提取,就跳出循环
|
|
188
201
|
if extracted_message:
|
|
189
202
|
commit_message = extracted_message
|
|
203
|
+
# 应用prefix和suffix
|
|
204
|
+
if prefix:
|
|
205
|
+
commit_message = f"{prefix} {commit_message}"
|
|
206
|
+
if suffix:
|
|
207
|
+
commit_message = f"{commit_message}\n{suffix}"
|
|
190
208
|
break
|
|
191
209
|
prompt = f"""格式错误,请按照以下格式重新生成提交信息:
|
|
192
210
|
{ot("COMMIT_MESSAGE")}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
211
|
+
<类型>(<范围>): <主题>
|
|
212
|
+
|
|
213
|
+
[可选] 详细描述变更内容和原因
|
|
214
|
+
{ct("COMMIT_MESSAGE")}
|
|
197
215
|
"""
|
|
198
216
|
commit_message = platform.chat_until_success(prompt)
|
|
199
217
|
spinner.write("✅ 生成提交消息")
|
|
@@ -250,9 +268,16 @@ def main():
|
|
|
250
268
|
parser = argparse.ArgumentParser(description='Git commit tool')
|
|
251
269
|
parser.add_argument('--lang', type=str, default='Chinese', help='Language for commit messages')
|
|
252
270
|
parser.add_argument('--root-dir', type=str, default='.', help='Root directory of the Git repository')
|
|
271
|
+
parser.add_argument('--prefix', type=str, default='', help='Prefix to prepend to commit message (separated by space)')
|
|
272
|
+
parser.add_argument('--suffix', type=str, default='', help='Suffix to append to commit message (separated by newline)')
|
|
253
273
|
args = parser.parse_args()
|
|
254
274
|
tool = GitCommitTool()
|
|
255
|
-
tool.execute({
|
|
275
|
+
tool.execute({
|
|
276
|
+
"lang": args.lang if hasattr(args, 'lang') else 'Chinese',
|
|
277
|
+
"root_dir": args.root_dir,
|
|
278
|
+
"prefix": args.prefix if hasattr(args, 'prefix') else '',
|
|
279
|
+
"suffix": args.suffix if hasattr(args, 'suffix') else ''
|
|
280
|
+
})
|
|
256
281
|
|
|
257
282
|
if __name__ == "__main__":
|
|
258
|
-
sys.exit(main())
|
|
283
|
+
sys.exit(main())
|