jarvis-ai-assistant 0.4.1__py3-none-any.whl → 0.5.0__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.
@@ -1,100 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- """
3
- AgentConfig: 聚合 Agent 的初始化配置并提供默认值解析。
4
-
5
- 目标(阶段一,最小变更):
6
- - 提供独立的配置承载类,封装 __init__ 中的配置项
7
- - 支持从全局配置与上下文推导默认值
8
- - 暂不强制替换 Agent 的现有参数与流程,后续逐步接入
9
- """
10
- from dataclasses import dataclass, field
11
- from typing import List, Optional
12
-
13
- from jarvis.jarvis_agent.prompts import DEFAULT_SUMMARY_PROMPT
14
- from jarvis.jarvis_utils.config import (
15
- get_max_token_count,
16
- is_execute_tool_confirm,
17
- is_force_save_memory,
18
- is_use_analysis,
19
- is_use_methodology,
20
- is_non_interactive,
21
- )
22
-
23
-
24
- @dataclass
25
- class AgentConfig:
26
- # 核心身份与系统参数
27
- system_prompt: str
28
- name: str = "Jarvis"
29
- description: str = ""
30
- model_group: Optional[str] = None
31
-
32
- # 运行行为
33
- auto_complete: bool = False
34
- non_interactive: bool = False
35
- need_summary: bool = True
36
-
37
- # 可选配置(None 表示使用默认策略解析)
38
- summary_prompt: Optional[str] = None
39
- execute_tool_confirm: Optional[bool] = None
40
- use_methodology: Optional[bool] = None
41
- use_analysis: Optional[bool] = None
42
- force_save_memory: Optional[bool] = None
43
- files: Optional[List[str]] = field(default_factory=list)
44
- max_token_count: Optional[int] = None
45
-
46
- def resolve_defaults(self) -> "AgentConfig":
47
- """
48
- 解析并填充默认值,返回新的 AgentConfig 实例,不修改原对象。
49
- 策略与 Agent._init_config 中的逻辑保持一致,确保兼容。
50
- """
51
- # 复制当前实例的浅拷贝数据
52
- cfg = AgentConfig(
53
- system_prompt=self.system_prompt,
54
- name=self.name,
55
- description=self.description,
56
- model_group=self.model_group,
57
- auto_complete=self.auto_complete,
58
- non_interactive=self.non_interactive,
59
- need_summary=self.need_summary,
60
- summary_prompt=self.summary_prompt,
61
- execute_tool_confirm=self.execute_tool_confirm,
62
- use_methodology=self.use_methodology,
63
- use_analysis=self.use_analysis,
64
- force_save_memory=self.force_save_memory,
65
- files=list(self.files or []),
66
- max_token_count=self.max_token_count,
67
- )
68
-
69
- # use_methodology: 若存在上传文件则禁用;否则按照外部传入或全局默认
70
- if cfg.files:
71
- cfg.use_methodology = False
72
- elif cfg.use_methodology is None:
73
- cfg.use_methodology = is_use_methodology()
74
-
75
- # use_analysis
76
- if cfg.use_analysis is None:
77
- cfg.use_analysis = is_use_analysis()
78
-
79
- # execute_tool_confirm
80
- if cfg.execute_tool_confirm is None:
81
- cfg.execute_tool_confirm = is_execute_tool_confirm()
82
-
83
- # summary_prompt
84
- # Treat None or whitespace-only string as unset, fallback to default
85
- if cfg.summary_prompt is None or (isinstance(cfg.summary_prompt, str) and cfg.summary_prompt.strip() == ""):
86
- cfg.summary_prompt = DEFAULT_SUMMARY_PROMPT
87
-
88
- # max_token_count
89
- if cfg.max_token_count is None:
90
- cfg.max_token_count = get_max_token_count(cfg.model_group)
91
-
92
- # force_save_memory
93
- if cfg.force_save_memory is None:
94
- cfg.force_save_memory = is_force_save_memory()
95
-
96
- # 非交互模式下默认开启自动完成
97
- if is_non_interactive():
98
- cfg.auto_complete = True
99
-
100
- return cfg