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

全局指令管理器 huanghai-lab/dsh-custom-instructions

DeepSeek Harnessv0.5.0
huanghai-lab65 天前有提交已提供中文文档扫描:含敏感能力

编辑全局 AGENTS.md,模板复用与历史恢复

30.3/100
综合分
3
GitHub 星标
203
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions
npm 源 · @huanghai-lab/dsh-custom-instructions 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/10/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 65 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@huanghai-lab/dsh-custom-instructions @ 0.5.0
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 06:02:36

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 61 处,展示前 38 条)
  • 读取本地文件
    lib/index.js:35
    return await readFile(path, "utf8");
  • 读取本地文件
    lib/index.js:43
    return await readdir(path);
  • 写入本地文件
    lib/index.js:74
    await mkdir(templatesDir(globalPath), {
  • 写入本地文件
    lib/index.js:78
    await mkdir(historyDir(globalPath), {
  • 写入本地文件
    lib/index.js:84
    await mkdir(dirname(path), {
  • 写入本地文件
    lib/index.js:90
    await writeFile(temporary, text, {
  • 读取本地文件
    lib/index.js:95
    if (await readFile(temporary, "utf8") !== text) throw new StoreError("CORRUPT_DATA", `failed to verify temporary write for ${basename(path)}`, 500);
  • 写入本地文件
    lib/index.js:96
    await rename(temporary, path);
  • 删除本地文件
    lib/index.js:98
    await rm(temporary, { force: true }).catch(() => void 0);
  • 读取本地文件
    lib/index.js:143
    const [left, right] = await Promise.all([readFile(existing.path, "utf8"), readFile(decoded.path, "utf8")]);
  • 读取本地文件
    lib/index.js:162
    return (await stat(`${globalPath}.bak`)).isFile();
  • 读取本地文件
    lib/index.js:172
    const info = await stat(file.path);
  • 删除本地文件
    lib/index.js:204
    if (legacyPath !== void 0 && legacyPath !== encodedPath) await rm(legacyPath, { force: true });
  • 删除本地文件
    lib/index.js:207
    if (previousEncoded === void 0) await rm(encodedPath, { force: true });
  • 删除本地文件
    lib/index.js:223
    await rm(file.path, { force: true });
  • 删除本地文件
    lib/index.js:224
    if (file.legacyPath !== void 0) await rm(file.legacyPath, { force: true });
  • 删除本地文件
    lib/index.js:295
    await Promise.all(history.slice(100).map((entry) => rm(join(historyDir(globalPath), `${entry.id}.md`), { force: true })));
  • 发起网络请求
    lib/client.js:26
    response = await fetch(`${ROUTE_PREFIX}${path}`, {
  • 写入剪贴板
    lib/client.js:951
    await navigator.clipboard.writeText(conflictDraft);
  • 发起网络请求
    src/client/api.ts:77
    response = await fetch(`${ROUTE_PREFIX}${path}`, {
  • 读取本地文件
    src/host/store.ts:98
    return await readFile(path, 'utf8')
  • 读取本地文件
    src/host/store.ts:107
    return await readdir(path)
  • 写入本地文件
    src/host/store.ts:155
    await mkdir(templatesDir(globalPath), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/host/store.ts:156
    await mkdir(historyDir(globalPath), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/host/store.ts:160
    await mkdir(dirname(path), { recursive: true, mode: 0o700 })
  • 写入本地文件
    src/host/store.ts:163
    await writeFile(temporary, text, { encoding: 'utf8', flag: 'wx', mode: 0o600 })
  • 读取本地文件
    src/host/store.ts:164
    const verified = await readFile(temporary, 'utf8')
  • 写入本地文件
    src/host/store.ts:166
    await rename(temporary, path)
  • 删除本地文件
    src/host/store.ts:168
    await rm(temporary, { force: true }).catch(() => undefined)
  • 读取本地文件
    src/host/store.ts:210
    const [left, right] = await Promise.all([readFile(existing.path, 'utf8'), readFile(decoded.path, 'utf8')])
  • 读取本地文件
    src/host/store.ts:238
    return (await stat(`${globalPath}.bak`)).isFile()
  • 读取本地文件
    src/host/store.ts:250
    const info = await stat(file.path)
  • 删除本地文件
    src/host/store.ts:287
    if (legacyPath !== undefined && legacyPath !== encodedPath) await rm(legacyPath, { force: true })
  • 删除本地文件
    src/host/store.ts:290
    if (previousEncoded === undefined) await rm(encodedPath, { force: true })
  • 删除本地文件
    src/host/store.ts:311
    await rm(file.path, { force: true })
  • 删除本地文件
    src/host/store.ts:312
    if (file.legacyPath !== undefined) await rm(file.legacyPath, { force: true })
  • 删除本地文件
    src/host/store.ts:389
    await Promise.all(history.slice(MAX_HISTORY).map((entry) => rm(join(historyDir(globalPath), `${entry.id}.md`), { force: true })))
  • 读取本地文件
    src/index.ts:131
    await readFile(agentsPath, 'utf8')
扫描于 2026/11/4(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-settings
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 模板复用与历史恢复
  • 导入导出与并发保护

DSH Web 安全自定义指令管理器:编辑全局 AGENTS.md,支持模板、Markdown 预览、历史恢复、导入导出与并发保护。

v0.5.02026-08-31
· v0.5.0 这是经过 0.5.0-alpha.2 验证后晋升的正式版本,相对该预发布版不增加运行时代码改动。 · 主要更新 · 支持 DSH 0.1.2-alpha.1 的新版客户端上下文、Markdown 标签与浏览器鉴权接口。 · 创建新模板前保护未保存的模板草稿;取消确认后不会丢失编辑内容。 · 删除其他模板后同步当前模板的磁盘修订号,避免后续保存出现错误的 409 冲突。 · 写入继续采用磁盘内容派生的修订号、进程内串行队列和原子替换;未登录请求不能读取或修改私人指令。 · 兼容性 · DSH 0.1.2-alpha.1:使用插件 0.5.0。 · DSH 0.1.1-rc.2:继续固定使用插件 0.4.0。 · 更旧 DSH:使用插件 0.3.0。 · 验证 · 35 项自动化测试通过。 · Ubuntu / Windows Node 24 构建通过。 · DSH 0.1.2-alpha.1 源码兼容与隔离浏览器 E2E 通过。 · npm 打包预检、生产依赖审计与提交产物新鲜度检查通过。 完整变更记录:CHANGELOG.md
v0.5.0-alpha.22026-08-31预发布
· 更新内容 · 创建新模板前保护尚未保存的模板草稿,取消确认后不再丢失编辑内容。 · 删除其他模板后同步当前模板修订号,避免后续保存出现错误的冲突提示。 · 首次加载改为一次一致性快照,同时返回全局内容、模板和历史,并减少模板目录重复扫描。 · 只读概览聚焦项目级 AGENTS.md,移除 Persona 解析和不再使用的兼容面。 · 删除未使用的移动端与 CSS Modules 构建分支、lightningcss 直接依赖和过期内部发布文档。 · 新增仓库级 screenshots.json,明确 Awesome DSH Plugin 商店截图顺序。 · 安装 这是面向 DSH 0.1.2-alpha.1 源码构建的预发布版本,将发布到 npm 的 next 标签。稳定版 latest 仍保持在 0.4.0。 dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@next · 验证 · 35 项自动化测试通过。 · Windows 与 Ubuntu 的 Node 24 类型检查、构建和提交产物新鲜度检查通过。 · DSH 0.1.2-alpha.1 官方标签源码兼容和声明类型检查通过。 · 隔离 DSH_HOME、插件 tarball 安装和真实 Chromium 完整流程通过。 · 生产依赖审计未发现已知漏洞。
v0.5.0-alpha.12026-08-30
· v0.5.0-alpha.1 本预览版适配 DSH 0.1.2-alpha.1,仅供使用官方源码构建的测试者。npm 包发布在 next 标签;稳定版 latest 仍为 v0.4.0。 · 移除已删除的 dsh-client-runtime,改用 Cordis Context 与 UI Renderer slots · 适配新版 Markdown labels,补齐中英文代码复制和脚注文案 · 所有自定义指令 API 接入 DSH Connection 的 Host/Origin 与浏览器 Cookie 鉴权 · CI 新增官方标签源码兼容检查、源码声明类型检查和带一次性登录的真实 E2E 安装(仅 DSH 0.1.2-alpha.1 官方源码构建): dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@next 验证:Ubuntu/Windows Node 24、32 项测试、官方 alpha 源码构建、隔离浏览器 E2E、tarball 内容检查全部通过。 完整变更 --- Preview release for DSH 0.1.2-alpha.1. It is published under npm next; stable latest remains v0.4.0.
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-custom-instructions English · 更新日志 · 安全策略 · 参与贡献 CI npm npm downloads License dsh-custom-instructions 社交预览 DSH Web 的安全指令管理器:编辑全局 AGENTS.md,复用模板,预览 Markdown,恢复历史,并在跨窗口或外部修改时阻止静默覆盖。 它不是单一的规则文本框,而是面向可迁移、可恢复和并发安全维护的全局指令工作台。 正式版 v0.5.0 适配 DSH 0.1.2-alpha.1,并通过官方标签源码构建、插件 tarball 隔离安装与真实浏览器 E2E。 DSH 0.1.1-rc.2 用户请锁定插件 v0.4.0;更早的 DSH 请继续使用 v0.3.0。 快速开始 前提:Node.js ^22.19.0 || >=24.0.0、pnpm,以及 DSH 0.1.2-alpha.1。 dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions dsh web 重启 Web profile 后,打开 设置 → 自定义指令。
展开完整文档(README 剩余 1 节)
dsh-custom-instructions

English · 更新日志 · 安全策略 · 参与贡献

CI
npm
npm downloads
License

dsh-custom-instructions 社交预览

DSH Web 的安全指令管理器:编辑全局 AGENTS.md,复用模板,预览 Markdown,恢复历史,并在跨窗口或外部修改时阻止静默覆盖。

它不是单一的规则文本框,而是面向可迁移、可恢复和并发安全维护的全局指令工作台。

正式版 v0.5.0 适配 DSH 0.1.2-alpha.1,并通过官方标签源码构建、插件 tarball 隔离安装与真实浏览器 E2E。

DSH 0.1.1-rc.2 用户请锁定插件 v0.4.0;更早的 DSH 请继续使用 v0.3.0。

快速开始

前提:Node.js ^22.19.0 || >=24.0.0、pnpm,以及 DSH 0.1.2-alpha.1。

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions
dsh web

重启 Web profile 后,打开 设置 → 自定义指令。

需要锁定正式版本时:

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@0.5.0

中文界面:全局指令与模板

英文界面截图见 docs/assets/settings-en.png。界面跟随 DSH 语言设置,缺少翻译时回退到英文。

功能

| 功能 | 当前行为 |
| 全局指令 | 保存、放弃草稿、撤销上次保存、编辑/Markdown 预览;限制 65 KiB |
| 浏览器草稿 | 按 DSH profile 存在 sessionStorage;保存或主动放弃后清除 |
| 并发保护 | 所有写入校验磁盘 revision;冲突时保留草稿,只允许复制或重新加载 |
| 模板 | 支持中英文名称、独立编辑/预览/保存、激活和确认删除;最多 50 个 |
| 历史 | 覆盖前自动快照,可展开预览和确认恢复;最多保留最新 100 条 |
| 导入导出 | 迁移当前内容、模板、历史和激活状态;严格校验、合并、失败回滚 |
| 项目指令概览 | 只读展示已注册工作区的项目级 AGENTS.md 状态 |
| 无障碍 | 键盘保存、焦点恢复、ARIA、原生确认框/文件选择器和窄屏布局 |

Markdown 预览直接使用 DSH 官方 MarkdownText,没有引入另一套 Markdown 解析器。

数据安全

- 插件只写当前 $DSH_HOME/AGENTS.md 和同目录下的 instructions/ 数据,不会修改项目级 AGENTS.md。
- 写请求必须携带根据实际磁盘内容生成的 SHA-256 revision。多窗口或插件外修改会返回 409,不会静默覆盖。
- 同一 DSH 进程内的修改串行执行;文件通过同目录临时文件写入、回读校验后替换。
- 全局内容每次覆盖前写入 AGENTS.md.bak 和历史记录;只有备份文件确实存在时,界面才显示可撤销。
- 导入先完整校验,再合并。失败时从导入前快照回滚;最近一次导入前快照保存在 instructions/import-rollback.json。
- 单项内容最多 65 KiB,导入最多 50 个模板、100 条历史,请求体最多 16 MiB。
- 本插件不加入产品遥测。DSH 自身的遥测设置不由本插件改变。

导出文件、备份、历史和回滚包都可能含有私人指令或路径,请按敏感文件保存,不要直接贴到公开 Issue。

存储位置

$DSH_HOME/
├── AGENTS.md
├── AGENTS.md.bak
└── instructions/
├── active.json
├── import-rollback.json
├── templates/
└── history/

模板物理文件名使用 Node 原生 Base64URL 编码,模板显示名称不会直接拼入路径。

升级与版本选择

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@0.5.0

从 v0.3.0 升级前建议先导出一次数据。v0.5.0 会继续读取 v0.3 的 ASCII 模板和数字历史 ID;旧模板第一次成功写入时会迁移到编码文件名。v0.3 导出包及缺少 format 字段的旧包会按 v0.3 格式解析。

如果 DSH 仍是 0.1.1-rc.2,请锁定插件 v0.4.0:

dsh plugin --profile web add @huanghai-lab/dsh-custom-instructions@0.4.0

导入规则

- 同名模板更新,本地额外模板保留;合并后超过 50 个模板会整体拒绝。
- 历史记录按 ID 合并,并裁剪为最新 100 条。
- 当前内容和激活状态会随包导入;激活模板必须在合并后的模板集合中存在。
- 任意模板、历史或字段非法,整次导入都不会执行。
- 导入文件只包含已保存数据,不包含页面上尚未保存的浏览器草稿。

常见问题

设置里没有“自定义指令”

确认安装目标是 web profile,并在安装后重启 DSH:

dsh plugin --profile web why @huanghai-lab/dsh-custom-instructions
dsh web

页面提示版本冲突

先点“复制草稿”,再点“加载最新内容”,手动合并后重新保存。不要通过重复点击绕过冲突。

页面加载失败或无法写入

检查界面显示的存储路径、$DSH_HOME 权限和 DSH 日志。服务端会区分 400、404、409、413 与 500,客户端也会显示网络、空响应和非 JSON 响应错误。

DSH 升级后插件无法加载

正式版 v0.5.0 只承诺兼容 0.1.2-alpha.1。它已移除该版本删除的客户端 runtime 依赖,适配新版 Markdown 标签和浏览器鉴权接口,并在官方标签源码构建中完成隔离安装验证。DSH 0.1.1-rc.2 用户请使用插件 v0.4.0。

兼容矩阵

| 插件版本 | DSH | Node.js | 状态 |
| v0.5.0 (latest) | 0.1.2-alpha.1 | ^22.19.0 || >=24 | 正式版;官方标签源码构建、插件 tarball 隔离安装与真实浏览器 E2E 已通过 |
| v0.4.0 | 0.1.1-rc.2 | ^22.19.0 || >=24 | 已发布并通过隔离安装 E2E |
| v0.3.0 | 0.1.0-rc.6 | ^22.19.0 || >=24 | 旧环境保留 |

开发与验证

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build
pnpm compat:dsh /path/to/deepseek-harness
pnpm typecheck:dsh-source /path/to/deepseek-harness
pnpm e2e -- /path/to/deepseek-harness

先在官方 dsh-v0.1.2-alpha.1 源码目录完成锁定安装与构建。pnpm e2e -- 会使用该构建和当前插件 tarball,在系统临时目录创建隔离的 DSH_HOME 与 workspace,再真实验证一次性登录、保存、预览、模板、历史、导入导出和中英文界面。它不会接触用户真实的 AGENTS.md。

pnpm compat:dsh 校验 DSH 源码目录中的客户端 Context、Markdown、设置页、工作区和 Web 路由接口。CI 会直接检出官方 dsh-v0.1.2-alpha.1 标签执行这项检查。

CI 在 Ubuntu 与 Windows 的 Node 24 上执行锁定安装、类型检查、测试和构建,并检查提交的 lib/ 没有落后源码;Ubuntu 还会构建官方 alpha 标签、执行源码类型检查和隔离浏览器 E2E。上游 npm 包可安装后,仍需补跑一次 npm 安装链路复核发布物。

参与项目

发现问题请使用 Issue 模板,使用经验和想法可以发到 Discussions。安全问题请按 SECURITY.md 私下报告。

如果这个插件确实解决了你的问题,欢迎 Star、分享实际使用场景,或提交可复现的反馈。真实反馈比泛泛宣传更有帮助。

许可证

Apache-2.0
预览分享卡片长什么样 ↓huanghai-lab/dsh-custom-instructions
分享 · DeepSeek Harness Hub
huanghai-lab/dsh-custom-instructions

编辑全局 AGENTS.md,模板复用与历史恢复

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部