jarvis-ai-assistant 0.3.27__tar.gz → 0.3.28__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 (142) hide show
  1. {jarvis_ai_assistant-0.3.27/src/jarvis_ai_assistant.egg-info → jarvis_ai_assistant-0.3.28}/PKG-INFO +1 -1
  2. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/pyproject.toml +1 -1
  3. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/setup.py +1 -1
  4. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/__init__.py +1 -1
  5. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/__init__.py +13 -4
  6. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/agent_manager.py +6 -0
  7. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/config_editor.py +1 -1
  8. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/file_methodology_manager.py +1 -3
  9. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/jarvis.py +8 -1
  10. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/memory_manager.py +0 -1
  11. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/shell_input_handler.py +1 -1
  12. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/task_analyzer.py +1 -2
  13. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/user_interaction.py +1 -1
  14. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_agent/code_agent.py +2 -2
  15. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/code_review.py +0 -1
  16. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_git_utils/git_commiter.py +13 -4
  17. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_mcp/stdio_mcp_client.py +1 -1
  18. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_memory_organizer/memory_organizer.py +2 -5
  19. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_methodology/main.py +0 -2
  20. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_multi_agent/__init__.py +3 -3
  21. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/base.py +1 -1
  22. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/registry.py +1 -1
  23. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/yuanbao.py +0 -1
  24. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform_manager/service.py +1 -1
  25. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/cli.py +1 -1
  26. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/embedding_manager.py +0 -1
  27. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/llm_interface.py +0 -3
  28. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_smart_shell/main.py +0 -1
  29. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_stats/cli.py +2 -3
  30. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_stats/stats.py +1 -2
  31. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/clear_memory.py +1 -3
  32. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/cli/main.py +0 -1
  33. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/edit_file.py +0 -1
  34. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/generate_new_tool.py +3 -5
  35. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/registry.py +2 -3
  36. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/retrieve_memory.py +2 -3
  37. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/save_memory.py +3 -3
  38. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/search_web.py +2 -2
  39. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/sub_agent.py +20 -1
  40. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/sub_code_agent.py +17 -1
  41. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/virtual_tty.py +3 -14
  42. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/builtin_replace_map.py +4 -4
  43. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/config.py +30 -15
  44. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/git_utils.py +1 -1
  45. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/globals.py +1 -2
  46. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/methodology.py +3 -5
  47. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/output.py +1 -1
  48. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/utils.py +64 -22
  49. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28/src/jarvis_ai_assistant.egg-info}/PKG-INFO +1 -1
  50. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/LICENSE +0 -0
  51. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/MANIFEST.in +0 -0
  52. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/README.md +0 -0
  53. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/setup.cfg +0 -0
  54. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/builtin_input_handler.py +0 -0
  55. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/config.py +0 -0
  56. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/edit_file_handler.py +0 -0
  57. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/event_bus.py +0 -0
  58. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/main.py +0 -0
  59. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/methodology_share_manager.py +0 -0
  60. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/output_handler.py +0 -0
  61. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/prompt_builder.py +0 -0
  62. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/prompt_manager.py +0 -0
  63. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/prompts.py +0 -0
  64. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/protocols.py +0 -0
  65. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/run_loop.py +0 -0
  66. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/session_manager.py +0 -0
  67. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/share_manager.py +0 -0
  68. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/task_manager.py +0 -0
  69. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/tool_executor.py +0 -0
  70. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_agent/tool_share_manager.py +0 -0
  71. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_agent/__init__.py +0 -0
  72. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_agent/lint.py +0 -0
  73. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/__init__.py +0 -0
  74. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/c_cpp.py +0 -0
  75. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/csharp.py +0 -0
  76. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/data_format.py +0 -0
  77. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/devops.py +0 -0
  78. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/docs.py +0 -0
  79. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/go.py +0 -0
  80. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/infrastructure.py +0 -0
  81. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/java.py +0 -0
  82. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/javascript.py +0 -0
  83. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/kotlin.py +0 -0
  84. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/loader.py +0 -0
  85. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/php.py +0 -0
  86. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/python.py +0 -0
  87. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/ruby.py +0 -0
  88. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/rust.py +0 -0
  89. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/shell.py +0 -0
  90. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/sql.py +0 -0
  91. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/swift.py +0 -0
  92. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_code_analysis/checklists/web.py +0 -0
  93. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_data/config_schema.json +0 -0
  94. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 +0 -0
  95. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_git_squash/__init__.py +0 -0
  96. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_git_squash/main.py +0 -0
  97. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_mcp/__init__.py +0 -0
  98. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_mcp/sse_mcp_client.py +0 -0
  99. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_mcp/streamable_mcp_client.py +0 -0
  100. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_memory_organizer/__init__.py +0 -0
  101. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_multi_agent/main.py +0 -0
  102. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/__init__.py +0 -0
  103. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/ai8.py +0 -0
  104. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/human.py +0 -0
  105. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/kimi.py +0 -0
  106. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/openai.py +0 -0
  107. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform/tongyi.py +0 -0
  108. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform_manager/__init__.py +0 -0
  109. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_platform_manager/main.py +0 -0
  110. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/__init__.py +0 -0
  111. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/cache.py +0 -0
  112. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/query_rewriter.py +0 -0
  113. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/rag_pipeline.py +0 -0
  114. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/reranker.py +0 -0
  115. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_rag/retriever.py +0 -0
  116. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_smart_shell/__init__.py +0 -0
  117. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_stats/__init__.py +0 -0
  118. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_stats/storage.py +0 -0
  119. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_stats/visualizer.py +0 -0
  120. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/__init__.py +0 -0
  121. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/ask_user.py +0 -0
  122. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/base.py +0 -0
  123. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/cli/__init__.py +0 -0
  124. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/execute_script.py +0 -0
  125. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/file_analyzer.py +0 -0
  126. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/methodology.py +0 -0
  127. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/read_code.py +0 -0
  128. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/read_webpage.py +0 -0
  129. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_tools/rewrite_file.py +0 -0
  130. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/__init__.py +0 -0
  131. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/clipboard.py +0 -0
  132. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/embedding.py +0 -0
  133. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/file_processors.py +0 -0
  134. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/fzf.py +0 -0
  135. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/http.py +0 -0
  136. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/input.py +0 -0
  137. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis/jarvis_utils/tag.py +0 -0
  138. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis_ai_assistant.egg-info/SOURCES.txt +0 -0
  139. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis_ai_assistant.egg-info/dependency_links.txt +0 -0
  140. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis_ai_assistant.egg-info/entry_points.txt +0 -0
  141. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/src/jarvis_ai_assistant.egg-info/requires.txt +0 -0
  142. {jarvis_ai_assistant-0.3.27 → jarvis_ai_assistant-0.3.28}/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.27
3
+ Version: 0.3.28
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.27"
7
+ version = "0.3.28"
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.27",
6
+ version="0.3.28",
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.27"
4
+ __version__ = "0.3.28"
@@ -67,7 +67,10 @@ from jarvis.jarvis_utils.tag import ot
67
67
 
68
68
 
69
69
  def show_agent_startup_stats(
70
- agent_name: str, model_name: str, tool_registry_instance: Optional[Any] = None
70
+ agent_name: str,
71
+ model_name: str,
72
+ tool_registry_instance: Optional[Any] = None,
73
+ platform_name: Optional[str] = None,
71
74
  ) -> None:
72
75
  """输出启动时的统计信息
73
76
 
@@ -112,7 +115,8 @@ def show_agent_startup_stats(
112
115
  current_dir = os.getcwd()
113
116
 
114
117
  # 构建欢迎信息
115
- welcome_message = f"{agent_name} 初始化完成 - 使用 {model_name} 模型"
118
+ platform = platform_name or get_normal_platform_name()
119
+ welcome_message = f"{agent_name} 初始化完成 - 使用 {platform} 平台 {model_name} 模型"
116
120
 
117
121
  stats_parts = [
118
122
  f"📚 本地方法论: [bold cyan]{methodology_count}[/bold cyan]",
@@ -326,7 +330,12 @@ class Agent:
326
330
  self._setup_system_prompt()
327
331
 
328
332
  # 输出统计信息(包含欢迎信息)
329
- show_agent_startup_stats(name, self.model.name(), self.get_tool_registry()) # type: ignore
333
+ show_agent_startup_stats(
334
+ name,
335
+ self.model.name(),
336
+ self.get_tool_registry(), # type: ignore
337
+ platform_name=self.model.platform_name(), # type: ignore
338
+ )
330
339
 
331
340
  def _init_model(self, model_group: Optional[str]):
332
341
  """初始化模型平台(统一使用 normal 平台/模型)"""
@@ -639,7 +648,7 @@ class Agent:
639
648
  ) # type: ignore
640
649
 
641
650
  return summary
642
- except Exception as e:
651
+ except Exception:
643
652
  PrettyOutput.print("总结对话历史失败", OutputType.ERROR)
644
653
  return ""
645
654
 
@@ -25,10 +25,14 @@ class AgentManager:
25
25
  model_group: Optional[str] = None,
26
26
  tool_group: Optional[str] = None,
27
27
  restore_session: bool = False,
28
+ use_methodology: Optional[bool] = None,
29
+ use_analysis: Optional[bool] = None,
28
30
  ):
29
31
  self.model_group = model_group
30
32
  self.tool_group = tool_group
31
33
  self.restore_session = restore_session
34
+ self.use_methodology = use_methodology
35
+ self.use_analysis = use_analysis
32
36
  self.agent: Optional[Agent] = None
33
37
 
34
38
  def initialize(self) -> Agent:
@@ -45,6 +49,8 @@ class AgentManager:
45
49
  input_handler=[shell_input_handler, builtin_input_handler],
46
50
  output_handler=[ToolRegistry()], # type: ignore
47
51
  need_summary=False,
52
+ use_methodology=self.use_methodology,
53
+ use_analysis=self.use_analysis,
48
54
  )
49
55
 
50
56
  # 尝试恢复会话
@@ -51,7 +51,7 @@ class ConfigEditor:
51
51
  raise typer.Exit(code=1)
52
52
  else:
53
53
  PrettyOutput.print(
54
- f"No suitable editor found. Please install one of: vim, nano, emacs, code",
54
+ "No suitable editor found. Please install one of: vim, nano, emacs, code",
55
55
  OutputType.ERROR,
56
56
  )
57
57
  raise typer.Exit(code=1)
@@ -5,7 +5,6 @@
5
5
  """
6
6
  import os
7
7
  import tempfile
8
- from typing import List, Optional
9
8
 
10
9
  from jarvis.jarvis_utils.methodology import load_methodology, upload_methodology
11
10
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
@@ -46,7 +45,6 @@ class FileMethodologyManager:
46
45
  self._load_local_methodology()
47
46
  else:
48
47
  # 上传成功
49
- from jarvis.jarvis_agent.memory_manager import MemoryManager
50
48
 
51
49
  if self.agent.files:
52
50
  self.agent.session.prompt = f"{self.agent.session.prompt}\n\n上传的文件包含历史对话信息和方法论文件,可以从中获取一些经验信息。"
@@ -75,7 +73,7 @@ class FileMethodologyManager:
75
73
 
76
74
  from jarvis.jarvis_agent.memory_manager import MemoryManager
77
75
 
78
- memory_manager = MemoryManager(self.agent)
76
+ MemoryManager(self.agent)
79
77
  methodology = load_methodology(
80
78
  msg,
81
79
  self.agent.get_tool_registry(),
@@ -21,7 +21,6 @@ import jarvis.jarvis_utils.utils as jutils
21
21
  from jarvis.jarvis_utils.input import user_confirm, get_single_line_input
22
22
  from jarvis.jarvis_utils.fzf import fzf_select
23
23
  import os
24
- import sys
25
24
  import subprocess
26
25
  from pathlib import Path
27
26
  import yaml # type: ignore
@@ -516,6 +515,12 @@ def run_cli(
516
515
  "--interactive-config",
517
516
  help="启动交互式配置向导(基于当前配置补充设置)",
518
517
  ),
518
+ disable_methodology_analysis: bool = typer.Option(
519
+ False,
520
+ "-D",
521
+ "--disable-methodology-analysis",
522
+ help="禁用方法论和任务分析(覆盖配置文件设置)",
523
+ ),
519
524
  ) -> None:
520
525
  """Jarvis AI assistant command-line interface."""
521
526
  if ctx.invoked_subcommand is not None:
@@ -562,6 +567,8 @@ def run_cli(
562
567
  model_group=model_group,
563
568
  tool_group=tool_group,
564
569
  restore_session=restore_session,
570
+ use_methodology=False if disable_methodology_analysis else None,
571
+ use_analysis=False if disable_methodology_analysis else None,
565
572
  )
566
573
  agent_manager.initialize()
567
574
  agent_manager.run_task(task)
@@ -3,7 +3,6 @@
3
3
  记忆管理器模块
4
4
  负责处理Agent的记忆保存和检索功能
5
5
  """
6
- from typing import Optional, Dict, List, Any
7
6
 
8
7
  from jarvis.jarvis_utils.globals import get_all_memory_tags
9
8
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
@@ -28,7 +28,7 @@ def shell_input_handler(user_input: str, agent: Any) -> Tuple[str, bool]:
28
28
  # If any line contains the no-confirm marker, skip the pre-execution confirmation
29
29
  no_confirm = any(marker in c for c in cmdline)
30
30
 
31
- if no_confirm or user_confirm(f"是否要执行以上shell脚本?", default=True):
31
+ if no_confirm or user_confirm("是否要执行以上shell脚本?", default=True):
32
32
  from jarvis.jarvis_tools.registry import ToolRegistry
33
33
 
34
34
  output = ToolRegistry().handle_tool_calls(
@@ -3,7 +3,6 @@
3
3
  任务分析器模块
4
4
  负责处理任务分析和方法论生成功能
5
5
  """
6
- from typing import Optional
7
6
 
8
7
  from jarvis.jarvis_utils.globals import get_interrupt, set_interrupt
9
8
 
@@ -44,7 +43,7 @@ class TaskAnalyzer:
44
43
  # 循环处理工具调用,直到没有工具调用为止
45
44
  self._process_analysis_loop()
46
45
 
47
- except Exception as e:
46
+ except Exception:
48
47
  PrettyOutput.print("分析失败", OutputType.ERROR)
49
48
  finally:
50
49
  # 标记已完成一次分析,避免事件回调重复执行
@@ -6,7 +6,7 @@ UserInteractionHandler: 抽象用户交互(多行输入与确认)逻辑,
6
6
  - 仅提供封装,不直接修改 Agent 的现有调用
7
7
  - 后续步骤在 Agent 中以旁路方式接入,保持向后兼容
8
8
  """
9
- from typing import Callable, Optional
9
+ from typing import Callable
10
10
 
11
11
 
12
12
 
@@ -262,7 +262,7 @@ class CodeAgent:
262
262
  if has_uncommitted_changes():
263
263
 
264
264
  git_commiter = GitCommitTool()
265
- git_commiter.execute({"prefix": prefix, "suffix": suffix, "agent": self.agent})
265
+ git_commiter.execute({"prefix": prefix, "suffix": suffix, "agent": self.agent, "model_group": getattr(self.agent.model, "model_group", None)})
266
266
 
267
267
  def _init_env(self, prefix: str, suffix: str) -> None:
268
268
  """初始化环境,组合以下功能:
@@ -522,7 +522,7 @@ class CodeAgent:
522
522
  check=True,
523
523
  )
524
524
  git_commiter = GitCommitTool()
525
- git_commiter.execute({"prefix": prefix, "suffix": suffix, "agent": self.agent})
525
+ git_commiter.execute({"prefix": prefix, "suffix": suffix, "agent": self.agent, "model_group": getattr(self.agent.model, "model_group", None)})
526
526
 
527
527
  # 在用户接受commit后,根据配置决定是否保存记忆
528
528
  if self.agent.force_save_memory:
@@ -3,7 +3,6 @@ import os
3
3
  import re
4
4
  import subprocess
5
5
  import tempfile
6
- import sys
7
6
  from typing import Any, Dict, List, Optional
8
7
 
9
8
  import typer
@@ -2,7 +2,6 @@
2
2
  import os
3
3
  import re
4
4
  import subprocess
5
- import sys
6
5
  import tempfile
7
6
  from typing import Any, Dict, Optional
8
7
 
@@ -138,7 +137,7 @@ class GitCommitTool:
138
137
  base_prompt = (
139
138
  custom_prompt
140
139
  if custom_prompt
141
- else f"""根据代码差异生成提交信息:
140
+ else """根据代码差异生成提交信息:
142
141
  提交信息应使用中文书写
143
142
  # 格式模板
144
143
  必须使用以下格式:
@@ -219,11 +218,21 @@ commit信息
219
218
  platform = PlatformRegistry().create_platform(platform_name)
220
219
  if platform and model_name:
221
220
  platform.set_model_name(model_name)
222
- if model_group:
223
- platform.model_group = model_group
221
+ if platform and model_group:
222
+ try:
223
+ platform.set_model_group(model_group)
224
+ except Exception:
225
+ # 兼容早期实现
226
+ platform.model_group = model_group # type: ignore
224
227
  else:
225
228
  platform = PlatformRegistry().get_normal_platform()
226
229
 
230
+ # 跳过模型可用性校验:
231
+ # 为避免某些平台/代理不支持 get_model_list 接口导致的噪音日志(如 404),
232
+ # 这里默认不调用 platform.get_model_list() 进行模型可用性校验。
233
+ # 如果未来需要恢复校验,可参考被移除的逻辑。
234
+ # no-op
235
+
227
236
  # Ensure platform is not None
228
237
  if not platform:
229
238
  return {
@@ -73,7 +73,7 @@ class StdioMcpClient(McpClient):
73
73
  f"初始化失败: {response.get('error', 'Unknown error')}"
74
74
  )
75
75
 
76
- result = response["result"]
76
+ response["result"]
77
77
 
78
78
  # 发送initialized通知 - 使用正确的方法名格式
79
79
  self._send_notification("notifications/initialized", {})
@@ -7,14 +7,11 @@
7
7
  """
8
8
 
9
9
  import json
10
- import sys
11
10
  from collections import defaultdict
12
- from itertools import combinations
13
11
  from pathlib import Path
14
- from typing import Dict, List, Set, Tuple, Any, Optional
12
+ from typing import Dict, List, Set, Any, Optional
15
13
 
16
14
  import typer
17
- import yaml
18
15
 
19
16
  from jarvis.jarvis_utils.config import (
20
17
  get_data_dir,
@@ -311,7 +308,7 @@ tags:
311
308
  group_memories = [memories[i] for i in original_indices]
312
309
 
313
310
  # 显示将要合并的记忆(先拼接后统一打印,避免循环逐条输出)
314
- lines = [f"", f"准备合并 {len(group_memories)} 个记忆:"]
311
+ lines = ["", f"准备合并 {len(group_memories)} 个记忆:"]
315
312
  for mem in group_memories:
316
313
  lines.append(
317
314
  f" - ID: {mem.get('id', '未知')}, "
@@ -11,8 +11,6 @@
11
11
  import hashlib
12
12
  import json
13
13
  import os
14
- import sys
15
- from typing import Optional
16
14
 
17
15
  import typer
18
16
  import yaml # type: ignore
@@ -73,7 +73,7 @@ content: |2
73
73
  if len(send_messages) > 1:
74
74
  return (
75
75
  False,
76
- f"Send multiple messages, please only send one message at a time.",
76
+ "Send multiple messages, please only send one message at a time.",
77
77
  )
78
78
  if len(send_messages) == 0:
79
79
  return False, ""
@@ -100,7 +100,7 @@ content: |2
100
100
  msg = yaml.safe_load(item)
101
101
  if "to" in msg and "content" in msg:
102
102
  ret.append(msg)
103
- except Exception as e:
103
+ except Exception:
104
104
  continue
105
105
  return ret
106
106
 
@@ -161,7 +161,7 @@ content: {msg['content']}
161
161
  """
162
162
  to_agent_name = msg.get("to")
163
163
  if not to_agent_name:
164
- return f"消息中未指定 `to` 字段"
164
+ return "消息中未指定 `to` 字段"
165
165
 
166
166
  if to_agent_name not in self.agents_config_map:
167
167
  PrettyOutput.print(
@@ -88,7 +88,7 @@ class BasePlatform(ABC):
88
88
  PrettyOutput.print(
89
89
  f"长上下文,分批提交,共{len(inputs)}部分...", OutputType.INFO
90
90
  )
91
- prefix_prompt = f"""
91
+ prefix_prompt = """
92
92
  我将分多次提供大量内容,在我明确告诉你内容已经全部提供完毕之前,每次仅需要输出"已收到",明白请输出"开始接收输入"。
93
93
  """
94
94
  while_true(lambda: while_success(lambda: self._chat(prefix_prompt), 5), 5)
@@ -39,7 +39,7 @@ class PlatformRegistry:
39
39
  # 创建 __init__.py 使其成为 Python 包
40
40
  with open(
41
41
  os.path.join(user_platform_dir, "__init__.py"), "w", errors="ignore"
42
- ) as f:
42
+ ):
43
43
  pass
44
44
  except Exception as e:
45
45
  PrettyOutput.print(f"创建平台目录失败: {str(e)}", OutputType.ERROR)
@@ -69,7 +69,6 @@ class YuanbaoPlatform(BasePlatform):
69
69
  "X-Requested-With": "XMLHttpRequest",
70
70
  "chat_version": "v1",
71
71
  "X-Instance-ID": "5",
72
- "X-Requested-With": "XMLHttpRequest",
73
72
  "Accept": "application/json, text/plain, */*",
74
73
  "Content-Type": "application/json",
75
74
  "sec-ch-ua-mobile": "?0",
@@ -10,7 +10,7 @@ import time
10
10
  import threading
11
11
  import uuid
12
12
  from datetime import datetime
13
- from typing import Any, Dict, List, Optional, Union
13
+ from typing import Any, Dict, List, Optional
14
14
 
15
15
  import uvicorn
16
16
  from fastapi import FastAPI, HTTPException
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import sys
3
3
  from pathlib import Path
4
- from typing import Optional, List, Literal, cast, Tuple
4
+ from typing import Optional, List, Tuple
5
5
  import mimetypes
6
6
 
7
7
  import pathspec # type: ignore
@@ -43,7 +43,6 @@ class EmbeddingManager:
43
43
  try:
44
44
  # First try to load model from local cache without any network access
45
45
  try:
46
- from sentence_transformers import SentenceTransformer
47
46
  local_dir = None
48
47
  # Prefer explicit local dir via env or direct path
49
48
 
@@ -1,7 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- import os
3
- import os
4
- from abc import ABC, abstractmethod
5
2
 
6
3
  from jarvis.jarvis_agent import Agent as JarvisAgent
7
4
  from jarvis.jarvis_platform.base import BasePlatform
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  # -*- coding: utf-8 -*-
3
3
  import os
4
- import sys
5
4
  from typing import Optional, Tuple
6
5
 
7
6
  import typer
@@ -16,7 +16,6 @@ from pathlib import Path
16
16
  from .stats import StatsManager
17
17
  from jarvis.jarvis_utils.utils import init_env
18
18
  from jarvis.jarvis_utils.config import get_data_dir
19
- from jarvis.jarvis_utils.output import OutputType, PrettyOutput
20
19
 
21
20
  app = typer.Typer(help="Jarvis 统计模块命令行工具")
22
21
  console = Console()
@@ -310,7 +309,7 @@ def remove(
310
309
  unit = info.get("unit", "-")
311
310
  last_updated = info.get("last_updated", "-")
312
311
 
313
- rprint(f"\n[yellow]准备删除指标:[/yellow]")
312
+ rprint("\n[yellow]准备删除指标:[/yellow]")
314
313
  rprint(f" 名称: {metric}")
315
314
  rprint(f" 单位: {unit}")
316
315
  rprint(f" 最后更新: {last_updated}")
@@ -340,7 +339,7 @@ def demo():
340
339
  stats = StatsManager(_get_stats_dir())
341
340
 
342
341
  # 添加演示数据
343
- with console.status("[bold green]正在生成演示数据...") as status:
342
+ with console.status("[bold green]正在生成演示数据..."):
344
343
  # API响应时间
345
344
  for i in range(20):
346
345
  response_time = random.uniform(0.1, 2.0)
@@ -167,7 +167,6 @@ class StatsManager:
167
167
  """
168
168
  # 处理时间范围
169
169
  # 当未提供时间过滤参数时,默认显示全历史数据
170
- all_time = False
171
170
  if last_hours or last_days:
172
171
  if end_time is None:
173
172
  end_time = datetime.now()
@@ -177,7 +176,7 @@ class StatsManager:
177
176
  elif last_days:
178
177
  start_time = end_time - timedelta(days=last_days)
179
178
  else:
180
- all_time = True
179
+ pass
181
180
 
182
181
  if metric_name is None:
183
182
  # 显示所有指标摘要
@@ -1,6 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  import json
3
- import shutil
4
3
  from pathlib import Path
5
4
  from typing import Any, Dict, List, Optional
6
5
 
@@ -8,7 +7,6 @@ from jarvis.jarvis_utils.config import get_data_dir
8
7
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
9
8
  from jarvis.jarvis_utils.globals import (
10
9
  clear_short_term_memories,
11
- get_short_term_memories,
12
10
  short_term_memories,
13
11
  )
14
12
 
@@ -212,7 +210,7 @@ class ClearMemoryTool:
212
210
  # 生成结果报告
213
211
 
214
212
  # 详细报告
215
- report = f"# 记忆清除报告\n\n"
213
+ report = "# 记忆清除报告\n\n"
216
214
  report += f"**总计清除**: {total_removed} 条记忆\n\n"
217
215
 
218
216
  if tags:
@@ -1,4 +1,3 @@
1
- import sys
2
1
  import json
3
2
  from typing import Optional
4
3
 
@@ -123,7 +123,6 @@ class FileSearchReplaceTool:
123
123
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
124
124
 
125
125
  stdout_messages: list[str] = []
126
- stderr_messages: list[str] = []
127
126
  overall_success = False
128
127
  file_results = []
129
128
 
@@ -120,15 +120,13 @@ class generate_new_tool:
120
120
  # 注册新工具到当前的工具注册表
121
121
  success_message = f"工具 '{tool_name}' 已成功生成在 {tool_file_path}"
122
122
 
123
- registration_successful = False
124
123
  if agent:
125
124
  tool_registry = agent.get_tool_registry()
126
125
  if tool_registry:
127
126
  # 尝试加载并注册新工具
128
127
 
129
128
  if tool_registry.register_tool_by_file(str(tool_file_path)):
130
- success_message += f"\n已成功注册到当前会话的工具注册表中"
131
- registration_successful = True
129
+ success_message += "\n已成功注册到当前会话的工具注册表中"
132
130
  else:
133
131
  # 注册失败,删除已创建的文件
134
132
  PrettyOutput.print(
@@ -140,13 +138,13 @@ class generate_new_tool:
140
138
  return {
141
139
  "success": False,
142
140
  "stdout": "",
143
- "stderr": f"工具文件已生成,但注册失败。文件已被删除。",
141
+ "stderr": "工具文件已生成,但注册失败。文件已被删除。",
144
142
  }
145
143
  else:
146
144
  PrettyOutput.print(
147
145
  "未找到工具注册表,无法自动注册工具", OutputType.WARNING
148
146
  )
149
- success_message += f"\n注册到当前会话失败,可能需要重新启动Jarvis"
147
+ success_message += "\n注册到当前会话失败,可能需要重新启动Jarvis"
150
148
 
151
149
  # 检查并安装缺失的依赖
152
150
  try:
@@ -15,7 +15,6 @@ from jarvis.jarvis_mcp.stdio_mcp_client import StdioMcpClient
15
15
  from jarvis.jarvis_mcp.streamable_mcp_client import StreamableMcpClient
16
16
  from jarvis.jarvis_tools.base import Tool
17
17
  from jarvis.jarvis_utils.config import get_data_dir, get_tool_load_dirs
18
- from jarvis.jarvis_utils.input import user_confirm
19
18
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
20
19
  from jarvis.jarvis_utils.tag import ct, ot
21
20
  from jarvis.jarvis_utils.utils import is_context_overflow, daily_check_git_updates
@@ -128,7 +127,7 @@ class ToolRegistry(OutputHandlerProtocol):
128
127
  """加载工具"""
129
128
  tools = self.get_all_tools()
130
129
  if tools:
131
- tools_prompt = f"<tools_section>\n"
130
+ tools_prompt = "<tools_section>\n"
132
131
  tools_prompt += " <header>## 可用工具:</header>\n"
133
132
  tools_prompt += " <tools_list>\n"
134
133
  for tool in tools:
@@ -202,7 +201,7 @@ class ToolRegistry(OutputHandlerProtocol):
202
201
  def _get_tool_stats(self) -> Dict[str, int]:
203
202
  """从数据目录获取工具调用统计"""
204
203
  from jarvis.jarvis_stats.stats import StatsManager
205
- from datetime import datetime, timedelta
204
+ from datetime import datetime
206
205
 
207
206
  # 获取所有工具的统计数据
208
207
  tool_stats = {}
@@ -1,6 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  import json
3
- import random
4
3
  from pathlib import Path
5
4
  from typing import Any, Dict, List, Optional
6
5
 
@@ -170,7 +169,7 @@ class RetrieveMemoryTool:
170
169
  pass
171
170
 
172
171
  # 格式化为Markdown输出
173
- markdown_output = f"# 记忆检索结果\n\n"
172
+ markdown_output = "# 记忆检索结果\n\n"
174
173
  markdown_output += f"**检索到 {len(all_memories)} 条记忆**\n\n"
175
174
 
176
175
  if tags:
@@ -201,7 +200,7 @@ class RetrieveMemoryTool:
201
200
  if k not in ["id", "type", "tags", "created_at", "content"]
202
201
  }
203
202
  if metadata:
204
- markdown_output += f"**其他信息**:\n"
203
+ markdown_output += "**其他信息**:\n"
205
204
  for key, value in metadata.items():
206
205
  markdown_output += f"- {key}: {value}\n"
207
206
  markdown_output += "\n"
@@ -3,7 +3,7 @@ import json
3
3
  import time
4
4
  from datetime import datetime
5
5
  from pathlib import Path
6
- from typing import Any, Dict, List
6
+ from typing import Any, Dict
7
7
 
8
8
  from jarvis.jarvis_utils.config import get_data_dir
9
9
  from jarvis.jarvis_utils.output import OutputType, PrettyOutput
@@ -157,8 +157,8 @@ class SaveMemoryTool:
157
157
  success_count += 1
158
158
 
159
159
  # 打印单条记忆保存信息
160
- memory_type = memory_data["memory_type"]
161
- tags = memory_data.get("tags", [])
160
+ memory_data["memory_type"]
161
+ memory_data.get("tags", [])
162
162
 
163
163
  except Exception as e:
164
164
  failed_count += 1
@@ -54,7 +54,7 @@ class SearchWebTool:
54
54
  break
55
55
 
56
56
  url = r["href"]
57
- title = r.get("title", url)
57
+ r.get("title", url)
58
58
 
59
59
  try:
60
60
 
@@ -79,7 +79,7 @@ class SearchWebTool:
79
79
  "success": False,
80
80
  }
81
81
 
82
- url_list_str = "\n".join(f" - {u}" for u in visited_urls)
82
+ "\n".join(f" - {u}" for u in visited_urls)
83
83
 
84
84
  summary_prompt = f"请为查询“{query}”总结以下内容:\n\n{full_content}"
85
85