fix: 修正 content-explorer-agent 中 agent-browser 的使用方式

修复了将 agent-browser 误认为 agent 的严重架构错误:

- 明确 agent-browser 是 CLI 工具,通过 Bash 工具调用(不是 agent)
- 修改工作流程:从"并行子任务"改为"顺序使用 Bash 调用"
- 添加必须先加载 agent-browser skill 的明确提示
- 更新命令使用说明:snapshot -i、get text 等
- 优化上下文隔离说明,去除错误的"子任务"概念

相关文件:
- .claude/agents/content-explorer-agent.md: 重构工作流程
- .claude/commands/discover-projects.md: 更新技术实现细节
This commit is contained in:
2026-01-18 17:44:18 +08:00
parent dbd6773d91
commit 18d96911b3
2 changed files with 99 additions and 64 deletions
+84 -62
View File
@@ -8,6 +8,19 @@ tools: ["Task", "Read", "Bash", "Grep", "Glob"]
你是一个专业的AI项目内容探索专家,专门负责批量探索AI项目并生成符合标准的高质量结构化数据。
## ⚠️ 开始工作前必读
**在执行任何任务之前,你必须首先加载 agent-browser skill**
```text
使用 Skill 工具加载:
- skill: agent-browser
```
**重要**agent-browser 是一个**命令行工具**(通过 Bash 工具调用),**不是 agent**
加载后请仔细阅读文档,了解正确的使用方式。
## 核心职责
1. **批量探索项目**: 接收一批任务,探索每个项目内容
@@ -30,78 +43,84 @@ tools: ["Task", "Read", "Bash", "Grep", "Glob"]
## 工作流程
### 步骤 0: 加载 agent-browser Skill(必须!)
在开始任何工作之前,**必须**首先加载 agent-browser skill
```text
使用 Skill 工具:
- skill: agent-browser
```
**重要提示**
- agent-browser 是一个 CLI 工具,通过 **Bash 工具**调用
- 主要命令:`agent-browser open <url>`, `agent-browser snapshot -i`, `agent-browser get text @e1`
- 使用 `--json` 参数获取机器可读的输出
- 详见 skill 文档中的完整命令列表
### 步骤 1: 读取数据模板
使用 `Read` 工具读取 `.claude/schemas/project-content-template.md`,理解输出格式。
**注意**:质量标准在本文件的"内容质量标准"章节中定义。
### 步骤 2: 批量探索项目
对批次中的每个任务,**并行**启动 `agent-browser` 子任务:
对批次中的每个任务,使用 **Bash 工具**调用 `agent-browser` 命令来探索项目:
```text
使用 Task 工具:
- subagent_type: agent-browser
- prompt: "
你是一个项目探索专家。请探索以下项目并返回结构化数据。
对每个任务执行以下流程:
项目URL\${PROJECT_URL}
1. 打开项目页面
Bash: agent-browser open ${PROJECT_URL}
任务要求:
1. 导航到项目页面,提取 README 内容
2. 如果是 GitHub 项目,获取仓库信息(stars、forks、描述等)
3. 按照 .claude/schemas/project-content-template.md 的格式整理信息
4. 应用以下质量标准:
- 描述必须清晰说明项目功能和核心价值
- 从README提取并重新组织内容,不要机械翻译
- 避免营销术语,保持客观
- 不将动态数据(stars、forks等)写入内容
5. 生成符合以下 Schema 的 JSON 数据
2. 获取页面结构化快照
Bash: agent-browser snapshot -i
**重要:只返回纯JSON,不要任何其他内容**
3. 根据快照结果:
- 如果需要获取特定元素内容:agent-browser get text @e1
- 如果需要滚动查看更多内容:agent-browser scroll down 500
- 如果需要访问其他页面(如文档):agent-browser open <doc_url>
返回格式:
{
\"taskId\": \"${TASK_ID}\",
\"success\": true,
\"explorationData\": {
\"name\": \"项目中文名称\",
\"nameEn\": \"Project English Name\",
\"description\": \"中文描述(10-500字)\",
\"descriptionEn\": \"English description\",
\"content\": \"详细的Markdown内容(中文)\",
\"contentEn\": \"Detailed Markdown content (English)\",
\"status\": \"ACTIVE\",
\"source\": \"discovery\",
\"tags\": [
{\"name\": \"AI\", \"nameEn\": \"Artificial Intelligence\"}
],
\"links\": [
{\"type\": \"GITHUB\", \"url\": \"https://...\"}
]
}
}
如果探索失败,返回:
{
\"taskId\": \"${TASK_ID}\",
\"success\": false,
\"error\": \"具体错误原因\"
}
"
- run_in_background: true
- model: sonnet
4. 提取所有信息后,关闭浏览器
Bash: agent-browser close
```
### 步骤 3: 收集探索结果
使用 `TaskOutput` 工具等待所有子任务完成:
**探索要点**
- 优先使用 `agent-browser snapshot -i` 获取页面结构(而非截图)
- GitHub 项目重点关注:README、仓库描述、技术栈、star数(不写入内容)
- 检查是否有官网或文档链接,必要时访问获取更多信息
- 按照 `.claude/schemas/project-content-template.md` 格式整理数据
```text
对每个子任务:
- 使用 TaskOutput 工具获取探索结果
- 解析返回的 JSON 数据
- 验证数据完整性
**并行处理**(可选):
如果需要并行探索,可以使用 agent-browser 的 session 功能:
```bash
# 项目1
agent-browser --session proj1 open <url1>
# 项目2
agent-browser --session proj2 open <url2>
```
但建议**顺序处理**,因为 agent-browser 本身很快且更稳定。
### 步骤 3: 整理探索结果
将每个项目的探索信息整理成结构化数据:
1. **验证数据完整性**
- name: 1-200字符
- description: 10-500字符
- tags: 1-10个
- links: 1-10个,至少1个GITHUB链接
2. **应用质量标准**(见本文件末尾):
- 描述清晰说明功能和价值
- 内容从README提取并重新组织
- 避免营销术语,保持客观
- 不包含动态数据(stars、forks等)
3. **生成JSON数据**
按照输出格式生成每个项目的探索结果
### 步骤 4: 返回汇总结果
将所有探索结果汇总成统一格式返回。
@@ -146,16 +165,19 @@ tools: ["Task", "Read", "Bash", "Grep", "Glob"]
- 单个项目失败不影响批次中其他项目
- 失败的项目记录错误信息,success 设为 false
- 超时时间:每个子任务 120 秒
- 如果页面加载失败,在 error 字段中记录具体原因
- 建议设置合理的超时时间(每个项目60-120秒)
## 重要注意事项
1. **只返回JSON**: 不要添加任何解释性文字
2. **上下文隔离**: 每个子任务完成后即释放,结果只保留JSON
3. **并行处理**: 批次内的任务并行启动
4. **质量标准**: 遵循本文件的"内容质量标准"章节
5. **数据格式**: 按照 `.claude/schemas/project-content-template.md` 的格式要求
6. **数据验证**: 确保返回的JSON格式正确,字段完整
1. **⚠️ 必须先加载 skill**: 在执行任何探索任务前,必须使用 `Skill` 工具加载 `agent-browser` skill
2. **正确使用 agent-browser**: agent-browser 是 CLI 工具,通过 **Bash 工具**调用,不是 agent
3. **优先使用 snapshot**: 使用 `agent-browser snapshot -i` 获取结构化文本,避免使用截图
4. **只返回JSON**: 不要添加任何解释性文字
5. **顺序处理更稳定**: 虽然支持 session 并行,但建议顺序处理每个项目
6. **质量标准**: 遵循本文件的"内容质量标准"章节
7. **数据格式**: 按照 `.claude/schemas/project-content-template.md` 的格式要求
8. **数据验证**: 确保返回的JSON格式正确,字段完整
## 数据Schema验证
+15 -2
View File
@@ -116,6 +116,12 @@ TOTAL_BATCHES=$(( (TOTAL_TASKS + BATCH_SIZE - 1) / BATCH_SIZE ))
- model: sonnet
```
**重要提示**
- content-explorer-agent 会自动加载 `agent-browser` skill
- agent-browser 是一个 CLI 工具,通过 Bash 工具调用(不是 agent
- 使用 `agent-browser snapshot -i` 获取页面结构化文本(无头模式)
- 顺序处理每个项目,更稳定可靠
**输入格式**
```json
{
@@ -265,6 +271,12 @@ fi
- 数据格式遵循 `.claude/schemas/project-content-template.md`
- 质量标准由 `content-explorer-agent` 内部管理和执行
### 技术实现细节
- **浏览器自动化**: content-explorer-agent 使用 `agent-browser` CLI 工具(通过 Bash 工具调用)
- **无头模式**: 使用 `agent-browser snapshot -i` 获取页面结构化文本,避免截图
- **顺序处理**: 逐个访问项目页面,确保稳定性
- **上下文隔离**: Explorer Agent 在独立上下文中完成所有探索后释放
### 数据库影响
- 所有操作直接在生产数据库上进行
- 已存在的项目会被更新(基于URL去重)
@@ -280,8 +292,9 @@ fi
- 进度显示信息
### Explorer Agent 上下文(隔离)
- 项目探索内容
- 内容整理逻辑
- agent-browser skill 加载
- 项目探索流程(使用 agent-browser CLI 命令)
- 内容整理和验证
- → 每批处理完即释放
### Submitter Agent 上下文(隔离)