jarvis-ai-assistant 0.7.8__py3-none-any.whl → 1.0.2__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.
Files changed (279) hide show
  1. jarvis/__init__.py +1 -1
  2. jarvis/jarvis_agent/__init__.py +567 -222
  3. jarvis/jarvis_agent/agent_manager.py +19 -12
  4. jarvis/jarvis_agent/builtin_input_handler.py +79 -11
  5. jarvis/jarvis_agent/config_editor.py +7 -2
  6. jarvis/jarvis_agent/event_bus.py +24 -13
  7. jarvis/jarvis_agent/events.py +19 -1
  8. jarvis/jarvis_agent/file_context_handler.py +67 -64
  9. jarvis/jarvis_agent/file_methodology_manager.py +38 -24
  10. jarvis/jarvis_agent/jarvis.py +186 -114
  11. jarvis/jarvis_agent/language_extractors/__init__.py +8 -1
  12. jarvis/jarvis_agent/language_extractors/c_extractor.py +7 -4
  13. jarvis/jarvis_agent/language_extractors/cpp_extractor.py +9 -4
  14. jarvis/jarvis_agent/language_extractors/go_extractor.py +7 -4
  15. jarvis/jarvis_agent/language_extractors/java_extractor.py +27 -20
  16. jarvis/jarvis_agent/language_extractors/javascript_extractor.py +22 -17
  17. jarvis/jarvis_agent/language_extractors/python_extractor.py +7 -4
  18. jarvis/jarvis_agent/language_extractors/rust_extractor.py +7 -4
  19. jarvis/jarvis_agent/language_extractors/typescript_extractor.py +22 -17
  20. jarvis/jarvis_agent/language_support_info.py +250 -219
  21. jarvis/jarvis_agent/main.py +19 -23
  22. jarvis/jarvis_agent/memory_manager.py +9 -6
  23. jarvis/jarvis_agent/methodology_share_manager.py +21 -15
  24. jarvis/jarvis_agent/output_handler.py +4 -2
  25. jarvis/jarvis_agent/prompt_builder.py +7 -6
  26. jarvis/jarvis_agent/prompt_manager.py +113 -8
  27. jarvis/jarvis_agent/prompts.py +317 -85
  28. jarvis/jarvis_agent/protocols.py +5 -2
  29. jarvis/jarvis_agent/run_loop.py +192 -32
  30. jarvis/jarvis_agent/session_manager.py +7 -3
  31. jarvis/jarvis_agent/share_manager.py +23 -13
  32. jarvis/jarvis_agent/shell_input_handler.py +12 -8
  33. jarvis/jarvis_agent/stdio_redirect.py +25 -26
  34. jarvis/jarvis_agent/task_analyzer.py +29 -23
  35. jarvis/jarvis_agent/task_list.py +869 -0
  36. jarvis/jarvis_agent/task_manager.py +26 -23
  37. jarvis/jarvis_agent/tool_executor.py +6 -5
  38. jarvis/jarvis_agent/tool_share_manager.py +24 -14
  39. jarvis/jarvis_agent/user_interaction.py +3 -3
  40. jarvis/jarvis_agent/utils.py +9 -1
  41. jarvis/jarvis_agent/web_bridge.py +37 -17
  42. jarvis/jarvis_agent/web_output_sink.py +5 -2
  43. jarvis/jarvis_agent/web_server.py +165 -36
  44. jarvis/jarvis_c2rust/__init__.py +1 -1
  45. jarvis/jarvis_c2rust/cli.py +260 -141
  46. jarvis/jarvis_c2rust/collector.py +37 -18
  47. jarvis/jarvis_c2rust/constants.py +60 -0
  48. jarvis/jarvis_c2rust/library_replacer.py +242 -1010
  49. jarvis/jarvis_c2rust/library_replacer_checkpoint.py +133 -0
  50. jarvis/jarvis_c2rust/library_replacer_llm.py +287 -0
  51. jarvis/jarvis_c2rust/library_replacer_loader.py +191 -0
  52. jarvis/jarvis_c2rust/library_replacer_output.py +134 -0
  53. jarvis/jarvis_c2rust/library_replacer_prompts.py +124 -0
  54. jarvis/jarvis_c2rust/library_replacer_utils.py +188 -0
  55. jarvis/jarvis_c2rust/llm_module_agent.py +98 -1044
  56. jarvis/jarvis_c2rust/llm_module_agent_apply.py +170 -0
  57. jarvis/jarvis_c2rust/llm_module_agent_executor.py +288 -0
  58. jarvis/jarvis_c2rust/llm_module_agent_loader.py +170 -0
  59. jarvis/jarvis_c2rust/llm_module_agent_prompts.py +268 -0
  60. jarvis/jarvis_c2rust/llm_module_agent_types.py +57 -0
  61. jarvis/jarvis_c2rust/llm_module_agent_utils.py +150 -0
  62. jarvis/jarvis_c2rust/llm_module_agent_validator.py +119 -0
  63. jarvis/jarvis_c2rust/loaders.py +28 -10
  64. jarvis/jarvis_c2rust/models.py +5 -2
  65. jarvis/jarvis_c2rust/optimizer.py +192 -1974
  66. jarvis/jarvis_c2rust/optimizer_build_fix.py +286 -0
  67. jarvis/jarvis_c2rust/optimizer_clippy.py +766 -0
  68. jarvis/jarvis_c2rust/optimizer_config.py +49 -0
  69. jarvis/jarvis_c2rust/optimizer_docs.py +183 -0
  70. jarvis/jarvis_c2rust/optimizer_options.py +48 -0
  71. jarvis/jarvis_c2rust/optimizer_progress.py +469 -0
  72. jarvis/jarvis_c2rust/optimizer_report.py +52 -0
  73. jarvis/jarvis_c2rust/optimizer_unsafe.py +309 -0
  74. jarvis/jarvis_c2rust/optimizer_utils.py +469 -0
  75. jarvis/jarvis_c2rust/optimizer_visibility.py +185 -0
  76. jarvis/jarvis_c2rust/scanner.py +229 -166
  77. jarvis/jarvis_c2rust/transpiler.py +531 -2732
  78. jarvis/jarvis_c2rust/transpiler_agents.py +503 -0
  79. jarvis/jarvis_c2rust/transpiler_build.py +1294 -0
  80. jarvis/jarvis_c2rust/transpiler_codegen.py +204 -0
  81. jarvis/jarvis_c2rust/transpiler_compile.py +146 -0
  82. jarvis/jarvis_c2rust/transpiler_config.py +178 -0
  83. jarvis/jarvis_c2rust/transpiler_context.py +122 -0
  84. jarvis/jarvis_c2rust/transpiler_executor.py +516 -0
  85. jarvis/jarvis_c2rust/transpiler_generation.py +278 -0
  86. jarvis/jarvis_c2rust/transpiler_git.py +163 -0
  87. jarvis/jarvis_c2rust/transpiler_mod_utils.py +225 -0
  88. jarvis/jarvis_c2rust/transpiler_modules.py +336 -0
  89. jarvis/jarvis_c2rust/transpiler_planning.py +394 -0
  90. jarvis/jarvis_c2rust/transpiler_review.py +1196 -0
  91. jarvis/jarvis_c2rust/transpiler_symbols.py +176 -0
  92. jarvis/jarvis_c2rust/utils.py +269 -79
  93. jarvis/jarvis_code_agent/after_change.py +233 -0
  94. jarvis/jarvis_code_agent/build_validation_config.py +37 -30
  95. jarvis/jarvis_code_agent/builtin_rules.py +68 -0
  96. jarvis/jarvis_code_agent/code_agent.py +976 -1517
  97. jarvis/jarvis_code_agent/code_agent_build.py +227 -0
  98. jarvis/jarvis_code_agent/code_agent_diff.py +246 -0
  99. jarvis/jarvis_code_agent/code_agent_git.py +525 -0
  100. jarvis/jarvis_code_agent/code_agent_impact.py +177 -0
  101. jarvis/jarvis_code_agent/code_agent_lint.py +283 -0
  102. jarvis/jarvis_code_agent/code_agent_llm.py +159 -0
  103. jarvis/jarvis_code_agent/code_agent_postprocess.py +105 -0
  104. jarvis/jarvis_code_agent/code_agent_prompts.py +46 -0
  105. jarvis/jarvis_code_agent/code_agent_rules.py +305 -0
  106. jarvis/jarvis_code_agent/code_analyzer/__init__.py +52 -48
  107. jarvis/jarvis_code_agent/code_analyzer/base_language.py +12 -10
  108. jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +12 -11
  109. jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +16 -12
  110. jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +26 -17
  111. jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +558 -104
  112. jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +27 -16
  113. jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +22 -18
  114. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +21 -16
  115. jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +20 -16
  116. jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +27 -16
  117. jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +47 -23
  118. jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +71 -37
  119. jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +162 -35
  120. jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +111 -57
  121. jarvis/jarvis_code_agent/code_analyzer/build_validator.py +18 -12
  122. jarvis/jarvis_code_agent/code_analyzer/context_manager.py +185 -183
  123. jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +2 -1
  124. jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +24 -15
  125. jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +227 -141
  126. jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +321 -247
  127. jarvis/jarvis_code_agent/code_analyzer/language_registry.py +37 -29
  128. jarvis/jarvis_code_agent/code_analyzer/language_support.py +21 -13
  129. jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +15 -9
  130. jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +75 -45
  131. jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +87 -52
  132. jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +84 -51
  133. jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +94 -64
  134. jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +109 -71
  135. jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +97 -63
  136. jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +103 -69
  137. jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +271 -268
  138. jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +76 -64
  139. jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +92 -19
  140. jarvis/jarvis_code_agent/diff_visualizer.py +998 -0
  141. jarvis/jarvis_code_agent/lint.py +223 -524
  142. jarvis/jarvis_code_agent/rule_share_manager.py +158 -0
  143. jarvis/jarvis_code_agent/rules/clean_code.md +144 -0
  144. jarvis/jarvis_code_agent/rules/code_review.md +115 -0
  145. jarvis/jarvis_code_agent/rules/documentation.md +165 -0
  146. jarvis/jarvis_code_agent/rules/generate_rules.md +52 -0
  147. jarvis/jarvis_code_agent/rules/performance.md +158 -0
  148. jarvis/jarvis_code_agent/rules/refactoring.md +139 -0
  149. jarvis/jarvis_code_agent/rules/security.md +160 -0
  150. jarvis/jarvis_code_agent/rules/tdd.md +78 -0
  151. jarvis/jarvis_code_agent/test_rules/cpp_test.md +118 -0
  152. jarvis/jarvis_code_agent/test_rules/go_test.md +98 -0
  153. jarvis/jarvis_code_agent/test_rules/java_test.md +99 -0
  154. jarvis/jarvis_code_agent/test_rules/javascript_test.md +113 -0
  155. jarvis/jarvis_code_agent/test_rules/php_test.md +117 -0
  156. jarvis/jarvis_code_agent/test_rules/python_test.md +91 -0
  157. jarvis/jarvis_code_agent/test_rules/ruby_test.md +102 -0
  158. jarvis/jarvis_code_agent/test_rules/rust_test.md +86 -0
  159. jarvis/jarvis_code_agent/utils.py +36 -26
  160. jarvis/jarvis_code_analysis/checklists/loader.py +21 -21
  161. jarvis/jarvis_code_analysis/code_review.py +64 -33
  162. jarvis/jarvis_data/config_schema.json +285 -192
  163. jarvis/jarvis_git_squash/main.py +8 -6
  164. jarvis/jarvis_git_utils/git_commiter.py +53 -76
  165. jarvis/jarvis_mcp/__init__.py +5 -2
  166. jarvis/jarvis_mcp/sse_mcp_client.py +40 -30
  167. jarvis/jarvis_mcp/stdio_mcp_client.py +27 -19
  168. jarvis/jarvis_mcp/streamable_mcp_client.py +35 -26
  169. jarvis/jarvis_memory_organizer/memory_organizer.py +78 -55
  170. jarvis/jarvis_methodology/main.py +48 -39
  171. jarvis/jarvis_multi_agent/__init__.py +56 -23
  172. jarvis/jarvis_multi_agent/main.py +15 -18
  173. jarvis/jarvis_platform/base.py +179 -111
  174. jarvis/jarvis_platform/human.py +27 -16
  175. jarvis/jarvis_platform/kimi.py +52 -45
  176. jarvis/jarvis_platform/openai.py +101 -40
  177. jarvis/jarvis_platform/registry.py +51 -33
  178. jarvis/jarvis_platform/tongyi.py +68 -38
  179. jarvis/jarvis_platform/yuanbao.py +59 -43
  180. jarvis/jarvis_platform_manager/main.py +68 -76
  181. jarvis/jarvis_platform_manager/service.py +24 -14
  182. jarvis/jarvis_rag/README_CONFIG.md +314 -0
  183. jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +311 -0
  184. jarvis/jarvis_rag/README_ONLINE_MODELS.md +230 -0
  185. jarvis/jarvis_rag/__init__.py +57 -4
  186. jarvis/jarvis_rag/cache.py +3 -1
  187. jarvis/jarvis_rag/cli.py +48 -68
  188. jarvis/jarvis_rag/embedding_interface.py +39 -0
  189. jarvis/jarvis_rag/embedding_manager.py +7 -230
  190. jarvis/jarvis_rag/embeddings/__init__.py +41 -0
  191. jarvis/jarvis_rag/embeddings/base.py +114 -0
  192. jarvis/jarvis_rag/embeddings/cohere.py +66 -0
  193. jarvis/jarvis_rag/embeddings/edgefn.py +117 -0
  194. jarvis/jarvis_rag/embeddings/local.py +260 -0
  195. jarvis/jarvis_rag/embeddings/openai.py +62 -0
  196. jarvis/jarvis_rag/embeddings/registry.py +293 -0
  197. jarvis/jarvis_rag/llm_interface.py +8 -6
  198. jarvis/jarvis_rag/query_rewriter.py +8 -9
  199. jarvis/jarvis_rag/rag_pipeline.py +61 -52
  200. jarvis/jarvis_rag/reranker.py +7 -75
  201. jarvis/jarvis_rag/reranker_interface.py +32 -0
  202. jarvis/jarvis_rag/rerankers/__init__.py +41 -0
  203. jarvis/jarvis_rag/rerankers/base.py +109 -0
  204. jarvis/jarvis_rag/rerankers/cohere.py +67 -0
  205. jarvis/jarvis_rag/rerankers/edgefn.py +140 -0
  206. jarvis/jarvis_rag/rerankers/jina.py +79 -0
  207. jarvis/jarvis_rag/rerankers/local.py +89 -0
  208. jarvis/jarvis_rag/rerankers/registry.py +293 -0
  209. jarvis/jarvis_rag/retriever.py +58 -43
  210. jarvis/jarvis_sec/__init__.py +66 -141
  211. jarvis/jarvis_sec/agents.py +21 -17
  212. jarvis/jarvis_sec/analysis.py +80 -33
  213. jarvis/jarvis_sec/checkers/__init__.py +7 -13
  214. jarvis/jarvis_sec/checkers/c_checker.py +356 -164
  215. jarvis/jarvis_sec/checkers/rust_checker.py +47 -29
  216. jarvis/jarvis_sec/cli.py +43 -21
  217. jarvis/jarvis_sec/clustering.py +430 -272
  218. jarvis/jarvis_sec/file_manager.py +99 -55
  219. jarvis/jarvis_sec/parsers.py +9 -6
  220. jarvis/jarvis_sec/prompts.py +4 -3
  221. jarvis/jarvis_sec/report.py +44 -22
  222. jarvis/jarvis_sec/review.py +180 -107
  223. jarvis/jarvis_sec/status.py +50 -41
  224. jarvis/jarvis_sec/types.py +3 -0
  225. jarvis/jarvis_sec/utils.py +160 -83
  226. jarvis/jarvis_sec/verification.py +411 -181
  227. jarvis/jarvis_sec/workflow.py +132 -21
  228. jarvis/jarvis_smart_shell/main.py +28 -41
  229. jarvis/jarvis_stats/cli.py +14 -12
  230. jarvis/jarvis_stats/stats.py +28 -19
  231. jarvis/jarvis_stats/storage.py +14 -8
  232. jarvis/jarvis_stats/visualizer.py +12 -7
  233. jarvis/jarvis_tools/base.py +5 -2
  234. jarvis/jarvis_tools/clear_memory.py +13 -9
  235. jarvis/jarvis_tools/cli/main.py +23 -18
  236. jarvis/jarvis_tools/edit_file.py +572 -873
  237. jarvis/jarvis_tools/execute_script.py +10 -7
  238. jarvis/jarvis_tools/file_analyzer.py +7 -8
  239. jarvis/jarvis_tools/meta_agent.py +287 -0
  240. jarvis/jarvis_tools/methodology.py +5 -3
  241. jarvis/jarvis_tools/read_code.py +305 -1438
  242. jarvis/jarvis_tools/read_symbols.py +50 -17
  243. jarvis/jarvis_tools/read_webpage.py +19 -18
  244. jarvis/jarvis_tools/registry.py +435 -156
  245. jarvis/jarvis_tools/retrieve_memory.py +16 -11
  246. jarvis/jarvis_tools/save_memory.py +8 -6
  247. jarvis/jarvis_tools/search_web.py +31 -31
  248. jarvis/jarvis_tools/sub_agent.py +32 -28
  249. jarvis/jarvis_tools/sub_code_agent.py +44 -60
  250. jarvis/jarvis_tools/task_list_manager.py +1811 -0
  251. jarvis/jarvis_tools/virtual_tty.py +29 -19
  252. jarvis/jarvis_utils/__init__.py +4 -0
  253. jarvis/jarvis_utils/builtin_replace_map.py +2 -1
  254. jarvis/jarvis_utils/clipboard.py +9 -8
  255. jarvis/jarvis_utils/collections.py +331 -0
  256. jarvis/jarvis_utils/config.py +699 -194
  257. jarvis/jarvis_utils/dialogue_recorder.py +294 -0
  258. jarvis/jarvis_utils/embedding.py +6 -3
  259. jarvis/jarvis_utils/file_processors.py +7 -1
  260. jarvis/jarvis_utils/fzf.py +9 -3
  261. jarvis/jarvis_utils/git_utils.py +71 -42
  262. jarvis/jarvis_utils/globals.py +116 -32
  263. jarvis/jarvis_utils/http.py +6 -2
  264. jarvis/jarvis_utils/input.py +318 -83
  265. jarvis/jarvis_utils/jsonnet_compat.py +119 -104
  266. jarvis/jarvis_utils/methodology.py +37 -28
  267. jarvis/jarvis_utils/output.py +201 -44
  268. jarvis/jarvis_utils/utils.py +986 -628
  269. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/METADATA +49 -33
  270. jarvis_ai_assistant-1.0.2.dist-info/RECORD +304 -0
  271. jarvis/jarvis_code_agent/code_analyzer/structured_code.py +0 -556
  272. jarvis/jarvis_tools/generate_new_tool.py +0 -205
  273. jarvis/jarvis_tools/lsp_client.py +0 -1552
  274. jarvis/jarvis_tools/rewrite_file.py +0 -105
  275. jarvis_ai_assistant-0.7.8.dist-info/RECORD +0 -218
  276. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/WHEEL +0 -0
  277. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/entry_points.txt +0 -0
  278. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/licenses/LICENSE +0 -0
  279. {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/top_level.txt +0 -0
@@ -4,7 +4,7 @@
4
4
  "description": "Jarvis系统配置模式",
5
5
  "type": "object",
6
6
  "properties": {
7
- "JARVIS_MCP": {
7
+ "mcp": {
8
8
  "type": "array",
9
9
  "description": "MCP工具配置列表",
10
10
  "default": [],
@@ -13,17 +13,11 @@
13
13
  "oneOf": [
14
14
  {
15
15
  "type": "object",
16
- "required": [
17
- "type",
18
- "base_url"
19
- ],
16
+ "required": ["type", "base_url"],
20
17
  "properties": {
21
18
  "type": {
22
19
  "type": "string",
23
- "enum": [
24
- "sse",
25
- "streamable"
26
- ],
20
+ "enum": ["sse", "streamable"],
27
21
  "description": "MCP客户端类型"
28
22
  },
29
23
  "base_url": {
@@ -55,16 +49,11 @@
55
49
  },
56
50
  {
57
51
  "type": "object",
58
- "required": [
59
- "type",
60
- "command"
61
- ],
52
+ "required": ["type", "command"],
62
53
  "properties": {
63
54
  "type": {
64
55
  "type": "string",
65
- "enum": [
66
- "stdio"
67
- ],
56
+ "enum": ["stdio"],
68
57
  "description": "MCP客户端类型"
69
58
  },
70
59
  "command": {
@@ -107,154 +96,240 @@
107
96
  },
108
97
  "default": {}
109
98
  },
110
- "JARVIS_GIT_COMMIT_PROMPT": {
99
+ "git_commit_prompt": {
111
100
  "type": "string",
112
101
  "description": "Git提交信息生成提示模板",
113
102
  "default": ""
114
103
  },
115
- "JARVIS_MAX_INPUT_TOKEN_COUNT": {
104
+ "max_input_token_count": {
116
105
  "type": "number",
117
106
  "description": "模型能处理的最大输入token数量。其他token限制基于此值计算:最大token数量=此值×100,最大大内容尺寸=此值×5",
118
107
  "default": 32000
119
108
  },
120
- "JARVIS_PLATFORM": {
109
+ "platform": {
121
110
  "type": "string",
122
111
  "description": "常规操作平台名称",
123
112
  "default": "openai"
124
113
  },
125
- "JARVIS_MODEL": {
114
+ "model": {
126
115
  "type": "string",
127
116
  "description": "常规操作模型名称",
128
117
  "default": "gpt-5"
129
118
  },
130
- "JARVIS_CHEAP_PLATFORM": {
119
+ "cheap_platform": {
131
120
  "type": "string",
132
- "description": "廉价操作的平台名称。如未配置,则使用 JARVIS_PLATFORM 的值",
121
+ "description": "廉价操作的平台名称。如未配置,则使用 platform 的值",
133
122
  "default": ""
134
123
  },
135
- "JARVIS_CHEAP_MODEL": {
124
+ "cheap_model": {
136
125
  "type": "string",
137
- "description": "廉价操作的模型名称。如未配置,则使用 JARVIS_MODEL 的值",
126
+ "description": "廉价操作的模型名称。如未配置,则使用 model 的值",
138
127
  "default": ""
139
128
  },
140
- "JARVIS_SMART_PLATFORM": {
129
+ "cheap_max_input_token_count": {
130
+ "type": "number",
131
+ "description": "廉价模型允许的最大输入token数量。如未配置,则使用 max_input_token_count 的值",
132
+ "default": 0
133
+ },
134
+ "smart_platform": {
141
135
  "type": "string",
142
- "description": "智能操作的平台名称。如未配置,则使用 JARVIS_PLATFORM 的值",
136
+ "description": "智能操作的平台名称。如未配置,则使用 platform 的值",
143
137
  "default": ""
144
138
  },
145
- "JARVIS_SMART_MODEL": {
139
+ "smart_model": {
146
140
  "type": "string",
147
- "description": "智能操作的模型名称。如未配置,则使用 JARVIS_MODEL 的值",
141
+ "description": "智能操作的模型名称。如未配置,则使用 model 的值",
148
142
  "default": ""
149
143
  },
150
- "JARVIS_WEB_SEARCH_PLATFORM": {
144
+ "smart_max_input_token_count": {
145
+ "type": "number",
146
+ "description": "智能模型允许的最大输入token数量。如未配置,则使用 max_input_token_count 的值",
147
+ "default": 0
148
+ },
149
+ "web_search_platform": {
151
150
  "type": "string",
152
151
  "description": "Web搜索使用的平台名称",
153
152
  "default": ""
154
153
  },
155
- "JARVIS_WEB_SEARCH_MODEL": {
154
+ "web_search_model": {
156
155
  "type": "string",
157
156
  "description": "Web搜索使用的模型名称",
158
157
  "default": ""
159
158
  },
160
- "JARVIS_LLM_GROUP": {
159
+ "llms": {
160
+ "type": "object",
161
+ "description": "可复用的LLM配置定义,可以在llm_groups中通过引用名称来使用",
162
+ "additionalProperties": {
163
+ "type": "object",
164
+ "properties": {
165
+ "platform": {
166
+ "type": "string",
167
+ "description": "平台名称",
168
+ "default": "openai"
169
+ },
170
+ "model": {
171
+ "type": "string",
172
+ "description": "模型名称"
173
+ },
174
+ "max_input_token_count": {
175
+ "type": "number",
176
+ "description": "最大输入token数量",
177
+ "default": 32000
178
+ },
179
+ "llm_config": {
180
+ "type": "object",
181
+ "description": "LLM特定的配置参数,会传递给LLM客户端",
182
+ "additionalProperties": true,
183
+ "default": {}
184
+ }
185
+ },
186
+ "required": [
187
+ "platform",
188
+ "model"
189
+ ]
190
+ },
191
+ "default": {}
192
+ },
193
+ "embeddings": {
194
+ "type": "object",
195
+ "description": "可复用的嵌入模型配置定义,可以在rag_groups中通过引用名称来使用",
196
+ "additionalProperties": {
197
+ "type": "object",
198
+ "properties": {
199
+ "embedding_model": {
200
+ "type": "string",
201
+ "description": "嵌入模型的名称"
202
+ },
203
+ "embedding_type": {
204
+ "type": "string",
205
+ "description": "嵌入模型的实现类型,如 'LocalEmbeddingModel', 'OpenAIEmbeddingModel', 'CohereEmbeddingModel', 'EdgeFnEmbeddingModel' 等"
206
+ },
207
+ "embedding_max_length": {
208
+ "type": "number",
209
+ "description": "嵌入模型的最大输入长度(token数),用于文档分割"
210
+ },
211
+ "embedding_config": {
212
+ "type": "object",
213
+ "description": "嵌入模型的额外配置参数,会传递给模型的构造函数",
214
+ "additionalProperties": true,
215
+ "default": {}
216
+ }
217
+ },
218
+ "required": [
219
+ "embedding_model",
220
+ "embedding_type"
221
+ ]
222
+ },
223
+ "default": {}
224
+ },
225
+ "rerankers": {
226
+ "type": "object",
227
+ "description": "可复用的重排模型配置定义,可以在rag_groups中通过引用名称来使用",
228
+ "additionalProperties": {
229
+ "type": "object",
230
+ "properties": {
231
+ "rerank_model": {
232
+ "type": "string",
233
+ "description": "重排模型的名称"
234
+ },
235
+ "reranker_type": {
236
+ "type": "string",
237
+ "description": "重排模型的实现类型,如 'LocalReranker', 'CohereReranker', 'JinaReranker', 'EdgeFnReranker' 等"
238
+ },
239
+ "reranker_max_length": {
240
+ "type": "number",
241
+ "description": "重排模型的最大输入长度(token数)"
242
+ },
243
+ "reranker_config": {
244
+ "type": "object",
245
+ "description": "重排模型的额外配置参数,会传递给模型的构造函数",
246
+ "additionalProperties": true,
247
+ "default": {}
248
+ }
249
+ },
250
+ "required": [
251
+ "rerank_model",
252
+ "reranker_type"
253
+ ]
254
+ },
255
+ "default": {}
256
+ },
257
+ "llm_group": {
161
258
  "type": "string",
162
259
  "description": "选择一个预定义的模型组",
163
260
  "default": ""
164
261
  },
165
- "JARVIS_LLM_GROUPS": {
166
- "type": "array",
167
- "description": "预定义的模型配置组",
168
- "default": [],
169
- "items": {
262
+ "llm_groups": {
263
+ "type": "object",
264
+ "description": "预定义的模型配置组,使用组名作为 key。每个组必须通过 normal_llm、cheap_llm、smart_llm 引用 llms 中定义的配置,不再支持直接定义 platform、model 等参数",
265
+ "additionalProperties": {
170
266
  "type": "object",
171
- "additionalProperties": {
172
- "type": "object",
173
- "properties": {
174
- "JARVIS_PLATFORM": {
175
- "type": "string",
176
- "default": "openai"
177
- },
178
- "JARVIS_MODEL": {
179
- "type": "string",
180
- "default": "gpt-5"
181
- },
182
- "JARVIS_MAX_INPUT_TOKEN_COUNT": {
183
- "type": "number",
184
- "default": 32000
185
- },
186
- "JARVIS_CHEAP_PLATFORM": {
187
- "type": "string",
188
- "description": "廉价操作的平台名称。如未配置,则使用 JARVIS_PLATFORM 的值"
189
- },
190
- "JARVIS_CHEAP_MODEL": {
191
- "type": "string",
192
- "description": "廉价操作的模型名称。如未配置,则使用 JARVIS_MODEL 的值"
193
- },
194
- "JARVIS_SMART_PLATFORM": {
195
- "type": "string",
196
- "description": "智能操作的平台名称。如未配置,则使用 JARVIS_PLATFORM 的值"
197
- },
198
- "JARVIS_SMART_MODEL": {
199
- "type": "string",
200
- "description": "智能操作的模型名称。如未配置,则使用 JARVIS_MODEL 的值"
201
- },
202
- "ENV": {
203
- "type": "object",
204
- "description": "该模型组特定的环境变量,会覆盖全局 ENV 配置",
205
- "additionalProperties": {
206
- "type": "string"
207
- }
208
- }
267
+ "properties": {
268
+ "normal_llm": {
269
+ "type": "string",
270
+ "description": "引用 llms 中定义的常规操作LLM配置名称(必需)"
209
271
  },
210
- "required": [
211
- "JARVIS_PLATFORM",
212
- "JARVIS_MODEL"
213
- ]
214
- }
215
- }
272
+ "cheap_llm": {
273
+ "type": "string",
274
+ "description": "引用 llms 中定义的廉价操作LLM配置名称(可选)"
275
+ },
276
+ "smart_llm": {
277
+ "type": "string",
278
+ "description": "引用 llms 中定义的智能操作LLM配置名称(可选)"
279
+ },
280
+ "ENV": {
281
+ "type": "object",
282
+ "description": "该模型组特定的环境变量,会覆盖全局 ENV 配置",
283
+ "additionalProperties": {
284
+ "type": "string"
285
+ }
286
+ }
287
+ },
288
+ "required": ["normal_llm"]
289
+ },
290
+ "default": {}
216
291
  },
217
- "JARVIS_EXECUTE_TOOL_CONFIRM": {
292
+ "execute_tool_confirm": {
218
293
  "type": "boolean",
219
294
  "description": "执行工具前是否需要确认",
220
295
  "default": false
221
296
  },
222
- "JARVIS_TOOL_FILTER_THRESHOLD": {
297
+ "tool_filter_threshold": {
223
298
  "type": "number",
224
299
  "description": "AI工具筛选阈值:当可用工具数量超过此值时触发AI筛选",
225
300
  "default": 30
226
301
  },
227
- "JARVIS_SCRIPT_EXECUTION_TIMEOUT": {
302
+ "script_execution_timeout": {
228
303
  "type": "number",
229
304
  "description": "脚本执行的超时时间(秒),仅在非交互模式下生效。",
230
305
  "default": 300
231
306
  },
232
- "JARVIS_CONFIRM_BEFORE_APPLY_PATCH": {
307
+ "confirm_before_apply_patch": {
233
308
  "type": "boolean",
234
309
  "description": "应用补丁前是否需要确认",
235
310
  "default": false
236
311
  },
237
- "JARVIS_DATA_PATH": {
312
+ "data_path": {
238
313
  "type": "string",
239
314
  "description": "Jarvis数据存储目录路径",
240
315
  "default": "~/.jarvis"
241
316
  },
242
- "JARVIS_PRETTY_OUTPUT": {
317
+ "pretty_output": {
243
318
  "type": "boolean",
244
319
  "description": "是否启用美化输出",
245
320
  "default": true
246
321
  },
247
- "JARVIS_USE_METHODOLOGY": {
322
+ "use_methodology": {
248
323
  "type": "boolean",
249
324
  "description": "是否启用方法论",
250
325
  "default": true
251
326
  },
252
- "JARVIS_USE_ANALYSIS": {
327
+ "use_analysis": {
253
328
  "type": "boolean",
254
329
  "description": "是否启用任务分析",
255
330
  "default": true
256
331
  },
257
- "JARVIS_TOOL_LOAD_DIRS": {
332
+ "tool_load_dirs": {
258
333
  "type": "array",
259
334
  "description": "自定义工具加载目录",
260
335
  "items": {
@@ -262,7 +337,7 @@
262
337
  },
263
338
  "default": []
264
339
  },
265
- "JARVIS_METHODOLOGY_DIRS": {
340
+ "methodology_dirs": {
266
341
  "type": "array",
267
342
  "description": "方法论加载目录",
268
343
  "items": {
@@ -270,7 +345,7 @@
270
345
  },
271
346
  "default": []
272
347
  },
273
- "JARVIS_AGENT_DEFINITION_DIRS": {
348
+ "agent_definition_dirs": {
274
349
  "type": "array",
275
350
  "description": "agent 定义加载目录",
276
351
  "items": {
@@ -278,7 +353,7 @@
278
353
  },
279
354
  "default": []
280
355
  },
281
- "JARVIS_MULTI_AGENT_DIRS": {
356
+ "multi_agent_dirs": {
282
357
  "type": "array",
283
358
  "description": "multi_agent 加载目录",
284
359
  "items": {
@@ -286,7 +361,7 @@
286
361
  },
287
362
  "default": []
288
363
  },
289
- "JARVIS_ROLES_DIRS": {
364
+ "roles_dirs": {
290
365
  "type": "array",
291
366
  "description": "roles 加载目录",
292
367
  "items": {
@@ -294,7 +369,7 @@
294
369
  },
295
370
  "default": []
296
371
  },
297
- "JARVIS_AFTER_TOOL_CALL_CB_DIRS": {
372
+ "after_tool_call_cb_dirs": {
298
373
  "type": "array",
299
374
  "description": "工具调用后回调函数实现目录",
300
375
  "items": {
@@ -302,103 +377,97 @@
302
377
  },
303
378
  "default": []
304
379
  },
305
- "JARVIS_CENTRAL_METHODOLOGY_REPO": {
380
+ "central_methodology_repo": {
306
381
  "type": "string",
307
382
  "description": "中心方法论仓库路径或Git仓库地址。支持本地目录(含git子路径):若为本地目录将直接加入方法论加载路径;若为Git URL则会克隆到数据目录后加载。",
308
383
  "default": ""
309
384
  },
310
- "JARVIS_CENTRAL_TOOL_REPO": {
385
+ "central_tool_repo": {
311
386
  "type": "string",
312
387
  "description": "中心工具仓库路径或Git仓库地址。支持本地目录(含git子路径):若为本地目录将直接加载其中的工具;若为Git URL则会克隆到数据目录并加载。",
313
388
  "default": ""
314
389
  },
315
- "JARVIS_PRINT_PROMPT": {
390
+ "print_prompt": {
316
391
  "type": "boolean",
317
392
  "description": "是否打印提示",
318
393
  "default": false
319
394
  },
320
- "JARVIS_PRINT_ERROR_TRACEBACK": {
395
+ "print_error_traceback": {
321
396
  "type": "boolean",
322
397
  "description": "是否在错误输出时打印回溯调用链",
323
398
  "default": false
324
399
  },
325
- "JARVIS_ENABLE_STATIC_ANALYSIS": {
400
+ "enable_static_analysis": {
326
401
  "type": "boolean",
327
402
  "description": "是否启用静态代码分析",
328
403
  "default": true
329
404
  },
330
- "JARVIS_ENABLE_BUILD_VALIDATION": {
405
+ "enable_build_validation": {
331
406
  "type": "boolean",
332
407
  "description": "是否启用构建验证。在代码编辑后自动验证代码能否成功编译/构建,确保编辑不会破坏项目构建。",
333
408
  "default": true
334
409
  },
335
- "JARVIS_BUILD_VALIDATION_TIMEOUT": {
410
+ "build_validation_timeout": {
336
411
  "type": "number",
337
412
  "description": "构建验证的超时时间(秒)。当构建验证执行时间超过此值时,将终止验证并报告超时。",
338
- "default": 600
413
+ "default": 30
339
414
  },
340
- "JARVIS_ENABLE_IMPACT_ANALYSIS": {
415
+ "enable_impact_analysis": {
341
416
  "type": "boolean",
342
417
  "description": "是否启用编辑影响范围分析。分析代码编辑的影响范围,识别可能受影响的文件、函数、测试等,帮助评估编辑风险。",
343
418
  "default": true
344
419
  },
345
- "JARVIS_FORCE_SAVE_MEMORY": {
420
+ "force_save_memory": {
346
421
  "type": "boolean",
347
422
  "description": "是否强制保存记忆",
348
423
  "default": false
349
424
  },
350
- "JARVIS_ENABLE_GIT_JCA_SWITCH": {
425
+ "enable_git_jca_switch": {
351
426
  "type": "boolean",
352
427
  "description": "在初始化环境前检测Git仓库并提示可切换到代码开发模式(jca)",
353
428
  "default": true
354
429
  },
355
- "JARVIS_ENABLE_STARTUP_CONFIG_SELECTOR": {
430
+ "enable_startup_config_selector": {
356
431
  "type": "boolean",
357
432
  "description": "在进入默认通用代理前,列出可用配置(agent/multi_agent/roles)供选择",
358
433
  "default": true
359
434
  },
360
- "JARVIS_IMMEDIATE_ABORT": {
435
+ "immediate_abort": {
361
436
  "type": "boolean",
362
437
  "description": "是否启用立即中断:在对话迭代中检测到中断信号时立即返回",
363
438
  "default": false
364
439
  },
365
- "JARVIS_SAVE_SESSION_HISTORY": {
440
+ "save_session_history": {
366
441
  "type": "boolean",
367
442
  "description": "是否保存会话记录",
368
443
  "default": false
369
444
  },
370
- "JARVIS_SKIP_PREDEFINED_TASKS": {
445
+ "skip_predefined_tasks": {
371
446
  "type": "boolean",
372
447
  "description": "是否跳过预定义任务加载(不读取 pre-command 列表)",
373
448
  "default": false
374
449
  },
375
- "JARVIS_ADDON_PROMPT_THRESHOLD": {
450
+ "addon_prompt_threshold": {
376
451
  "type": "number",
377
452
  "description": "附加提示的触发阈值(字符数)。当消息长度超过此值时,会自动添加默认的附加提示",
378
453
  "default": 1024
379
454
  },
380
- "JARVIS_ENABLE_INTENT_RECOGNITION": {
455
+ "enable_intent_recognition": {
381
456
  "type": "boolean",
382
457
  "description": "是否启用意图识别功能。用于智能上下文推荐中的LLM意图提取和语义分析",
383
458
  "default": true
384
459
  },
385
- "JARVIS_ENABLE_MEMORY_ORGANIZER": {
460
+ "enable_memory_organizer": {
386
461
  "type": "boolean",
387
462
  "description": "是否启用自动记忆整理功能。在任务完成后自动检测记忆库状态,当记忆数量超过200条且存在重叠时提示用户整理",
388
463
  "default": false
389
464
  },
390
- "JARVIS_GIT_CHECK_MODE": {
391
- "type": "string",
392
- "enum": ["strict", "warn"],
393
- "description": "Git 配置校验模式:strict 表示严格模式(默认),缺失配置时直接退出;warn 表示警告模式,仅提示并继续运行",
394
- "default": "strict"
395
- },
396
- "JARVIS_TOOL_GROUP": {
465
+ "tool_group": {
397
466
  "type": "string",
398
467
  "description": "选择一个预定义的工具配置组",
399
468
  "default": ""
400
469
  },
401
- "JARVIS_TOOL_GROUPS": {
470
+ "tool_groups": {
402
471
  "type": "array",
403
472
  "description": "预定义的工具配置组",
404
473
  "default": [],
@@ -425,70 +494,98 @@
425
494
  }
426
495
  }
427
496
  },
428
- "JARVIS_RAG_GROUP": {
497
+ "rag_group": {
429
498
  "type": "string",
430
499
  "description": "选择一个预定义的RAG配置组",
431
500
  "default": ""
432
501
  },
433
- "JARVIS_RAG_GROUPS": {
434
- "type": "array",
435
- "description": "预定义的RAG配置组",
436
- "default": [
437
- {
438
- "text": {
439
- "embedding_model": "BAAI/bge-m3",
440
- "rerank_model": "BAAI/bge-reranker-v2-m3",
441
- "use_bm25": true,
442
- "use_rerank": true
443
- }
444
- },
445
- {
446
- "code": {
447
- "embedding_model": "Qodo/Qodo-Embed-1-1.5B",
448
- "use_bm25": false,
449
- "use_rerank": false
450
- }
451
- }
452
- ],
453
- "items": {
502
+ "rag_groups": {
503
+ "type": "object",
504
+ "description": "预定义的RAG配置组,使用组名作为 key。每个组必须通过 embedding 引用 embeddings 中定义的配置,可选通过 reranker 引用 rerankers 中定义的配置,不再支持直接定义 embedding_model、embedding_type 等参数",
505
+ "additionalProperties": {
454
506
  "type": "object",
455
- "additionalProperties": {
456
- "type": "object",
457
- "properties": {
458
- "embedding_model": {
459
- "type": "string",
460
- "default": "BAAI/bge-m3"
461
- },
462
- "rerank_model": {
463
- "type": "string",
464
- "default": "BAAI/bge-reranker-v2-m3"
465
- },
466
- "use_bm25": {
467
- "type": "boolean",
468
- "default": true
469
- },
470
- "use_rerank": {
471
- "type": "boolean",
472
- "default": true
473
- }
507
+ "properties": {
508
+ "embedding": {
509
+ "type": "string",
510
+ "description": "引用 embeddings 中定义的嵌入模型配置名称(必需)"
511
+ },
512
+ "reranker": {
513
+ "type": "string",
514
+ "description": "引用 rerankers 中定义的重排模型配置名称(可选)"
515
+ },
516
+ "use_bm25": {
517
+ "type": "boolean",
518
+ "default": true,
519
+ "description": "是否使用BM25进行检索"
520
+ },
521
+ "use_rerank": {
522
+ "type": "boolean",
523
+ "default": true,
524
+ "description": "是否使用重排模型"
474
525
  }
526
+ },
527
+ "required": ["embedding"]
528
+ },
529
+ "default": {
530
+ "text": {
531
+ "embedding": "default-text-embedding",
532
+ "reranker": "default-text-reranker",
533
+ "use_bm25": true,
534
+ "use_rerank": true
535
+ },
536
+ "code": {
537
+ "embedding": "default-code-embedding",
538
+ "use_bm25": false,
539
+ "use_rerank": false
475
540
  }
476
541
  }
477
542
  },
478
- "JARVIS_RAG": {
543
+ "rag": {
479
544
  "type": "object",
480
- "description": "RAG框架的顶层配置。注意:此处的设置将覆盖任何由JARVIS_RAG_GROUP选择的组配置。",
545
+ "description": "RAG框架的顶层配置。注意:此处的设置将覆盖任何由rag_group选择的组配置。",
481
546
  "properties": {
482
547
  "embedding_model": {
483
548
  "type": "string",
484
549
  "default": "BAAI/bge-m3",
485
550
  "description": "用于RAG的嵌入模型的名称, 默认为 'BAAI/bge-m3'"
486
551
  },
552
+ "embedding_type": {
553
+ "type": "string",
554
+ "default": "LocalEmbeddingModel",
555
+ "description": "嵌入模型的实现类型,如 'LocalEmbeddingModel', 'OpenAIEmbeddingModel', 'CohereEmbeddingModel', 'EdgeFnEmbeddingModel' 等,默认为 'LocalEmbeddingModel'"
556
+ },
557
+ "embedding_max_length": {
558
+ "type": "number",
559
+ "default": 512,
560
+ "description": "嵌入模型的最大输入长度(token数),用于文档分割,默认为 512"
561
+ },
562
+ "embedding_config": {
563
+ "type": "object",
564
+ "description": "嵌入模型的额外配置参数,会传递给模型的构造函数。对于在线模型,可包含 api_key 等参数",
565
+ "additionalProperties": true,
566
+ "default": {}
567
+ },
487
568
  "rerank_model": {
488
569
  "type": "string",
489
570
  "default": "BAAI/bge-reranker-v2-m3",
490
571
  "description": "用于RAG的rerank模型的名称, 默认为 'BAAI/bge-reranker-v2-m3'"
491
572
  },
573
+ "reranker_type": {
574
+ "type": "string",
575
+ "default": "LocalReranker",
576
+ "description": "重排模型的实现类型,如 'LocalReranker', 'CohereReranker', 'JinaReranker', 'EdgeFnReranker' 等,默认为 'LocalReranker'"
577
+ },
578
+ "reranker_max_length": {
579
+ "type": "number",
580
+ "default": 512,
581
+ "description": "重排模型的最大输入长度(token数),默认为 512"
582
+ },
583
+ "reranker_config": {
584
+ "type": "object",
585
+ "description": "重排模型的额外配置参数,会传递给模型的构造函数。对于在线模型,可包含 api_key 等参数",
586
+ "additionalProperties": true,
587
+ "default": {}
588
+ },
492
589
  "use_bm25": {
493
590
  "type": "boolean",
494
591
  "default": true,
@@ -502,12 +599,18 @@
502
599
  },
503
600
  "default": {
504
601
  "embedding_model": "BAAI/bge-m3",
602
+ "embedding_type": "LocalEmbeddingModel",
603
+ "embedding_max_length": 512,
604
+ "embedding_config": {},
505
605
  "rerank_model": "BAAI/bge-reranker-v2-m3",
606
+ "reranker_type": "LocalReranker",
607
+ "reranker_max_length": 512,
608
+ "reranker_config": {},
506
609
  "use_bm25": true,
507
610
  "use_rerank": true
508
611
  }
509
612
  },
510
- "JARVIS_REPLACE_MAP": {
613
+ "replace_map": {
511
614
  "type": "object",
512
615
  "description": "自定义替换映射表配置",
513
616
  "additionalProperties": {
@@ -526,47 +629,37 @@
526
629
  "description": "Description of the replacement"
527
630
  }
528
631
  },
529
- "required": [
530
- "template"
531
- ]
632
+ "required": ["template"]
532
633
  },
533
634
  "default": {}
534
635
  },
535
- "OPENAI_API_KEY": {
536
- "type": "string",
537
- "description": "OpenAI API Key"
538
- },
539
- "OPENAI_API_BASE": {
540
- "type": "string",
541
- "description": "OpenAI API Base URL"
542
- },
543
- "KIMI_API_KEY": {
544
- "type": "string",
545
- "description": "Kimi API Key"
546
- },
547
- "TONGYI_COOKIES": {
548
- "type": "string",
549
- "description": "Tongyi Cookies"
550
- },
551
- "YUANBAO_COOKIES": {
552
- "type": "string",
553
- "description": "Yuanbao Cookies"
554
- },
555
- "AI8_API_KEY": {
556
- "type": "string",
557
- "description": "AI8 API Key"
558
- },
559
636
  "SHELL": {
560
637
  "type": "string",
561
638
  "description": "系统Shell路径,用于获取当前使用的shell类型",
562
639
  "default": "/bin/bash"
563
640
  },
564
- "JARVIS_CONVERSATION_TURN_THRESHOLD": {
641
+ "conversation_turn_threshold": {
565
642
  "type": "number",
566
643
  "description": "对话轮次阈值,用于触发总结。当对话轮次超过此值时,系统会自动触发对话总结",
567
644
  "default": 50,
568
645
  "minimum": 1,
569
646
  "maximum": 1000
647
+ },
648
+ "diff_visualization_mode": {
649
+ "type": "string",
650
+ "description": "Diff可视化模式。side_by_side: 左右分栏对比显示;unified: 统一diff格式;syntax: 语法高亮模式;compact: 紧凑模式",
651
+ "enum": ["side_by_side", "unified", "syntax", "compact"],
652
+ "default": "side_by_side"
653
+ },
654
+ "diff_show_line_numbers": {
655
+ "type": "boolean",
656
+ "description": "是否在 diff 中显示行号",
657
+ "default": true
658
+ },
659
+ "diff_large_file_threshold": {
660
+ "type": "number",
661
+ "description": "大文件阈值(超过此行数只显示统计)",
662
+ "default": 300
570
663
  }
571
664
  },
572
665
  "additionalProperties": true