jarvis-ai-assistant 0.3.1__tar.gz → 0.3.2__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 (132) hide show
  1. {jarvis_ai_assistant-0.3.1/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.2}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/jarvis.py +4 -4
  6. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/main.py +3 -4
  7. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/share_manager.py +22 -0
  8. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_agent/code_agent.py +2 -2
  9. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform_manager/main.py +109 -14
  10. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_stats/storage.py +4 -1
  11. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  12. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/LICENSE +0 -0
  13. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/MANIFEST.in +0 -0
  14. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/README.md +0 -0
  15. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/setup.cfg +0 -0
  16. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/__init__.py +0 -0
  17. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/agent_manager.py +0 -0
  18. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  19. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/config_editor.py +0 -0
  20. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  21. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/file_methodology_manager.py +0 -0
  22. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/memory_manager.py +0 -0
  23. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  24. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  25. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  26. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/prompts.py +0 -0
  27. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/protocols.py +0 -0
  28. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  29. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/shell_input_handler.py +0 -0
  30. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/task_analyzer.py +0 -0
  31. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  32. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  33. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  34. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  35. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  36. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  37. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  38. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  39. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  40. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  41. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  42. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  43. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  44. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  45. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  46. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  47. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  48. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  49. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  50. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  51. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  52. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  53. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  54. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  55. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  56. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_code_analysis/code_review.py +0 -0
  57. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_data/config_schema.json +0 -0
  58. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  59. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  60. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_git_squash/main.py +0 -0
  61. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_git_utils/git_commiter.py +0 -0
  62. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  63. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  64. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +0 -0
  65. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  66. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_methodology/main.py +0 -0
  67. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_multi_agent/__init__.py +0 -0
  68. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  69. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/__init__.py +0 -0
  70. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/ai8.py +0 -0
  71. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/base.py +0 -0
  72. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/human.py +0 -0
  73. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/kimi.py +0 -0
  74. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/openai.py +0 -0
  75. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/registry.py +0 -0
  76. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  77. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform/yuanbao.py +0 -0
  78. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  79. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_platform_manager/service.py +0 -0
  80. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/__init__.py +0 -0
  81. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/cache.py +0 -0
  82. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/cli.py +0 -0
  83. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/embedding_manager.py +0 -0
  84. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/llm_interface.py +0 -0
  85. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  86. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  87. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/reranker.py +0 -0
  88. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_rag/retriever.py +0 -0
  89. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  90. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_smart_shell/main.py +0 -0
  91. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_stats/__init__.py +0 -0
  92. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_stats/cli.py +0 -0
  93. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_stats/stats.py +0 -0
  94. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  95. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/__init__.py +0 -0
  96. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  97. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/base.py +0 -0
  98. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/clear_memory.py +0 -0
  99. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  100. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/cli/main.py +0 -0
  101. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/edit_file.py +0 -0
  102. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  103. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  104. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/generate_new_tool.py +0 -0
  105. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/methodology.py +0 -0
  106. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/read_code.py +0 -0
  107. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  108. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/registry.py +0 -0
  109. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/retrieve_memory.py +0 -0
  110. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  111. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/save_memory.py +0 -0
  112. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/search_web.py +0 -0
  113. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_tools/virtual_tty.py +0 -0
  114. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/__init__.py +0 -0
  115. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/builtin_replace_map.py +0 -0
  116. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  117. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/config.py +0 -0
  118. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/embedding.py +0 -0
  119. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  120. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/git_utils.py +0 -0
  121. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/globals.py +0 -0
  122. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/http.py +0 -0
  123. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/input.py +0 -0
  124. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/methodology.py +0 -0
  125. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/output.py +0 -0
  126. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/tag.py +0 -0
  127. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis/jarvis_utils/utils.py +0 -0
  128. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  129. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  130. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  131. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  132. {jarvis_ai_assistant-0.3.1 → jarvis_ai_assistant-0.3.2}/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.3.1
3
+ Version: 0.3.2
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "jarvis-ai-assistant"
7
- version = "0.3.1"
7
+ version = "0.3.2"
8
8
  description = "Jarvis: An AI assistant that uses tools to interact with the system"
9
9
  readme = "README.md"
10
10
  authors = [{ name = "skyfire", email = "skyfireitdiy@hotmail.com" }]
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages # type: ignore
3
3
 
4
4
  setup(
5
5
  name="jarvis-ai-assistant",
6
- version="0.3.1",
6
+ version="0.3.2",
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.3.1"
4
+ __version__ = "0.3.2"
@@ -19,17 +19,17 @@ def run_cli(
19
19
  ctx: typer.Context,
20
20
  llm_type: str = typer.Option(
21
21
  "normal",
22
- "--llm_type",
22
+ "-t", "--llm_type",
23
23
  help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
24
24
  ),
25
25
  task: Optional[str] = typer.Option(
26
- None, "-t", "--task", help="从命令行直接输入任务内容"
26
+ None, "-T", "--task", help="从命令行直接输入任务内容"
27
27
  ),
28
28
  model_group: Optional[str] = typer.Option(
29
- None, "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
29
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
30
30
  ),
31
31
  tool_group: Optional[str] = typer.Option(
32
- None, "--tool_group", help="使用的工具组,覆盖配置文件中的设置"
32
+ None, "-G", "--tool_group", help="使用的工具组,覆盖配置文件中的设置"
33
33
  ),
34
34
  config_file: Optional[str] = typer.Option(
35
35
  None, "-f", "--config", help="自定义配置文件路径"
@@ -50,13 +50,12 @@ def cli(
50
50
  ),
51
51
  llm_type: str = typer.Option(
52
52
  "normal",
53
- "--llm_type",
53
+ "-t", "--llm_type",
54
54
  help="使用的LLM类型,覆盖配置文件中的设置",
55
55
  ),
56
56
  model_group: Optional[str] = typer.Option(
57
- None, "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
58
- ),
59
- ):
57
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
58
+ ),):
60
59
  """Main entry point for Jarvis agent"""
61
60
  # Initialize environment
62
61
  init_env("欢迎使用 Jarvis AI 助手,您的智能助理已准备就绪!", config_file=config_file)
@@ -60,6 +60,28 @@ class ShareManager(ABC):
60
60
  subprocess.run(
61
61
  ["git", "clone", self.central_repo_url, self.repo_path], check=True
62
62
  )
63
+ # 检查并添加.gitignore文件
64
+ gitignore_path = os.path.join(self.repo_path, ".gitignore")
65
+ modified = False
66
+ if not os.path.exists(gitignore_path):
67
+ with open(gitignore_path, "w") as f:
68
+ f.write("__pycache__/\n")
69
+ modified = True
70
+ else:
71
+ with open(gitignore_path, "r+") as f:
72
+ content = f.read()
73
+ if "__pycache__" not in content:
74
+ f.write("\n__pycache__/\n")
75
+ modified = True
76
+
77
+ if modified:
78
+ subprocess.run(["git", "add", ".gitignore"], cwd=self.repo_path, check=True)
79
+ subprocess.run(
80
+ ["git", "commit", "-m", "chore: add __pycache__ to .gitignore"],
81
+ cwd=self.repo_path,
82
+ check=True
83
+ )
84
+ subprocess.run(["git", "push"], cwd=self.repo_path, check=True)
63
85
  else:
64
86
  PrettyOutput.print(
65
87
  f"正在更新中心{self.get_resource_type()}仓库...", OutputType.INFO
@@ -642,11 +642,11 @@ class CodeAgent:
642
642
  def cli(
643
643
  llm_type: str = typer.Option(
644
644
  "normal",
645
- "--llm_type",
645
+ "-t", "--llm_type",
646
646
  help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
647
647
  ),
648
648
  model_group: Optional[str] = typer.Option(
649
- None, "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
649
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
650
650
  ),
651
651
  requirement: Optional[str] = typer.Option(
652
652
  None, "-r", "--requirement", help="要处理的需求描述"
@@ -8,6 +8,12 @@ import sys
8
8
  from typing import Any, Dict, List, Optional
9
9
 
10
10
  import typer
11
+ from jarvis.jarvis_utils.config import (
12
+ get_normal_platform_name,
13
+ get_normal_model_name,
14
+ get_thinking_platform_name,
15
+ get_thinking_model_name,
16
+ )
11
17
 
12
18
  from jarvis.jarvis_platform.registry import PlatformRegistry
13
19
  from jarvis.jarvis_utils.input import get_multiline_input, get_single_line_input
@@ -19,22 +25,26 @@ app = typer.Typer(help="Jarvis AI 平台")
19
25
 
20
26
 
21
27
  @app.command("info")
22
- def list_platforms() -> None:
23
- """列出所有支持的平台和模型。"""
28
+ def list_platforms(
29
+ platform: Optional[str] = typer.Option(
30
+ None, "--platform", "-p", help="指定要查看的平台"
31
+ )
32
+ ) -> None:
33
+ """列出所有支持的平台和模型,或指定平台的详细信息。"""
24
34
  registry = PlatformRegistry.get_global_platform_registry()
25
- platforms = registry.get_available_platforms()
35
+ platform_names = [platform] if platform else registry.get_available_platforms()
26
36
 
27
37
  PrettyOutput.section("Supported platforms and models", OutputType.SUCCESS)
28
38
 
29
- for platform_name in platforms:
39
+ for platform_name in platform_names:
30
40
  try:
31
41
  # Create platform instance
32
- platform = registry.create_platform(platform_name)
33
- if not platform:
42
+ platform_instance = registry.create_platform(platform_name)
43
+ if not platform_instance:
34
44
  continue
35
45
 
36
46
  # Get the list of models supported by the platform
37
- models = platform.get_model_list()
47
+ models = platform_instance.get_model_list()
38
48
 
39
49
  # Print platform name
40
50
  PrettyOutput.section(f"{platform_name}", OutputType.SUCCESS)
@@ -55,13 +65,25 @@ def list_platforms() -> None:
55
65
  PrettyOutput.print(f"创建 {platform_name} 平台失败", OutputType.WARNING)
56
66
 
57
67
 
58
- def chat_with_model(platform_name: str, model_name: str, system_prompt: str) -> None:
59
- """与指定平台和模型进行对话。"""
68
+ def chat_with_model(
69
+ platform_name: str, model_name: str, system_prompt: str, llm_type: str = "normal"
70
+ ) -> None:
71
+ """与指定平台和模型进行对话。
72
+
73
+ 参数:
74
+ platform_name: 平台名称
75
+ model_name: 模型名称
76
+ system_prompt: 系统提示语
77
+ llm_type: LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)
78
+ """
60
79
  registry = PlatformRegistry.get_global_platform_registry()
61
80
  conversation_history: List[Dict[str, str]] = [] # 存储对话记录
62
81
 
63
82
  # Create platform instance
64
83
  platform = registry.create_platform(platform_name)
84
+ if platform:
85
+ platform.set_model_name(model_name)
86
+
65
87
  if not platform:
66
88
  PrettyOutput.print(f"创建平台 {platform_name} 失败", OutputType.WARNING)
67
89
  return
@@ -100,7 +122,7 @@ def chat_with_model(platform_name: str, model_name: str, system_prompt: str) ->
100
122
  # Check if it is a clear session command
101
123
  if user_input.strip() == "/clear":
102
124
  try:
103
- platform.reset()
125
+ platform.reset() # type: ignore[no-untyped-call] # type: ignore[no-untyped-call] # type: ignore[no-untyped-call]
104
126
  platform.set_model_name(model_name) # Reinitialize session
105
127
  conversation_history = [] # 重置对话记录
106
128
  PrettyOutput.print("会话已清除", OutputType.SUCCESS)
@@ -332,11 +354,32 @@ def chat_command(
332
354
  None, "--platform", "-p", help="指定要使用的平台"
333
355
  ),
334
356
  model: Optional[str] = typer.Option(None, "--model", "-m", help="指定要使用的模型"),
357
+ llm_type: str = typer.Option(
358
+ "normal",
359
+ "-t",
360
+ "--llm_type",
361
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式)",
362
+ ),
363
+ llm_group: Optional[str] = typer.Option(
364
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
365
+ ),
335
366
  ) -> None:
336
367
  """与指定平台和模型聊天。"""
368
+ # 如果未提供平台或模型参数,则从config获取默认值
369
+ platform = platform or (
370
+ get_thinking_platform_name(llm_group)
371
+ if llm_type == "thinking"
372
+ else get_normal_platform_name(llm_group)
373
+ )
374
+ model = model or (
375
+ get_thinking_model_name(llm_group)
376
+ if llm_type == "thinking"
377
+ else get_normal_model_name(llm_group)
378
+ )
379
+
337
380
  if not validate_platform_model(platform, model):
338
381
  return
339
- chat_with_model(platform, model, "") # type: ignore
382
+ chat_with_model(platform, model, "", llm_type)
340
383
 
341
384
 
342
385
  @app.command("service")
@@ -351,6 +394,9 @@ def service_command(
351
394
  ),
352
395
  ) -> None:
353
396
  """启动OpenAI兼容的API服务。"""
397
+ # 如果未提供平台或模型参数,则从config获取默认值
398
+ platform = platform or get_normal_platform_name()
399
+ model = model or get_normal_model_name()
354
400
  start_service(host=host, port=port, default_platform=platform, default_model=model)
355
401
 
356
402
 
@@ -392,6 +438,15 @@ def role_command(
392
438
  model: Optional[str] = typer.Option(
393
439
  None, "--model", "-m", help="指定要使用的模型,覆盖角色配置"
394
440
  ),
441
+ llm_type: Optional[str] = typer.Option(
442
+ None,
443
+ "-t",
444
+ "--llm_type",
445
+ help="使用的LLM类型,可选值:'normal'(普通)或 'thinking'(思考模式),覆盖角色配置",
446
+ ),
447
+ llm_group: Optional[str] = typer.Option(
448
+ None, "-g", "--llm_group", help="使用的模型组,覆盖配置文件中的设置"
449
+ ),
395
450
  ) -> None:
396
451
  """加载角色配置文件并开始对话。"""
397
452
  config_path = os.path.expanduser(config_file)
@@ -418,14 +473,54 @@ def role_command(
418
473
  PrettyOutput.print("无效的选择", OutputType.ERROR)
419
474
  return
420
475
 
476
+ # 获取llm_type,优先使用命令行参数,否则使用角色配置,默认为normal
477
+ role_llm_type = llm_type or selected_role.get("llm_type", "normal")
478
+
421
479
  # 初始化平台和模型
422
- platform_name = platform or selected_role["platform"]
423
- model_name = model or selected_role["model"]
480
+ # 如果提供了platform或model参数,优先使用命令行参数
481
+ # 否则,如果提供了llm_group,根据llm_type从配置中获取
482
+ # 最后才使用角色配置中的platform和model
483
+ if platform:
484
+ platform_name = platform
485
+ elif llm_group:
486
+ platform_name = (
487
+ get_thinking_platform_name(llm_group)
488
+ if role_llm_type == "thinking"
489
+ else get_normal_platform_name(llm_group)
490
+ )
491
+ else:
492
+ platform_name = selected_role.get("platform")
493
+ if not platform_name:
494
+ # 如果角色配置中没有platform,使用默认配置
495
+ platform_name = (
496
+ get_thinking_platform_name()
497
+ if role_llm_type == "thinking"
498
+ else get_normal_platform_name()
499
+ )
500
+
501
+ if model:
502
+ model_name = model
503
+ elif llm_group:
504
+ model_name = (
505
+ get_thinking_model_name(llm_group)
506
+ if role_llm_type == "thinking"
507
+ else get_normal_model_name(llm_group)
508
+ )
509
+ else:
510
+ model_name = selected_role.get("model")
511
+ if not model_name:
512
+ # 如果角色配置中没有model,使用默认配置
513
+ model_name = (
514
+ get_thinking_model_name()
515
+ if role_llm_type == "thinking"
516
+ else get_normal_model_name()
517
+ )
518
+
424
519
  system_prompt = selected_role.get("system_prompt", "")
425
520
 
426
521
  # 开始对话
427
522
  PrettyOutput.print(f"已选择角色: {selected_role['name']}", OutputType.SUCCESS)
428
- chat_with_model(platform_name, model_name, system_prompt)
523
+ chat_with_model(platform_name, model_name, system_prompt, role_llm_type)
429
524
 
430
525
 
431
526
  def main() -> None:
@@ -12,6 +12,7 @@ from typing import Dict, List, Optional, Any
12
12
  from collections import defaultdict
13
13
  import sys
14
14
  import time
15
+ import uuid
15
16
 
16
17
 
17
18
  class StatsStorage:
@@ -76,7 +77,9 @@ class StatsStorage:
76
77
  def _save_json(self, filepath: Path, data: Dict):
77
78
  """保存JSON文件"""
78
79
  # 使用临时文件+重命名的原子操作来避免并发写入问题
79
- temp_filepath = filepath.with_suffix(".tmp")
80
+ # 使用唯一的临时文件名避免并发冲突
81
+ temp_suffix = f".tmp.{uuid.uuid4().hex[:8]}"
82
+ temp_filepath = filepath.with_suffix(temp_suffix)
80
83
  max_retries = 3
81
84
 
82
85
  for attempt in range(max_retries):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jarvis-ai-assistant
3
- Version: 0.3.1
3
+ Version: 0.3.2
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