jarvis-ai-assistant 0.7.8__py3-none-any.whl → 1.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jarvis/__init__.py +1 -1
- jarvis/jarvis_agent/__init__.py +567 -222
- jarvis/jarvis_agent/agent_manager.py +19 -12
- jarvis/jarvis_agent/builtin_input_handler.py +79 -11
- jarvis/jarvis_agent/config_editor.py +7 -2
- jarvis/jarvis_agent/event_bus.py +24 -13
- jarvis/jarvis_agent/events.py +19 -1
- jarvis/jarvis_agent/file_context_handler.py +67 -64
- jarvis/jarvis_agent/file_methodology_manager.py +38 -24
- jarvis/jarvis_agent/jarvis.py +186 -114
- jarvis/jarvis_agent/language_extractors/__init__.py +8 -1
- jarvis/jarvis_agent/language_extractors/c_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/cpp_extractor.py +9 -4
- jarvis/jarvis_agent/language_extractors/go_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/java_extractor.py +27 -20
- jarvis/jarvis_agent/language_extractors/javascript_extractor.py +22 -17
- jarvis/jarvis_agent/language_extractors/python_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/rust_extractor.py +7 -4
- jarvis/jarvis_agent/language_extractors/typescript_extractor.py +22 -17
- jarvis/jarvis_agent/language_support_info.py +250 -219
- jarvis/jarvis_agent/main.py +19 -23
- jarvis/jarvis_agent/memory_manager.py +9 -6
- jarvis/jarvis_agent/methodology_share_manager.py +21 -15
- jarvis/jarvis_agent/output_handler.py +4 -2
- jarvis/jarvis_agent/prompt_builder.py +7 -6
- jarvis/jarvis_agent/prompt_manager.py +113 -8
- jarvis/jarvis_agent/prompts.py +317 -85
- jarvis/jarvis_agent/protocols.py +5 -2
- jarvis/jarvis_agent/run_loop.py +192 -32
- jarvis/jarvis_agent/session_manager.py +7 -3
- jarvis/jarvis_agent/share_manager.py +23 -13
- jarvis/jarvis_agent/shell_input_handler.py +12 -8
- jarvis/jarvis_agent/stdio_redirect.py +25 -26
- jarvis/jarvis_agent/task_analyzer.py +29 -23
- jarvis/jarvis_agent/task_list.py +869 -0
- jarvis/jarvis_agent/task_manager.py +26 -23
- jarvis/jarvis_agent/tool_executor.py +6 -5
- jarvis/jarvis_agent/tool_share_manager.py +24 -14
- jarvis/jarvis_agent/user_interaction.py +3 -3
- jarvis/jarvis_agent/utils.py +9 -1
- jarvis/jarvis_agent/web_bridge.py +37 -17
- jarvis/jarvis_agent/web_output_sink.py +5 -2
- jarvis/jarvis_agent/web_server.py +165 -36
- jarvis/jarvis_c2rust/__init__.py +1 -1
- jarvis/jarvis_c2rust/cli.py +260 -141
- jarvis/jarvis_c2rust/collector.py +37 -18
- jarvis/jarvis_c2rust/constants.py +60 -0
- jarvis/jarvis_c2rust/library_replacer.py +242 -1010
- jarvis/jarvis_c2rust/library_replacer_checkpoint.py +133 -0
- jarvis/jarvis_c2rust/library_replacer_llm.py +287 -0
- jarvis/jarvis_c2rust/library_replacer_loader.py +191 -0
- jarvis/jarvis_c2rust/library_replacer_output.py +134 -0
- jarvis/jarvis_c2rust/library_replacer_prompts.py +124 -0
- jarvis/jarvis_c2rust/library_replacer_utils.py +188 -0
- jarvis/jarvis_c2rust/llm_module_agent.py +98 -1044
- jarvis/jarvis_c2rust/llm_module_agent_apply.py +170 -0
- jarvis/jarvis_c2rust/llm_module_agent_executor.py +288 -0
- jarvis/jarvis_c2rust/llm_module_agent_loader.py +170 -0
- jarvis/jarvis_c2rust/llm_module_agent_prompts.py +268 -0
- jarvis/jarvis_c2rust/llm_module_agent_types.py +57 -0
- jarvis/jarvis_c2rust/llm_module_agent_utils.py +150 -0
- jarvis/jarvis_c2rust/llm_module_agent_validator.py +119 -0
- jarvis/jarvis_c2rust/loaders.py +28 -10
- jarvis/jarvis_c2rust/models.py +5 -2
- jarvis/jarvis_c2rust/optimizer.py +192 -1974
- jarvis/jarvis_c2rust/optimizer_build_fix.py +286 -0
- jarvis/jarvis_c2rust/optimizer_clippy.py +766 -0
- jarvis/jarvis_c2rust/optimizer_config.py +49 -0
- jarvis/jarvis_c2rust/optimizer_docs.py +183 -0
- jarvis/jarvis_c2rust/optimizer_options.py +48 -0
- jarvis/jarvis_c2rust/optimizer_progress.py +469 -0
- jarvis/jarvis_c2rust/optimizer_report.py +52 -0
- jarvis/jarvis_c2rust/optimizer_unsafe.py +309 -0
- jarvis/jarvis_c2rust/optimizer_utils.py +469 -0
- jarvis/jarvis_c2rust/optimizer_visibility.py +185 -0
- jarvis/jarvis_c2rust/scanner.py +229 -166
- jarvis/jarvis_c2rust/transpiler.py +531 -2732
- jarvis/jarvis_c2rust/transpiler_agents.py +503 -0
- jarvis/jarvis_c2rust/transpiler_build.py +1294 -0
- jarvis/jarvis_c2rust/transpiler_codegen.py +204 -0
- jarvis/jarvis_c2rust/transpiler_compile.py +146 -0
- jarvis/jarvis_c2rust/transpiler_config.py +178 -0
- jarvis/jarvis_c2rust/transpiler_context.py +122 -0
- jarvis/jarvis_c2rust/transpiler_executor.py +516 -0
- jarvis/jarvis_c2rust/transpiler_generation.py +278 -0
- jarvis/jarvis_c2rust/transpiler_git.py +163 -0
- jarvis/jarvis_c2rust/transpiler_mod_utils.py +225 -0
- jarvis/jarvis_c2rust/transpiler_modules.py +336 -0
- jarvis/jarvis_c2rust/transpiler_planning.py +394 -0
- jarvis/jarvis_c2rust/transpiler_review.py +1196 -0
- jarvis/jarvis_c2rust/transpiler_symbols.py +176 -0
- jarvis/jarvis_c2rust/utils.py +269 -79
- jarvis/jarvis_code_agent/after_change.py +233 -0
- jarvis/jarvis_code_agent/build_validation_config.py +37 -30
- jarvis/jarvis_code_agent/builtin_rules.py +68 -0
- jarvis/jarvis_code_agent/code_agent.py +976 -1517
- jarvis/jarvis_code_agent/code_agent_build.py +227 -0
- jarvis/jarvis_code_agent/code_agent_diff.py +246 -0
- jarvis/jarvis_code_agent/code_agent_git.py +525 -0
- jarvis/jarvis_code_agent/code_agent_impact.py +177 -0
- jarvis/jarvis_code_agent/code_agent_lint.py +283 -0
- jarvis/jarvis_code_agent/code_agent_llm.py +159 -0
- jarvis/jarvis_code_agent/code_agent_postprocess.py +105 -0
- jarvis/jarvis_code_agent/code_agent_prompts.py +46 -0
- jarvis/jarvis_code_agent/code_agent_rules.py +305 -0
- jarvis/jarvis_code_agent/code_analyzer/__init__.py +52 -48
- jarvis/jarvis_code_agent/code_analyzer/base_language.py +12 -10
- jarvis/jarvis_code_agent/code_analyzer/build_validator/__init__.py +12 -11
- jarvis/jarvis_code_agent/code_analyzer/build_validator/base.py +16 -12
- jarvis/jarvis_code_agent/code_analyzer/build_validator/cmake.py +26 -17
- jarvis/jarvis_code_agent/code_analyzer/build_validator/detector.py +558 -104
- jarvis/jarvis_code_agent/code_analyzer/build_validator/fallback.py +27 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/go.py +22 -18
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_gradle.py +21 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/java_maven.py +20 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/makefile.py +27 -16
- jarvis/jarvis_code_agent/code_analyzer/build_validator/nodejs.py +47 -23
- jarvis/jarvis_code_agent/code_analyzer/build_validator/python.py +71 -37
- jarvis/jarvis_code_agent/code_analyzer/build_validator/rust.py +162 -35
- jarvis/jarvis_code_agent/code_analyzer/build_validator/validator.py +111 -57
- jarvis/jarvis_code_agent/code_analyzer/build_validator.py +18 -12
- jarvis/jarvis_code_agent/code_analyzer/context_manager.py +185 -183
- jarvis/jarvis_code_agent/code_analyzer/context_recommender.py +2 -1
- jarvis/jarvis_code_agent/code_analyzer/dependency_analyzer.py +24 -15
- jarvis/jarvis_code_agent/code_analyzer/file_ignore.py +227 -141
- jarvis/jarvis_code_agent/code_analyzer/impact_analyzer.py +321 -247
- jarvis/jarvis_code_agent/code_analyzer/language_registry.py +37 -29
- jarvis/jarvis_code_agent/code_analyzer/language_support.py +21 -13
- jarvis/jarvis_code_agent/code_analyzer/languages/__init__.py +15 -9
- jarvis/jarvis_code_agent/code_analyzer/languages/c_cpp_language.py +75 -45
- jarvis/jarvis_code_agent/code_analyzer/languages/go_language.py +87 -52
- jarvis/jarvis_code_agent/code_analyzer/languages/java_language.py +84 -51
- jarvis/jarvis_code_agent/code_analyzer/languages/javascript_language.py +94 -64
- jarvis/jarvis_code_agent/code_analyzer/languages/python_language.py +109 -71
- jarvis/jarvis_code_agent/code_analyzer/languages/rust_language.py +97 -63
- jarvis/jarvis_code_agent/code_analyzer/languages/typescript_language.py +103 -69
- jarvis/jarvis_code_agent/code_analyzer/llm_context_recommender.py +271 -268
- jarvis/jarvis_code_agent/code_analyzer/symbol_extractor.py +76 -64
- jarvis/jarvis_code_agent/code_analyzer/tree_sitter_extractor.py +92 -19
- jarvis/jarvis_code_agent/diff_visualizer.py +998 -0
- jarvis/jarvis_code_agent/lint.py +223 -524
- jarvis/jarvis_code_agent/rule_share_manager.py +158 -0
- jarvis/jarvis_code_agent/rules/clean_code.md +144 -0
- jarvis/jarvis_code_agent/rules/code_review.md +115 -0
- jarvis/jarvis_code_agent/rules/documentation.md +165 -0
- jarvis/jarvis_code_agent/rules/generate_rules.md +52 -0
- jarvis/jarvis_code_agent/rules/performance.md +158 -0
- jarvis/jarvis_code_agent/rules/refactoring.md +139 -0
- jarvis/jarvis_code_agent/rules/security.md +160 -0
- jarvis/jarvis_code_agent/rules/tdd.md +78 -0
- jarvis/jarvis_code_agent/test_rules/cpp_test.md +118 -0
- jarvis/jarvis_code_agent/test_rules/go_test.md +98 -0
- jarvis/jarvis_code_agent/test_rules/java_test.md +99 -0
- jarvis/jarvis_code_agent/test_rules/javascript_test.md +113 -0
- jarvis/jarvis_code_agent/test_rules/php_test.md +117 -0
- jarvis/jarvis_code_agent/test_rules/python_test.md +91 -0
- jarvis/jarvis_code_agent/test_rules/ruby_test.md +102 -0
- jarvis/jarvis_code_agent/test_rules/rust_test.md +86 -0
- jarvis/jarvis_code_agent/utils.py +36 -26
- jarvis/jarvis_code_analysis/checklists/loader.py +21 -21
- jarvis/jarvis_code_analysis/code_review.py +64 -33
- jarvis/jarvis_data/config_schema.json +285 -192
- jarvis/jarvis_git_squash/main.py +8 -6
- jarvis/jarvis_git_utils/git_commiter.py +53 -76
- jarvis/jarvis_mcp/__init__.py +5 -2
- jarvis/jarvis_mcp/sse_mcp_client.py +40 -30
- jarvis/jarvis_mcp/stdio_mcp_client.py +27 -19
- jarvis/jarvis_mcp/streamable_mcp_client.py +35 -26
- jarvis/jarvis_memory_organizer/memory_organizer.py +78 -55
- jarvis/jarvis_methodology/main.py +48 -39
- jarvis/jarvis_multi_agent/__init__.py +56 -23
- jarvis/jarvis_multi_agent/main.py +15 -18
- jarvis/jarvis_platform/base.py +179 -111
- jarvis/jarvis_platform/human.py +27 -16
- jarvis/jarvis_platform/kimi.py +52 -45
- jarvis/jarvis_platform/openai.py +101 -40
- jarvis/jarvis_platform/registry.py +51 -33
- jarvis/jarvis_platform/tongyi.py +68 -38
- jarvis/jarvis_platform/yuanbao.py +59 -43
- jarvis/jarvis_platform_manager/main.py +68 -76
- jarvis/jarvis_platform_manager/service.py +24 -14
- jarvis/jarvis_rag/README_CONFIG.md +314 -0
- jarvis/jarvis_rag/README_DYNAMIC_LOADING.md +311 -0
- jarvis/jarvis_rag/README_ONLINE_MODELS.md +230 -0
- jarvis/jarvis_rag/__init__.py +57 -4
- jarvis/jarvis_rag/cache.py +3 -1
- jarvis/jarvis_rag/cli.py +48 -68
- jarvis/jarvis_rag/embedding_interface.py +39 -0
- jarvis/jarvis_rag/embedding_manager.py +7 -230
- jarvis/jarvis_rag/embeddings/__init__.py +41 -0
- jarvis/jarvis_rag/embeddings/base.py +114 -0
- jarvis/jarvis_rag/embeddings/cohere.py +66 -0
- jarvis/jarvis_rag/embeddings/edgefn.py +117 -0
- jarvis/jarvis_rag/embeddings/local.py +260 -0
- jarvis/jarvis_rag/embeddings/openai.py +62 -0
- jarvis/jarvis_rag/embeddings/registry.py +293 -0
- jarvis/jarvis_rag/llm_interface.py +8 -6
- jarvis/jarvis_rag/query_rewriter.py +8 -9
- jarvis/jarvis_rag/rag_pipeline.py +61 -52
- jarvis/jarvis_rag/reranker.py +7 -75
- jarvis/jarvis_rag/reranker_interface.py +32 -0
- jarvis/jarvis_rag/rerankers/__init__.py +41 -0
- jarvis/jarvis_rag/rerankers/base.py +109 -0
- jarvis/jarvis_rag/rerankers/cohere.py +67 -0
- jarvis/jarvis_rag/rerankers/edgefn.py +140 -0
- jarvis/jarvis_rag/rerankers/jina.py +79 -0
- jarvis/jarvis_rag/rerankers/local.py +89 -0
- jarvis/jarvis_rag/rerankers/registry.py +293 -0
- jarvis/jarvis_rag/retriever.py +58 -43
- jarvis/jarvis_sec/__init__.py +66 -141
- jarvis/jarvis_sec/agents.py +21 -17
- jarvis/jarvis_sec/analysis.py +80 -33
- jarvis/jarvis_sec/checkers/__init__.py +7 -13
- jarvis/jarvis_sec/checkers/c_checker.py +356 -164
- jarvis/jarvis_sec/checkers/rust_checker.py +47 -29
- jarvis/jarvis_sec/cli.py +43 -21
- jarvis/jarvis_sec/clustering.py +430 -272
- jarvis/jarvis_sec/file_manager.py +99 -55
- jarvis/jarvis_sec/parsers.py +9 -6
- jarvis/jarvis_sec/prompts.py +4 -3
- jarvis/jarvis_sec/report.py +44 -22
- jarvis/jarvis_sec/review.py +180 -107
- jarvis/jarvis_sec/status.py +50 -41
- jarvis/jarvis_sec/types.py +3 -0
- jarvis/jarvis_sec/utils.py +160 -83
- jarvis/jarvis_sec/verification.py +411 -181
- jarvis/jarvis_sec/workflow.py +132 -21
- jarvis/jarvis_smart_shell/main.py +28 -41
- jarvis/jarvis_stats/cli.py +14 -12
- jarvis/jarvis_stats/stats.py +28 -19
- jarvis/jarvis_stats/storage.py +14 -8
- jarvis/jarvis_stats/visualizer.py +12 -7
- jarvis/jarvis_tools/base.py +5 -2
- jarvis/jarvis_tools/clear_memory.py +13 -9
- jarvis/jarvis_tools/cli/main.py +23 -18
- jarvis/jarvis_tools/edit_file.py +572 -873
- jarvis/jarvis_tools/execute_script.py +10 -7
- jarvis/jarvis_tools/file_analyzer.py +7 -8
- jarvis/jarvis_tools/meta_agent.py +287 -0
- jarvis/jarvis_tools/methodology.py +5 -3
- jarvis/jarvis_tools/read_code.py +305 -1438
- jarvis/jarvis_tools/read_symbols.py +50 -17
- jarvis/jarvis_tools/read_webpage.py +19 -18
- jarvis/jarvis_tools/registry.py +435 -156
- jarvis/jarvis_tools/retrieve_memory.py +16 -11
- jarvis/jarvis_tools/save_memory.py +8 -6
- jarvis/jarvis_tools/search_web.py +31 -31
- jarvis/jarvis_tools/sub_agent.py +32 -28
- jarvis/jarvis_tools/sub_code_agent.py +44 -60
- jarvis/jarvis_tools/task_list_manager.py +1811 -0
- jarvis/jarvis_tools/virtual_tty.py +29 -19
- jarvis/jarvis_utils/__init__.py +4 -0
- jarvis/jarvis_utils/builtin_replace_map.py +2 -1
- jarvis/jarvis_utils/clipboard.py +9 -8
- jarvis/jarvis_utils/collections.py +331 -0
- jarvis/jarvis_utils/config.py +699 -194
- jarvis/jarvis_utils/dialogue_recorder.py +294 -0
- jarvis/jarvis_utils/embedding.py +6 -3
- jarvis/jarvis_utils/file_processors.py +7 -1
- jarvis/jarvis_utils/fzf.py +9 -3
- jarvis/jarvis_utils/git_utils.py +71 -42
- jarvis/jarvis_utils/globals.py +116 -32
- jarvis/jarvis_utils/http.py +6 -2
- jarvis/jarvis_utils/input.py +318 -83
- jarvis/jarvis_utils/jsonnet_compat.py +119 -104
- jarvis/jarvis_utils/methodology.py +37 -28
- jarvis/jarvis_utils/output.py +201 -44
- jarvis/jarvis_utils/utils.py +986 -628
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/METADATA +49 -33
- jarvis_ai_assistant-1.0.2.dist-info/RECORD +304 -0
- jarvis/jarvis_code_agent/code_analyzer/structured_code.py +0 -556
- jarvis/jarvis_tools/generate_new_tool.py +0 -205
- jarvis/jarvis_tools/lsp_client.py +0 -1552
- jarvis/jarvis_tools/rewrite_file.py +0 -105
- jarvis_ai_assistant-0.7.8.dist-info/RECORD +0 -218
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/entry_points.txt +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/licenses/LICENSE +0 -0
- {jarvis_ai_assistant-0.7.8.dist-info → jarvis_ai_assistant-1.0.2.dist-info}/top_level.txt +0 -0
jarvis/jarvis_utils/globals.py
CHANGED
|
@@ -7,12 +7,19 @@
|
|
|
7
7
|
- 带有自定义主题的控制台配置
|
|
8
8
|
- 环境初始化
|
|
9
9
|
"""
|
|
10
|
+
|
|
10
11
|
import os
|
|
11
12
|
|
|
12
13
|
# 全局变量:保存消息历史
|
|
13
|
-
from typing import Any
|
|
14
|
+
from typing import Any
|
|
15
|
+
from typing import Dict
|
|
16
|
+
from typing import List
|
|
17
|
+
from typing import Optional
|
|
14
18
|
|
|
15
19
|
message_history: List[str] = []
|
|
20
|
+
|
|
21
|
+
# 全局模型组
|
|
22
|
+
_global_model_group: Optional[str] = None
|
|
16
23
|
MAX_HISTORY_SIZE = 50
|
|
17
24
|
|
|
18
25
|
# 短期记忆存储
|
|
@@ -29,7 +36,8 @@ colorama.init()
|
|
|
29
36
|
os.environ["TOKENIZERS_PARALLELISM"] = "false"
|
|
30
37
|
# 全局代理管理
|
|
31
38
|
global_agents: Dict[str, Any] = {}
|
|
32
|
-
|
|
39
|
+
# 使用栈结构跟踪嵌套的agent运行状态,支持agent调用其他agent的场景
|
|
40
|
+
running_agent_stack: List[str] = [] # 正在运行的agent栈(最顶层是当前正在运行的agent)
|
|
33
41
|
# 表示与大模型交互的深度(>0表示正在交互)
|
|
34
42
|
g_in_chat: int = 0
|
|
35
43
|
# 表示是否接收到中断信号
|
|
@@ -56,7 +64,12 @@ console = Console(theme=custom_theme)
|
|
|
56
64
|
|
|
57
65
|
def make_agent_name(agent_name: str) -> str:
|
|
58
66
|
"""
|
|
59
|
-
|
|
67
|
+
基于现有 global_agents 生成唯一的代理名称。
|
|
68
|
+
|
|
69
|
+
约定:
|
|
70
|
+
- 如果该名称尚未被占用,直接返回原始名称;
|
|
71
|
+
- 如果已存在同名 Agent,则按 `name_1`、`name_2`... 的形式依次查找可用名称;
|
|
72
|
+
- 已存在的带后缀名称会被一并考虑,例如 `name`、`name_1`、`name_3` 已存在时,返回 `name_2`。
|
|
60
73
|
|
|
61
74
|
参数:
|
|
62
75
|
agent_name: 基础代理名称
|
|
@@ -64,12 +77,17 @@ def make_agent_name(agent_name: str) -> str:
|
|
|
64
77
|
返回:
|
|
65
78
|
str: 唯一的代理名称
|
|
66
79
|
"""
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
80
|
+
# 如果名称未被占用,直接返回原始名称
|
|
81
|
+
if agent_name not in global_agents:
|
|
82
|
+
return agent_name
|
|
83
|
+
|
|
84
|
+
# 已存在同名 Agent,按 name_1、name_2... 形式查找第一个未被占用的名称
|
|
85
|
+
index = 1
|
|
86
|
+
while True:
|
|
87
|
+
candidate = f"{agent_name}_{index}"
|
|
88
|
+
if candidate not in global_agents:
|
|
89
|
+
return candidate
|
|
90
|
+
index += 1
|
|
73
91
|
|
|
74
92
|
|
|
75
93
|
def get_agent(agent_name: str) -> Any:
|
|
@@ -85,44 +103,90 @@ def get_agent(agent_name: str) -> Any:
|
|
|
85
103
|
return global_agents.get(agent_name)
|
|
86
104
|
|
|
87
105
|
|
|
88
|
-
def
|
|
106
|
+
def get_current_agent() -> Any:
|
|
107
|
+
"""
|
|
108
|
+
获取当前正在运行的代理实例。
|
|
109
|
+
|
|
110
|
+
重要:只返回正在运行的agent,确保不会返回已完成的agent。
|
|
111
|
+
这保证返回的agent一定是正在运行中的,可以安全地修改其内部状态。
|
|
112
|
+
|
|
113
|
+
如果没有正在运行的agent,返回None(可以为空,但一定不能错)。
|
|
114
|
+
|
|
115
|
+
返回:
|
|
116
|
+
Any: 正在运行的代理实例,如果没有正在运行的agent则返回None
|
|
117
|
+
"""
|
|
118
|
+
# 只返回正在运行的agent,确保不会返回已完成的agent
|
|
119
|
+
global running_agent_stack
|
|
120
|
+
if running_agent_stack:
|
|
121
|
+
current_agent_name = running_agent_stack[-1]
|
|
122
|
+
if current_agent_name in global_agents:
|
|
123
|
+
return global_agents.get(current_agent_name)
|
|
124
|
+
return None
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
def get_current_agent_name() -> str:
|
|
128
|
+
"""
|
|
129
|
+
获取当前代理名称(最后开始运行的agent,可能已完成)。
|
|
130
|
+
注意:这返回的是"最后开始运行的agent",可能已经完成运行。
|
|
131
|
+
|
|
132
|
+
返回:
|
|
133
|
+
str: 当前代理名称,如果不存在则返回空字符串
|
|
89
134
|
"""
|
|
90
|
-
|
|
135
|
+
agent = get_current_agent()
|
|
136
|
+
if agent:
|
|
137
|
+
return agent.name
|
|
138
|
+
return ""
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def set_current_agent(agent_name: str, agent: Any) -> None:
|
|
142
|
+
"""
|
|
143
|
+
设置当前正在运行的代理名称(推入栈)。
|
|
144
|
+
应该在agent开始运行时调用。
|
|
145
|
+
支持嵌套调用:当agent调用其他agent时,状态会被正确保存。
|
|
146
|
+
|
|
147
|
+
注意:同一个agent可以多次运行(非嵌套),每次运行都会独立推入栈。
|
|
91
148
|
|
|
92
149
|
参数:
|
|
93
150
|
agent_name: 代理名称
|
|
94
|
-
agent: 代理对象
|
|
95
151
|
"""
|
|
152
|
+
global running_agent_stack, global_agents
|
|
96
153
|
global_agents[agent_name] = agent
|
|
97
|
-
|
|
98
|
-
current_agent_name = agent_name
|
|
154
|
+
running_agent_stack.append(agent_name)
|
|
99
155
|
|
|
100
156
|
|
|
101
|
-
def
|
|
157
|
+
def clear_current_agent() -> None:
|
|
102
158
|
"""
|
|
103
|
-
|
|
159
|
+
清除正在运行的代理名称(从栈中弹出)。
|
|
160
|
+
应该在agent运行结束时调用。
|
|
161
|
+
支持嵌套调用:当子agent结束时,会恢复父agent的运行状态。
|
|
104
162
|
|
|
105
|
-
|
|
106
|
-
|
|
163
|
+
重要:只从栈顶移除agent,确保嵌套调用的正确性。
|
|
164
|
+
如果agent不在栈顶,说明状态不一致(可能是重复调用或异常),
|
|
165
|
+
会记录警告但不会修改栈,避免破坏嵌套结构。
|
|
166
|
+
|
|
167
|
+
参数:
|
|
168
|
+
agent_name: 要清除的代理名称(用于验证,确保清除的是正确的agent)
|
|
107
169
|
"""
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
)
|
|
170
|
+
global running_agent_stack
|
|
171
|
+
if not running_agent_stack:
|
|
172
|
+
# 栈为空,可能是重复调用clear或状态不一致
|
|
173
|
+
return
|
|
174
|
+
current_agent_name = running_agent_stack.pop()
|
|
175
|
+
if current_agent_name in global_agents:
|
|
176
|
+
del global_agents[current_agent_name]
|
|
113
177
|
|
|
114
178
|
|
|
115
|
-
def
|
|
179
|
+
def get_agent_list() -> str:
|
|
116
180
|
"""
|
|
117
|
-
|
|
181
|
+
获取表示当前代理状态的格式化字符串。
|
|
118
182
|
|
|
119
|
-
|
|
120
|
-
|
|
183
|
+
返回:
|
|
184
|
+
str: 包含代理数量和当前代理名称的格式化字符串
|
|
121
185
|
"""
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
186
|
+
global global_agents
|
|
187
|
+
if not global_agents:
|
|
188
|
+
return ""
|
|
189
|
+
return "[" + str(len(global_agents)) + "]" + ", ".join(global_agents.keys())
|
|
126
190
|
|
|
127
191
|
|
|
128
192
|
def set_in_chat(status: bool) -> None:
|
|
@@ -265,6 +329,25 @@ def clear_short_term_memories() -> None:
|
|
|
265
329
|
short_term_memories.clear()
|
|
266
330
|
|
|
267
331
|
|
|
332
|
+
def set_global_model_group(model_group: Optional[str]) -> None:
|
|
333
|
+
"""设置全局模型组
|
|
334
|
+
|
|
335
|
+
参数:
|
|
336
|
+
model_group: 模型组名称
|
|
337
|
+
"""
|
|
338
|
+
global _global_model_group
|
|
339
|
+
_global_model_group = model_group
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
def get_global_model_group() -> Optional[str]:
|
|
343
|
+
"""获取全局模型组
|
|
344
|
+
|
|
345
|
+
返回:
|
|
346
|
+
Optional[str]: 全局模型组名称,如果未设置则返回None
|
|
347
|
+
"""
|
|
348
|
+
return _global_model_group
|
|
349
|
+
|
|
350
|
+
|
|
268
351
|
def get_all_memory_tags() -> Dict[str, List[str]]:
|
|
269
352
|
"""
|
|
270
353
|
获取所有记忆类型中的标签集合。
|
|
@@ -273,9 +356,10 @@ def get_all_memory_tags() -> Dict[str, List[str]]:
|
|
|
273
356
|
返回:
|
|
274
357
|
Dict[str, List[str]]: 按记忆类型分组的标签列表
|
|
275
358
|
"""
|
|
276
|
-
from pathlib import Path
|
|
277
359
|
import json
|
|
278
360
|
import random
|
|
361
|
+
from pathlib import Path
|
|
362
|
+
|
|
279
363
|
from jarvis.jarvis_utils.config import get_data_dir
|
|
280
364
|
|
|
281
365
|
tags_by_type: Dict[str, List[str]] = {
|
jarvis/jarvis_utils/http.py
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
from typing import
|
|
3
|
+
from typing import Any
|
|
4
|
+
from typing import Dict
|
|
5
|
+
from typing import Generator
|
|
6
|
+
from typing import Optional
|
|
7
|
+
|
|
8
|
+
import requests
|
|
5
9
|
|
|
6
10
|
|
|
7
11
|
def get_requests_session() -> requests.Session:
|