🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

私密模式 daftAI2026/PDSH

DeepSeek Harness
daftAI202629 天前有提交已提供中文文档扫描:含敏感能力

遮挡侧栏标题并打码截图,保护当前窗口隐私

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/5 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add daftAI2026/PDSH
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · vision
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 29 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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 发布。
预览分享卡片长什么样 ↓daftAI2026/PDSH
分享 · DeepSeek Harness Hub
daftAI2026/PDSH

遮挡侧栏标题并打码截图,保护当前窗口隐私

这是你的仓库?认领条目

回到顶部