jarvis-ai-assistant 0.1.207__tar.gz → 0.1.209__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.
Files changed (110) hide show
  1. {jarvis_ai_assistant-0.1.207/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.1.209}/PKG-INFO +4 -19
  2. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/README.md +1 -15
  3. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/pyproject.toml +4 -9
  4. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/setup.py +8 -14
  5. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/__init__.py +1 -1
  6. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/__init__.py +63 -103
  7. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/edit_file_handler.py +43 -47
  8. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/jarvis.py +33 -39
  9. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_agent/code_agent.py +74 -30
  10. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_agent/lint.py +6 -6
  11. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/code_review.py +164 -175
  12. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_data/config_schema.json +0 -25
  13. jarvis_ai_assistant-0.1.209/src/jarvis/jarvis_git_utils/git_commiter.py +331 -0
  14. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_methodology/main.py +70 -81
  15. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/base.py +21 -17
  16. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/kimi.py +59 -64
  17. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/tongyi.py +118 -131
  18. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/yuanbao.py +117 -122
  19. jarvis_ai_assistant-0.1.209/src/jarvis/jarvis_platform_manager/main.py +407 -0
  20. jarvis_ai_assistant-0.1.209/src/jarvis/jarvis_platform_manager/service.py +432 -0
  21. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_smart_shell/main.py +99 -33
  22. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/ask_user.py +0 -1
  23. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/edit_file.py +64 -55
  24. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/file_analyzer.py +17 -28
  25. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/read_code.py +80 -81
  26. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/builtin_replace_map.py +1 -36
  27. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/config.py +13 -48
  28. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/embedding.py +6 -51
  29. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/git_utils.py +93 -43
  30. jarvis_ai_assistant-0.1.209/src/jarvis/jarvis_utils/http.py +104 -0
  31. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/methodology.py +12 -17
  32. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/utils.py +186 -63
  33. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209/src/jarvis_ai_assistant.egg-info}/PKG-INFO +4 -19
  34. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +2 -8
  35. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis_ai_assistant.egg-info/entry_points.txt +1 -1
  36. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis_ai_assistant.egg-info/requires.txt +2 -3
  37. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_data/huggingface.tar.gz +0 -0
  38. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_dev/main.py +0 -1247
  39. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_git_utils/git_commiter.py +0 -336
  40. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_platform_manager/main.py +0 -807
  41. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_tools/chdir.py +0 -72
  42. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_tools/code_plan.py +0 -218
  43. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_tools/create_code_agent.py +0 -95
  44. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_tools/create_sub_agent.py +0 -82
  45. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_tools/file_operation.py +0 -238
  46. jarvis_ai_assistant-0.1.207/src/jarvis/jarvis_utils/jarvis_history.py +0 -98
  47. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/LICENSE +0 -0
  48. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/MANIFEST.in +0 -0
  49. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/setup.cfg +0 -0
  50. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  51. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/main.py +0 -0
  52. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  53. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  54. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  55. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  56. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  57. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  58. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  59. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  60. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  61. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  62. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  63. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  64. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  65. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  66. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  67. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  68. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  69. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  70. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  71. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  72. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  73. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  74. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  75. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_git_details/__init__.py +0 -0
  76. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_git_details/main.py +0 -0
  77. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  78. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_git_squash/main.py +0 -0
  79. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  80. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  81. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  82. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  83. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  84. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  85. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/__init__.py +0 -0
  86. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/human.py +0 -0
  87. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/openai.py +0 -0
  88. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform/registry.py +0 -0
  89. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  90. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  91. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/__init__.py +0 -0
  92. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/base.py +0 -0
  93. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  94. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  95. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  96. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  97. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/methodology.py +0 -0
  98. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  99. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/registry.py +0 -0
  100. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  101. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/search_web.py +0 -0
  102. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  103. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/__init__.py +0 -0
  104. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  105. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/globals.py +0 -0
  106. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/input.py +0 -0
  107. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/output.py +0 -0
  108. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis/jarvis_utils/tag.py +0 -0
  109. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  110. {jarvis_ai_assistant-0.1.207 → jarvis_ai_assistant-0.1.209}/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.207
3
+ Version: 0.1.209
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
@@ -43,19 +43,18 @@ License-File: LICENSE
43
43
  Requires-Dist: requests==2.32.3
44
44
  Requires-Dist: colorama==0.4.6
45
45
  Requires-Dist: prompt_toolkit==3.0.50
46
- Requires-Dist: yaspin==2.4.0
47
46
  Requires-Dist: pygments==2.19.1
48
47
  Requires-Dist: fuzzywuzzy==0.18.0
49
48
  Requires-Dist: fastapi==0.115.12
50
49
  Requires-Dist: uvicorn==0.33.0
51
50
  Requires-Dist: rich==14.0.0
52
- Requires-Dist: transformers==4.46.3
53
- Requires-Dist: torch==2.4.1
54
51
  Requires-Dist: python-Levenshtein==0.25.1
52
+ Requires-Dist: tiktoken==0.7.0
55
53
  Requires-Dist: pillow==10.2.0
56
54
  Requires-Dist: openai==1.78.1
57
55
  Requires-Dist: tabulate==0.9.0
58
56
  Requires-Dist: pyte==0.8.2
57
+ Requires-Dist: pyyaml>=6.0.2
59
58
  Provides-Extra: dev
60
59
  Requires-Dist: pytest; extra == "dev"
61
60
  Requires-Dist: black; extra == "dev"
@@ -106,10 +105,9 @@ pip3 install jarvis-ai-assistant
106
105
  | `jarvis` | - | 使用通用代理 |
107
106
  | `jarvis-code-agent` | `jca` | 使用代码代理 |
108
107
  | `jarvis-smart-shell` | `jss` | 使用智能shell功能 |
109
- | `jarvis-platform-manager` | - | 使用平台管理功能 |
108
+ | `jarvis-platform-manager` | `jpm` | 使用平台管理功能 |
110
109
  | `jarvis-code-review` | - | 使用代码审查功能 |
111
110
  | `jarvis-git-commit` | `jgc` | 使用自动化git commit功能 |
112
- | `jarvis-dev` | - | 使用dev功能(开发中) |
113
111
  | `jarvis-git-squash` | - | 使用git squash功能 |
114
112
  | `jarvis-multi-agent` | - | 使用多代理功能 |
115
113
  | `jarvis-agent` | - | 使用agent功能 |
@@ -483,7 +481,6 @@ JARVIS_THINKING_PLATFORM: yuanbao
483
481
  JARVIS_THINKING_MODEL: deep_seek
484
482
  ENV:
485
483
  YUANBAO_COOKIES: <元宝cookies>
486
- YUANBAO_AGENT_ID: <元宝AgentID>
487
484
  ```
488
485
 
489
486
  #### Kimi
@@ -522,23 +519,18 @@ OPENAI_API_BASE: https://api.openai.com/v1
522
519
  | `ENV` | {} | 环境变量配置 |
523
520
  | `JARVIS_MAX_TOKEN_COUNT` | 960000 | 上下文窗口的最大token数量 |
524
521
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
525
- | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能 |
526
- | `JARVIS_SHELL_NAME` | bash | 系统shell名称 |
527
522
  | `JARVIS_PLATFORM` | yuanbao | 默认AI平台 |
528
523
  | `JARVIS_MODEL` | deep_seek_v3 | 默认模型 |
529
524
  | `JARVIS_THINKING_PLATFORM` | JARVIS_PLATFORM | 推理任务使用的平台 |
530
525
  | `JARVIS_THINKING_MODEL` | JARVIS_MODEL | 推理任务使用的模型 |
531
526
  | `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
532
527
  | `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | false | 应用补丁前是否需要确认 |
533
- | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
534
- | `JARVIS_AUTO_UPDATE` | true | 是否自动更新Jarvis |
535
528
  | `JARVIS_MAX_BIG_CONTENT_SIZE` | 160000 | 最大大内容大小 |
536
529
  | `JARVIS_PRETTY_OUTPUT` | false | 是否启用PrettyOutput |
537
530
  | `JARVIS_GIT_COMMIT_PROMPT` | "" | 自定义git提交信息生成提示模板 |
538
531
  | `JARVIS_PRINT_PROMPT` | false | 是否打印提示 |
539
532
  | `JARVIS_USE_METHODOLOGY` | true | 是否启用方法论功能 |
540
533
  | `JARVIS_USE_ANALYSIS` | true | 是否启用任务分析功能 |
541
- | `JARVIS_USE_HISTORY_COUNT` | 0 | 使用N次历史记录作为上下文记忆 |
542
534
  | `JARVIS_DATA_PATH` | ~/.jarvis | Jarvis数据存储目录路径 |
543
535
 
544
536
  ## 🛠️ 工具说明 <a id="tools"></a>
@@ -547,15 +539,10 @@ OPENAI_API_BASE: https://api.openai.com/v1
547
539
  | 工具名称 | 描述 |
548
540
  |----------|------|
549
541
  | ask_user | 交互式用户输入收集 |
550
- | chdir | 更改当前工作目录 |
551
542
  | rewrite_file | 文件重写工具 |
552
543
  | edit_file | 代码编辑工具 |
553
- | code_plan | 理解需求并制定代码修改计划 |
554
- | create_code_agent | 代码开发工具 |
555
- | create_sub_agent | 创建子代理处理特定任务 |
556
544
  | execute_script | 执行脚本并返回结果 |
557
545
  | file_analyzer | 分析文件内容并提取关键信息 |
558
- | file_operation | 文件批量操作工具 |
559
546
  | methodology | 方法论管理工具 |
560
547
  | read_code | 代码阅读与分析工具 |
561
548
  | read_webpage | 读取网页内容并分析 |
@@ -572,9 +559,7 @@ OPENAI_API_BASE: https://api.openai.com/v1
572
559
  | `'ToolUsage'` | 显示可用工具列表及使用方法 |
573
560
  | `'ReloadConfig'` | 重新加载配置文件 |
574
561
  | `'Web'` | 网页搜索,支持多种提问格式 |
575
- | `'Plan'` | 生成代码修改计划,提供详细需求描述 |
576
562
  | `'FindRelatedFiles'` | 查找与功能相关的文件 |
577
- | `'Dev'` | 调用create_code_agent开发需求 |
578
563
  | `'Fix'` | 修复问题 |
579
564
  | `'Check'` | 执行静态代码检查,包括错误和风格问题 |
580
565
 
@@ -36,10 +36,9 @@ pip3 install jarvis-ai-assistant
36
36
  | `jarvis` | - | 使用通用代理 |
37
37
  | `jarvis-code-agent` | `jca` | 使用代码代理 |
38
38
  | `jarvis-smart-shell` | `jss` | 使用智能shell功能 |
39
- | `jarvis-platform-manager` | - | 使用平台管理功能 |
39
+ | `jarvis-platform-manager` | `jpm` | 使用平台管理功能 |
40
40
  | `jarvis-code-review` | - | 使用代码审查功能 |
41
41
  | `jarvis-git-commit` | `jgc` | 使用自动化git commit功能 |
42
- | `jarvis-dev` | - | 使用dev功能(开发中) |
43
42
  | `jarvis-git-squash` | - | 使用git squash功能 |
44
43
  | `jarvis-multi-agent` | - | 使用多代理功能 |
45
44
  | `jarvis-agent` | - | 使用agent功能 |
@@ -413,7 +412,6 @@ JARVIS_THINKING_PLATFORM: yuanbao
413
412
  JARVIS_THINKING_MODEL: deep_seek
414
413
  ENV:
415
414
  YUANBAO_COOKIES: <元宝cookies>
416
- YUANBAO_AGENT_ID: <元宝AgentID>
417
415
  ```
418
416
 
419
417
  #### Kimi
@@ -452,23 +450,18 @@ OPENAI_API_BASE: https://api.openai.com/v1
452
450
  | `ENV` | {} | 环境变量配置 |
453
451
  | `JARVIS_MAX_TOKEN_COUNT` | 960000 | 上下文窗口的最大token数量 |
454
452
  | `JARVIS_MAX_INPUT_TOKEN_COUNT` | 32000 | 输入的最大token数量 |
455
- | `JARVIS_AUTO_COMPLETE` | false | 是否启用自动完成功能 |
456
- | `JARVIS_SHELL_NAME` | bash | 系统shell名称 |
457
453
  | `JARVIS_PLATFORM` | yuanbao | 默认AI平台 |
458
454
  | `JARVIS_MODEL` | deep_seek_v3 | 默认模型 |
459
455
  | `JARVIS_THINKING_PLATFORM` | JARVIS_PLATFORM | 推理任务使用的平台 |
460
456
  | `JARVIS_THINKING_MODEL` | JARVIS_MODEL | 推理任务使用的模型 |
461
457
  | `JARVIS_EXECUTE_TOOL_CONFIRM` | false | 执行工具前是否需要确认 |
462
458
  | `JARVIS_CONFIRM_BEFORE_APPLY_PATCH` | false | 应用补丁前是否需要确认 |
463
- | `JARVIS_MAX_TOOL_CALL_COUNT` | 20 | 最大连续工具调用次数 |
464
- | `JARVIS_AUTO_UPDATE` | true | 是否自动更新Jarvis |
465
459
  | `JARVIS_MAX_BIG_CONTENT_SIZE` | 160000 | 最大大内容大小 |
466
460
  | `JARVIS_PRETTY_OUTPUT` | false | 是否启用PrettyOutput |
467
461
  | `JARVIS_GIT_COMMIT_PROMPT` | "" | 自定义git提交信息生成提示模板 |
468
462
  | `JARVIS_PRINT_PROMPT` | false | 是否打印提示 |
469
463
  | `JARVIS_USE_METHODOLOGY` | true | 是否启用方法论功能 |
470
464
  | `JARVIS_USE_ANALYSIS` | true | 是否启用任务分析功能 |
471
- | `JARVIS_USE_HISTORY_COUNT` | 0 | 使用N次历史记录作为上下文记忆 |
472
465
  | `JARVIS_DATA_PATH` | ~/.jarvis | Jarvis数据存储目录路径 |
473
466
 
474
467
  ## 🛠️ 工具说明 <a id="tools"></a>
@@ -477,15 +470,10 @@ OPENAI_API_BASE: https://api.openai.com/v1
477
470
  | 工具名称 | 描述 |
478
471
  |----------|------|
479
472
  | ask_user | 交互式用户输入收集 |
480
- | chdir | 更改当前工作目录 |
481
473
  | rewrite_file | 文件重写工具 |
482
474
  | edit_file | 代码编辑工具 |
483
- | code_plan | 理解需求并制定代码修改计划 |
484
- | create_code_agent | 代码开发工具 |
485
- | create_sub_agent | 创建子代理处理特定任务 |
486
475
  | execute_script | 执行脚本并返回结果 |
487
476
  | file_analyzer | 分析文件内容并提取关键信息 |
488
- | file_operation | 文件批量操作工具 |
489
477
  | methodology | 方法论管理工具 |
490
478
  | read_code | 代码阅读与分析工具 |
491
479
  | read_webpage | 读取网页内容并分析 |
@@ -502,9 +490,7 @@ OPENAI_API_BASE: https://api.openai.com/v1
502
490
  | `'ToolUsage'` | 显示可用工具列表及使用方法 |
503
491
  | `'ReloadConfig'` | 重新加载配置文件 |
504
492
  | `'Web'` | 网页搜索,支持多种提问格式 |
505
- | `'Plan'` | 生成代码修改计划,提供详细需求描述 |
506
493
  | `'FindRelatedFiles'` | 查找与功能相关的文件 |
507
- | `'Dev'` | 调用create_code_agent开发需求 |
508
494
  | `'Fix'` | 修复问题 |
509
495
  | `'Check'` | 执行静态代码检查,包括错误和风格问题 |
510
496
 
@@ -2,13 +2,9 @@
2
2
  requires = ["setuptools>=45", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
- [[tool.uv.index]]
6
- url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
7
- default = true
8
-
9
5
  [project]
10
6
  name = "jarvis-ai-assistant"
11
- version = "0.1.207"
7
+ version = "0.1.209"
12
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
13
9
  readme = "README.md"
14
10
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -29,19 +25,18 @@ dependencies = [
29
25
  "requests==2.32.3",
30
26
  "colorama==0.4.6",
31
27
  "prompt_toolkit==3.0.50",
32
- "yaspin==2.4.0",
33
28
  "pygments==2.19.1",
34
29
  "fuzzywuzzy==0.18.0",
35
30
  "fastapi==0.115.12",
36
31
  "uvicorn==0.33.0",
37
32
  "rich==14.0.0",
38
- "transformers==4.46.3",
39
- "torch==2.4.1",
40
33
  "python-Levenshtein==0.25.1",
34
+ "tiktoken==0.7.0",
41
35
  "pillow==10.2.0",
42
36
  "openai==1.78.1",
43
37
  "tabulate==0.9.0",
44
38
  "pyte==0.8.2",
39
+ "pyyaml>=6.0.2",
45
40
  ]
46
41
  requires-python = ">=3.8"
47
42
 
@@ -58,10 +53,10 @@ jca = "jarvis.jarvis_code_agent.code_agent:main"
58
53
  jarvis-smart-shell = "jarvis.jarvis_smart_shell.main:main"
59
54
  jss = "jarvis.jarvis_smart_shell.main:main"
60
55
  jarvis-platform-manager = "jarvis.jarvis_platform_manager.main:main"
56
+ jpm = "jarvis.jarvis_platform_manager.main:main"
61
57
  jarvis-git-commit = "jarvis.jarvis_git_utils.git_commiter:main"
62
58
  jarvis-code-review = "jarvis.jarvis_code_analysis.code_review:main"
63
59
  jgc = "jarvis.jarvis_git_utils.git_commiter:main"
64
- jarvis-dev = "jarvis.jarvis_dev.main:main"
65
60
  jarvis-git-squash = "jarvis.jarvis_git_squash.main:main"
66
61
  jarvis-multi-agent = "jarvis.jarvis_multi_agent.main:main"
67
62
  jarvis-agent = "jarvis.jarvis_agent.main:main"
@@ -1,9 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
- from setuptools import setup, find_packages
2
+ from setuptools import setup, find_packages # type: ignore
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.1.207",
6
+ version="0.1.209",
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",
@@ -14,32 +14,26 @@ setup(
14
14
  package_dir={"": "src"},
15
15
  include_package_data=True,
16
16
  package_data={
17
- "jarvis": [
18
- "jarvis_data/huggingface.tar.gz",
19
- "jarvis_data/config_schema.json"
20
- ],
17
+ "jarvis": ["jarvis_data/config_schema.json"],
21
18
  },
22
19
  install_requires=[
23
20
  "requests==2.32.3",
24
21
  "colorama==0.4.6",
25
22
  "prompt_toolkit==3.0.50",
26
- "yaspin==2.4.0",
27
23
  "pygments==2.19.1",
28
24
  "fuzzywuzzy==0.18.0",
29
25
  "fastapi==0.115.12",
30
26
  "uvicorn==0.33.0",
31
27
  "rich==14.0.0",
32
- "transformers==4.46.3",
33
- "torch==2.4.1",
34
28
  "python-Levenshtein==0.25.1",
29
+ "tiktoken==0.7.0",
35
30
  "pillow==10.2.0",
36
31
  "openai==1.78.1",
37
32
  "tabulate==0.9.0",
38
33
  "pyte==0.8.2",
34
+ "pyyaml>=6.0.2",
39
35
  ],
40
- extras_require={
41
- "dev": ["pytest", "black", "isort", "mypy", "build", "twine"]
42
- },
36
+ extras_require={"dev": ["pytest", "black", "isort", "mypy", "build", "twine"]},
43
37
  entry_points={
44
38
  "console_scripts": [
45
39
  "jarvis=jarvis.jarvis_agent.jarvis:main",
@@ -48,10 +42,10 @@ setup(
48
42
  "jarvis-smart-shell=jarvis.jarvis_smart_shell.main:main",
49
43
  "jss=jarvis.jarvis_smart_shell.main:main",
50
44
  "jarvis-platform-manager=jarvis.jarvis_platform_manager.main:main",
45
+ "jpm=jarvis.jarvis_platform_manager.main:main",
51
46
  "jarvis-code-review=jarvis.jarvis_code_analysis.code_review:main",
52
- "jarvis-git-commit=jarvis.jarvis_git_utils.git_commiter:main",
47
+ "jarvis-git-commit=jarvis.jarvis_git_utils.git_commiter:main",
53
48
  "jgc=jarvis.jarvis_git_utils.git_commiter:main",
54
- "jarvis-dev=jarvis.jarvis_dev.main:main",
55
49
  "jarvis-git-squash=jarvis.jarvis_git_squash.main:main",
56
50
  "jarvis-multi-agent=jarvis.jarvis_multi_agent.main:main",
57
51
  "jarvis-agent=jarvis.jarvis_agent.main:main",
@@ -1,4 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  """Jarvis AI Assistant"""
3
3
 
4
- __version__ = "0.1.207"
4
+ __version__ = "0.1.209"
@@ -7,27 +7,30 @@ import platform
7
7
  from typing import Any, Callable, Dict, List, Optional, Protocol, Tuple, Union
8
8
 
9
9
  # 第三方库导入
10
- from yaspin import yaspin # type: ignore
11
10
 
12
11
  # 本地库导入
13
12
  # jarvis_agent 相关
14
13
  # jarvis_platform 相关
15
14
  from jarvis.jarvis_platform.base import BasePlatform
16
15
  from jarvis.jarvis_platform.registry import PlatformRegistry
16
+
17
17
  # jarvis_utils 相关
18
- from jarvis.jarvis_utils.config import (get_data_dir, get_max_token_count,
19
- get_max_tool_call_count,
20
- is_auto_complete,
21
- is_execute_tool_confirm,
22
- is_use_analysis, get_history_count, is_use_methodology)
18
+ from jarvis.jarvis_utils.config import (
19
+ get_max_token_count,
20
+ is_execute_tool_confirm,
21
+ is_use_analysis,
22
+ is_use_methodology,
23
+ )
23
24
  from jarvis.jarvis_utils.embedding import get_context_token_count
24
- from jarvis.jarvis_utils.globals import (delete_agent, get_interrupt,
25
- make_agent_name, set_agent,
26
- set_interrupt)
25
+ from jarvis.jarvis_utils.globals import (
26
+ delete_agent,
27
+ get_interrupt,
28
+ make_agent_name,
29
+ set_agent,
30
+ set_interrupt,
31
+ )
27
32
  from jarvis.jarvis_utils.input import get_multiline_input
28
- from jarvis.jarvis_utils.jarvis_history import JarvisHistory
29
- from jarvis.jarvis_utils.methodology import (load_methodology,
30
- upload_methodology)
33
+ from jarvis.jarvis_utils.methodology import load_methodology, upload_methodology
31
34
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
32
35
  from jarvis.jarvis_utils.tag import ct, ot
33
36
  from jarvis.jarvis_utils.utils import user_confirm
@@ -139,7 +142,7 @@ class Agent:
139
142
  self.prompt = ""
140
143
 
141
144
  def __del__(self):
142
- self.history.stop_record()
145
+ # 只有在记录启动时才停止记录
143
146
  delete_agent(self.name)
144
147
 
145
148
  def __init__(
@@ -150,7 +153,7 @@ class Agent:
150
153
  platform: Union[Optional[BasePlatform], Optional[str]] = None,
151
154
  model_name: Optional[str] = None,
152
155
  summary_prompt: Optional[str] = None,
153
- auto_complete: Optional[bool] = None,
156
+ auto_complete: bool = False,
154
157
  output_handler: List[OutputHandlerProtocol] = [],
155
158
  use_tools: List[str] = [],
156
159
  input_handler: Optional[List[Callable[[str, Any], Tuple[str, bool]]]] = None,
@@ -160,7 +163,6 @@ class Agent:
160
163
  use_methodology: Optional[bool] = None,
161
164
  use_analysis: Optional[bool] = None,
162
165
  files: List[str] = [],
163
- history_count: Optional[int] = None,
164
166
  ):
165
167
  self.files = files
166
168
  """初始化Jarvis Agent实例
@@ -235,17 +237,8 @@ class Agent:
235
237
  # Load configuration from environment variables
236
238
  self.addon_prompt = ""
237
239
 
238
- self.tool_call_count = 0
239
- self.max_tool_call_count = get_max_tool_call_count()
240
240
  self.after_tool_call_cb: Optional[Callable[[Agent], None]] = None
241
241
 
242
- self.history = JarvisHistory()
243
- self.history_dir = str(Path(get_data_dir())/"history")
244
- self.history.start_record(self.history_dir)
245
-
246
- self.history_count = history_count if history_count is not None else get_history_count()
247
-
248
-
249
242
  self.execute_tool_confirm = (
250
243
  execute_tool_confirm
251
244
  if execute_tool_confirm is not None
@@ -274,9 +267,7 @@ class Agent:
274
267
  )
275
268
 
276
269
  self.max_token_count = get_max_token_count()
277
- self.auto_complete = (
278
- auto_complete if auto_complete is not None else is_auto_complete()
279
- )
270
+ self.auto_complete = auto_complete
280
271
  welcome_message = f"{name} 初始化完成 - 使用 {self.model.name()} 模型"
281
272
 
282
273
  PrettyOutput.print(welcome_message, OutputType.SYSTEM)
@@ -407,10 +398,10 @@ class Agent:
407
398
  if self.conversation_length > self.max_token_count:
408
399
  message = self._summarize_and_clear_history() + "\n\n" + message
409
400
  self.conversation_length += get_context_token_count(message)
410
- self.history.append_msg("user", message)
401
+
411
402
  response = self.model.chat_until_success(message) # type: ignore
412
403
  self.conversation_length += get_context_token_count(response)
413
- self.history.append_msg("assistant", response)
404
+
414
405
  return response
415
406
 
416
407
  def generate_summary(self) -> str:
@@ -422,8 +413,8 @@ class Agent:
422
413
  注意:
423
414
  仅生成摘要,不修改对话状态
424
415
  """
425
- with yaspin(text="正在总结对话历史...", color="cyan") as spinner:
426
- summary_prompt = """
416
+ print("📄 正在总结对话历史...")
417
+ summary_prompt = """
427
418
  <summary_request>
428
419
  <objective>
429
420
  请对当前对话历史进行简明扼要的总结,提取关键信息和重要决策点。这个总结将作为上下文继续任务,因此需要保留对后续对话至关重要的内容。
@@ -447,14 +438,11 @@ class Agent:
447
438
  """
448
439
 
449
440
  try:
450
- with spinner.hidden():
451
- summary = self.model.chat_until_success(self.prompt + "\n" + summary_prompt) # type: ignore
452
- spinner.text = "总结对话历史完成"
453
- spinner.ok("✅")
441
+ summary = self.model.chat_until_success(self.prompt + "\n" + summary_prompt) # type: ignore
442
+ print("✅ 总结对话历史完成")
454
443
  return summary
455
444
  except Exception as e:
456
- spinner.text = "总结对话历史失败"
457
- spinner.fail("❌")
445
+ print("❌ 总结对话历史失败")
458
446
  return ""
459
447
 
460
448
  def _summarize_and_clear_history(self) -> str:
@@ -482,9 +470,9 @@ class Agent:
482
470
  summary = self.generate_summary()
483
471
  else:
484
472
  import tempfile
473
+
485
474
  tmp_file = tempfile.NamedTemporaryFile(delete=False)
486
475
  tmp_file_name = tmp_file.name
487
- self.history.save_history(tmp_file_name)
488
476
  self.clear_history() # type: ignore
489
477
 
490
478
  if need_summary:
@@ -540,32 +528,16 @@ class Agent:
540
528
  )
541
529
  if len(tool_list) == 0:
542
530
  return False, ""
543
- if (
544
- self.max_tool_call_count > 0
545
- and self.tool_call_count >= self.max_tool_call_count
546
- ):
547
- if user_confirm(f"工具调用次数超过限制,是否继续执行?", True):
548
- self.reset_tool_call_count()
549
- else:
550
- return False, ""
551
- if self.execute_tool_confirm:
552
- self.reset_tool_call_count()
531
+
553
532
  if not self.execute_tool_confirm or user_confirm(
554
533
  f"需要执行{tool_list[0].name()}确认执行?", True
555
534
  ):
556
- with yaspin(
557
- text=f"正在执行{tool_list[0].name()}...", color="cyan"
558
- ) as spinner:
559
- with spinner.hidden():
560
- result = tool_list[0].handle(response, self)
561
- spinner.text = f"{tool_list[0].name()}执行完成"
562
- spinner.ok("✅")
563
- self.tool_call_count += 1
564
- return result
565
- return False, ""
535
+ print(f"🔧 正在执行{tool_list[0].name()}...")
536
+ result = tool_list[0].handle(response, self)
537
+ print(f"✅ {tool_list[0].name()}执行完成")
566
538
 
567
- def reset_tool_call_count(self):
568
- self.tool_call_count = 0
539
+ return result
540
+ return False, ""
569
541
 
570
542
  def _complete_task(self) -> str:
571
543
  """完成任务并生成总结(如果需要)
@@ -581,21 +553,19 @@ class Agent:
581
553
  if self.use_analysis:
582
554
  self._analysis_task()
583
555
  if self.need_summary:
584
- with yaspin(text="正在生成总结...", color="cyan") as spinner:
585
- self.prompt = self.summary_prompt
586
- with spinner.hidden():
587
- ret = self.model.chat_until_success(self.prompt) # type: ignore
588
- spinner.text = "总结生成完成"
589
- spinner.ok("✅")
590
- return ret
556
+ print("📄 正在生成总结...")
557
+ self.prompt = self.summary_prompt
558
+ ret = self.model.chat_until_success(self.prompt) # type: ignore
559
+ print("✅ 总结生成完成")
560
+ return ret
591
561
 
592
562
  return "任务完成"
593
563
 
594
564
  def _analysis_task(self):
595
- with yaspin(text="正在分析任务...", color="cyan") as spinner:
596
- try:
597
- # 让模型判断是否需要生成方法论
598
- analysis_prompt = f"""<task_analysis>
565
+ print("🔍 正在分析任务...")
566
+ try:
567
+ # 让模型判断是否需要生成方法论
568
+ analysis_prompt = f"""<task_analysis>
599
569
  <request>
600
570
  当前任务已结束,请分析该任务的解决方案:
601
571
  1. 首先检查现有工具或方法论是否已经可以完成该任务,如果可以,直接说明即可,无需生成新内容
@@ -741,17 +711,12 @@ arguments:
741
711
  </output_requirements>
742
712
  </task_analysis>"""
743
713
 
744
- self.prompt = analysis_prompt
745
- with spinner.hidden():
746
- response = self.model.chat_until_success(self.prompt) # type: ignore
747
-
748
- with spinner.hidden():
749
- self._call_tools(response)
750
- spinner.text = "分析完成"
751
- spinner.ok("✅")
752
- except Exception as e:
753
- spinner.text = "分析失败"
754
- spinner.fail("❌")
714
+ self.prompt = analysis_prompt
715
+ response = self.model.chat_until_success(self.prompt) # type: ignore
716
+ self._call_tools(response)
717
+ print("✅ 分析完成")
718
+ except Exception as e:
719
+ print("❌ 分析失败")
755
720
 
756
721
  def make_default_addon_prompt(self, need_complete: bool) -> str:
757
722
  """生成附加提示。
@@ -808,9 +773,8 @@ arguments:
808
773
  set_agent(self.name, self)
809
774
 
810
775
  while True:
811
- history_md = ""
812
776
  if self.first:
813
- history_md = self._first_run()
777
+ self._first_run()
814
778
  try:
815
779
  current_response = self._call_model(self.prompt, True)
816
780
  self.prompt = ""
@@ -822,8 +786,13 @@ arguments:
822
786
  )
823
787
  if user_input:
824
788
  # 如果有工具调用且用户确认继续,则将干预信息和工具执行结果拼接为prompt
825
- if any(handler.can_handle(current_response) for handler in self.output_handler):
826
- if user_confirm("检测到有工具调用,是否继续处理工具调用?", True):
789
+ if any(
790
+ handler.can_handle(current_response)
791
+ for handler in self.output_handler
792
+ ):
793
+ if user_confirm(
794
+ "检测到有工具调用,是否继续处理工具调用?", True
795
+ ):
827
796
  self.prompt = f"{user_input}\n\n{current_response}"
828
797
  continue
829
798
  self.prompt += f"{user_input}"
@@ -843,8 +812,6 @@ arguments:
843
812
  if self.auto_complete and ot("!!!COMPLETE!!!") in current_response:
844
813
  return self._complete_task()
845
814
 
846
- self.reset_tool_call_count()
847
-
848
815
  # 获取用户输入
849
816
  user_input = self.multiline_inputer(
850
817
  f"{self.name}: 请输入,或输入空行来结束当前任务:"
@@ -858,8 +825,6 @@ arguments:
858
825
  return self._complete_task()
859
826
 
860
827
  except Exception as e:
861
- if history_md:
862
- os.remove(history_md)
863
828
  PrettyOutput.print(f"任务失败: {str(e)}", OutputType.ERROR)
864
829
  return f"Task failed: {str(e)}"
865
830
 
@@ -868,21 +833,15 @@ arguments:
868
833
  return f"Task failed: {str(e)}"
869
834
 
870
835
  def _first_run(self):
871
- history_md = ""
872
- if self.history_count > 0 and self.model and self.model.support_upload_files():
873
- import tempfile
874
- timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
875
- history_md = str(Path(tempfile.gettempdir())/f"{self.name}_history_{timestamp}.md")
876
- self.history.export_history_to_markdown(self.history_dir, history_md, max_files=self.history_count)
877
- self.files.append(history_md)
878
-
879
- # 如果有上传文件,先上传文件
836
+ # 如果有上传文件,先上传文件
880
837
  if self.model and self.model.support_upload_files():
881
838
  if self.use_methodology:
882
839
  if not upload_methodology(self.model, other_files=self.files):
883
840
  if self.files:
884
- PrettyOutput.print("文件上传失败,将忽略文件列表", OutputType.WARNING)
885
- # 上传失败则回退到本地加载
841
+ PrettyOutput.print(
842
+ "文件上传失败,将忽略文件列表", OutputType.WARNING
843
+ )
844
+ # 上传失败则回退到本地加载
886
845
  msg = self.prompt
887
846
  for handler in self.input_handler:
888
847
  msg, _ = handler(msg, self)
@@ -894,7 +853,9 @@ arguments:
894
853
  self.prompt = f"{self.prompt}\n\n上传的文件包含历史对话信息,可以从中获取一些经验信息。"
895
854
  elif self.files:
896
855
  if not self.model.upload_files(self.files):
897
- PrettyOutput.print("文件上传失败,将忽略文件列表", OutputType.WARNING)
856
+ PrettyOutput.print(
857
+ "文件上传失败,将忽略文件列表", OutputType.WARNING
858
+ )
898
859
  else:
899
860
  self.prompt = f"{self.prompt}\n\n上传的文件包含历史对话信息,可以从中获取一些经验信息。"
900
861
  else:
@@ -907,7 +868,6 @@ arguments:
907
868
  self.prompt = f"{self.prompt}\n\n以下是历史类似问题的执行经验,可参考:\n{load_methodology(msg, self.get_tool_registry())}"
908
869
 
909
870
  self.first = False
910
- return history_md
911
871
 
912
872
  def clear_history(self):
913
873
  """清空对话历史但保留系统提示