按用户指示做**一包提交**,不按工作流拆分。本提交刻意混合了多条并行线:
· 本地 ASR 接管:audio 成为与 chat/embed/image/video 同等的路由类别
(IsLocalRoute 单一判据、audio 健康探测、default_audio_route、
auto 占位、GET /api/ai/routes/audio、回退云端时界面明示「音频已出网」)
· LLM 调用层:ctx 贯穿、ToolCall/ToolSchema、EmptyCompletionError /
TransientUpstreamError(按错误类型而非文案判重试)
· 编排 Agent:general_assistant orchestrate/persistence/spec_driver
· 联网搜索:internal/search(playwright)
· 网盘:backend + 前端
· 前端 UI:导航/路由/工作台若干页
· 交付文档:DELIVERY.md / AR04 / 部署文档的「无 Python」表述据实改写,
新增 eai_agentplatform-asr.service、asr.env、clonezilla-cleanup 清 ~/asr-poc
不分拆的原因:dev 早期,粒度不该打断工作节奏。且实测过——这些改动
**在编译上是同一个单元**(llm.go 的 ctx 签名变更牵动 12 个调用点,
chat_message.go 的 ctx 改动又与编排重写同处一个 hunk),拆出来的中间态编不过。
详见 TOP_CODING_RULES.md G14.5 与 bugs_and_errors.md E09。
Co-Authored-By: Claude Code <noreply@anthropic.com>
3.2 KiB
3.2 KiB
通用专员测试归集
按轮次组织,每次运行一个独立子目录 run_<序号>。
每个子目录包含:
| 文件 | 内容 |
|---|---|
request.json |
发送的请求体 |
response.json |
后端完整响应(含正文与产物) |
summary.md |
单次结论(意图类别/耗时/字数/是否编排/落库数) |
覆盖的三类路径:direct_answer(直答) / single_search(单问联网) / orchestrated(多 Agent 编排)。
本轮测试记录(2026-09-25)
| run | 场景 | 意图 | 结果 | 备注 |
|---|---|---|---|---|
run_01 |
人形机器人行业报告(挂载 task 94) | orchestrated | ✅ 21 子任务/19547字 + details,落库 11 条 | 编排+落库共生验证 |
run_02 |
具身智能行业事件/融资搜索 | single_search | ⚠️ 搜索空,诚实降级 | SearXNG 上游无结果 |
run_03 |
周末放松闲聊 | direct_answer | ✅ 302字,无联网 | 快答 |
run_04 |
宇树/优必选/智元对比 | orchestrated | ✅ 16 子任务/12593字 + details | 公司对比 |
run_05 |
Tesla Optimus 定价(英文) | single_search | ⚠️ 搜索空,诚实降级 | SearXNG 上游无结果 |
⚠️ 阻塞发现:SearXNG 上游引擎失效
编排/直答路径正常;但单问联网搜索几乎必然"无结果"。根因不在本项目代码,而在 SearXNG 服务器自身:
- baidu / sogou:
Suspended: CAPTCHA(被中文搜索引擎验证码封锁) - wikipedia:
ConnectTimeout(外网超时) - bing:返回 200 但解析 0 条(疑似 CDN/区域校验页)
- google / duckduckgo:宿主机不可达(
000连接超时,已被墙) - bilibili:✅ 唯一可用,20 条结果
→ 可用引擎仅剩 1 个,实时资讯类查询(汇率/行业融资/新闻)在百度/搜狐被封后落到空结果。
修复尝试与最终结论(2026-09-25)
按用户方向「接入可用的第三方搜索源」,新建 search/sogou.go 搜狗兜底源 + client.Search 多源回退(SearXNG 空/失败 → 搜狗),并加了验证码页识别与一次退避重试。解析器针对真实搜狗页面结构(<a href><h3 class="vr-title"><span>标题</span>)适配,TestParseSogouFixture 用真实抓取页断言 6 条干净结果、通过。
但最终验证发现:所有免费、墙内可访问的搜索源均对「无头 HTTP 抓取」启用反爬,无法稳定作为生产上游:
| 源 | 反爬机制 |
|---|---|
| baidu / sogou | JS/SNUID/CAPTCHA 人机校验(需执行 JS 或真实浏览器) |
| bing (cn) | 非浏览器 UA 返回无关缓存页,不按关键词匹配 |
| google / duckduckgo | 宿主机不可达(网络阻断) |
| 360 so.com | 302 反爬重定向 |
| bilibili(经 SearXNG) | ✅ 唯一可用,但结果是视频类内容,非通用网页 |
结论:SearXNG 空结果并非 SearXNG 自身故障,而是其所有上游引擎均对当前数据中心 IP 的 HTTP 抓取封禁。搜狗兜底代码架构就绪、解析可用,但源在持续探触后升级为 checkSNUID JS 校验页,无法由纯 Go HTTP 客户端通过。要恢复通用联网闭环,需在「付费搜索 API / 真实浏览器(Playwright) / 代理池」三选一投入(属部署/预算决策,见对话)。