|
|
@@ -78,8 +78,12 @@ async def check_inventory(product_id: str, warehouse: str = "default") -> ToolRe
|
|
|
"parameters": {
|
|
|
"type": "object",
|
|
|
"properties": {
|
|
|
- "product_id": {"type": "string", "description": "产品唯一标识符"},
|
|
|
- "warehouse": {"type": "string", "description": "仓库编码,默认为主仓库", "default": "default"}
|
|
|
+ "product_id": { "type": "string", "description": "产品唯一标识符" },
|
|
|
+ "warehouse": {
|
|
|
+ "type": "string",
|
|
|
+ "description": "仓库编码,默认为主仓库",
|
|
|
+ "default": "default"
|
|
|
+ }
|
|
|
},
|
|
|
"required": ["product_id"]
|
|
|
}
|
|
|
@@ -111,6 +115,7 @@ description: 领域专属知识
|
|
|
---
|
|
|
|
|
|
## Guidelines
|
|
|
+
|
|
|
- 规则 1
|
|
|
- 规则 2
|
|
|
```
|
|
|
@@ -132,6 +137,7 @@ runner = AgentRunner(
|
|
|
### 核心流程
|
|
|
|
|
|
**1. 提取(Extract)**
|
|
|
+
|
|
|
- **触发时机**:
|
|
|
- 压缩时提取:消息量超阈值触发压缩时,在 Level 1 过滤前用完整 history 反思
|
|
|
- 完成时提取:Agent 运行完成后(不代表任务完成,可能中途退出等待人工评估)
|
|
|
@@ -139,6 +145,7 @@ runner = AgentRunner(
|
|
|
- **自定义 Prompt**:可通过配置自定义反思 prompt,空则使用默认(见 `agent/core/prompts/knowledge.py`)
|
|
|
|
|
|
**2. 存储(Store)**
|
|
|
+
|
|
|
- **存储位置**:KnowHub 服务(默认 `http://localhost:8765`)
|
|
|
- **知识结构**:
|
|
|
- `title`: 知识标题
|
|
|
@@ -154,6 +161,7 @@ runner = AgentRunner(
|
|
|
- 支持代码片段、API 凭证、cookies 等多种资源类型
|
|
|
|
|
|
**3. 注入(Inject)**
|
|
|
+
|
|
|
- **触发时机**:Agent 切换当前工作的 Goal 时自动触发
|
|
|
- **检索策略**:基于 Goal 描述和上下文,从知识库检索相关知识
|
|
|
- **注入方式**:将检索到的知识注入到 Agent 的上下文中
|
|
|
@@ -193,6 +201,7 @@ run_config = RunConfig(
|
|
|
```
|
|
|
|
|
|
**参数注入规则**(通过框架 `inject_params` 机制实现,详见 `agent/docs/tools.md`):
|
|
|
+
|
|
|
- `owner`:隐藏参数,LLM 不可见,框架自动注入(`mode: default`)
|
|
|
- `tags`:LLM 可追加新 key,框架默认 key 不可被覆盖(`mode: merge`)
|
|
|
- `scopes`:LLM 可追加,与框架默认值合并去重(`mode: merge`)
|
|
|
@@ -237,12 +246,15 @@ RunConfig(
|
|
|
knowledge=KnowledgeConfig(), # 知识管理配置
|
|
|
)
|
|
|
```
|
|
|
+
|
|
|
system_prompt=None, # None=从 skills 自动构建
|
|
|
agent_type="default", # 预设类型:default / explore / analyst
|
|
|
trace_id=None, # 续跑/回溯时传入已有 trace ID
|
|
|
after_sequence=None, # 从哪条消息后续跑(message sequence)
|
|
|
+
|
|
|
)
|
|
|
-```
|
|
|
+
|
|
|
+````
|
|
|
|
|
|
## LLM Providers
|
|
|
|
|
|
@@ -256,7 +268,7 @@ llm = create_openrouter_llm_call(model="anthropic/claude-sonnet-4.5")
|
|
|
|
|
|
# Google Gemini
|
|
|
llm = create_gemini_llm_call(model="gemini-2.5-flash")
|
|
|
-```
|
|
|
+````
|
|
|
|
|
|
自定义 provider 只需实现签名:
|
|
|
|
|
|
@@ -279,15 +291,15 @@ async def my_llm_call(messages, model, tools, temperature, **kwargs) -> dict:
|
|
|
python api_server.py
|
|
|
```
|
|
|
|
|
|
-| 方法 | 路径 | 说明 |
|
|
|
-|------|------|------|
|
|
|
-| GET | `/api/traces` | 列出 Traces |
|
|
|
-| GET | `/api/traces/{id}` | Trace 详情 |
|
|
|
-| GET | `/api/traces/{id}/messages` | 消息列表 |
|
|
|
-| POST | `/api/traces` | 新建并执行 |
|
|
|
-| POST | `/api/traces/{id}/run` | 续跑/回溯 |
|
|
|
-| POST | `/api/traces/{id}/stop` | 停止 |
|
|
|
-| WS | `/api/traces/{id}/watch` | 实时事件 |
|
|
|
+| 方法 | 路径 | 说明 |
|
|
|
+| ---- | --------------------------- | ----------- |
|
|
|
+| GET | `/api/traces` | 列出 Traces |
|
|
|
+| GET | `/api/traces/{id}` | Trace 详情 |
|
|
|
+| GET | `/api/traces/{id}/messages` | 消息列表 |
|
|
|
+| POST | `/api/traces` | 新建并执行 |
|
|
|
+| POST | `/api/traces/{id}/run` | 续跑/回溯 |
|
|
|
+| POST | `/api/traces/{id}/stop` | 停止 |
|
|
|
+| WS | `/api/traces/{id}/watch` | 实时事件 |
|
|
|
|
|
|
需在 `api_server.py` 中配置 Runner 才能启用 POST 端点。
|
|
|
|
|
|
@@ -304,8 +316,6 @@ agent/
|
|
|
|
|
|
详细架构文档:[docs/README.md](./docs/README.md)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
## 交互式 CLI(Interactive CLI)
|
|
|
|
|
|
框架提供交互式控制器,支持实时监控、手动干预和经验总结。
|
|
|
@@ -338,10 +348,10 @@ async for item in runner.run(messages=messages, config=config):
|
|
|
|
|
|
在执行过程中,可以通过命令行实时控制:
|
|
|
|
|
|
-| 按键 | 动作 | 说明 |
|
|
|
-| --- | --- | --- |
|
|
|
+| 按键 | 动作 | 说明 |
|
|
|
+| ------------- | ------------ | --------------------------------- |
|
|
|
| `p` / `pause` | **暂停执行** | 立即挂起 Agent 循环,进入交互菜单 |
|
|
|
-| `q` / `quit` | **停止执行** | 安全停止并保存当前的执行状态 |
|
|
|
+| `q` / `quit` | **停止执行** | 安全停止并保存当前的执行状态 |
|
|
|
|
|
|
### 交互菜单功能
|
|
|
|
|
|
@@ -401,6 +411,7 @@ async for item in runner.run(messages=messages, config=RUN_CONFIG):
|
|
|
```
|
|
|
|
|
|
**配置说明**:
|
|
|
+
|
|
|
- 直接使用框架的 `RunConfig` 和 `KnowledgeConfig`,不需要自定义配置类
|
|
|
- 基础设施配置(skills_dir, trace_store_path 等)用简单变量定义
|
|
|
- 使用 `agent.utils.setup_logging()` 配置日志
|
|
|
@@ -409,19 +420,24 @@ async for item in runner.run(messages=messages, config=RUN_CONFIG):
|
|
|
|
|
|
框架在运行期间会生成唯一的 `trace_id`。
|
|
|
|
|
|
-* **本地日志**:所有的执行细节、工具调用和 Goal 状态均持久化在 `.trace/` 目录下。
|
|
|
-* **Web 可视化**:
|
|
|
+- **本地日志**:所有的执行细节、工具调用和 Goal 状态均持久化在 `.trace/` 目录下。
|
|
|
+- **Web 可视化**:
|
|
|
+
|
|
|
1. 启动服务器:`python api_server.py`
|
|
|
2. 启动前端:
|
|
|
+
|
|
|
```
|
|
|
cd frontend/react-template
|
|
|
yarn
|
|
|
yarn dev
|
|
|
```
|
|
|
-2. 访问控制台:`http://localhost:3000`
|
|
|
-3. 在前端界面中切换任务,即直观追踪 Agent 的思考链路。
|
|
|
+
|
|
|
+3. 访问控制台:`http://localhost:3000`
|
|
|
+4. 在前端界面中切换任务,即直观追踪 Agent 的思考链路。
|
|
|
+5. 因为该可视化读取的是根目录下的.trace文件,建议运行项目时,可以在根目录下用命令行运行`python examples/[project_name]/run.py`,使运行得到的trace存放在根目录
|
|
|
|
|
|
### 提示:目前前端可视化只供观看本地运行过的trace结果,新任务运行等功能正在开发中,运行可在命令行中执行
|
|
|
+
|
|
|
### 绿色节点为整体的goal(目标),蓝色节点为子goal(目标),灰色节点为基础信息节点。点击蓝色边/绿色边会折叠节点,点击节点会在右侧显示详情。
|
|
|
|
|
|
---
|
|
|
@@ -448,12 +464,12 @@ examples/[your_example]/
|
|
|
|
|
|
针对 Clash Verge / TUN 模式等网络环境,本项目已内置代理自动避让逻辑:
|
|
|
|
|
|
-* **代理优化**:通过 `no_proxy` 配置防止 `httpx` 错误引导流量。
|
|
|
-* **Browser 模式**:支持 `cloud` (远程) 和 `local` (本地) 模式切换。
|
|
|
+- **代理优化**:通过 `no_proxy` 配置防止 `httpx` 错误引导流量。
|
|
|
+- **Browser 模式**:支持 `cloud` (远程) 和 `local` (本地) 模式切换。
|
|
|
|
|
|
## 运行结果存储
|
|
|
|
|
|
运行过程中,会自动存储以下内容:
|
|
|
|
|
|
-* **运行轨迹**:根目录下 `.trace/` 文件夹下的实际运行路径结果
|
|
|
-* **知识库**:KnowHub 服务中保存的知识条目(通过 API 访问)
|
|
|
+- **运行轨迹**:根目录下 `.trace/` 文件夹下的实际运行路径结果
|
|
|
+- **知识库**:KnowHub 服务中保存的知识条目(通过 API 访问)
|