背景
用 doubao_research 渠道做了 240 个非品牌词的批量豆包搜索采集(每词独立新会话),发现渠道/适配器有若干可改进点与 bug。以下均为 2026-08-06 实测(opencli 1.8.6、opencli-admin 0.4.1-fixed、agent Chrome 151)。
一、功能建议:doubao_research 渠道采集字段不全
当前 doubao_research_channel.py 只返回:
title(=question)、content(assistant 正文)、author、citations(回答内 URL 正则提取)
实际豆包页面还有这些可见模块,采集规范要求逐项记录,但渠道拿不到:
- 会话 URL:
opencli doubao ask 返回的 rows 里没有 conversation id;需要额外 doubao status(或适配器 ask 输出加一列 Url)才能拿到 https://www.doubao.com/chat/<id>。
- 每词独立新会话:渠道直接
ask,用的是 adapter 默认 siteSession(persistent → 同一会话复用)。批量采集要求每词新会话,需要先 doubao new 再 ask(或 ask 支持 --site-session ephemeral 强制新会话)。
- 页面模块(参考资料卡片、产品卡/外链、相关视频、推荐追问)无法从 ask 的文本输出获得,需要 CDP 对页面 DOM 提取(
Runtime.evaluate)。当前渠道无此能力。
建议:doubao_research 渠道增加可配置项(如 capture_page=True),在 ask 后通过 CDP 提取页面模块并合并进 raw_data/normalized_data;输出里补 conversation_url。
二、Bug / 稳定性问题
1. 验证码风控(最影响批量使用)
- 连续采集 50~60 词后,豆包必弹验证码(
rmc.bytedance.com/verifycenter/captcha/v2 iframe)。
- 渠道
Capabilities(default_rate="6/min") 声明的限速并未实际执行,触发后 ask 返回 COMMAND_EXEC / Doubao blocked the request with a verification challenge,任务直接 fail。
- 建议:检测到 captcha iframe 时自动降速/等待(如冷却 N 分钟重试),或在事件日志中明确提示需要人工通过(noVNC 可见),而不是直接 fail。
2. 偶发 doubao status 返回无会话 id
回答已生成后立即 status,偶发返回 Url: https://www.doubao.com/chat(无 id),重试 1-3 次(间隔数秒)可恢复。适配器 status 建议增加一次内部重试。
3. 适配器 ask 偶发崩溃
opencli doubao ask 偶发:Evaluate error: TypeError: Cannot read properties of null (reading 'cloneNode')(页面导航/状态竞态),退出码 1,无自动重试。
4. 容器内 daemon 只监听 localhost
agent-1 容器内 opencli daemon 实际监听 127.0.0.1:19825(entrypoint 里写了 OPENCLI_DAEMON_LISTEN=0.0.0.0 但未生效),导致 api 容器里 opencli browser <session> extract/state 报 "Remote Browser Bridge daemon at agent-1 is not reachable",只能绕过用 CDP 直连 :19222。建议 daemon 默认绑 0.0.0.0 或让 api 走 CDP 模式(OPENCLI_CDP_ENDPOINT 已支持)。
5. agent 容器 Chrome 无登录态引导
agent-1 Chrome 是全新 profile(游客态),豆包高频提问必触发验证码;渠道文档/UI 没有"请先在 noVNC 登录目标站点"的引导。建议在创建 doubao_research 源时给出登录引导提示。
三、已用的绕过方案(供参考)
- 登录:用户经 noVNC
http://localhost:6080 手动登录一次,登录 cookie 落盘 /home/chrome/.config/chromium。
- 每词流程:
doubao new → doubao ask → doubao status(拿 URL)→ CDP Runtime.evaluate 提取页面模块。
- 验证码:人工通过 + CDP
Page.reload 清残留 iframe;控制节奏(每词间隔 + 每批上限)降低触发频率。
复现环境
- opencli-admin 0.4.1-fixed(上游 0.4.1 缺 2 个 alembic 迁移文件的修复版)
- opencli 1.8.6、Chrome/Chromium 151.0.7922.71
- Windows 11 宿主机 + Docker Desktop,COLLECTION_MODE=local / AGENT_MODE=bridge
背景
用
doubao_research渠道做了 240 个非品牌词的批量豆包搜索采集(每词独立新会话),发现渠道/适配器有若干可改进点与 bug。以下均为 2026-08-06 实测(opencli 1.8.6、opencli-admin 0.4.1-fixed、agent Chrome 151)。一、功能建议:doubao_research 渠道采集字段不全
当前
doubao_research_channel.py只返回:title(=question)、content(assistant 正文)、author、citations(回答内 URL 正则提取)实际豆包页面还有这些可见模块,采集规范要求逐项记录,但渠道拿不到:
opencli doubao ask返回的 rows 里没有 conversation id;需要额外doubao status(或适配器 ask 输出加一列 Url)才能拿到https://www.doubao.com/chat/<id>。ask,用的是 adapter 默认 siteSession(persistent → 同一会话复用)。批量采集要求每词新会话,需要先doubao new再 ask(或 ask 支持--site-session ephemeral强制新会话)。Runtime.evaluate)。当前渠道无此能力。建议:
doubao_research渠道增加可配置项(如capture_page=True),在 ask 后通过 CDP 提取页面模块并合并进raw_data/normalized_data;输出里补conversation_url。二、Bug / 稳定性问题
1. 验证码风控(最影响批量使用)
rmc.bytedance.com/verifycenter/captcha/v2iframe)。Capabilities(default_rate="6/min")声明的限速并未实际执行,触发后 ask 返回COMMAND_EXEC / Doubao blocked the request with a verification challenge,任务直接 fail。2. 偶发
doubao status返回无会话 id回答已生成后立即 status,偶发返回
Url: https://www.doubao.com/chat(无 id),重试 1-3 次(间隔数秒)可恢复。适配器 status 建议增加一次内部重试。3. 适配器 ask 偶发崩溃
opencli doubao ask偶发:Evaluate error: TypeError: Cannot read properties of null (reading 'cloneNode')(页面导航/状态竞态),退出码 1,无自动重试。4. 容器内 daemon 只监听 localhost
agent-1 容器内
opencli daemon实际监听127.0.0.1:19825(entrypoint 里写了OPENCLI_DAEMON_LISTEN=0.0.0.0但未生效),导致 api 容器里opencli browser <session> extract/state报 "Remote Browser Bridge daemon at agent-1 is not reachable",只能绕过用 CDP 直连:19222。建议 daemon 默认绑 0.0.0.0 或让 api 走 CDP 模式(OPENCLI_CDP_ENDPOINT已支持)。5. agent 容器 Chrome 无登录态引导
agent-1 Chrome 是全新 profile(游客态),豆包高频提问必触发验证码;渠道文档/UI 没有"请先在 noVNC 登录目标站点"的引导。建议在创建 doubao_research 源时给出登录引导提示。
三、已用的绕过方案(供参考)
http://localhost:6080手动登录一次,登录 cookie 落盘/home/chrome/.config/chromium。doubao new→doubao ask→doubao status(拿 URL)→ CDPRuntime.evaluate提取页面模块。Page.reload清残留 iframe;控制节奏(每词间隔 + 每批上限)降低触发频率。复现环境