jarvis-ai-assistant 0.3.25__py3-none-any.whl → 0.3.26__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jarvis/__init__.py +1 -1
- jarvis/jarvis_agent/__init__.py +4 -0
- jarvis/jarvis_rag/cli.py +5 -9
- jarvis/jarvis_utils/git_utils.py +3 -8
- jarvis/jarvis_utils/utils.py +40 -8
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/METADATA +1 -1
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/RECORD +11 -11
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/top_level.txt +0 -0
jarvis/__init__.py
CHANGED
jarvis/jarvis_agent/__init__.py
CHANGED
@@ -662,6 +662,10 @@ class Agent:
|
|
662
662
|
if self.use_analysis:
|
663
663
|
self.task_analyzer.analysis_task(satisfaction_feedback)
|
664
664
|
|
665
|
+
# 当开启强制保存记忆时,在分析步骤之后触发一次记忆保存
|
666
|
+
if self.force_save_memory:
|
667
|
+
self.memory_manager.prompt_memory_save()
|
668
|
+
|
665
669
|
self._check_and_organize_memory()
|
666
670
|
|
667
671
|
if self.need_summary:
|
jarvis/jarvis_rag/cli.py
CHANGED
@@ -14,7 +14,7 @@ from langchain_community.document_loaders import (
|
|
14
14
|
from langchain_core.document_loaders.base import BaseLoader
|
15
15
|
from rich.markdown import Markdown
|
16
16
|
|
17
|
-
from jarvis.jarvis_utils.utils import init_env
|
17
|
+
from jarvis.jarvis_utils.utils import init_env, is_rag_installed, get_missing_rag_modules
|
18
18
|
from jarvis.jarvis_utils.config import (
|
19
19
|
get_rag_embedding_model,
|
20
20
|
get_rag_use_bm25,
|
@@ -469,19 +469,15 @@ def query(
|
|
469
469
|
raise typer.Exit(code=1)
|
470
470
|
|
471
471
|
|
472
|
-
_RAG_INSTALLED = False
|
473
|
-
try:
|
474
|
-
import langchain # noqa
|
475
472
|
|
476
|
-
_RAG_INSTALLED = True
|
477
|
-
except ImportError:
|
478
|
-
pass
|
479
473
|
|
480
474
|
|
481
475
|
def _check_rag_dependencies():
|
482
|
-
if not
|
476
|
+
if not is_rag_installed():
|
477
|
+
missing = get_missing_rag_modules()
|
478
|
+
missing_str = f"缺少依赖: {', '.join(missing)}。" if missing else ""
|
483
479
|
PrettyOutput.print(
|
484
|
-
"RAG
|
480
|
+
f"RAG依赖项未安装或不完整。{missing_str}请运行 'pip install \"jarvis-ai-assistant[rag]\"' 后重试。",
|
485
481
|
OutputType.ERROR,
|
486
482
|
)
|
487
483
|
raise typer.Exit(code=1)
|
jarvis/jarvis_utils/git_utils.py
CHANGED
@@ -19,6 +19,7 @@ from typing import Any, Dict, List, Set, Tuple
|
|
19
19
|
from jarvis.jarvis_utils.config import get_data_dir, is_confirm_before_apply_patch
|
20
20
|
from jarvis.jarvis_utils.output import OutputType, PrettyOutput
|
21
21
|
from jarvis.jarvis_utils.input import user_confirm
|
22
|
+
from jarvis.jarvis_utils.utils import is_rag_installed
|
22
23
|
|
23
24
|
|
24
25
|
def find_git_root_and_cd(start_dir: str = ".") -> str:
|
@@ -427,14 +428,8 @@ def check_and_update_git_repo(repo_path: str) -> bool:
|
|
427
428
|
is_uv_env = True
|
428
429
|
|
429
430
|
# 根据环境选择安装命令
|
430
|
-
# 检测是否安装了 RAG
|
431
|
-
rag_installed =
|
432
|
-
try:
|
433
|
-
import langchain # noqa
|
434
|
-
|
435
|
-
rag_installed = True
|
436
|
-
except ImportError:
|
437
|
-
pass
|
431
|
+
# 检测是否安装了 RAG 特性(更精确)
|
432
|
+
rag_installed = is_rag_installed()
|
438
433
|
|
439
434
|
# 根据环境和 RAG 特性选择安装命令
|
440
435
|
if rag_installed:
|
jarvis/jarvis_utils/utils.py
CHANGED
@@ -65,6 +65,41 @@ COMMAND_MAPPING = {
|
|
65
65
|
"jmo": "jarvis-memory-organizer",
|
66
66
|
}
|
67
67
|
|
68
|
+
# RAG 依赖检测工具函数(更精确)
|
69
|
+
_RAG_REQUIRED_MODULES = [
|
70
|
+
"langchain",
|
71
|
+
"langchain_community",
|
72
|
+
"chromadb",
|
73
|
+
"sentence_transformers",
|
74
|
+
"rank_bm25",
|
75
|
+
"unstructured",
|
76
|
+
]
|
77
|
+
_RAG_OPTIONAL_MODULES = [
|
78
|
+
"langchain_huggingface",
|
79
|
+
]
|
80
|
+
|
81
|
+
|
82
|
+
def get_missing_rag_modules() -> List[str]:
|
83
|
+
"""
|
84
|
+
返回缺失的 RAG 关键依赖模块列表。
|
85
|
+
仅检查必要模块,不导入模块,避免副作用。
|
86
|
+
"""
|
87
|
+
try:
|
88
|
+
from importlib.util import find_spec
|
89
|
+
|
90
|
+
missing = [m for m in _RAG_REQUIRED_MODULES if find_spec(m) is None]
|
91
|
+
return missing
|
92
|
+
except Exception:
|
93
|
+
# 任何异常都视为无法确认,保持保守策略
|
94
|
+
return _RAG_REQUIRED_MODULES[:] # 视为全部缺失
|
95
|
+
|
96
|
+
|
97
|
+
def is_rag_installed() -> bool:
|
98
|
+
"""
|
99
|
+
更准确的 RAG 安装检测:确认关键依赖模块均可用。
|
100
|
+
"""
|
101
|
+
return len(get_missing_rag_modules()) == 0
|
102
|
+
|
68
103
|
|
69
104
|
def _setup_signal_handler() -> None:
|
70
105
|
"""设置SIGINT信号处理函数"""
|
@@ -139,14 +174,11 @@ def _check_pip_updates() -> bool:
|
|
139
174
|
if uv_path.exists():
|
140
175
|
is_uv_env = True
|
141
176
|
|
142
|
-
# 检测是否安装了 RAG
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
rag_installed = True
|
148
|
-
except ImportError:
|
149
|
-
pass
|
177
|
+
# 检测是否安装了 RAG 特性(更精确)
|
178
|
+
from jarvis.jarvis_utils.utils import (
|
179
|
+
is_rag_installed as _is_rag_installed,
|
180
|
+
) # 延迟导入避免潜在循环依赖
|
181
|
+
rag_installed = _is_rag_installed()
|
150
182
|
|
151
183
|
# 提供更新命令
|
152
184
|
package_spec = (
|
@@ -1,5 +1,5 @@
|
|
1
|
-
jarvis/__init__.py,sha256=
|
2
|
-
jarvis/jarvis_agent/__init__.py,sha256=
|
1
|
+
jarvis/__init__.py,sha256=iYbIKGj1PIzlv-YretRu86LOVz9abIwPUZ9co3CM1oo,74
|
2
|
+
jarvis/jarvis_agent/__init__.py,sha256=S62A_Mki77-RIli_9uNJvz27wRlu2LL3EsFuZjKBybw,37702
|
3
3
|
jarvis/jarvis_agent/agent_manager.py,sha256=mmDe26Wa1Dnyp8CkTKupcKipC-5HSuCnk-oVJseOdTg,2801
|
4
4
|
jarvis/jarvis_agent/builtin_input_handler.py,sha256=wS-FqpT3pIXwHn1dfL3SpXonUKWgVThbQueUIeyRc2U,2917
|
5
5
|
jarvis/jarvis_agent/config_editor.py,sha256=IHyuwI4SRDrqxz8lO0NNgt2F3uYAw1WEKXMxQV49bYI,1928
|
@@ -72,7 +72,7 @@ jarvis/jarvis_platform_manager/main.py,sha256=tU25oVQzEFPB8aOqPec8SgnxsapCFuHBkY
|
|
72
72
|
jarvis/jarvis_platform_manager/service.py,sha256=WG2r0JRBGfSLGdsKxqYvmaacU_ne3PTn3RkczTzUb_M,14899
|
73
73
|
jarvis/jarvis_rag/__init__.py,sha256=HRTXgnQxDuaE9x-e3r6SYqhJ5d4DSI_rrIxy2IGY6qk,320
|
74
74
|
jarvis/jarvis_rag/cache.py,sha256=Tqx_Oe-AhuWlMXHGHUaIuG6OEHoHBVZq7mL3kldtFFU,2723
|
75
|
-
jarvis/jarvis_rag/cli.py,sha256=
|
75
|
+
jarvis/jarvis_rag/cli.py,sha256=4tcB76I87QNHCSp29JDslETJSH5oWPtNYMlos-6dZu0,17532
|
76
76
|
jarvis/jarvis_rag/embedding_manager.py,sha256=SF7BW8hoZWzDhDqlOdhnX6XTw42Fx2GKs7Y_RUT1ydo,10400
|
77
77
|
jarvis/jarvis_rag/llm_interface.py,sha256=DH46Vm3AgzK1o41X7wUUYUbbOOVPgmDCxS5l6djm9eA,4561
|
78
78
|
jarvis/jarvis_rag/query_rewriter.py,sha256=LGAWZ8kwH_dpquuYqc4QWC7IXmHX3SsnPSYMWOn-nDE,4072
|
@@ -113,17 +113,17 @@ jarvis/jarvis_utils/clipboard.py,sha256=D3wzQeqg_yiH7Axs4d6MRxyNa9XxdnenH-ND2uj2
|
|
113
113
|
jarvis/jarvis_utils/config.py,sha256=44MIH-CLRYpv8ltpirnq5_EccE1fVVGQciCiWRuDYmo,18824
|
114
114
|
jarvis/jarvis_utils/embedding.py,sha256=oEOEM2qf16DMYwPsQe6srET9BknyjOdY2ef0jsp3Or8,2714
|
115
115
|
jarvis/jarvis_utils/file_processors.py,sha256=XiM248SHS7lLgQDCbORVFWqinbVDUawYxWDOsLXDxP8,3043
|
116
|
-
jarvis/jarvis_utils/git_utils.py,sha256=
|
116
|
+
jarvis/jarvis_utils/git_utils.py,sha256=X-j4aopmzmAW8Uv5rs3SDRnsAQYwJRnR6gR8yxXGEWg,23500
|
117
117
|
jarvis/jarvis_utils/globals.py,sha256=aTrOHcCgPAeZFLFIWMAMiJCYlmr4XhdFZf5gZ745hnE,8900
|
118
118
|
jarvis/jarvis_utils/http.py,sha256=eRhV3-GYuWmQ0ogq9di9WMlQkFcVb1zGCrySnOgT1x0,4392
|
119
119
|
jarvis/jarvis_utils/input.py,sha256=tGIr3-t46gT3dD-Z6Bcb5xagIifM62cAHRkk3w9p7_Q,36635
|
120
120
|
jarvis/jarvis_utils/methodology.py,sha256=3PAMHVF85IflBBblV_mMwkYXMelUML0nZYZ8MOAYUJ8,12918
|
121
121
|
jarvis/jarvis_utils/output.py,sha256=svCHLuXHe3Ta_qfoT5DxO80nyYyMfBFIKgziQS__Nmg,13632
|
122
122
|
jarvis/jarvis_utils/tag.py,sha256=f211opbbbTcSyzCDwuIK_oCnKhXPNK-RknYyGzY1yD0,431
|
123
|
-
jarvis/jarvis_utils/utils.py,sha256=
|
124
|
-
jarvis_ai_assistant-0.3.
|
125
|
-
jarvis_ai_assistant-0.3.
|
126
|
-
jarvis_ai_assistant-0.3.
|
127
|
-
jarvis_ai_assistant-0.3.
|
128
|
-
jarvis_ai_assistant-0.3.
|
129
|
-
jarvis_ai_assistant-0.3.
|
123
|
+
jarvis/jarvis_utils/utils.py,sha256=npqPuSVqCYFmcrIK_J-MqmMlRxZ9oZDbps9bT_tNI-E,63205
|
124
|
+
jarvis_ai_assistant-0.3.26.dist-info/licenses/LICENSE,sha256=AGgVgQmTqFvaztRtCAXsAMryUymB18gZif7_l2e1XOg,1063
|
125
|
+
jarvis_ai_assistant-0.3.26.dist-info/METADATA,sha256=AFxKVvM2rsHE0Y18QCxQ9bddXdJKcmk0t2S1NWKaXw4,18790
|
126
|
+
jarvis_ai_assistant-0.3.26.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
127
|
+
jarvis_ai_assistant-0.3.26.dist-info/entry_points.txt,sha256=4GcWKFxRJD-QU14gw_3ZaW4KuEVxOcZK9i270rwPdjA,1395
|
128
|
+
jarvis_ai_assistant-0.3.26.dist-info/top_level.txt,sha256=1BOxyWfzOP_ZXj8rVTDnNCJ92bBGB0rwq8N1PCpoMIs,7
|
129
|
+
jarvis_ai_assistant-0.3.26.dist-info/RECORD,,
|
File without changes
|
{jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/entry_points.txt
RENAMED
File without changes
|
{jarvis_ai_assistant-0.3.25.dist-info → jarvis_ai_assistant-0.3.26.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|