|
|
@@ -160,36 +160,43 @@ runner = AgentRunner(
|
|
|
|
|
|
### 配置
|
|
|
|
|
|
+知识管理配置通过 `RunConfig.knowledge` 传递:
|
|
|
+
|
|
|
```python
|
|
|
-from agent.core.runner import KnowledgeConfig
|
|
|
-
|
|
|
-knowledge_config = KnowledgeConfig(
|
|
|
- # 压缩时提取
|
|
|
- enable_extraction=True,
|
|
|
- reflect_prompt="", # 空则使用默认
|
|
|
-
|
|
|
- # 完成时提取
|
|
|
- enable_completion_extraction=True,
|
|
|
- completion_reflect_prompt="", # 空则使用默认
|
|
|
-
|
|
|
- # 知识注入
|
|
|
- enable_injection=True,
|
|
|
-
|
|
|
- # 默认字段(保存/搜索时自动注入)
|
|
|
- owner="user@example.com", # 空则从 git config 获取
|
|
|
- default_tags={"project": "my_project"},
|
|
|
- default_scopes=["org:cybertogether"],
|
|
|
- default_search_types=["strategy", "tool"],
|
|
|
- default_search_owner="" # 空则不过滤
|
|
|
-)
|
|
|
+from agent.core.runner import KnowledgeConfig, RunConfig
|
|
|
|
|
|
-runner = AgentRunner(
|
|
|
- llm_call=...,
|
|
|
- trace_store=...,
|
|
|
- knowledge_config=knowledge_config
|
|
|
+run_config = RunConfig(
|
|
|
+ model="claude-sonnet-4.5",
|
|
|
+ temperature=0.3,
|
|
|
+ max_iterations=1000,
|
|
|
+
|
|
|
+ knowledge=KnowledgeConfig(
|
|
|
+ # 压缩时提取(消息量超阈值触发压缩时,用完整 history 反思)
|
|
|
+ enable_extraction=True,
|
|
|
+ reflect_prompt="", # 空则使用默认,见 agent/core/prompts/knowledge.py:REFLECT_PROMPT
|
|
|
+
|
|
|
+ # agent运行完成后提取
|
|
|
+ enable_completion_extraction=True,
|
|
|
+ completion_reflect_prompt="", # 空则使用默认
|
|
|
+
|
|
|
+ # 知识注入(agent切换当前工作的goal时,自动注入相关知识)
|
|
|
+ enable_injection=True,
|
|
|
+
|
|
|
+ # 默认字段(保存/搜索时自动注入)
|
|
|
+ owner="", # 空则从 git config user.email 获取(隐藏参数,LLM 不可见)
|
|
|
+ default_tags={"project": "my_project"}, # 与 LLM 传递的 tags 合并
|
|
|
+ default_scopes=["org:cybertogether"], # 与 LLM 传递的 scopes 合并
|
|
|
+ default_search_types=["strategy", "tool"],
|
|
|
+ default_search_owner="" # 空则不过滤
|
|
|
+ )
|
|
|
)
|
|
|
```
|
|
|
|
|
|
+**参数注入规则**:
|
|
|
+- `owner`:隐藏参数,LLM 不可见,框架自动注入
|
|
|
+- `tags`:框架默认值 + LLM 传递的值合并
|
|
|
+- `scopes`:框架默认值 + LLM 传递的值合并
|
|
|
+
|
|
|
### 知识工具
|
|
|
|
|
|
框架提供以下内置工具用于知识管理:
|
|
|
@@ -210,8 +217,6 @@ AgentRunner(
|
|
|
trace_store=None, # Trace 持久化(推荐 FileSystemTraceStore)
|
|
|
tool_registry=None, # 工具注册表(默认:全局 registry)
|
|
|
skills_dir=None, # 自定义 skills 目录
|
|
|
- knowledge_config=None, # 知识管理配置(KnowledgeConfig)
|
|
|
- memory_store=None, # 记忆存储
|
|
|
utility_llm_call=None, # 轻量 LLM(生成任务标题等)
|
|
|
debug=False, # 调试模式
|
|
|
)
|
|
|
@@ -229,6 +234,13 @@ RunConfig(
|
|
|
agent_type="default", # 预设类型:default / explore / analyst
|
|
|
trace_id=None, # 续跑/回溯时传入已有 trace ID
|
|
|
after_sequence=None, # 从哪条消息后续跑(message sequence)
|
|
|
+ knowledge=KnowledgeConfig(), # 知识管理配置
|
|
|
+)
|
|
|
+```
|
|
|
+ system_prompt=None, # None=从 skills 自动构建
|
|
|
+ agent_type="default", # 预设类型:default / explore / analyst
|
|
|
+ trace_id=None, # 续跑/回溯时传入已有 trace ID
|
|
|
+ after_sequence=None, # 从哪条消息后续跑(message sequence)
|
|
|
)
|
|
|
```
|
|
|
|
|
|
@@ -342,7 +354,56 @@ async for item in runner.run(messages=messages, config=config):
|
|
|
|
|
|
### 项目配置示例
|
|
|
|
|
|
-参考 `examples/research/config.py`。
|
|
|
+完整的项目配置示例见 `examples/research/config.py`:
|
|
|
+
|
|
|
+```python
|
|
|
+from agent.core.runner import KnowledgeConfig, RunConfig
|
|
|
+from agent.utils import setup_logging
|
|
|
+
|
|
|
+# Agent 运行配置
|
|
|
+RUN_CONFIG = RunConfig(
|
|
|
+ model="claude-sonnet-4.5",
|
|
|
+ temperature=0.3,
|
|
|
+ max_iterations=1000,
|
|
|
+ name="Research Agent",
|
|
|
+
|
|
|
+ knowledge=KnowledgeConfig(
|
|
|
+ enable_extraction=True,
|
|
|
+ enable_completion_extraction=True,
|
|
|
+ enable_injection=True,
|
|
|
+ owner="", # 空则从 git config 获取
|
|
|
+ default_tags={"project": "research"},
|
|
|
+ default_scopes=["org:cybertogether"],
|
|
|
+ default_search_types=["strategy", "tool"],
|
|
|
+ )
|
|
|
+)
|
|
|
+
|
|
|
+# 基础设施配置
|
|
|
+SKILLS_DIR = "./skills"
|
|
|
+TRACE_STORE_PATH = ".trace"
|
|
|
+DEBUG = True
|
|
|
+LOG_LEVEL = "INFO"
|
|
|
+LOG_FILE = None # 可设置为文件路径
|
|
|
+
|
|
|
+# 在 run.py 中使用
|
|
|
+setup_logging(level=LOG_LEVEL, file=LOG_FILE)
|
|
|
+
|
|
|
+runner = AgentRunner(
|
|
|
+ trace_store=FileSystemTraceStore(base_path=TRACE_STORE_PATH),
|
|
|
+ llm_call=create_openrouter_llm_call(model=f"anthropic/{RUN_CONFIG.model}"),
|
|
|
+ skills_dir=SKILLS_DIR,
|
|
|
+ debug=DEBUG
|
|
|
+)
|
|
|
+
|
|
|
+async for item in runner.run(messages=messages, config=RUN_CONFIG):
|
|
|
+ # 处理执行结果
|
|
|
+ pass
|
|
|
+```
|
|
|
+
|
|
|
+**配置说明**:
|
|
|
+- 直接使用框架的 `RunConfig` 和 `KnowledgeConfig`,不需要自定义配置类
|
|
|
+- 基础设施配置(skills_dir, trace_store_path 等)用简单变量定义
|
|
|
+- 使用 `agent.utils.setup_logging()` 配置日志
|
|
|
|
|
|
## 任务可视化与调试
|
|
|
|