jarvis-ai-assistant 0.1.181__tar.gz → 0.1.183__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.

Files changed (106) hide show
  1. {jarvis_ai_assistant-0.1.181/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.183}/PKG-INFO +30 -1
  2. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/README.md +29 -0
  3. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/pyproject.toml +1 -1
  4. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/setup.py +1 -1
  5. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/__init__.py +1 -1
  6. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/__init__.py +13 -3
  7. jarvis_ai_assistant-0.1.183/src/jarvis/jarvis_agent/file_input_handler.py +112 -0
  8. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_agent/code_agent.py +2 -0
  9. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/kimi.py +1 -1
  10. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/registry.py +0 -1
  11. jarvis_ai_assistant-0.1.183/src/jarvis/jarvis_platform/tongyi.py +428 -0
  12. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/yuanbao.py +8 -0
  13. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/edit_file.py +12 -0
  14. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/file_operation.py +13 -3
  15. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/read_code.py +12 -2
  16. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183/src/jarvis_ai_assistant.egg-info}/PKG-INFO +30 -1
  17. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -0
  18. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/LICENSE +0 -0
  19. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/MANIFEST.in +0 -0
  20. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/setup.cfg +0 -0
  21. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  22. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/jarvis.py +0 -0
  23. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/main.py +0 -0
  24. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  25. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  26. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  27. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  28. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  29. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  30. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  31. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  32. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  33. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  34. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  35. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  36. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  37. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  38. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  39. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  40. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  41. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  42. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  43. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  44. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  45. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  46. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  47. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  48. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  49. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_data/config_schema.json +0 -0
  50. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_data/huggingface.tar.gz +0 -0
  51. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_dev/main.py +0 -0
  52. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_event/__init__.py +0 -0
  53. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_git_details/__init__.py +0 -0
  54. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_git_details/main.py +0 -0
  55. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  56. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_git_squash/main.py +0 -0
  57. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  58. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  59. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  60. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  61. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  62. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_methodology/main.py +0 -0
  63. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  64. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  65. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/__init__.py +0 -0
  66. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/base.py +0 -0
  67. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/human.py +0 -0
  68. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform/openai.py +0 -0
  69. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  70. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  71. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  72. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  73. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/__init__.py +0 -0
  74. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  75. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/base.py +0 -0
  76. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/chdir.py +0 -0
  77. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  78. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  79. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/code_plan.py +0 -0
  80. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/create_code_agent.py +0 -0
  81. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/create_sub_agent.py +0 -0
  82. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  83. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  84. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  85. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/methodology.py +0 -0
  86. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  87. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/registry.py +0 -0
  88. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  89. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/search_web.py +0 -0
  90. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  91. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/__init__.py +0 -0
  92. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  93. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/config.py +0 -0
  94. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/embedding.py +0 -0
  95. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  96. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  97. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/globals.py +0 -0
  98. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/input.py +0 -0
  99. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/methodology.py +0 -0
  100. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/output.py +0 -0
  101. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/tag.py +0 -0
  102. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis/jarvis_utils/utils.py +0 -0
  103. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  104. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  105. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  106. {jarvis_ai_assistant-0.1.181 → jarvis_ai_assistant-0.1.183}/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.181
3
+ Version: 0.1.183
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
@@ -153,6 +153,35 @@ Kimi API Key获取方式:
153
153
  删除Bearer前缀,剩下的内容就是Kimi API Key。
154
154
 
155
155
 
156
+ #### 通义千问
157
+ ```yaml
158
+ JARVIS_PLATFORM: tongyi
159
+ JARVIS_MODEL: Normal # 可选模型:Normal, Thinking, Deep-Research, Code-Chat
160
+ JARVIS_THINKING_PLATFORM: tongyi
161
+ JARVIS_THINKING_MODEL: Thinking
162
+
163
+ ENV:
164
+ TONGYI_COOKIES: <通义千问cookies>
165
+ ```
166
+
167
+ 通义千问cookies获取方式:
168
+
169
+ ![通义千问cookies获取方式](docs/images/tongyi.png)
170
+
171
+ 1. 登录[通义千问](https://www.tongyi.com/qianwen)
172
+ 2. 打开浏览器开发者工具(F12)
173
+ 3. 在Network标签页中找到任意请求
174
+ 4. 在请求头中找到Cookie字段,复制其值
175
+
176
+ 配置说明:
177
+ 1. `TONGYI_COOKIES`: 必填,用于身份验证
178
+ 2. 支持的模型:
179
+ - `Normal`: 标准对话模型
180
+ - `Thinking`: 深度思考模型
181
+ - `Deep-Research`: 深度研究模型
182
+ - `Code-Chat`: 代码对话模型
183
+
184
+
156
185
  #### OpenAI
157
186
  ```yaml
158
187
  JARVIS_PLATFORM: openai
@@ -83,6 +83,35 @@ Kimi API Key获取方式:
83
83
  删除Bearer前缀,剩下的内容就是Kimi API Key。
84
84
 
85
85
 
86
+ #### 通义千问
87
+ ```yaml
88
+ JARVIS_PLATFORM: tongyi
89
+ JARVIS_MODEL: Normal # 可选模型:Normal, Thinking, Deep-Research, Code-Chat
90
+ JARVIS_THINKING_PLATFORM: tongyi
91
+ JARVIS_THINKING_MODEL: Thinking
92
+
93
+ ENV:
94
+ TONGYI_COOKIES: <通义千问cookies>
95
+ ```
96
+
97
+ 通义千问cookies获取方式:
98
+
99
+ ![通义千问cookies获取方式](docs/images/tongyi.png)
100
+
101
+ 1. 登录[通义千问](https://www.tongyi.com/qianwen)
102
+ 2. 打开浏览器开发者工具(F12)
103
+ 3. 在Network标签页中找到任意请求
104
+ 4. 在请求头中找到Cookie字段,复制其值
105
+
106
+ 配置说明:
107
+ 1. `TONGYI_COOKIES`: 必填,用于身份验证
108
+ 2. 支持的模型:
109
+ - `Normal`: 标准对话模型
110
+ - `Thinking`: 深度思考模型
111
+ - `Deep-Research`: 深度研究模型
112
+ - `Code-Chat`: 代码对话模型
113
+
114
+
86
115
  #### OpenAI
87
116
  ```yaml
88
117
  JARVIS_PLATFORM: openai
@@ -8,7 +8,7 @@ default = true
8
8
 
9
9
  [project]
10
10
  name = "jarvis-ai-assistant"
11
- version = "0.1.181"
11
+ version = "0.1.183"
12
12
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
13
13
  readme = "README.md"
14
14
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.1.181",
6
+ version="0.1.183",
7
7
  author="skyfire",
8
8
  author_email="skyfireitdiy@hotmail.com",
9
9
  description="An AI assistant that uses various tools to interact with the system",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.1.181"
4
+ __version__ = "0.1.183"
@@ -2,7 +2,7 @@
2
2
  # 标准库导入
3
3
  import datetime
4
4
  import platform
5
- from typing import Any, Callable, List, Optional, Protocol, Tuple, Union
5
+ from typing import Any, Callable, Dict, List, Optional, Protocol, Tuple, Union
6
6
 
7
7
  # 第三方库导入
8
8
  from yaspin import yaspin # type: ignore
@@ -205,6 +205,8 @@ class Agent:
205
205
  if model_name is not None:
206
206
  self.model.set_model_name(model_name)
207
207
 
208
+ self.user_data: Dict[str, Any] = {}
209
+
208
210
  self.model.set_suppress_output(False)
209
211
 
210
212
  from jarvis.jarvis_tools.registry import ToolRegistry
@@ -319,6 +321,14 @@ class Agent:
319
321
  )
320
322
  self.first = True
321
323
 
324
+ def set_user_data(self, key: str, value: Any):
325
+ """设置用户数据"""
326
+ self.user_data[key] = value
327
+
328
+ def get_user_data(self, key: str) -> Optional[Any]:
329
+ """获取用户数据"""
330
+ return self.user_data.get(key, None)
331
+
322
332
  def set_use_tools(self, use_tools):
323
333
  """设置要使用的工具列表"""
324
334
  from jarvis.jarvis_tools.registry import ToolRegistry
@@ -372,7 +382,7 @@ class Agent:
372
382
  )
373
383
 
374
384
  addon_prompt = f"""
375
- [系统提示开始]
385
+ <system_prompt>
376
386
  请判断是否已经完成任务,如果已经完成:
377
387
  - 直接输出完成原因,不需要再有新的操作,不要输出{ot("TOOL_CALL")}标签
378
388
  {complete_prompt}
@@ -381,7 +391,7 @@ class Agent:
381
391
  - 如果信息不明确,请请求用户补充
382
392
  - 如果执行过程中连续失败5次,请使用ask_user询问用户操作
383
393
  - 操作列表:{action_handlers}
384
- [系统提示结束]
394
+ </system_prompt>
385
395
 
386
396
  请继续。
387
397
  """
@@ -0,0 +1,112 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ import os
5
+ import re
6
+ from typing import Any, Tuple
7
+
8
+ from yaspin import yaspin
9
+
10
+ from jarvis.jarvis_tools.file_operation import FileOperationTool
11
+ from jarvis.jarvis_utils.output import OutputType, PrettyOutput
12
+ from jarvis.jarvis_utils.utils import is_context_overflow
13
+
14
+
15
+ def file_input_handler(user_input: str, agent: Any) -> Tuple[str, bool]:
16
+ """Process user input containing file references and read file contents.
17
+
18
+ Args:
19
+ user_input: Input string that may contain file references in format:
20
+ - 'file_path' (whole file)
21
+ - 'file_path:start_line,end_line' (line range)
22
+ - 'file_path:start_line:end_line' (alternative range format)
23
+ agent: Agent object for further processing (currently unused)
24
+
25
+ Returns:
26
+ Tuple[str, bool]:
27
+ - Processed prompt string with file contents prepended
28
+ - Boolean indicating if context overflow occurred
29
+ """
30
+ prompt = user_input
31
+ files = []
32
+
33
+ file_refs = re.findall(r"'([^']+)'", user_input)
34
+ for ref in file_refs:
35
+ # Handle file:start,end or file:start:end format
36
+ if ':' in ref:
37
+ file_path, line_range = ref.split(':', 1)
38
+ # Initialize with default values
39
+ start_line = 1 # 1-based
40
+ end_line = -1
41
+
42
+ # Process line range if specified
43
+ if ',' in line_range or ':' in line_range:
44
+ try:
45
+ raw_start, raw_end = map(int, re.split(r'[,:]', line_range))
46
+
47
+ # Handle special values and Python-style negative indices
48
+ try:
49
+ with open(file_path, 'r', encoding='utf-8', errors="ignore") as f:
50
+ total_lines = len(f.readlines())
51
+ except FileNotFoundError:
52
+ PrettyOutput.print(f"文件不存在: {file_path}", OutputType.WARNING)
53
+ continue
54
+ # Process start line (0 means whole file, negative means from end)
55
+ if raw_start == 0: # 0表示整个文件
56
+ start_line = 1
57
+ end_line = total_lines
58
+ else:
59
+ start_line = raw_start if raw_start > 0 else total_lines + raw_start + 1
60
+
61
+ # Process end line
62
+ if raw_end == 0: # 0表示整个文件(如果start也是0)
63
+ end_line = total_lines
64
+ else:
65
+ end_line = raw_end if raw_end > 0 else total_lines + raw_end + 1
66
+
67
+ # Auto-correct ranges
68
+ start_line = max(1, min(start_line, total_lines))
69
+ end_line = max(start_line, min(end_line, total_lines))
70
+
71
+ # Final validation
72
+ if start_line < 1 or end_line > total_lines or start_line > end_line:
73
+ raise ValueError
74
+
75
+ except:
76
+ continue
77
+
78
+ # Add file if it exists
79
+ if os.path.isfile(file_path):
80
+ files.append({
81
+ "path": file_path,
82
+ "start_line": start_line,
83
+ "end_line": end_line
84
+ })
85
+ else:
86
+ # Handle simple file path
87
+ if os.path.isfile(ref):
88
+ files.append({
89
+ "path": ref,
90
+ "start_line": 1, # 1-based
91
+ "end_line": -1
92
+ })
93
+
94
+ # Read and process files if any were found
95
+ if files:
96
+ with yaspin(text="正在读取文件...", color="cyan") as spinner:
97
+ old_prompt = prompt
98
+ result = FileOperationTool().execute({"operation":"read","files": files})
99
+ if result["success"]:
100
+ spinner.text = "文件读取完成"
101
+ spinner.ok("✅")
102
+ # Prepend file contents to prompt and check for overflow
103
+ prompt = f"""{prompt}
104
+
105
+ <file_context>
106
+ {result["stdout"]}
107
+ </file_context>"""
108
+ if is_context_overflow(prompt):
109
+ return old_prompt, False
110
+
111
+ return prompt, False
112
+
@@ -15,6 +15,7 @@ from yaspin import yaspin # type: ignore
15
15
  from jarvis import __version__
16
16
  from jarvis.jarvis_agent import Agent
17
17
  from jarvis.jarvis_agent.builtin_input_handler import builtin_input_handler
18
+ from jarvis.jarvis_agent.file_input_handler import file_input_handler
18
19
  from jarvis.jarvis_agent.shell_input_handler import shell_input_handler
19
20
  # 忽略yaspin的类型检查
20
21
  from jarvis.jarvis_code_agent.lint import get_lint_tools
@@ -108,6 +109,7 @@ class CodeAgent:
108
109
  output_handler=[tool_registry],
109
110
  platform=platform_instance,
110
111
  input_handler=[
112
+ file_input_handler,
111
113
  shell_input_handler,
112
114
  builtin_input_handler
113
115
  ],
@@ -315,7 +315,7 @@ class KimiModel(BasePlatform):
315
315
 
316
316
  def name(self) -> str:
317
317
  """Model name"""
318
- return "kimi"
318
+ return self.model_name
319
319
 
320
320
  def support_web(self) -> bool:
321
321
  """Kimi平台支持web功能"""
@@ -19,7 +19,6 @@ REQUIRED_METHODS = [
19
19
  ('set_system_message', ['message']),
20
20
  ('set_model_name', ['model_name']),
21
21
  ('get_model_list', []),
22
- ('set_suppress_output', ['suppress']),
23
22
  ('upload_files', ['file_list']),
24
23
  ]
25
24