按用户指示做**一包提交**,不按工作流拆分。本提交刻意混合了多条并行线:
· 本地 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>
49 lines
3.2 KiB
Markdown
49 lines
3.2 KiB
Markdown
# 通用专员测试归集
|
||
|
||
按轮次组织,每次运行一个独立子目录 `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) / 代理池」三选一投入**(属部署/预算决策,见对话)。 |