Talegorithm пре 14 часа
родитељ
комит
ee5eab4515
2 измењених фајлова са 89 додато и 29 уклоњено
  1. 89 28
      README.md
  2. 0 1
      examples/research/research.prompt

+ 89 - 28
README.md

@@ -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()` 配置日志
 
 ## 任务可视化与调试
 

+ 0 - 1
examples/research/research.prompt

@@ -8,7 +8,6 @@ $system$
 
 $user$
 帮我调研一下,新产品面世时候怎么营销推广
-
 - 先规划调研计划,再逐步完成调研
 - 要有可靠的依据(例如行业大牛的博客、榜单等等),要尽量全面,而不是随便选择一个平台深入
 - 我希望你在需要时能够打开浏览器做调研,并将调研收获在 examples/research/knowledge/ 目录下组织维护好,注意保留原始来源的URL