一键装好手机网页界面与浏览器工具链
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/23 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add typosbro/dsh-web-profile该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/23) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 28 处,展示前 28 条)
- 写入本地文件bench/run.mjs:89
writeFileSync(overlayPath, overlayFor(spec)); - 执行外部命令来自配置/变量bench/run.mjs:97
const child = spawn(cmd[0], cmd.slice(1), { env: process.env, stdio: ['ignore', 'pipe', 'pipe'] }); - 写入本地文件bench/run.mjs:106
writeFileSync(join(outDir, `${label}.jsonl`), stdout); - 写入本地文件bench/run.mjs:107
writeFileSync(join(outDir, `${label}.stderr.txt`), stderr); - 写入本地文件bench/run.mjs:112
mkdirSync(outDir, { recursive: true }); - 写入本地文件bench/run.mjs:113
writeFileSync(join(outDir, 'task.txt'), args.task + '\n'); - 写入本地文件bench/run.mjs:129
writeFileSync(join(outDir, 'summary.md'), lines.join('\n')); - 发起网络请求plugins/browser-live/client.js:67
const response = await fetch(INPUT_URL, { - 发起网络请求plugins/browser-live/client.js:237
fetch(STREAM_URL, { method: 'GET', cache: 'no-store' }).then((response) => { - 发起网络请求plugins/browser-live/index.js:188
const response = await fetch(cdpHttpEndpoint, { signal: AbortSignal.timeout(probeTimeoutMs) }); - 读取本地文件plugins/playwright-browser/run-playwright-mcp.mjs:36
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')); - 读取本地文件plugins/playwright-browser/run-playwright-mcp.mjs:55
for (const entry of readdirSync(npxRoot)) candidates.push(join(npxRoot, entry, 'node_modules', ...CLI_SUBPATH)); - 读取本地文件plugins/playwright-browser/run-playwright-mcp.mjs:61
if (!existsSync(candidate)) continue; - 执行外部命令来自配置/变量plugins/playwright-browser/run-playwright-mcp.mjs:82
const child = spawn(process.execPath, [cli, ...process.argv.slice(2)], { stdio: 'inherit', env: process.env }); - 发起网络请求plugins/voice-mode/client.js:1497
const response = await fetch(SPEAK_URL, { - 发起网络请求plugins/voice-mode/client.js:1752
const response = await fetch(url, { - 发起网络请求plugins/voice-mode/client.js:1919
const response = await fetch(STATUS_URL, { headers: { Accept: 'application/json' } }); - 读取本地文件plugins/voice-mode/lib/tts.js:285
const parsed = parseWav(await readFile(wavPath)); - 删除本地文件递归plugins/voice-mode/lib/tts.js:296
await rm(workdir, { recursive: true, force: true }).catch(() => undefined); - 发起网络请求plugins/voice-mode/src/app.js:356
const response = await fetch(SPEAK_URL, { - 发起网络请求plugins/voice-mode/src/app.js:611
const response = await fetch(url, { - 发起网络请求plugins/voice-mode/src/app.js:778
const response = await fetch(STATUS_URL, { headers: { Accept: 'application/json' } }); - 发起网络请求plugins/web-search/index.js:92
const response = await fetch(ENDPOINT, { - 执行外部命令来自配置/变量services/voice-bridge/src/exec.js:20
child = spawn(command, args, { stdio: ['pipe', 'pipe', 'pipe'], env }); - 发起网络请求services/voice-bridge/src/main.js:182
const response = await fetch(AGENT_URL, { - 发起网络请求services/voice-bridge/src/transport.js:116
const guild = await client.guilds.fetch(config.guildId); - 发起网络请求services/voice-bridge/src/transport.js:117
const channel = await guild.channels.fetch(config.voiceChannelId); - 删除本地文件递归services/voice-bridge/src/tts.js:120
await rm(tempDir, { recursive: true, force: true }).catch(() => {});
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
可复现的 DeepSeek Harness Web 配置档:手机外壳、PWA、锁定版本的 Playwright 浏览器栈、停止门控钩子
README
由 DeepSeek 最新模型翻译生成dsh-web-profile
给 DeepSeek Harness(dsh)准备的可复现配置档:网页 GUI、手机尺寸的 shell、可安装的 PWA、锁定版本的 Playwright 浏览器栈,外加一个 stop-gate 钩子——仓库里有 gate 时,它拒绝在「看起来做完了」的时候结束回合。
这就是「一切皆插件」的 harness,按智能体实际运行所需的方式配置好:声明式补丁层、锁定版本、一个能证明组合正确的 doctor,树里不放任何凭据。
快速开始
git clone https://github.com/<you>/dsh-web-profile.git
cd dsh-web-profile
./bootstrap.sh # installs dsh 0.2.1-alpha.1, the profile, plugins, hooks
dsh web # http://127.0.0.1:3080/
环境要求:Linux 或 macOS、Node 22+、pnpm(corepack enable)、rsync、python3,以及供浏览器工具使用的系统 Chrome/Chromium。
模型访问是故意不装的。
展开完整文档(README 剩余 1 节)
dsh-web-profile 给 DeepSeek Harness(dsh)准备的可复现配置档:网页 GUI、手机尺寸的 shell、可安装的 PWA、锁定版本的 Playwright 浏览器栈,外加一个 stop-gate 钩子——仓库里有 gate 时,它拒绝在「看起来做完了」的时候结束回合。 这就是「一切皆插件」的 harness,按智能体实际运行所需的方式配置好:声明式补丁层、锁定版本、一个能证明组合正确的 doctor,树里不放任何凭据。 快速开始 git clone https://github.com/<you>/dsh-web-profile.git cd dsh-web-profile ./bootstrap.sh # installs dsh 0.2.1-alpha.1, the profile, plugins, hooks dsh web # http://127.0.0.1:3080/ 环境要求:Linux 或 macOS、Node 22+、pnpm(corepack enable)、rsync、python3,以及供浏览器工具使用的系统 Chrome/Chromium。 模型访问是故意不装的。走原生路线,就在 ~/.dsh/.env 里设置 DEEPSEEK_API_KEY;或者用 examples/providers.cordis.patch.yml 添加一个 OpenAI 兼容服务商。 见 docs/models.md。 重新运行:FORCE=1 ./bootstrap.sh 会替换配置档,并保留一份带时间戳的备份。 用 ./doctor.sh 验证任何一次安装。 你会得到什么 | 层 | 作用 | 位置 | | 回环地址跳过鉴权 | 本地 GUI 打开时不用每进程 token;Host/Origin 防护仍然保留 | profiles/web/no-browser-auth.mjs | | 手机 shell | 侧边栏变成浮层抽屉、设置导航纵向堆叠、动态视口、安全区留白 | profiles/web/mobile-shell/ | | PWA | 真实的 manifest 和图标,Chrome 会提示安装;不含 service worker | profiles/web/web-pwa/ | | 浏览器栈 | 锁定 @playwright/mcp 0.0.83、无头 Chrome、给面板用的 CDP 旁路 | plugins/playwright-browser/、plugins/browser-pane/、plugins/browser-live/ | | Stop gate | 仓库自带的 gate 脚本拦住回合结束,最多拦两次 | hooks/ | | 权限 | 只读 / 工作区可写 / 完全危险访问三档预设 | profiles/web/cordis.patch.yml | 工具箱 零依赖脚本,外加教智能体何时运行它们的技能: - scripts/repo-map.mjs —— 按重要度排序、按 token 预算裁剪的仓库地图。目录树告诉你有什么,它告诉你什么重要。 - scripts/context-audit.mjs —— 把常驻上下文开销(AGENTS.md 加技能描述)和按需加载的技能正文分开,找出写了三遍的规则,抓出技能名冲突。 - scripts/wt.sh —— 每个任务一个 git worktree,放在仓库旁边,收尾时跑 gate。 - hooks/stop-gate.sh —— 先跑仓库的 gate,再跑一轮 diff 级审查(examples/agent-review.sh),发现泄露的密钥、冲突标记和 debugger 语句就拦下。 - bench/run.mjs —— 在两条模型路线上跑同一个任务,保留两份对话记录、退出码和耗时。harness 的改动靠测量,不靠争论。 配套技能放在 skills/ 下(repo-map、context-audit、worktree);把这些目录复制或软链接到你的技能根目录。还有哪些事值得做、哪些卡在 harness 版本上,见 docs/improvements.md。 为什么要用配置档 DSH 按分层补丁组合出配置档:先 bundle 层,再 profiles/<name>/cordis.patch.yml,最后是 --patch 覆盖层。这里每加一行都是一次有理由的决策,理由就写在那一行旁边。正因如此,这套配置才可审查,而不是一堆设置:一条配置说不清自己的理由,就删掉。 一句话说清它为什么存在:同一个模型,换个 harness,产出的活就不一样。跑测试的关卡对输出的影响,比调 temperature 旋钮更大;子代理丢掉搜索噪音,对上下文预算的影响,比加长系统提示词更大。见 docs/why-these-rows.md。 本仓库不包含什么 - 凭据、会话、token、浏览器配置档,以及凭据存储。 - 个人技能和记忆文件。briefing 技能作为结构化输出契约的示例收录。 - 作者的 tailnet、中继主机名、SearXNG 实例,以及多账号模型密钥。这些是可选模块,文档在 examples/。 复现,实话实说 bootstrap.sh 锁定 harness 版本和配置档依赖,安装同一层补丁;组合出错时,doctor.sh 会大声报错。无法复现的部分: - 模型访问(你的密钥、你的服务商、你的配额); - 宿主机(Chrome 二进制、字体、GPU、显示器); - 你放在 ~/.dsh 里、不属于本配置档的任何东西(凭据、会话、个人技能)。 确切的保证范围和升级路径,见 docs/replication.md。 License MIT。它锁定的 Playwright MCP 服务器是 Apache-2.0;DeepSeek Harness 是 MIT。 文档 - docs/why-these-rows.md —— 每条补丁行的决策日志。 - docs/models.md —— 原生、OpenAI 兼容、订阅三种接入方式。 - docs/replication.md —— 哪些有保证、哪些没有、升级路径。 - docs/improvements.md —— 已落地的想法、受阻的插件、下一步。 - docs/upgrading.md —— 迁移到 0.2.1-rc.2,解锁插件生态。 - docs/ideas-from-other-harnesses.md —— 促成这一切的那次调研。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
typosbro/dsh-web-profile
一键装好手机网页界面与浏览器工具链
相关插件 · 浏览器
智能体插件框架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
这是你的仓库?认领条目