Files
contentm_agent/.workbuddy/skills/aigc-idea-impression/references/操作规范/浏览器调AI工具-提问方法.md
T
WorkBuddy df56c2c137 初始化提交:contentm_agent 工作区全量快照
内容分四块:
1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。
2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。
3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。
4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。

.gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
2026-10-08 08:13:02 +08:00

6.2 KiB
Raw Blame History

用 browser-harness 访问 AI 工具(ChatGPT 等)的提问方法

适用场景:需要让 ChatGPT / Claude 之类网页版 AI 工具参与工作(求修改建议、核对方案、做结构评审)时的通道与提问规范。 本机实测环境:browser-harness 0.1.8(~/.local/bin/browser-harness.exe)、Chrome 154、独立 profile E:/ProgramData/.workbuddy/tmp/bu-chatgpt-profile。 建立时间:2026-10-07(用户定案)。


一、通道:怎么把浏览器跑起来

1. 🔴 浏览器要由常驻后台任务开着

本机的执行沙箱会在父进程退出时连带杀掉子进程。实测对照:

起法 结果
普通(同步)调用里起 Chrome 端口 1 秒内就绪,但调用一返回、Chrome 立刻死(curl 随即 WinError 10061)
后台任务里起,且该任务一直不退出(起完就守着端口) ✅ 全程常驻,后续可以反复连
后台任务里起,但任务跑完就退出 任务一结束,Chrome 一起没

⇒ 正确姿势:先起一个常驻任务专门把浏览器开着(起 Chrome → 循环守着端口 → 掉了写日志),之后每次操作只连不起。

⛔ 别让每次调用各自起一遍浏览器 —— 父进程一退就全没了;而且多个实例会抢同一个 profile,新起的会被旧实例「接管」后随即退出。

2. 起独立实例,⛔ 不附着用户日常 Chrome

chrome.exe --remote-debugging-port=9223 \
  --user-data-dir=E:/ProgramData/.workbuddy/tmp/bu-chatgpt-profile \
  --proxy-server="socks5://127.0.0.1:10800" about:blank
  • 端口用 9223(用户日常 Chrome 是 9222,附着它会弹「允许远程调试?」去动用户自己的浏览器)。
  • --user-data-dir 固定复用 ⇒ 登录态保留(该 profile 已登录 ChatGPT 免费版)。

3. BU_CDP_URL 必须带 scheme

http://127.0.0.1:9223 ✅ / 127.0.0.1:9223 ❌(直接报 unknown url type)。

4. 必须清掉沙箱代理变量

HTTP_PROXY / HTTPS_PROXY 会劫持本地 CDP 请求 ⇒ HTTP Error 502: Bad Gateway。

env -u HTTP_PROXY -u HTTPS_PROXY -u http_proxy -u https_proxy \
    NO_PROXY=127.0.0.1,localhost BU_CDP_URL=http://127.0.0.1:9223 browser-harness

Python 里用 subprocess 调时,同样要在 env 里 pop 掉这四个变量。

5. 可执行体是 .exe

~/.local/bin/browser-harness.exe。Python subprocess.run(["browser-harness", ...]) 在 Windows 上可能找不到 ⇒ 写全名。


二、提问方法(重点)

1. 只说明「意图和目标 + 完整上下文」,少写控制指令

2026-10-07 用户定案:和 AI 沟通,说清意图和目标、给出完整上下文就行,不用写太多控制指令。

  • ✅ 写清四件事:背景是什么 → 目标是什么 → 我做了什么 → 一句明确的提问。
  • ⛔ 不写「别只夸」「逐条说」「必须回答 X 个问题」「你只能……」「按下面格式回答」这类操纵性/限制性指令 —— 会挤占上下文,还会诱导回答偏向。

2. 它看不到你的本机路径

⛔ 不要把「见 references/xxx.md」「文件在 E:/...」当作交代内容 —— AI 读不到本机。

两条可行做法(任选):

做法 说明
全文内联 把要评审的内容逐字贴进消息正文(已验证可行:5,078 字正常送达)
上传文件 用 input[type=file] + DOM.setFileInputFiles 把文件作为附件传上去,正文只写简短提问

3. 一轮一个主题,末尾一句明确提问

提问句要短、要具体,例如「你看看这版还有哪里需要优化」。

4. ✅ 判断「消息有没有真发出去」的硬证据 = 输入框被清空

血的教训(2026-10-07 实测踩到):页尾出现我的问题文本 ≠ 已发出 —— 因为输入框(div.ProseMirror)本身就在 main 元素里,它的内容会出现在 innerText 的尾部,看起来就像已经发出去的提问。

⇒ 判据只有一条:发送动作之后回读输入框,长度归零。


三、页面操作细节(ChatGPT 当前 Web UI · 实测)

项 当前可用写法
输入框 div.ProseMirror[role="textbox"] ⚠️ 旧写法 #prompt-textarea 已不存在
发送按钮 #composer-submit-button → button[data-testid="send-button"] → button[aria-label="发送"](依序兜底)
取正文 `(document.querySelector('main')
上传文件 input[type="file"] + cdp("DOM.setFileInputFiles", files=[路径], nodeId=...)
消息切分锚点 你说: / ChatGPT 说: / ChatGPT 可能会出错

⚠️ 三个易误判点:

  1. 一页可能有多个 ChatGPT 说:(历史轮次)⇒ 取正文必须用 rfind 取最后一个,find 会切到上一轮的回复。
  2. 「ChatGPT 可能会出错」不是完稿信号 —— 它一直在页面上。完稿判据 = 正文长度稳定(连续两次采样不变)。
  3. 「思考」是输入框工具栏的按钮文案,不是「正在生成」状态。

四、脚本写法(避坑)

  • ⛔ 不要在 Python 里拼 heredoc + 转义引号喂给 harness —— 嵌套转义必然出 SyntaxError(实测踩到)。
  • ✅ 把每一步 harness 脚本写成独立 .py 文件(step_open.py / step_send.py / step_probe.py / step_dump.py),驱动脚本读文件后经 stdin 喂给 harness。
  • ✅ 驱动全程写日志落盘(run_xxx.log),每步打 rc 与关键读数,失败时能直接定位到是哪一步。

五、失败排查顺序

1. 端口探活:curl --noproxy '*' -m 5 http://127.0.0.1:9223/json/version
2. 进程在不在(tasklist):不在 ⇒ 十有八九是父进程退了(回到「一.1」用后台任务)
3. 代理变量是否清干净(一.4)
4. browser-harness --doctor
5. 仍失败 ⇒ 检查 Chrome 是否弹「允许远程调试」(chrome://inspect/#remote-debugging)

六、变更历史

  • 2026-10-07 建立。来源:本次用 browser-harness 调 ChatGPT 核对 1b 竞品分析方法论修改效果的全过程实测。