dsh-web-recorder
DSH 浏览器录制工具插件。可打开 headed Edge 浏览器窗口记录真实点击、输入、导航和网络请求,并生成 Markdown 格式的操作时间线报告(脱敏请求体与资产列表),供模型分析和复现。
AI 分析
核心用途是记录网页真实操作并提取接口级流程。适合需要分析网页业务流程、抓取接口参数并生成接口说明或 Agent Skill 的用户。插件只负责记录,不直接驱动页面操作。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:kakajun/dsh-web-recorder说明文档
阅读完整 README ↗使用方法:如何命中本插件
什么时候会命中(触发场景)
插件的 3 个工具会随插件启用出现在 DSH 会话的工具列表里,「命中」发生在模型做工具选择时——依据是工具名与描述。当用户任务属于「查清某个网页业务流程背后调用了哪些接口、参数/响应长什么样,并据此生成接口级流程说明或 skill」时,模型应主动调用 recorder_*。典型任务表述:
- "帮我把在 XX 平台上『xxx』流程背后调用的接口和调用顺序理清楚,做成 skill,让我以后直接用接口完成"
- "XX 页面点『查询』时发的请求是什么?参数怎么传?"
- "我在页面上操作一遍,你录下来,然后分析生成接口对接说明"
如果只是回答不涉及真实页面操作的问题(例如直接查文档就能答),模型通常不会命中本插件。
工具如何可用(加载)
本仓库即 DSH 插件:入口 lib/index.js(源码 src/index.ts),经 package.json 的 dsh.bundle.patch 指向仓库根 cordis.patch.yml 并入宿主 profile(其中 id/name 均为 dsh-web-recorder);@deepseek-ai/* 由宿主按 peerDependencies 提供。插件启用后工具即进入模型工具列表,无需额外声明即可被选择。
职责划分:本插件只「记录」,「打开页面 / 操作」交给驱动方
本插件不直接操作页面——工具只有 recorder_start / recorder_stop / recorder_status,职责是「旁观并记录」:它启动一个受监控的有头浏览器窗口,把窗口里发生的每一步 UI 操作与每个网络请求原样落盘。真正「打开 XXXX 页面并按步骤操作」的是浏览器驱动方,可以是:
- 真人:在插件弹出的窗口里手动点击 / 输入 / 跳转;
- playwright MCP:模型通过它打开页面、点击、填表,把目标流程一步步执行出来;
- 其他 browser-use 类工具:同样作为"手"来驱动浏览器执行流程。
模型(agent)在会话里做编排:先让记录仪就位,再指挥驱动方执行流程,最后收尾并读取产物分析。
配合 playwright MCP / browser-use 的推荐流程(打开 X 页面 → 录制步骤)
- 记录仪就位:
recorder_start("http://目标页面")——弹出受监控浏览器并打开起始页,从此刻起窗口内一切操作与网络请求都开始实时落盘events.jsonl - 驱动方执行流程:让 playwright MCP / browser-use(或真人)在同一个受监控窗口里逐步完成目标流程——打开各页面、填写表单、点击提交、翻页……每步操作的 UI 事件和它触发的接口调用都会被同时录下
- (可选)查进度:
recorder_status()——查看是否在录制、事件分类计数、产物目录 - 收尾:
recorder_stop()——生成report.md摘要报告并关闭浏览器(用户直接关窗口也会自动收尾) - 分析沉淀:模型读取
report.md+events.jsonl,归纳「流程步骤 × 接口调用 × 请求/响应契约」,进一步沉淀为 skill 或接口对接文档
协同前提(重要)
- 录制范围是插件自己启动的那个浏览器窗口(含其新标签页与 iframe);驱动方(真人或自动化工具)的操作必须发生在这个窗口里才会被录到。
- 当前实现的窗口由插件自启、面向人工直接操作;若要由 playwright MCP / browser-use 等自动化工具驱动同一个窗口,需要驱动工具能附着到该浏览器实例(共享实例 / CDP 连接)——此能力尚未内置,见下方「已知限制」。
前置条件与注意
- 本机需装有浏览器:默认用 Edge(
channel: msedge),可配chrome或executablePath;插件不下载浏览器 - 至少要有一种浏览器驱动方在场:真人演示,或 playwright MCP / browser-use 等自动化工具
- 有头窗口在录制期间可见,属预期,结束即关闭
events.jsonl含请求头/请求体/响应体等完整数据,按敏感数据处理,勿外发