仅 Windows:本地加密凭据库(DPAPI 包裹的 AES-256-GCM)配无头 Chrome 登录态保管:31 个 agent 工具登录一次即可把会话存到本机,之后抓登录墙内的页面(贴吧、NGA、Pixiv、书屋)并逐楼层提取正文。页面实时镜像到可拖动、可收起的右边缘抽屉,点击、打字、滚动经 CDP 回放,验证码不必再开独立浏览器窗口。可迁移 Edge/Chrome 已存密码:插件会读取浏览器的 Login Data 密码库,在进程内解密 v10/v11 条目,并把密码库及其密钥复制进自己的受控 profile 让浏览器自动填充(v20 App-Bound 条目只能自动填充、无法离线解密)。另附一条命令修复 DSH profile 登记的安装器,以及内置自检。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-yunpa
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:binskyz/dsh-yunpa
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness(DSH)插件:本地加密凭据库 + 无头浏览器登录态 + 带登录态抓取。 面向"登录墙后面的内容"——贴吧、NGA、Pixiv、爱丽丝书屋这类站点,一次登录,之后由 agent 复用。
- 凭据只存本机:DPAPI 包裹主密钥 + AES-256-GCM,明文不落盘、不进对话
- 浏览器默认 headless-shell 无窗口,外部连接 0(拦掉 11 个 Google 后台域名)
- 设置页在 DSH 设置里(「云爬」),五个页签:概览 / 凭据库 / 密码库 / 站点 / 诊断
- 31 个
auth_*+browser_*工具,动作层走 CDP,无第三方依赖
安装
从 npm(推荐)
dsh plugin add dsh-yunpa
装完重启 DSH → 设置里出现「云爬」,左侧栏多一个云图标。
从源码(改代码时用)
git clone https://github.com/binskyz/dsh-yunpa.git
cd dsh-yunpa
node install.mjs # 登记 dependencies + bundles + 目录联接 + cordis 条目(幂等,改前备份)
node install.mjs --check # 只体检:八项,缺什么直接告诉你
重启 DSH → 设置里出现「云爬」。
install.mjs 做的事就是 DSH 插件「装好了」的四个条件,少一件的表现各不相同:
| 少哪件 | 症状 |
|---|---|
profile dependencies 没登记 |
插件在跑,但「设置 → 插件 → 已安装」里查无此人 |
dsh.profile.bundles 没写 |
装了不挂载,工具一个都不出现 |
node_modules/dsh-yunpa 不是指向本源 |
改了代码不生效,两边版本悄悄分叉 |
cordis.yml 缺 insert(或写重两条) |
不加载,或开关互相覆盖 |
不想用联接、想手工放一份副本也行:把目录拷进 profile/node_modules/,再在 cordis.patch.yml 末尾加
- insert:
- id: yunpa
name: 'dsh-yunpa'
config: {}
出问题时先跑 node recover.mjs --status,再用 node recover.mjs 把挂载摘掉(详见 docs/崩溃与还原.md)。
首次使用
node check-all.mjs # 13 项自检,全绿再动手
node upgrade.mjs # 看浏览器版本(--apply 更新,sha256 校验 + 版本校验)
工具侧(在对话里说):
| 你说 | 动作 |
|---|---|
| 登录贴吧 / 帮我登 NGA | auth_login mode=browser(唯一会弹窗的路径) |
| 用账号密码登 | auth_login mode=form(要验证码时给码再调一次) |
| 抓登录态 | auth_capture(可 wipeProfile 抓完清 profile) |
| 看登录态 | auth_status |
| 抓这个链接 | auth_fetch(kind:"posts" 楼层 / kind:"threads" 吧列表) |
| 翻页抓 | auth_fetch {pages:20}(贴吧 pn、NGA page,合并去重、楼层连号) |
| 记住账号密码 / 忘了它 | auth_vault set / forget |
| 我把 cookie 给你 | auth_cookie |
| Edge 里有什么密码 | auth_edge_list |
| 把密码迁移出来 | auth_pw_open → 点一次自动填充 → auth_pw_grab |
一次登录能做什么
贴吧:吧列表(kind=threads) → 帖内楼层(kind=posts, pages=20) → 结构化 JSON 落盘
NGA :帖内楼层(pages=N) → 作者+正文
Pixiv:作品/系列页 → 正文
书屋:书目 → 章节 → 正文
隐私与限制(务必读)
- Windows-only:DPAPI / icacls / PowerShell 共享读。
- profile 内 cookie 是 v10:同用户进程可解;敏感站点建议
auth_capture {wipeProfile:true}。 - Edge 密码库是 v20(App-Bound):离线解不开,只能"浏览器自己填 → 读 DOM"(
auth_pw_*)。 - CDP 调试口只绑 127.0.0.1:9333–9336,本机任意进程可连;不用就
auth_browser_close。 - 无 OS 级隔离,浏览器以你的用户权限运行。
开发
core.js 凭据库 / CDP / 抓取 / 审计日志
browser.js 快照-编号-ref 动作层
edge_creds.js Edge 密码库读取(v10 解密 / v20 识别)
pwmigrate.js 密码迁移(临时 profile,用后即焚)
api.js 设置页 API(同源校验 + CLI token)
client.js 设置页(手写 ModuleLoader 包)
自检:node check-all.mjs(13 项)/node smoke.mjs(加载期冒烟,不需要浏览器)。
License
MIT。仅供在你自己的账号与设备上使用;凭据安全由本机 DPAPI 与你的系统账户边界保证。
链接
同类插件
Tencent/BrowserSkill#dsh-plugin-browserskill★ 9929
BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edge Agent Window,支持可访问性与 VOM 页面观察、截图、隔离的多会话控制和 Web UI 实时观察浮层。
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 966
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 911
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
DDDMUC/dsh-free-search★ 817
DSH 免费搜索插件:7 个引擎(DuckDuckGo/Bing/SearXNG 免费 + Exa/Perplexity/DeepSeek 付费)、自动回退、设置页 UI(API key 输入 + 官网链接)、web_fetch、引擎测试工具。
Fisfzy/dsh-ego-browser★ 395
用 35 个结构化工具从 DeepSeek Harness 驱动真实 Chrome/Chromium:导航、语义快照、点击、表单、JavaScript/CDP、截图、下载与标签页管理;右侧边栏实时镜像页面,并支持鼠标键盘直接接管。插件自带受管 CDP 运行时,跨调用保留登录状态,并可通过配套 Chrome 扩展从日常浏览器导入 cookie。
wqty123/dsh-browser★ 162
共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。