jarvis-ai-assistant 0.1.164__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.164/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.165}/PKG-INFO +2 -1
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/pyproject.toml +2 -1
- {jarvis_ai_assistant-0.1.164 → 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.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/builtin_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/file_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/jarvis.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/output_handler.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_agent/shell_input_handler.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_agent/code_agent.py +5 -26
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/devops.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/docs.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/go.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/java.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/loader.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/php.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/python.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/rust.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/shell.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/sql.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/swift.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_analysis/checklists/web.py +1 -0
- {jarvis_ai_assistant-0.1.164 → 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.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_dev/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_details/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_squash/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_utils/git_commiter.py +55 -30
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/base.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/cpp.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/go.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/python.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/registry.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_lsp/rust.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/sse_mcp_client.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_methodology/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_multi_agent/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_multi_agent/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/base.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/human.py +1 -0
- {jarvis_ai_assistant-0.1.164 → 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.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/registry.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform/yuanbao.py +2 -1
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform_manager/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_smart_shell/main.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/ask_codebase.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/ask_user.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/base.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/chdir.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/code_plan.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/create_code_agent.py +1 -0
- {jarvis_ai_assistant-0.1.164 → 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.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/execute_script.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/file_analyzer.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/file_operation.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/find_methodology.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/lsp_get_diagnostics.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/methodology.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/read_code.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/read_webpage.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/registry.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/rewrite_file.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/search_web.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/virtual_tty.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/__init__.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/builtin_replace_map.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/config.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/embedding.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/file_processors.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/git_utils.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/globals.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/input.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/methodology.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/output.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/tag.py +1 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_utils/utils.py +18 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165/src/jarvis_ai_assistant.egg-info}/PKG-INFO +2 -1
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/requires.txt +1 -0
- jarvis_ai_assistant-0.1.164/src/jarvis/__init__.py +0 -3
- jarvis_ai_assistant-0.1.164/src/jarvis/jarvis_tools/edit_file.py +0 -279
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/MANIFEST.in +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/README.md +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/setup.cfg +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_details/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis/jarvis_tools/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
- {jarvis_ai_assistant-0.1.164 → jarvis_ai_assistant-0.1.165}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.1.164 → 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"
|
|
@@ -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"]
|
|
@@ -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())
|