录制浏览器操作,自动生成定时执行的爬取脚本
28.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kumanana66/dsh-automation该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 77 处,展示前 59 条)
- 写入本地文件lib/index.js:28
mkdirSync(baseDir, { recursive: true }); - 发起网络请求client/client.js:39
fetch(path, { - 读取本地文件lib/storage.js:7
return JSON.parse(readFileSync(file, 'utf8')); - 写入本地文件lib/storage.js:17
writeFileSync(tmp, body, 'utf8'); - 写入本地文件lib/storage.js:18
renameSync(tmp, file); - 写入本地文件lib/storage.js:21
writeFileSync(file, body, 'utf8'); - 写入本地文件lib/storage.js:33
mkdirSync(baseDir, { recursive: true }); - 写入本地文件lib/storage.js:37
mkdirSync(tasksDir, { recursive: true }); - 写入本地文件lib/storage.js:38
mkdirSync(runsDir, { recursive: true }); - 读取本地文件lib/storage.js:73
return readdirSync(tasksDir) - 读取本地文件lib/storage.js:87
if (existsSync(f)) { - 删除本地文件lib/storage.js:89
unlinkSync(f); - 读取本地文件lib/storage.js:97
if (!existsSync(dir)) return []; - 读取本地文件lib/storage.js:98
return readdirSync(dir) - 读取本地文件lib/storage.js:119
const ents = readdirSync(cur, { withFileTypes: true }); - 删除本地文件递归lib/storage.js:223
rmSync(p, { recursive: true, force: true }); - 执行外部命令固定命令lib/storage.js:287
const child = spawn('cmd.exe', ['/c', 'start', '', 'explorer.exe', target], { detached: true, stdio: 'ignore' }); - 执行外部命令来自配置/变量lib/storage.js:316
exec(ps, { windowsHide: true, maxBuffer: 1024 }, () => {}); - 执行外部命令固定命令lib/storage.js:324
const child = spawn('cmd.exe', ['/c', 'start', '', 'explorer.exe', target], { detached: true, stdio: 'ignore' }); - 写入本地文件lib/runner.js:52
mkdirSync(taskDir, { recursive: true }); - 写入本地文件lib/runner.js:60
writeFileSync(codeFile, task.code, 'utf8'); - 执行外部命令来自配置/变量lib/runner.js:76
child = spawn(python, [codeFile], { env, cwd: taskDir, windowsHide: true }); - 读取本地文件lib/runner.js:100
result = JSON.parse(readFileSync(resultFile, 'utf8')); - 写入本地文件lib/runner.js:123
try { mkdirSync(taskDir, { recursive: true }); } catch (e) {} - 写入本地文件lib/runner.js:126
try { writeFileSync(codeFile, task.code, 'utf8'); } catch (e) { - 执行外部命令来自配置/变量lib/runner.js:139
try { child = spawn(python, [codeFile], { env, cwd: taskDir, windowsHide: true }); } - 读取本地文件lib/runner.js:160
try { result = JSON.parse(readFileSync(resultFile, 'utf8')); } catch {} - 写入本地文件lib/notifier.js:10
mkdirSync(recordsDir, { recursive: true }); - 写入本地文件lib/notifier.js:38
writeFileSync(join(recordsDir, safe(run.id) + '.md'), summary, 'utf8'); - 执行外部命令固定命令lib/recorder.js:24
const r = spawnSync('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCmd], - 读取本地文件lib/recorder.js:46
if (!existsSync(p)) return null; - 读取本地文件lib/recorder.js:47
return JSON.parse(readFileSync(p, 'utf8')); - 写入本地文件lib/recorder.js:82
mkdirSync(dir, { recursive: true }); - 执行外部命令来自配置/变量lib/recorder.js:99
probe = spawnSync(python, ['-c', probeCode], { timeout: 20000, encoding: 'utf8' }); - 执行外部命令来自配置/变量lib/recorder.js:114
const child = spawn( - 写入本地文件lib/recorder.js:128
writeFileSync(join(dir, 'state.json'), JSON.stringify({ - 写入本地文件lib/recorder.js:165
writeFileSync(join(dir, 'stop.flag'), 'stop', 'utf8'); - 读取本地文件lib/recorder.js:187
if (existsSync(doneFile)) { - 写入本地文件lib/recorder.js:228
writeFileSync(join(current.dir, 'stop.flag'), 'stop', 'utf8'); - 执行外部命令来自配置/变量lib/recorder.js:251
proc = spawn(python, args, { stdio: ['ignore', 'pipe', 'pipe'], windowsHide: true }); - 执行外部命令来自配置/变量lib/asr.js:15
const r = spawnSync(python, ['-c', 'import faster_whisper; print("OK")'], { - 读取本地文件lib/asr.js:35
try { entries = readdirSync(dir, { withFileTypes: true }); } catch { return; } - 执行外部命令来自配置/变量lib/asr.js:65
const r = spawnSync(python, ['-c', - 读取本地文件lib/asr.js:84
if (existsSync(modelDir)) { - 执行外部命令来自配置/变量lib/asr.js:99
const child = spawn(cmd, args, { shell: false, windowsHide: true }); - 读取本地文件lib/asr.js:113
if (existsSync(modelDir)) { - 删除本地文件递归lib/asr.js:115
try { rmSync(modelDir, { recursive: true, force: true }); } catch (e) { logs.push('[warn] ' + (e.message || e)); } - 读取本地文件lib/asr.js:128
if (existsSync(p)) return p; - 读取本地文件lib/asr.js:131
const entries = readdirSync(dir); - 读取本地文件lib/asr.js:142
if (!audioPath || !existsSync(audioPath)) return reject(new Error('音频文件不存在: ' + audioPath)); - 执行外部命令来自配置/变量lib/asr.js:156
child = spawn(python, args, { shell: false, windowsHide: true }); - 写入本地文件lib/asr.js:184
writeFileSync(tpath, text, 'utf8'); - 读取本地文件lib/routes.js:265
if (!existsSync(target)) { - 读取本地文件lib/routes.js:270
const data = readFileSync(target); - 写入本地文件lib/routes.js:508
try { mkdirSync(chunksDir, { recursive: true }); } catch {} - 写入本地文件lib/routes.js:520
try { writeFileSync(chunkPath, bytes); } catch (e) { - 写入本地文件lib/routes.js:535
try { appendFileSync(join(chunksDir, 'live.txt'), (text ? text + '\n' : '')); } catch {} - 读取本地文件lib/routes.js:556
if (existsSync(tpath)) { - 读取本地文件lib/routes.js:557
transcript = readFileSync(tpath, 'utf8');
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 录制浏览器操作
- 生成爬取脚本
- 定时运行与通知
RPA 式定时网页自动化,为 DeepSeek Harness 打造:录制浏览器操作 → 需求文档 → LLM 生成 Python + Playwright → 定时运行并留存运行记录与邮件通知
README
由 DeepSeek 最新模型翻译生成dsh-automation
DeepSeek Harness 的 RPA 式定时网页自动化插件:录制操作 → 生成需求文档 → LLM 生成 Python+Playwright 代码 → 配置触发器定时执行 → 记录运行结果并邮件通知。
使用流程
1. 打开 Harness Web UI(默认 http://127.0.0.1:3080)→ 设置 → 自动化任务。
2. 点「新建自动化任务」:
- 方式 A:录制操作 — 输入起始网址点「开始录制」,会弹出一个可见的 Chrome 窗口,你在里面正常操作(点击/输入/翻页),每一步自动截图。按 F9 或点浮动「停止录制」按钮结束,然后点「生成需求文档」。
- 方式 B:手动写需求 — 跳过录制直接编写需求文档。
3. 微调需求文档(可编辑)。
4. 点「生成自动化代码」→ LLM 生成 Python + Playwright 脚本(可编辑)。
5. 运行配置:下载/获取内容的保存目录、运行记录存储目录、通知邮箱。
6. 触发器:cron(如 0 9 * * 每天 9 点)/ 间隔 / 一次性 / 仅手动。
7. 保存。任务到点自动执行;每次运行生成一份 .md 运行记录,可选 SMTP 邮件通知。
展开完整文档(README 剩余 1 节)
dsh-automation
DeepSeek Harness 的 RPA 式定时网页自动化插件:录制操作 → 生成需求文档 → LLM 生成 Python+Playwright 代码 → 配置触发器定时执行 → 记录运行结果并邮件通知。
使用流程
1. 打开 Harness Web UI(默认 http://127.0.0.1:3080)→ 设置 → 自动化任务。
2. 点「新建自动化任务」:
- 方式 A:录制操作 — 输入起始网址点「开始录制」,会弹出一个可见的 Chrome 窗口,你在里面正常操作(点击/输入/翻页),每一步自动截图。按 F9 或点浮动「停止录制」按钮结束,然后点「生成需求文档」。
- 方式 B:手动写需求 — 跳过录制直接编写需求文档。
3. 微调需求文档(可编辑)。
4. 点「生成自动化代码」→ LLM 生成 Python + Playwright 脚本(可编辑)。
5. 运行配置:下载/获取内容的保存目录、运行记录存储目录、通知邮箱。
6. 触发器:cron(如 0 9 * * 每天 9 点)/ 间隔 / 一次性 / 仅手动。
7. 保存。任务到点自动执行;每次运行生成一份 .md 运行记录,可选 SMTP 邮件通知。
服务端 API(/dsh-automation/)
| 接口 | 说明 |
| GET /status | 插件状态 |
| GET/POST /config | 读写配置(LLM provider/model、Python 路径、SMTP、目录) |
| GET /models | 列出可用 LLM provider 与模型 |
| GET/POST /tasks | 任务列表 / 新建任务 |
| GET/PUT/DELETE /tasks/:id | 任务详情 / 更新 / 删除 |
| POST /tasks/:id/run | 立即运行一次 |
| POST /tasks/:id/enable | 启用 / 停用触发器 |
| GET /tasks/:id/runs | 运行历史 |
| POST /record/start POST /record/stop GET /record/status | 录制器控制 |
| POST /generate/requirement | 录制数据 → 需求文档 |
| POST /generate/code | 需求文档 → Python 代码 |
| POST /notify/test | 发送测试邮件 |
配置
- LLM:复用 harness 的 ctx.llm(provider 如 deepseek-official / ali),不单独消耗 API key;留空自动选择。
- Python:生成脚本用 python 配置的执行(默认 D:\Anaconda3\python.exe),需 pip install playwright 并 playwright install chromium。
- 邮件:SMTP 配置(host/port/账号/授权码)+ 收件邮箱。agent-mail MCP 适配器可后续接入(代码中 notifier.notify 是唯一出口)。
数据存储
$DSH_HOME/profiles/web/data/dsh-automation/:
- tasks/.json 任务定义(需求、代码、触发器、配置)
- runs//.json 结构化运行记录
- recordings/*/ 录制数据(steps + 截图)
- settings.json 插件配置
开发说明
- 服务端:lib/index.js(cordis 插件,inject: ['webServer', 'llm']),HTTP 路由用 ctx.webServer.register({ kind: 'prefix', path: '/dsh-automation', handler })。
- 客户端:client/client.js 通过 window.__ModuleLoader__.load 注入,ctx.slots.inject('settings.section', ...) 挂载设置页。
- 录制器:runner/recorder.py(headed Chromium + 注入录制脚本,F9 停止)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kumanana66/dsh-automation
录制浏览器操作,自动生成定时执行的爬取脚本
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目