jarvis-ai-assistant 0.1.123__py3-none-any.whl → 0.1.125__py3-none-any.whl
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/__init__.py +1 -1
- jarvis/jarvis_agent/__init__.py +19 -21
- jarvis/jarvis_code_agent/code_agent.py +205 -119
- jarvis/jarvis_code_agent/file_select.py +6 -105
- jarvis/jarvis_code_agent/patch.py +192 -259
- jarvis/jarvis_codebase/main.py +6 -2
- jarvis/jarvis_dev/main.py +6 -4
- jarvis/jarvis_git_squash/__init__.py +0 -0
- jarvis/jarvis_git_squash/main.py +81 -0
- jarvis/jarvis_lsp/cpp.py +1 -1
- jarvis/jarvis_lsp/go.py +1 -1
- jarvis/jarvis_lsp/registry.py +2 -2
- jarvis/jarvis_lsp/rust.py +1 -1
- jarvis/jarvis_multi_agent/__init__.py +1 -1
- jarvis/jarvis_platform/ai8.py +2 -1
- jarvis/jarvis_platform/base.py +20 -25
- jarvis/jarvis_platform/kimi.py +2 -3
- jarvis/jarvis_platform/ollama.py +3 -1
- jarvis/jarvis_platform/openai.py +1 -1
- jarvis/jarvis_platform/oyi.py +2 -1
- jarvis/jarvis_platform/registry.py +2 -1
- jarvis/jarvis_platform_manager/main.py +4 -6
- jarvis/jarvis_platform_manager/openai_test.py +0 -1
- jarvis/jarvis_rag/main.py +5 -2
- jarvis/jarvis_smart_shell/main.py +9 -4
- jarvis/jarvis_tools/ask_codebase.py +12 -7
- jarvis/jarvis_tools/ask_user.py +3 -2
- jarvis/jarvis_tools/base.py +21 -7
- jarvis/jarvis_tools/chdir.py +25 -1
- jarvis/jarvis_tools/code_review.py +13 -14
- jarvis/jarvis_tools/create_code_agent.py +4 -7
- jarvis/jarvis_tools/create_sub_agent.py +2 -2
- jarvis/jarvis_tools/execute_shell.py +3 -1
- jarvis/jarvis_tools/execute_shell_script.py +58 -0
- jarvis/jarvis_tools/file_operation.py +3 -2
- jarvis/jarvis_tools/git_commiter.py +26 -17
- jarvis/jarvis_tools/lsp_find_definition.py +1 -1
- jarvis/jarvis_tools/lsp_find_references.py +1 -1
- jarvis/jarvis_tools/lsp_get_diagnostics.py +19 -11
- jarvis/jarvis_tools/lsp_get_document_symbols.py +1 -1
- jarvis/jarvis_tools/lsp_prepare_rename.py +1 -1
- jarvis/jarvis_tools/lsp_validate_edit.py +1 -1
- jarvis/jarvis_tools/methodology.py +4 -1
- jarvis/jarvis_tools/rag.py +22 -15
- jarvis/jarvis_tools/read_code.py +4 -3
- jarvis/jarvis_tools/read_webpage.py +2 -1
- jarvis/jarvis_tools/registry.py +4 -1
- jarvis/jarvis_tools/{search.py → search_web.py} +5 -3
- jarvis/jarvis_tools/select_code_files.py +1 -1
- jarvis/jarvis_utils/__init__.py +19 -941
- jarvis/jarvis_utils/config.py +138 -0
- jarvis/jarvis_utils/embedding.py +201 -0
- jarvis/jarvis_utils/git_utils.py +120 -0
- jarvis/jarvis_utils/globals.py +82 -0
- jarvis/jarvis_utils/input.py +161 -0
- jarvis/jarvis_utils/methodology.py +128 -0
- jarvis/jarvis_utils/output.py +235 -0
- jarvis/jarvis_utils/utils.py +150 -0
- jarvis_ai_assistant-0.1.125.dist-info/METADATA +291 -0
- jarvis_ai_assistant-0.1.125.dist-info/RECORD +75 -0
- {jarvis_ai_assistant-0.1.123.dist-info → jarvis_ai_assistant-0.1.125.dist-info}/WHEEL +1 -1
- {jarvis_ai_assistant-0.1.123.dist-info → jarvis_ai_assistant-0.1.125.dist-info}/entry_points.txt +1 -0
- jarvis/jarvis_code_agent/relevant_files.py +0 -117
- jarvis_ai_assistant-0.1.123.dist-info/METADATA +0 -461
- jarvis_ai_assistant-0.1.123.dist-info/RECORD +0 -65
- {jarvis_ai_assistant-0.1.123.dist-info → jarvis_ai_assistant-0.1.125.dist-info}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.123.dist-info → jarvis_ai_assistant-0.1.125.dist-info}/top_level.txt +0 -0
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: jarvis-ai-assistant
|
|
3
|
-
Version: 0.1.123
|
|
4
|
-
Summary: Jarvis: An AI assistant that uses tools to interact with the system
|
|
5
|
-
Home-page: https://github.com/skyfireitdiy/Jarvis
|
|
6
|
-
Author: skyfire
|
|
7
|
-
Author-email: skyfire <skyfireitdiy@hotmail.com>
|
|
8
|
-
License: MIT License
|
|
9
|
-
|
|
10
|
-
Copyright (c) 2025 skyfire
|
|
11
|
-
|
|
12
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
14
|
-
in the Software without restriction, including without limitation the rights
|
|
15
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
17
|
-
furnished to do so, subject to the following conditions:
|
|
18
|
-
|
|
19
|
-
The above copyright notice and this permission notice shall be included in all
|
|
20
|
-
copies or substantial portions of the Software.
|
|
21
|
-
|
|
22
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
-
SOFTWARE.
|
|
29
|
-
Project-URL: Homepage, https://github.com/skyfireitdiy/Jarvis
|
|
30
|
-
Keywords: jarvis,ai,assistant,tools,automation
|
|
31
|
-
Classifier: Development Status :: 3 - Alpha
|
|
32
|
-
Classifier: Intended Audience :: Developers
|
|
33
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
34
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
35
|
-
Classifier: Programming Language :: Python :: 3
|
|
36
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
37
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
38
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
39
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
40
|
-
Requires-Python: >=3.8
|
|
41
|
-
Description-Content-Type: text/markdown
|
|
42
|
-
License-File: LICENSE
|
|
43
|
-
Requires-Dist: requests>=2.25.1
|
|
44
|
-
Requires-Dist: pyyaml>=5.1
|
|
45
|
-
Requires-Dist: colorama>=0.4.6
|
|
46
|
-
Requires-Dist: prompt_toolkit>=3.0.0
|
|
47
|
-
Requires-Dist: openai>=1.20.0
|
|
48
|
-
Requires-Dist: playwright>=1.41.1
|
|
49
|
-
Requires-Dist: numpy==1.17.4
|
|
50
|
-
Requires-Dist: faiss-cpu>=1.8.0
|
|
51
|
-
Requires-Dist: sentence-transformers>=2.2.2
|
|
52
|
-
Requires-Dist: bs4>=0.0.1
|
|
53
|
-
Requires-Dist: PyMuPDF>=1.21.0
|
|
54
|
-
Requires-Dist: python-docx>=0.8.11
|
|
55
|
-
Requires-Dist: tiktoken>=0.3.0
|
|
56
|
-
Requires-Dist: tqdm>=4.65.0
|
|
57
|
-
Requires-Dist: docx>=0.2.4
|
|
58
|
-
Requires-Dist: yaspin>=2.5.0
|
|
59
|
-
Requires-Dist: rich>=13.3.1
|
|
60
|
-
Requires-Dist: pygments>=2.15.0
|
|
61
|
-
Requires-Dist: fuzzywuzzy>=0.18.0
|
|
62
|
-
Requires-Dist: python-Levenshtein>=0.25.0
|
|
63
|
-
Requires-Dist: jedi>=0.17.2
|
|
64
|
-
Requires-Dist: psutil>=7.0.0
|
|
65
|
-
Provides-Extra: dev
|
|
66
|
-
Requires-Dist: pytest; extra == "dev"
|
|
67
|
-
Requires-Dist: black; extra == "dev"
|
|
68
|
-
Requires-Dist: isort; extra == "dev"
|
|
69
|
-
Requires-Dist: mypy; extra == "dev"
|
|
70
|
-
Dynamic: author
|
|
71
|
-
Dynamic: home-page
|
|
72
|
-
Dynamic: requires-python
|
|
73
|
-
|
|
74
|
-
<div align="center">
|
|
75
|
-
|
|
76
|
-
# 🤖 Jarvis AI 助手
|
|
77
|
-
|
|
78
|
-
<p align="center">
|
|
79
|
-
<img src="docs/images/jarvis-logo.png" alt="Jarvis Logo" width="200"/>
|
|
80
|
-
</p>
|
|
81
|
-
|
|
82
|
-
[](https://www.python.org/downloads/)
|
|
83
|
-
[](https://opensource.org/licenses/MIT)
|
|
84
|
-
|
|
85
|
-
*您的智能开发和系统交互助手*
|
|
86
|
-
|
|
87
|
-
[功能特性](#功能特性) •
|
|
88
|
-
[使用方法](#使用方法) •
|
|
89
|
-
[配置说明](#配置说明) •
|
|
90
|
-
[扩展 Jarvis](#-扩展-jarvis) •
|
|
91
|
-
[贡献指南](#-贡献指南) •
|
|
92
|
-
[许可证](#-许可证)
|
|
93
|
-
|
|
94
|
-
</div>
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## ✨ 功能特性
|
|
99
|
-
|
|
100
|
-
### 🧠 智能代理
|
|
101
|
-
- 通过经验积累实现自我提升
|
|
102
|
-
- 从成功的问题解决中自动生成方法论
|
|
103
|
-
- 从每次交互中进行迭代学习
|
|
104
|
-
- 上下文感知的问题解决能力
|
|
105
|
-
|
|
106
|
-
### 🛠️ 可扩展架构
|
|
107
|
-
- 动态工具加载和集成
|
|
108
|
-
- 简单接口支持自定义模型
|
|
109
|
-
- AI 驱动的工具生成
|
|
110
|
-
- 工具和模型的热重载支持
|
|
111
|
-
|
|
112
|
-
### 💡 智能特性
|
|
113
|
-
- 自动化方法论管理
|
|
114
|
-
- 特定问题的解决方案模式
|
|
115
|
-
- 持续能力增强
|
|
116
|
-
- 从过往交互中学习
|
|
117
|
-
|
|
118
|
-
### 🎨 用户体验
|
|
119
|
-
- 精美的控制台输出
|
|
120
|
-
- 交互模式
|
|
121
|
-
- 多行输入支持
|
|
122
|
-
- 进度指示器
|
|
123
|
-
- 彩色输出
|
|
124
|
-
|
|
125
|
-
## 🚀 安装
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
pip install jarvis-ai-assistant
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## 🔧 配置说明
|
|
132
|
-
|
|
133
|
-
Jarvis 支持通过环境变量进行配置,可以在 `~/.jarvis/env` 文件中设置:
|
|
134
|
-
|
|
135
|
-
| 环境变量 | 描述 | 默认值 | 是否必需 |
|
|
136
|
-
|---------|------|--------|------|
|
|
137
|
-
| JARVIS_PLATFORM | 使用的 AI 平台 | kimi | 是 |
|
|
138
|
-
| JARVIS_MODEL | 使用的模型名称 | kimi | 否 |
|
|
139
|
-
| JARVIS_CODEGEN_PLATFORM | 代码生成使用的平台 | 同 JARVIS_PLATFORM | 否 |
|
|
140
|
-
| JARVIS_CODEGEN_MODEL | 代码生成使用的模型 | 同 JARVIS_MODEL | 否 |
|
|
141
|
-
| JARVIS_THINKING_PLATFORM | 思考任务使用的平台 | 同 JARVIS_PLATFORM | 否 |
|
|
142
|
-
| JARVIS_THINKING_MODEL | 思考任务使用的模型 | 同 JARVIS_MODEL | 否 |
|
|
143
|
-
| JARVIS_CHEAP_PLATFORM | 低成本操作使用的平台 | 同 JARVIS_PLATFORM | 否 |
|
|
144
|
-
| JARVIS_CHEAP_MODEL | 低成本操作使用的模型 | 同 JARVIS_MODEL | 否 |
|
|
145
|
-
| JARVIS_THREAD_COUNT | 线程数量 | 1 | 否 |
|
|
146
|
-
| JARVIS_MAX_CONTEXT_LENGTH | 最大上下文长度 | 131072 | 否 |
|
|
147
|
-
| JARVIS_MIN_PARAGRAPH_LENGTH | 最小段落长度 | 50 | 否 |
|
|
148
|
-
| JARVIS_MAX_PARAGRAPH_LENGTH | 最大段落长度 | 1000 | 否 |
|
|
149
|
-
| JARVIS_CONTEXT_WINDOW | 上下文窗口大小 | 5 | 否 |
|
|
150
|
-
| JARVIS_AUTO_COMPLETE | 启用自动完成 | false | 否 |
|
|
151
|
-
| JARVIS_USE_METHODOLOGY | 启用方法论 | true | 否 |
|
|
152
|
-
| JARVIS_RECORD_METHODOLOGY | 记录方法论 | true | 否 |
|
|
153
|
-
| JARVIS_NEED_SUMMARY | 生成摘要 | true | 否 |
|
|
154
|
-
| JARVIS_DONT_USE_LOCAL_MODEL | 避免使用本地模型 | false | 否 |
|
|
155
|
-
| OPENAI_API_KEY | OpenAI 平台的 API 密钥 | - | OpenAI 必需 |
|
|
156
|
-
| OPENAI_API_BASE | OpenAI API 的基础 URL | https://api.openai.com | 否 |
|
|
157
|
-
| OPENAI_MODEL_NAME | OpenAI 的模型名称 | gpt-4o | 否 |
|
|
158
|
-
| AI8_API_KEY | AI8 平台的 API 密钥 | - | AI8 必需 |
|
|
159
|
-
| KIMI_API_KEY | Kimi 平台的 API 密钥 | - | Kimi 必需 |
|
|
160
|
-
| OYI_API_KEY | OYI 平台的 API 密钥 | - | OYI 必需 |
|
|
161
|
-
| OLLAMA_API_BASE | Ollama API 的基础 URL | http://localhost:11434 | 否 |
|
|
162
|
-
|
|
163
|
-
## 最小化配置(openai兼容接口为例)
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
JARVIS_PLATFORM=openai
|
|
167
|
-
JARVIS_MODEL=deepseek-chat
|
|
168
|
-
OPENAI_API_KEY=your_openai_api_key
|
|
169
|
-
OPENAI_API_BASE=https://api.deepseek.com/v1
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## 🎯 使用方法
|
|
173
|
-
|
|
174
|
-
### 代码修改
|
|
175
|
-
```bash
|
|
176
|
-
# 使用主代理
|
|
177
|
-
jarvis
|
|
178
|
-
|
|
179
|
-
# 直接使用代码代理
|
|
180
|
-
jarvis-code-agent
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### 代码库查询
|
|
184
|
-
```bash
|
|
185
|
-
# 询问代码库相关问题
|
|
186
|
-
jarvis-codebase ask "你的问题"
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### 文档分析 (RAG)
|
|
190
|
-
```bash
|
|
191
|
-
# 构建文档索引
|
|
192
|
-
jarvis-rag --dir /path/to/documents --build
|
|
193
|
-
|
|
194
|
-
# 询问文档相关问题
|
|
195
|
-
jarvis-rag --query "你的问题"
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### 智能命令行
|
|
199
|
-
```bash
|
|
200
|
-
# 使用完整名称
|
|
201
|
-
jarvis-smart-shell "描述你想要执行的操作"
|
|
202
|
-
|
|
203
|
-
# 使用简写
|
|
204
|
-
jss "描述你想要执行的操作"
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### 开发工具
|
|
208
|
-
```bash
|
|
209
|
-
# 管理 git 提交
|
|
210
|
-
jarvis-git-commit
|
|
211
|
-
|
|
212
|
-
# 管理 AI 平台
|
|
213
|
-
jarvis-platform-manager
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
每个命令都支持 `--help` 参数来获取详细使用说明:
|
|
217
|
-
```bash
|
|
218
|
-
jarvis --help
|
|
219
|
-
jarvis-code-agent --help
|
|
220
|
-
jarvis-codebase --help
|
|
221
|
-
jarvis-rag --help
|
|
222
|
-
jarvis-smart-shell --help
|
|
223
|
-
jarvis-platform-manager --help
|
|
224
|
-
jarvis-git-commit --help
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
## 🛠️ 工具
|
|
228
|
-
|
|
229
|
-
### 内置工具
|
|
230
|
-
|
|
231
|
-
| 工具 | 描述 |
|
|
232
|
-
|------|-------------|
|
|
233
|
-
| read_code | 支持行号和范围的代码文件读取 |
|
|
234
|
-
| execute_shell | 执行系统命令并捕获输出 |
|
|
235
|
-
| search | 开发相关的网络搜索 |
|
|
236
|
-
| ask_user | 交互式用户输入收集 |
|
|
237
|
-
| ask_codebase | 智能代码库查询和分析 |
|
|
238
|
-
| code_review | 多维度的自动代码审查 |
|
|
239
|
-
| file_operation | 基础文件操作(读取/存在性检查) |
|
|
240
|
-
| git_commiter | 自动化 git 提交处理 |
|
|
241
|
-
|
|
242
|
-
### 工具位置
|
|
243
|
-
- 内置工具:`src/jarvis/tools/`
|
|
244
|
-
- 用户工具:`~/.jarvis/tools/`
|
|
245
|
-
|
|
246
|
-
### 核心功能
|
|
247
|
-
|
|
248
|
-
#### 1. 代码智能
|
|
249
|
-
- 基于需求的智能文件选择和分析
|
|
250
|
-
- 语义化代码库搜索和查询
|
|
251
|
-
- 具有上下文感知的大文件高效处理
|
|
252
|
-
- 精确的基于补丁的代码修改
|
|
253
|
-
- 自动化的 git 提交管理
|
|
254
|
-
|
|
255
|
-
#### 2. 多模型架构
|
|
256
|
-
- 支持多个 AI 平台(Kimi/OpenAI/AI8/OYI/Ollama)
|
|
257
|
-
- 针对不同任务的平台特定优化
|
|
258
|
-
- 专门用于代码生成、思考和通用任务的模型
|
|
259
|
-
- 流式响应支持以提供更好的交互
|
|
260
|
-
- 自动的模型回退和重试机制
|
|
261
|
-
|
|
262
|
-
#### 3. RAG 能力
|
|
263
|
-
- 文档索引和语义搜索
|
|
264
|
-
- 大型文档的智能上下文管理
|
|
265
|
-
- 自动文件变更检测
|
|
266
|
-
- 高效的缓存机制
|
|
267
|
-
- 多格式文档支持
|
|
268
|
-
|
|
269
|
-
#### 4. 开发工具
|
|
270
|
-
- 交互式命令行生成
|
|
271
|
-
- 多维度的代码审查
|
|
272
|
-
- 基于代码库的问题解决
|
|
273
|
-
- 具有安全检查的文件操作
|
|
274
|
-
- 进度跟踪和错误处理
|
|
275
|
-
|
|
276
|
-
#### 5. 用户体验
|
|
277
|
-
- 支持彩色输出的精美控制台
|
|
278
|
-
- 交互式多行输入
|
|
279
|
-
- 长时间操作的进度指示
|
|
280
|
-
- 清晰的错误消息和处理
|
|
281
|
-
- 上下文感知的响应格式化
|
|
282
|
-
|
|
283
|
-
## 🎯 扩展 Jarvis
|
|
284
|
-
|
|
285
|
-
### 添加新工具
|
|
286
|
-
|
|
287
|
-
在 `~/.jarvis/tools/` 或 `src/jarvis/tools/` 中创建新的 Python 文件:
|
|
288
|
-
|
|
289
|
-
```python
|
|
290
|
-
from typing import Dict, Any
|
|
291
|
-
from jarvis.utils import OutputType, PrettyOutput
|
|
292
|
-
|
|
293
|
-
class CustomTool:
|
|
294
|
-
name = "工具名称" # 调用时使用的工具名称
|
|
295
|
-
description = "工具描述" # 工具用途
|
|
296
|
-
parameters = { # 参数的 JSON Schema
|
|
297
|
-
"type": "object",
|
|
298
|
-
"properties": {
|
|
299
|
-
"param1": {
|
|
300
|
-
"type": "string",
|
|
301
|
-
"description": "参数描述"
|
|
302
|
-
}
|
|
303
|
-
},
|
|
304
|
-
"required": ["param1"]
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
def execute(self, args: Dict[str, Any]) -> Dict[str, Any]:
|
|
308
|
-
"""执行工具功能
|
|
309
|
-
|
|
310
|
-
参数:
|
|
311
|
-
args: 传递给工具的参数
|
|
312
|
-
|
|
313
|
-
返回:
|
|
314
|
-
包含执行结果的字典:
|
|
315
|
-
{
|
|
316
|
-
"success": bool,
|
|
317
|
-
"stdout": str, # 成功时的输出
|
|
318
|
-
"stderr": str, # 可选的错误详情
|
|
319
|
-
}
|
|
320
|
-
"""
|
|
321
|
-
try:
|
|
322
|
-
# 在此实现工具逻辑
|
|
323
|
-
result = "工具执行结果"
|
|
324
|
-
return {
|
|
325
|
-
"success": True,
|
|
326
|
-
"stdout": result,
|
|
327
|
-
"stderr": ""
|
|
328
|
-
}
|
|
329
|
-
except Exception as e:
|
|
330
|
-
return {
|
|
331
|
-
"success": False,
|
|
332
|
-
"stdout": "",
|
|
333
|
-
"stderr": str(e)
|
|
334
|
-
}
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
### 添加新模型
|
|
338
|
-
|
|
339
|
-
在 `~/.jarvis/models/` 中创建新的 Python 文件:
|
|
340
|
-
|
|
341
|
-
```python
|
|
342
|
-
from typing import Dict, List
|
|
343
|
-
from jarvis.models.base import BasePlatform
|
|
344
|
-
from jarvis.utils import PrettyOutput, OutputType
|
|
345
|
-
|
|
346
|
-
class CustomPlatform(BasePlatform):
|
|
347
|
-
"""自定义模型实现"""
|
|
348
|
-
|
|
349
|
-
platform_name = "custom" # 平台标识符
|
|
350
|
-
|
|
351
|
-
def __init__(self):
|
|
352
|
-
"""初始化模型"""
|
|
353
|
-
# 添加初始化代码
|
|
354
|
-
super().__init__()
|
|
355
|
-
self.messages = []
|
|
356
|
-
self.system_message = ""
|
|
357
|
-
|
|
358
|
-
def set_model_name(self, model_name: str):
|
|
359
|
-
"""设置模型名称"""
|
|
360
|
-
self.model_name = model_name
|
|
361
|
-
|
|
362
|
-
def chat(self, message: str) -> str:
|
|
363
|
-
"""与模型对话
|
|
364
|
-
|
|
365
|
-
参数:
|
|
366
|
-
message: 用户输入消息
|
|
367
|
-
|
|
368
|
-
返回:
|
|
369
|
-
str: 模型响应
|
|
370
|
-
"""
|
|
371
|
-
try:
|
|
372
|
-
# 实现聊天逻辑
|
|
373
|
-
if not self.suppress_output:
|
|
374
|
-
PrettyOutput.print("发送请求...", OutputType.PROGRESS)
|
|
375
|
-
|
|
376
|
-
# 将消息添加到历史记录
|
|
377
|
-
self.messages.append({"role": "user", "content": message})
|
|
378
|
-
|
|
379
|
-
# 从模型获取响应
|
|
380
|
-
response = "模型响应"
|
|
381
|
-
|
|
382
|
-
# 将响应添加到历史记录
|
|
383
|
-
self.messages.append({"role": "assistant", "content": response})
|
|
384
|
-
|
|
385
|
-
return response
|
|
386
|
-
|
|
387
|
-
except Exception as e:
|
|
388
|
-
PrettyOutput.print(f"聊天失败:{str(e)}", OutputType.ERROR)
|
|
389
|
-
raise Exception(f"聊天失败:{str(e)}")
|
|
390
|
-
|
|
391
|
-
def upload_files(self, file_list: List[str]) -> List[Dict]:
|
|
392
|
-
"""上传文件"""
|
|
393
|
-
# 实现文件上传逻辑
|
|
394
|
-
return []
|
|
395
|
-
|
|
396
|
-
def reset(self):
|
|
397
|
-
"""重置模型状态"""
|
|
398
|
-
self.messages = []
|
|
399
|
-
if self.system_message:
|
|
400
|
-
self.messages.append({"role": "system", "content": self.system_message})
|
|
401
|
-
|
|
402
|
-
def name(self) -> str:
|
|
403
|
-
"""返回模型名称"""
|
|
404
|
-
return self.model_name
|
|
405
|
-
|
|
406
|
-
def delete_chat(self) -> bool:
|
|
407
|
-
"""删除当前聊天会话"""
|
|
408
|
-
self.reset()
|
|
409
|
-
return True
|
|
410
|
-
|
|
411
|
-
def set_system_message(self, message: str):
|
|
412
|
-
"""设置系统消息"""
|
|
413
|
-
self.system_message = message
|
|
414
|
-
|
|
415
|
-
def set_suppress_output(self, suppress: bool):
|
|
416
|
-
"""设置是否抑制输出"""
|
|
417
|
-
self.suppress_output = suppress
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
### 开发指南
|
|
421
|
-
|
|
422
|
-
1. **工具开发**
|
|
423
|
-
- 使用描述性名称和文档
|
|
424
|
-
- 定义清晰的参数模式
|
|
425
|
-
- 优雅处理错误
|
|
426
|
-
- 返回标准化结果
|
|
427
|
-
- 保持工具功能集中和简单
|
|
428
|
-
|
|
429
|
-
2. **模型开发**
|
|
430
|
-
- 实现所有必需方法
|
|
431
|
-
- 处理流式响应
|
|
432
|
-
- 正确管理聊天历史
|
|
433
|
-
- 使用适当的错误处理
|
|
434
|
-
- 遵循现有模型模式
|
|
435
|
-
|
|
436
|
-
3. **最佳实践**
|
|
437
|
-
- 使用 PrettyOutput 进行控制台输出
|
|
438
|
-
- 编写代码文档
|
|
439
|
-
- 添加类型提示
|
|
440
|
-
- 充分测试
|
|
441
|
-
- 处理边界情况
|
|
442
|
-
|
|
443
|
-
## 🤝 贡献指南
|
|
444
|
-
|
|
445
|
-
1. Fork 仓库
|
|
446
|
-
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
447
|
-
3. 提交更改 (`git commit -m '添加某个很棒的特性'`)
|
|
448
|
-
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
449
|
-
5. 开启 Pull Request
|
|
450
|
-
|
|
451
|
-
## 📄 许可证
|
|
452
|
-
|
|
453
|
-
本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件。
|
|
454
|
-
|
|
455
|
-
---
|
|
456
|
-
|
|
457
|
-
<div align="center">
|
|
458
|
-
|
|
459
|
-
由 Jarvis 团队用 ❤️ 制作
|
|
460
|
-
|
|
461
|
-
</div>
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
jarvis/__init__.py,sha256=Fd_y2qXT9cBkdEeg_-h8CvQ5Za_ELGG_KVryk5O1WC0,51
|
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=4nmQOpFbY68OpyM3sCUsQSHOQGBoTP8Xff8RyX08W4Y,22447
|
|
3
|
-
jarvis/jarvis_agent/output_handler.py,sha256=kJeFTjjSu0K_2p0wyhq2veSZuhRXoaFC_8wVaoBKX0w,401
|
|
4
|
-
jarvis/jarvis_code_agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
jarvis/jarvis_code_agent/code_agent.py,sha256=_D4oPX9isUvCJk4l-afquLimqjxLA6XBd_IxnQxfTGs,6954
|
|
6
|
-
jarvis/jarvis_code_agent/file_select.py,sha256=Q3ibitHZHMhqlNw9rmjaMgK3U5hb8RgW1MK-CPHqtJ8,11942
|
|
7
|
-
jarvis/jarvis_code_agent/patch.py,sha256=IospCezRB2R8IM6h3Nx0zyfFVbx-S0RryuwSgotSg84,10285
|
|
8
|
-
jarvis/jarvis_code_agent/relevant_files.py,sha256=Z9bHJ6qkRu8EhD06kS_e0raqrsUgRUwkYf5mgBfdKP8,3392
|
|
9
|
-
jarvis/jarvis_codebase/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
|
-
jarvis/jarvis_codebase/main.py,sha256=qwB74U9YDgqvBSdvglQ62HmPkBT_Y5x5YF4J8LnzbQU,39778
|
|
11
|
-
jarvis/jarvis_dev/main.py,sha256=zNV7P0d9-jjZ5XAAq_o2FAYqcBfn_lai89mJgomL6fM,24270
|
|
12
|
-
jarvis/jarvis_lsp/base.py,sha256=_7pdbMKjdtYBW0DsRbjIodDHM3J7df-YgXHejN_WIrU,4490
|
|
13
|
-
jarvis/jarvis_lsp/cpp.py,sha256=sYQHEl0FoVC5Iw2pJvvGKpeNLD95XjNuTOINvdZLgME,4986
|
|
14
|
-
jarvis/jarvis_lsp/go.py,sha256=3soEuID2XV65zaxyR70RxNsvtm02l9PEZ46F_nsDdqY,5311
|
|
15
|
-
jarvis/jarvis_lsp/python.py,sha256=_Vo2pPwVh_vAsyS0XowXMbT4Syd78naPEZj586bi004,4747
|
|
16
|
-
jarvis/jarvis_lsp/registry.py,sha256=CHpwVrDFtcyDimVgUGd3UehP_sRPxk6__kISwnPfFr4,9938
|
|
17
|
-
jarvis/jarvis_lsp/rust.py,sha256=ZvUoOZm9GWLl3kobfByBuTGrQ8aM2dLuNxS_NHr1aQQ,5542
|
|
18
|
-
jarvis/jarvis_multi_agent/__init__.py,sha256=Z6QaRZrqUUa6r6Pe_KZi34Ymle5amQe1N-AINxiOi1c,6011
|
|
19
|
-
jarvis/jarvis_platform/__init__.py,sha256=mrOt67nselz_H1gX9wdAO4y2DY5WPXzABqJbr5Des8k,63
|
|
20
|
-
jarvis/jarvis_platform/ai8.py,sha256=rVPcbf0EbXV3lUPEmd_aO6UzYT0AHo4w13iGhHGvbjo,11964
|
|
21
|
-
jarvis/jarvis_platform/base.py,sha256=qrgdJm-aZI3Tb4el6Is8u41cC5hfnJz-U2Vfj8zzlzE,3461
|
|
22
|
-
jarvis/jarvis_platform/kimi.py,sha256=dQM4RLSfDiJwNV25qNWPKqseEpPTo7fel3SI2Pot3l4,15701
|
|
23
|
-
jarvis/jarvis_platform/ollama.py,sha256=TsBEg8crPmBiLvMRDtXYVa2AIdeog36MmW2tn5j9x8U,5613
|
|
24
|
-
jarvis/jarvis_platform/openai.py,sha256=Ofu-J4HmteyoPsxCHvCEDlY5J7-8t3qWr8QsCprw9-8,4463
|
|
25
|
-
jarvis/jarvis_platform/oyi.py,sha256=YueBOGVMR33eTcQPRdfDdQPlM2g5awnYzYqA6z0Y1cg,15016
|
|
26
|
-
jarvis/jarvis_platform/registry.py,sha256=h6gInSOMkUbvYqzNYwYliFLOyga5fS-WlODaw-YTICU,8514
|
|
27
|
-
jarvis/jarvis_platform_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
|
-
jarvis/jarvis_platform_manager/main.py,sha256=7gir6GbdCugUIANYOkJzmz6I78SBrVbPO_36-J6Pjg8,20962
|
|
29
|
-
jarvis/jarvis_platform_manager/openai_test.py,sha256=BAoZgOJ431gjjbbdgiX-ARfI0aLXK_cRLAQQJzQI6MI,5200
|
|
30
|
-
jarvis/jarvis_rag/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
jarvis/jarvis_rag/main.py,sha256=2Nq5d5DBXdZ35_KEeHkdKJPFzxKgxt9bkwp1PMHpLzI,31754
|
|
32
|
-
jarvis/jarvis_smart_shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
jarvis/jarvis_smart_shell/main.py,sha256=ZD_rqV-2S3xA1jW1TPEzM4PHLBYOjZFtgJZxHpZZ0TE,4476
|
|
34
|
-
jarvis/jarvis_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
-
jarvis/jarvis_tools/ask_codebase.py,sha256=-4oIe7maa-60w5-QZxOGVt47W0kVd6TB-eIU77fIIMw,3005
|
|
36
|
-
jarvis/jarvis_tools/ask_user.py,sha256=tIyiKk9F8xchjQ3Yh5fMQjhpflQTuh75HTuXMftGxZY,1827
|
|
37
|
-
jarvis/jarvis_tools/base.py,sha256=c0DMoDDPxmsqUYJR989zgUs7nIYRY6GWBrAdusIZKjc,656
|
|
38
|
-
jarvis/jarvis_tools/chdir.py,sha256=06GAtMqoi5fT1FXD2HUUlHKosVtz-Z8KI13lpEFQw3g,1820
|
|
39
|
-
jarvis/jarvis_tools/code_review.py,sha256=ZMWCrkVECCVaT7UyZV0_v49Gecws-x_dQ0NamFUunEs,9775
|
|
40
|
-
jarvis/jarvis_tools/create_code_agent.py,sha256=i1crlCWrQrpUuTYueLKgenAy_LhwXhEoFNk8xXo56xc,3899
|
|
41
|
-
jarvis/jarvis_tools/create_sub_agent.py,sha256=ldpNn5LczybExvt9Sz4t1ybetLX-dTJIAF5f_oH-Z3M,2869
|
|
42
|
-
jarvis/jarvis_tools/execute_shell.py,sha256=MwgVyI1O1wshU9yR-DvSWIgoSQpVjtH9JpjVQvSrKF0,2566
|
|
43
|
-
jarvis/jarvis_tools/file_operation.py,sha256=9mUGXYrH7dN4XijN1R82SsMXeljOIjIMVzh8hm1aZ1s,5501
|
|
44
|
-
jarvis/jarvis_tools/git_commiter.py,sha256=iskOXIhfwvy7XfAQQpjDzy90Tl_dnlZ54hIepiuLBbE,4544
|
|
45
|
-
jarvis/jarvis_tools/lsp_find_definition.py,sha256=xV8YeN1RJfwd2F3gE6OnDeTwl-AnCmrxueHocbXkQOc,4800
|
|
46
|
-
jarvis/jarvis_tools/lsp_find_references.py,sha256=FohlJeLfTxcMUASfbjOT93hQGtI2WeyTpMGwRwShW_I,4043
|
|
47
|
-
jarvis/jarvis_tools/lsp_get_diagnostics.py,sha256=bEvbDk8TnKg9TTFFxMrYOJm5TBDgz5gO04WJFQUwQQE,4490
|
|
48
|
-
jarvis/jarvis_tools/lsp_get_document_symbols.py,sha256=dspL6r9HYnXL5TpARSApFY3IQLm2kcYVNVWCff2xoXI,3080
|
|
49
|
-
jarvis/jarvis_tools/lsp_prepare_rename.py,sha256=RxUyIef4awtp-jgupcD1LcPlno9P3mOE8AS3_Fm71Ys,4832
|
|
50
|
-
jarvis/jarvis_tools/lsp_validate_edit.py,sha256=M0iglK2QbnIEFv0RYK6o2iAYnv259jB6EU7To-rc51E,5247
|
|
51
|
-
jarvis/jarvis_tools/methodology.py,sha256=JvHV6rHhC6fbPuSqC6UHFaGEE39d4g7zFLodR72wM0g,5758
|
|
52
|
-
jarvis/jarvis_tools/rag.py,sha256=eY3GrzagaJIPQ8DmrqNUFFJnIF_GfUxqRjeSengEDss,4944
|
|
53
|
-
jarvis/jarvis_tools/read_code.py,sha256=e0iX9rpwUlSfrhnzgQPNvfqJ-ebxuJybrNaTgb3Hnyw,7290
|
|
54
|
-
jarvis/jarvis_tools/read_webpage.py,sha256=7QamwBi5s7lD-jTcjD0wsBvkmWPRC9-K-0JkGgeTpvs,3063
|
|
55
|
-
jarvis/jarvis_tools/registry.py,sha256=XefDvujSfqKX2uLA6tnoJFg5kyBNW0iNAAJZocfIz9w,14836
|
|
56
|
-
jarvis/jarvis_tools/search.py,sha256=NHrFpAqg6dtws_9wLJvIZimjeJ-kekETi0Bg0AWMG08,11437
|
|
57
|
-
jarvis/jarvis_tools/select_code_files.py,sha256=vbEdneWWtAN90OFASohtllTgZW400ZxQbrkgroPK1qc,1902
|
|
58
|
-
jarvis/jarvis_tools/tool_generator.py,sha256=jdniHyKcEyF9KyouudrCoZBH3czZmQXc3ns0_trZ3yU,6332
|
|
59
|
-
jarvis/jarvis_utils/__init__.py,sha256=LYZktMl-iCtGLUa8RXpmDzQVMT_0Pm00aXyFGMBu95o,32207
|
|
60
|
-
jarvis_ai_assistant-0.1.123.dist-info/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
|
61
|
-
jarvis_ai_assistant-0.1.123.dist-info/METADATA,sha256=f9JvSSga3TWB7iIVfNpCitzs9R-h0CpHHuXrjKH88ZY,13746
|
|
62
|
-
jarvis_ai_assistant-0.1.123.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
63
|
-
jarvis_ai_assistant-0.1.123.dist-info/entry_points.txt,sha256=H9Y_q7BZGDsgJijaXHD9GbscllATyKYfg22otrpKEoE,619
|
|
64
|
-
jarvis_ai_assistant-0.1.123.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
|
65
|
-
jarvis_ai_assistant-0.1.123.dist-info/RECORD,,
|
|
File without changes
|
{jarvis_ai_assistant-0.1.123.dist-info → jarvis_ai_assistant-0.1.125.dist-info}/top_level.txt
RENAMED
|
File without changes
|