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

指令注入增强 sidleo/agent-instructions-plus

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

按预设勾选接管 AGENTS.md 的四层扫描注入

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · skill
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/16) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 26 处,展示前 26 条)
  • 发起网络请求
    src/client/index.ts:150
    fetch('/api/agent-instructions-plus/config').then(function (r) { return r.json() })
  • 发起网络请求
    src/client/index.ts:156
    fetch('/api/agent-instructions-plus/presets').then(function (r) { return r.json() })
  • 发起网络请求
    src/client/index.ts:170
    fetch('/api/agent-instructions-plus/config', {
  • 发起网络请求
    src/client/index.ts:187
    fetch(path, {
  • 发起网络请求
    src/client/index.ts:196
    return fetch('/api/agent-instructions-plus/presets').then(function (r) { return r.json() })
  • 读取本地文件
    src/composition.ts:59
    const manifest = JSON.parse(await readFile(join(profile.dir, name), 'utf8')) as {
  • 读取本地文件
    src/composition.ts:88
    const manifest = JSON.parse(await readFile(manifestPath, 'utf8')) as {
  • 读取本地文件
    src/composition.ts:270
    text = await readFile(patchFile, 'utf8')
  • 读取本地文件
    src/composition.ts:301
    text = await readFile(patchFile, 'utf8')
  • 读取本地文件
    src/discovery.ts:33
    const info = statSync(path, { throwIfNoEntry: false })
  • 读取本地文件
    src/discovery.ts:42
    const info = statSync(path, { throwIfNoEntry: false })
  • 读取本地文件
    src/discovery.ts:45
    return readFileSync(path, 'utf8')
  • 读取本地文件
    src/discovery.ts:56
    const info = statSync(join(path, marker), { throwIfNoEntry: false })
  • 读取本地文件
    src/files.ts:60
    const info = await stat(path)
  • 读取本地文件
    src/files.ts:129
    await stat(path)
  • 读取本地文件
    src/files.ts:225
    const stream = createReadStream(path, { encoding: 'utf8', signal })
  • 读取本地文件
    src/index.ts:82
    const raw = readFileSync(configPath(dshHome), 'utf8')
  • 写入本地文件
    src/index.ts:92
    writeFileSync(configPath(home), JSON.stringify(config, null, 2), 'utf8')
  • 读取本地文件
    src/wizard.ts:158
    await readFile(backupPath(patchPath), 'utf8')
  • 读取本地文件
    src/wizard.ts:164
    text = await readFile(patchPath, 'utf8')
  • 读取本地文件
    src/wizard.ts:386
    text = await readFile(patchPath, 'utf8')
  • 写入本地文件
    src/wizard.ts:393
    await mkdir(dirname(backupPath(patchPath)), { recursive: true })
  • 写入本地文件
    src/wizard.ts:394
    await writeFile(backupPath(patchPath), text, 'utf8')
  • 写入本地文件
    src/wizard.ts:434
    await writeFile(patchPath, edited, 'utf8')
  • 读取本地文件
    src/wizard.ts:468
    text = await readFile(patchPath, 'utf8')
  • 写入本地文件
    src/wizard.ts:488
    await writeFile(patchPath, restored, 'utf8')
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
@sidleo3/agent-instructions-plus 按 preset 选择性接管 DSH 的 AGENTS.md 指令注入。用可配置的四层扫描(cwd / 项目 / 上级遍历 / 全局)替代内置 dsh-agent-instructions 的固定发现逻辑 —— 但只在用户显式勾选的 preset 中生效。 核心设计 - 安装零改动:插件安装后不做任何事,不写任何 preset 覆盖,内置 agent-instructions 照常工作 - 用户决定生效范围:在 Web GUI(侧边栏 Plugins → 本插件配置页)里勾选要接管的 preset(多选) - 完全替代:勾选某个 preset 后,向该 profile 的 cordis.patch.yml 写入 preset-<id> 覆盖行 —— 内置 agent-instructions 行被 disabled: true,并追加本插件的注入管线行 - 取消即恢复:取消勾选行级移除自己那段覆盖行,其他插件的 patch 段逐字节不变,agent-instructions 恢复工作 - 不生效的 preset 不受影响:未勾选的 preset 完全保持内置行为 与内置 agent-instructions 的区别
展开完整文档(README 剩余 1 节)
@sidleo3/agent-instructions-plus

按 preset 选择性接管 DSH 的 AGENTS.md 指令注入。用可配置的四层扫描(cwd / 项目 / 上级遍历 / 全局)替代内置 dsh-agent-instructions 的固定发现逻辑 —— 但只在用户显式勾选的 preset 中生效。

核心设计

- 安装零改动:插件安装后不做任何事,不写任何 preset 覆盖,内置 agent-instructions 照常工作
- 用户决定生效范围:在 Web GUI(侧边栏 Plugins → 本插件配置页)里勾选要接管的 preset(多选)
- 完全替代:勾选某个 preset 后,向该 profile 的 cordis.patch.yml 写入 preset-<id> 覆盖行 —— 内置 agent-instructions 行被 disabled: true,并追加本插件的注入管线行
- 取消即恢复:取消勾选行级移除自己那段覆盖行,其他插件的 patch 段逐字节不变,agent-instructions 恢复工作
- 不生效的 preset 不受影响:未勾选的 preset 完全保持内置行为

与内置 agent-instructions 的区别

两者运行时骨架同源:同一套「首个 pre-step 合成 baseline → tools/result 的 read/write/edit 冒泡 touches → 增量 reconcile → digest 去重」机制,配置字段也基本一一对应。真正的分歧只有一处 —— 向上扫描在哪里停。

| 维度 | agent-instructions(内置) | agent-instructions-plus(本插件) |
| 生效范围 | 所有 preset 无条件生效 | 仅用户勾选的 preset,其余完全保持内置行为 |
| 向上扫描 | 只到 project root(.git 标记的祖先)为止 | scanProject(同内置)或 scanParents(一路到 /),二选一 |
| cwd 自身 | 含在 root→cwd 链里 | scanCwd 独立开关 |
| 全局层 | $DSH_HOME/AGENTS.md 固定加载 | scanGlobal 独立开关 |
| 候选文件名 / 项目根标记 / 字节预算 | instructionFileCandidates、localInstructionFileCandidates、projectRootMarkers、maxBytes、maxSourceBytes | 同名同义 |
| 刷新触发 / 去重 / baseline 身份 | tools/result → 增量 reconcile;SHA-1 digest + 逐目录去重 | 同机制(管线是对内置语义的复刻) |
| 配置入口 | preset 行的 config | Web GUI 配置页(写 cordis.patch.yml 覆盖行) |

scanParents 解决什么

设仓库在 /Users/me/Project/repo,而 /Users/me/AGENTS.md 也写了规则:

- 内置:在 repo/.git 找到项目根就停 → /Users/me/AGENTS.md 读不到
- scanParents:一路扫到 / → 每一层的 AGENTS.md 都能读到

内置的取舍是有意为之:root 探测只在确认标记缺失时才继续向上,遇到权限/IO 错误会停止并报错,而不是改选另一个祖先当根 —— 避免把 / 或 $HOME 误判成项目根、注入无关内容。本插件只是把这个选择权交给你(详见 @deepseek-ai/dsh-agent-instructions 的 README「Root discovery」段)。

什么时候不需要本插件

如果只想要改候选名或 maxBytes,内置的 config 已经支持,直接写 preset 行即可 —— 不必引入本插件:

- id: agent-instructions
name: '@deepseek-ai/dsh-agent-instructions'
config:
maxBytes: 65536
instructionFileCandidates: [AGENTS.md, CLAUDE.md, CODEBUDDY.md]

只有需要 scanParents(跨 git 仓库向上读)或 scanCwd / scanGlobal 的独立开关时,本插件才不可替代。

⚠️ 代价:本插件的注入管线是对内置语义的复刻而非复用。DSH 修改内置机制时本插件不会自动跟上,需要人工同步(参见 AGENTS.md 坑点 7/8/9 —— 那两个真 bug 就是复刻漂移的结果)。

Features

- Four scanning layers: cwd (highest) → project/parents (mutually exclusive) → global (lowest)
- scanParents mode: Walk every ancestor from cwd upward to filesystem root — no depth limit
- Custom candidates: Add/remove base instruction file names and local overlay names
- Custom project-root markers: Configure which files/dirs identify a project root
- Web GUI page: 侧边栏 Plugins → 本插件 → 配置页(preset 多选 + 四层扫描配置)
- Provider interface: Exposes the discovery provider on context for consumers

兼容性

| DSH 版本 | 状态 |
| 0.1.7-alpha.2 及以后 | ✅ 支持(配置页在侧边栏 Plugins;接管写 profile patch) |
| 0.1.6 及更早 | ❌ 不支持 —— 旧版的 settings.plugin.item 槽位与 ~/.dsh/.agent-presets/ 文件式 preset 在 0.1.7 已被移除 |

安装

From npm
dsh plugin --profile web add @sidleo3/agent-instructions-plus

From local checkout
dsh plugin --profile web add link:/path/to/agent-instructions-plus

安装后重启 DSH。无需任何额外操作——插件不会改动任何 preset,内置 agent-instructions 继续工作。

使用:在 GUI 中按 preset 启用

1. 打开侧边栏 Plugins → 找到本插件的卡片 → 进入其配置页
2. 在「生效的预设」列表里勾选要接管的 preset(多选,仅列出含 agent-instructions 行的内置预设)
3. 勾选后立即写入该 profile 的 cordis.patch.yml:新增 - id: preset-<id> 覆盖行,其中内置 agent-instructions 行被 disabled: true,并追加本插件的注入管线行
4. 新会话选择该 preset 时,使用本插件的四层扫描注入 AGENTS.md
5. 取消勾选 = 移除该覆盖行,其余配置逐字节不变(新建会话生效)

已运行中的会话不受勾选/取消影响(preset 组合在会话创建时固定);改动对之后新建的会话生效,通常需重启 DSH 让 profile patch 重新合成。

配置

interface InstructionScanConfig {
scanCwd: boolean // default: true
scanProject: boolean // default: false (mutually exclusive with scanParents)
scanParents: boolean // default: true (mutually exclusive with scanProject)
scanGlobal: boolean // default: true
instructionFileCandidates: string[] // default: ['AGENTS.md', 'CLAUDE.md']
localInstructionFileCandidates: string[] // default: ['AGENTS.local.md', 'CLAUDE.local.md']
projectRootMarkers: string[] // default: ['.git']
dshHome: string // default: '~/.dsh'
}

配置页遵循 DSH 的页面契约:编辑只停留在本地草稿,点「保存」才写入;离开页面丢弃草稿。

工作原理

1. 安装 = 空操作:host 入口只注册 provider 与 GUI RPC,不碰任何 preset
2. 用户勾选 preset:GUI 调 /api/agent-instructions-plus/presets/apply,host 在 profile 的 cordis.patch.yml 追加 preset-<id> 覆盖行 —— 复制该预设的 shipped 组合、把内置 agent-instructions 行改为 disabled: true、追加 /preset 注入管线行
3. 注入:被覆盖的 preset 中 /preset 行按四层扫描发现并注入 AGENTS.md,完全替代内置发现
4. 移除:GUI 调 /api/agent-instructions-plus/presets/remove 行级移除自己那段覆盖行,其他插件的 patch 段逐字节不变

为什么写 profile patch 而不是 preset 文件

DSH 0.1.7 起,@deepseek-ai/dsh-agent-preset-registry 不再扫描 ~/.dsh/.agent-presets/ 目录,也不接受 preset 路径:preset 现在是声明式的 @deepseek-ai/dsh-agent-preset Loader 行,覆盖已发布的 preset 只能通过 bundle patch。agentPresets.list()/resolve() 也只返回展示元数据,没有组合路径、没有读/写组合的能力。因此旧版「复制 preset 目录再改文件」的模型已无落点。

开发

pnpm install --ignore-scripts # 无特殊 flag
pnpm build # tsdown → lib/index.js + lib/preset.js + lib/client.js
pnpm typecheck # 期望 0 错误

@deepseek-ai/dsh-* 与 @deepseek-ai/cordis 只存在于 DSH 安装里(npm 上只有过期的 rc),因此本项目不把它们写进依赖声明 —— 写了会让 pnpm install / npm install 去 registry 拉不存在的版本而失败。类型改由 scripts/resolve-dsh-types.mjs 从运行中的 DSH 解析(pnpm typecheck 会自动先跑它);换 DSH 安装后 pnpm resolve-types 重跑即可。

注意事项

- provider 字面值保持 instruction-scan,兼容旧 bundle 已持久化的消息;插件标识/路由/包名已全部改为 agent-instructions-plus
- 覆盖行的 plugins 是整表替换(patch 语义是 replace 而非 merge):DSH 升级若改动了 shipped preset,已写入的覆盖会固化旧组合,需要在 GUI 里取消再勾选以基于新版重建
- 写入必须做到行级:patch 和复制的 preset 行都带 !!js 自定义标签(例如 disabled: !!js process.platform === 'win32'),一旦全量 parse→re-serialize,标签会被求值成普通字符串,disabled 就变成 truthy,shell 工具随之静默失效
- ~/.dsh/.agent-presets/ 是 DSH 0.1.6 及更早版本的文件式 preset 目录,0.1.7 起不再加载;里面残留的 .aip-backup/ 属于历史产物,不能当作恢复源
预览分享卡片长什么样 ↓sidleo/agent-instructions-plus
分享 · DeepSeek Harness Hub
sidleo/agent-instructions-plus

按预设勾选接管 AGENTS.md 的四层扫描注入

回到顶部