遮挡侧栏标题并打码截图,保护当前窗口隐私
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/5 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add daftAI2026/PDSH该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 99 处,展示前 56 条)
- 读取本地文件index.js:197
const root = await realpath(packageLink); - 读取本地文件index.js:198
const manifest = JSON.parse(await readFile(join2(root, "package.json"), "utf8")); - 读取本地文件index.js:201
if (!(await lstat(path)).isFile()) throw new Error("invalid capture runtime file"); - 读取本地文件index.js:202
const physical = await realpath(path); - 读取本地文件index.js:408
return lstatSync(path).isFile(); - 读取本地文件build.ts:16
const { name: packageName, version } = JSON.parse(await readFile(new URL('./package.json', import.meta.url), 'utf8')); - 读取本地文件build.ts:20
const { artwork } = JSON.parse(await readFile(new URL('./style-sources.json', import.meta.url), 'utf8')); - 执行外部命令固定命令build.ts:24
execFileSync('/bin/sh', ['native/build.sh'], { cwd: root, stdio: 'inherit' }); - 执行外部命令固定命令build.ts:27
execFileSync('powershell.exe', ['-NoProfile', '-File', 'native/windows/build.ps1'], { cwd: root, stdio: 'inherit' }); - 读取本地文件build.ts:31
const glyph = (await readFile(new URL('./src/client/entry-icon.svg', import.meta.url), 'utf8')).replace(/<!--[ ]*?--> */, ''); - 写入本地文件build.ts:34
await writeFile(join(root, 'plugin-icon.svg'), `<!--\n[INPUT]: src/client/entry-icon.svg 与 style-sources.json,由 build.ts 生成。\n[OUTPUT]: 按宿主 color-sche - 读取本地文件build.ts:41
const libraryStat = await lstat(libraryDirectory); - 读取本地文件build.ts:43
await realpath(libraryDirectory) !== join(await realpath(root), 'lib')) - 写入本地文件build.ts:45
await mkdir(runtimeDirectory, { recursive: true }); - 读取本地文件build.ts:46
const runtimeStat = await lstat(runtimeDirectory); - 写入本地文件build.ts:50
await writeFile(join(runtimeDirectory, 'CLAUDE.md'), `# lib/capture-runtime/\n> L2 | 父级: ../CLAUDE.md\n\n- \`${version}.js\`: 稳定 v1 基础与内部能力,由 src/host - 删除本地文件build.ts:51
for (const file of await readdir(runtimeDirectory)) if (/^ + + +(?:-[ .-]+)? js$/.test(file) && file !== `${version}.js`) await rm(join(runti - 读取本地文件bundle-artifacts.ts:38
if (!lstatSync(path).isFile()) throw new Error('not regular'); - 读取本地文件bundle-artifacts.ts:39
const value = readFileSync(path, 'utf8'); - 读取本地文件bundle-artifacts.ts:86
const helper = lstatSync(join(root, 'native/window-capture')); - 读取本地文件bundle-artifacts.ts:88
validateMacHelper(readFileSync(join(root, 'native/window-capture'))); - 读取本地文件bundle-artifacts.ts:90
if (!lstatSync(windowsPath).isFile()) throw new Error('Windows native helper must be a regular PE file'); - 读取本地文件bundle-artifacts.ts:91
validateWindowsHelper(readFileSync(windowsPath)); - 执行外部命令固定命令bundle-artifacts.ts:237
const tar = (...args: string[]) => execFileSync('tar', args, { encoding: 'utf8', maxBuffer: MAX_ARTIFACT_BYTES }); - 执行外部命令固定命令bundle-artifacts.ts:245
const packed = execFileSync('tar', ['-xOzf', archive, member], { maxBuffer: MAX_ARTIFACT_BYTES }); - 读取本地文件check-release.ts:14
const manifest = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8')); - 读取本地文件check-release.ts:22
const readme = readFileSync(new URL('./README.md', import.meta.url), 'utf8'); - 读取本地文件check-release.ts:23
const readmeEnglish = readFileSync(new URL('./README.en.md', import.meta.url), 'utf8'); - 读取本地文件check-release.ts:24
const guide = readFileSync(new URL('./AGENTS.md', import.meta.url), 'utf8'); - 执行外部命令固定命令check-release.ts:28
const git = (...args: string[]) => execFileSync('git', args, { cwd: root, encoding: 'utf8' }).trim(); - 执行外部命令来自配置/变量lib/capture-runtime/0.5.11.js:161
var defaultSpawner = (command, args, options) => spawn(command, args, options); - 删除本地文件lib/capture-runtime/0.5.11.js:554
if (owned) await unlink(temporary).catch(() => { - 执行外部命令来自配置/变量lib/capture-runtime/0.5.11.js:1305
var defaultSpawner2 = (file, args, options) => spawn2(file, args, options); - 执行外部命令来自配置/变量lib/capture-runtime/0.5.11.js:2538
var defaultSpawner3 = (file, args, options) => spawn3(file, [...args], options); - 发起网络请求lib/capture-runtime/0.5.11.js:2842
const fetcher = options.fetcher ?? ((url, init) => fetch(url, init)); - 删除本地文件递归lib/capture-runtime/0.5.11.js:2846
const removeDirectory = options.removeDirectory ?? ((directory) => rm(directory, { recursive: true, force: true })); - 读取本地文件lib/capture-runtime/0.5.11.js:2879
const rootInfo = await lstat(directory); - 写入本地文件lib/capture-runtime/0.5.11.js:2902
await writeFile(file, movie, { flag: "wx", mode: 384, signal: controller.signal }); - 读取本地文件lib/capture-runtime/0.5.11.js:2904
const info = await lstat(file); - 读取本地文件lib/capture-runtime/0.5.11.js:3289
entries = await readdir(EXTENSION_ROOT, { withFileTypes: true }); - 读取本地文件lib/capture-runtime/0.5.11.js:3375
const info = await lstat2(path); - 读取本地文件lib/capture-runtime/0.5.11.js:3473
const root = await realpath(join5(profile.dir, "node_modules", ...BUNDLE_NAME.split("/"))); - 读取本地文件lib/capture-runtime/0.5.11.js:3474
const manifest = JSON.parse(await readFile(join5(root, "package.json"), "utf8")); - 读取本地文件verify-host.ts:34
const entry = lstatSync(path); - 读取本地文件verify-host.ts:41
if (existsSync('/tmp')) tempRoots.add(realpathSync.native('/tmp')) - 读取本地文件verify-host.ts:43
while (!existsSync(existing)) { - 读取本地文件verify-host.ts:59
if (existsSync(profile)) { - 读取本地文件verify-host.ts:60
const entry = lstatSync(profile) - 读取本地文件verify-host.ts:68
const tempRoots = [realpathSync.native(tmpdir()), ...(existsSync('/tmp') ? [realpathSync.native('/tmp')] : [])] - 写入本地文件verify-host.ts:70
mkdirSync(directory, { recursive: true, mode: 0o700 }) - 写入本地文件verify-host.ts:96
if (!existsSync(isolatedGlobalConfig)) writeFileSync(isolatedGlobalConfig, '', { mode: 0o600, flag: 'wx' }) - 写入本地文件verify-host.ts:121
mkdirSync(profile, { recursive: true, mode: 0o700 }) - 写入本地文件verify-host.ts:150
if (!existsSync(npmrcPath)) writeFileSync(npmrcPath, '', { mode: 0o600, flag: 'wx' }) - 写入本地文件verify-host.ts:151
if (!existsSync(workspace)) writeFileSync(workspace, workspacePolicy, { mode: 0o600, flag: 'wx' }) - 写入本地文件verify-host.ts:153
writeFileSync(manifestPath, JSON.stringify({ - 执行外部命令来自配置/变量verify-host.ts:227
const output = execFileSync(manager.command, [...manager.args!, '--version'], {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-typert-generator给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 侧栏标题遮罩
- 显示别名
- 本地截图编辑
DeepSeek Harness 插件,支持侧边栏遮罩、显示别名和本地截图编辑。不做会话隔离。
README
由 DeepSeek 最新模型翻译生成DSH 私密模式
遮挡侧栏标题、自定义昵称与头像,截取并打码编辑当前窗口。不提供会话隔离。
DeepSeek Harness Desktop 插件 · 0.4.0 版本 · v0.4.0
插件设置与侧栏效果示例
功能
- 标题遮挡:帽子按钮切换工作区与会话标题的灰条显示。
- 本地身份:自定义昵称、生成或上传头像,也可保留账号头像。
- 截图编辑:拍摄当前窗口;点击候选或手动画框打码,调整背景、边距,复制或保存图片。切到手绘只隐藏候选,不清除已打码区域。
- 插件更新:详情页检查稳定版本,确认后通过官方管理器安装;不静默安装或自行重启。
安装
在 Harness 插件 → 添加插件 → GitHub 仓库地址中填写:
https://github.com/daftAI2026/PDSH
需要固定版本时选择 v0.4.0。已安装用户在插件详情页确认升级。
0.3.2 及更早版本首次升级需正常重启一次;此后协议兼容的截图/保存业务更新可自动换载。Config、Remote 协议或固定外壳变化仍需重启。
环境与边界
- 目标宿主:DeepSeek Harness Desktop 0.2.0-rc.2。截图支持 macOS 14+(Apple Silicon / Intel)与 Windows 10 1903+ x64;助手随包提供,无需单独安装或双击 EXE。
展开完整文档(README 剩余 1 节)
DSH 私密模式 遮挡侧栏标题、自定义昵称与头像,截取并打码编辑当前窗口。不提供会话隔离。 DeepSeek Harness Desktop 插件 · 0.4.0 版本 · v0.4.0 插件设置与侧栏效果示例 功能 - 标题遮挡:帽子按钮切换工作区与会话标题的灰条显示。 - 本地身份:自定义昵称、生成或上传头像,也可保留账号头像。 - 截图编辑:拍摄当前窗口;点击候选或手动画框打码,调整背景、边距,复制或保存图片。切到手绘只隐藏候选,不清除已打码区域。 - 插件更新:详情页检查稳定版本,确认后通过官方管理器安装;不静默安装或自行重启。 安装 在 Harness 插件 → 添加插件 → GitHub 仓库地址中填写: https://github.com/daftAI2026/PDSH 需要固定版本时选择 v0.4.0。已安装用户在插件详情页确认升级。 0.3.2 及更早版本首次升级需正常重启一次;此后协议兼容的截图/保存业务更新可自动换载。Config、Remote 协议或固定外壳变化仍需重启。 环境与边界 - 目标宿主:DeepSeek Harness Desktop 0.2.0-rc.2。截图支持 macOS 14+(Apple Silicon / Intel)与 Windows 10 1903+ x64;助手随包提供,无需单独安装或双击 EXE。 - 保存 PNG、JPEG 或 WebP,复制为 PNG。默认目录为用户 home 下的 Downloads,可另选目录;重名自动编号,不覆盖已有文件。保存结果未知时先检查目录,不要立即重试。 - 检测候选仅适用于已研究的 Mac 满窗布局,不是敏感内容检测。原生 PNG 候选对位、精确 0.4.0 Desktop 安装件及 Windows 实机仍待验收;保存或复制前请检查图片。 - 显示遮挡不改变账号、原始文字、历史、日志或模型请求。PDSH 不提供会话隔离、凭据迁移或取证级隐私保证。 开发 pnpm install --frozen-lockfile pnpm test pnpm run bundle 架构与协作 · 发布流程 · 样式来源 许可 MIT · 第三方声明。本项目非 DeepSeek 官方插件,@daftai/pdsh 未在 npm 发布。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
daftAI2026/PDSH
遮挡侧栏标题并打码截图,保护当前窗口隐私
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,364已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,709已汉化DSH
71.8
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,319已汉化DSH
71.5
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,533已汉化DSH
71.1
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 93,105已汉化DSH
71.1
这是你的仓库?认领条目