Files
eaiadminandClaude Code c1af86c934 feat(asr): 本地语音转写接入为一级路由 + 并行工作流合并提交
按用户指示做**一包提交**,不按工作流拆分。本提交刻意混合了多条并行线:

  · 本地 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>
2026-09-26 22:21:39 +08:00

49 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 通用专员测试归集
按轮次组织,每次运行一个独立子目录 `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) / 代理池」三选一投入**(属部署/预算决策,见对话)。