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

知识库桥接 Babydunx1/dsh-knowledge-bridge

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

让智能体自动发现并检索本机知识库,拦截危险命令

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · search
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 43 处,展示前 21 条)
  • 读取本地文件
    index.js:36
    const manifest = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8'));
  • 发起网络请求
    index.js:98
    const response = await fetch(`${base}/${encodeURIComponent(packageName)}/latest`, {
  • 读取本地文件
    lib/knowledge.js:85
    if (!existsSync(resolved)) continue;
  • 读取本地文件
    lib/knowledge.js:87
    if (statSync(resolved).isDirectory()) result.push(resolved);
  • 读取本地文件
    lib/knowledge.js:123
    const key = `${filePath}:${statSync(filePath).mtimeMs}`;
  • 读取本地文件
    lib/knowledge.js:126
    const text = readFileSync(filePath, 'utf8').toLowerCase();
  • 读取本地文件
    lib/knowledge.js:166
    if (!existsSync(rootDir)) continue;
  • 读取本地文件
    lib/knowledge.js:170
    entries = readdirSync(rootDir, { withFileTypes: true });
  • 删除本地文件递归
    lib/index.test.js:13
    rmSync(tempBase, { recursive: true, force: true });
  • 写入本地文件
    lib/index.test.js:17
    mkdirSync(kbDir, { recursive: true });
  • 写入本地文件
    lib/index.test.js:20
    mkdirSync(join(itemDir, 'artifacts'), { recursive: true });
  • 写入本地文件
    lib/index.test.js:21
    writeFileSync(
  • 写入本地文件
    lib/index.test.js:28
    writeFileSync(
  • 写入本地文件
    lib/index.test.js:34
    writeFileSync(rulesPath, '# AutoLab Agent Safety Contract\n\nNo unilateral edits.');
  • 删除本地文件递归
    lib/knowledge.test.js:27
    rmSync(tempBase, { recursive: true, force: true });
  • 写入本地文件
    lib/knowledge.test.js:32
    mkdirSync(kbDir, { recursive: true });
  • 写入本地文件
    lib/knowledge.test.js:37
    mkdirSync(artifacts1Dir, { recursive: true });
  • 写入本地文件
    lib/knowledge.test.js:39
    writeFileSync(
  • 写入本地文件
    lib/knowledge.test.js:50
    writeFileSync(
  • 写入本地文件
    lib/knowledge.test.js:54
    writeFileSync(
  • 写入本地文件
    lib/knowledge.test.js:61
    mkdirSync(item2Dir, { recursive: true });
扫描于 2026/11/1(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 主机级知识库访问
  • 零配置自动发现
  • 拦截破坏性命令

主机级知识库访问,零配置发现,3 个检索工具,外加 DeepSeek Harness 的破坏性命令安全防护。

README

由 DeepSeek 最新模型翻译生成
给你的 DeepSeek Harness 智能体装个大脑 —— host 级知识访问、零配置 vault 自动发现,还有一道防护栏,拦住破坏性的 shell 命令。 ต่อสมองให้เอเจนต์ DeepSeek Harness — เข้าถึงคลังความรู้ระดับ host, ค้นหา vault อัตโนมัติแบบไม่ต้องตั้งค่า, และกันคำสั่ง shell ที่ทำลายข้อมูล English · ภาษาไทย Architecture at a glance · ภาพรวมสถาปัตยกรรม flowchart LR V[("Knowledge vault50 items · 229 files")] D["Discoveryenv var → ~ → ./"] I["Indexid · title · summary · artifacts"] T["Toolssearch · read · list"] A["Agent context"] Q["One-line directive~140 chars"] G{"Safety guardexec.name + exec.arguments"} V --> D --> I --> T --> A Q --> A A --> G
展开完整文档(README 剩余 1 节)
给你的 DeepSeek Harness 智能体装个大脑 —— host 级知识访问、零配置 vault 自动发现,还有一道防护栏,拦住破坏性的 shell 命令。

ต่อสมองให้เอเจนต์ DeepSeek Harness — เข้าถึงคลังความรู้ระดับ host, ค้นหา vault อัตโนมัติแบบไม่ต้องตั้งค่า, และกันคำสั่ง shell ที่ทำลายข้อมูล

English · ภาษาไทย

Architecture at a glance · ภาพรวมสถาปัตยกรรม

flowchart LR
V[("Knowledge vault50 items · 229 files")]
D["Discoveryenv var → ~ → ./"]
I["Indexid · title · summary · artifacts"]
T["Toolssearch · read · list"]
A["Agent context"]
Q["One-line directive~140 chars"]
G{"Safety guardexec.name + exec.arguments"}

V --> D --> I --> T --> A
Q --> A
A --> G
G -->|"banned pattern"| X["Denied ❌"]
G -->|"clean"| R["Executed ✅"]

Try it in 10 seconds · ลองใช้ใน 10 วินาที

git clone https://github.com/Babydunx1/dsh-knowledge-bridge && cd dsh-knowledge-bridge
npm test # 28 tests — unit + bundle contract, no install needed
npm run validate # 21 static checks on the bundle contract
npm run demo # index a sample vault and print what the agent would see

2 · index 2 item(s) · 3 artifact(s) ├─ deploy-guide · 1 artifact(s) └─ posttracker_engine · 2 artifact(s)

4 · guard (patterns are matched against the command string) ⛔ BLOCKED git reset --hard HEAD~1 ⛔ BLOCKED rm -rf / ✅ allowed git status

不用安装,不用配置,也不用 DeepSeek Harness。
ไม่ต้องติดตั้ง ไม่ต้องตั้งค่า ไม่ต้องเปิด DeepSeek Harness ก็ลองได้

🇬🇧 English

Why this exists

智能体的能力上限,取决于它能够到什么,而不是它有多聪明。有三个具体的翻车场景,促成了这个插件:
1. 沙箱误报。 在 workspace-write 下,智能体读不到当前工作区之外的知识库或仓库。在 Windows 上,shell 会把这种拒绝变成误导性的 File Not Found,于是智能体断定知识不存在——然后开始瞎猜。
2. 上下文失忆。 团队把 50 多份架构文档、SOP 和 API 契约放在知识库里(Antigravity 的 ~/.gemini/antigravity-ide/knowledge、共享盘、docs/)。DeepSeek Harness 没有原生办法发现或索引它们。
3. 不可逆命令。 自主智能体会毫不犹豫地跑 git reset --hard、git clean -fd 或 git restore .,把未提交的工作毁掉。

dsh-knowledge-bridge 以宿主级 cordis 插件的形式运行:它用宿主进程自身的权限读取宿主文件系统,暴露三个快速检索工具,注入一行指令让模型知道知识库存在,并在破坏性 shell 调用执行前将其拒绝。

目标

| 目标 | 实现方式 |
| 按需、有范围的知识 | 不往提示词里塞任何东西。只注入一行约 140 字符的指令;内容按主题拉取——knowledge_search → knowledge_read。 |
| 零配置 | 知识库从环境变量或常见位置自动发现。代码里没有任何硬编码路径。 |
| 零依赖 | 只用 Node.js 内置模块(node:fs、node:path、node:os)。无需安装任何东西。 |
| 绝不毁掉用户的工作 | 单调守卫:任何命中的规则都会拒绝调用,其他插件也无法强行放行。 |
| 可移植 | 支持 ~ 相对路径发现、DSH_KNOWLEDGE_PATHS 覆盖,兼容任何 markdown 知识库布局。 |

这个插件不是什么

- 它不是把整个知识库塞进每条提示词的内存系统。2 MB 的知识库约 100 万 token:又慢又贵。
- 它不是向量数据库。排序是确定性的关键词打分——可预测、可调试,不用跑 embedding 服务。

功能

| | 功能 | 细节 |
| 🧠 | knowledge_search | 关键词搜索,权重明确:标题 10 · id 8 · 别名 8 · 标签 6 · 引用 4 · 摘要 3 · 产物名 2 · 文档正文 1(惰性加载,按 mtime 缓存)。返回 id、title、score、截断的摘要和产物列表——绝不返回文件内容。 |
| 📖 | knowledge_read | 按需读取整篇文档,或某个具体产物(master_guide.md、07_migration.md……)。 |
| 🗂️ | knowledge_list | 知识库大纲:id、标题、产物数量、一行预览。 |
| 🔎 | 零配置发现 | DSH_KNOWLEDGE_PATHS → ~/.gemini/antigravity-ide/knowledge → ~/.antigravity-ide/knowledge → ~/.dsh/knowledge → ~/.codex/knowledge → ./knowledge → ./docs/knowledge → ./.knowledge。 |
| 📜 | 规则注入 | 从工作区发现 AGENTS.md / GEMINI.md / CLAUDE.md,并加入系统提示词。 |
| 🛑 | 安全防护 | 拒绝 bash / pwsh / cmd / terminal 调用,只要命令命中禁用模式。 |
| 🪶 | 感知 token | 工具摘要会被裁剪,因为工具输出会在后续每次模型调用中重放。 |

安装

方案 A — 作为 DSH 配置档 bundle(推荐)

包内声明了 dsh.bundle.patch,所以 DSH 可以像装其他 bundle 一样安装它。

1. Clone / copy the package somewhere permanent
git clone <your-repo-url> dsh-knowledge-bridge

2. Register it in your profile
~/.dsh/profiles/<profile>/package.json
{
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-knowledge-bridge"] } },
"dependencies": { "dsh-knowledge-bridge": "link:/absolute/path/to/dsh-knowledge-bridge" }
}

3. Install the link
cd ~/.dsh/profiles/<profile>
pnpm install

重启 DeepSeek Harness。插件会从 cordis.patch.yml 应用。

方案 B — 手动合并配置档补丁

把 cordis.patch.yml 里的 insert 行复制到 ~/.dsh/profiles/<profile>/cordis.patch.yml,然后重启 DSH。

方案 C — 指向你自己的 vault

vault 放在标准位置时无需配置。否则:

Windows (PowerShell) — semicolon or comma separated
$env:DSH_KNOWLEDGE_PATHS = "D:/team-docs/knowledge;~/my-vault"

macOS / Linux
export DSH_KNOWLEDGE_PATHS="$HOME/my-vault:$HOME/team-docs"

……或者在补丁里显式设置:knowledgePaths: ["~/my-vault"]。

配置参考

每个键都是可选的;下面的默认值就是零配置安装时使用的值。

| 键 | 类型 | 默认值 | 含义 |
| knowledgePaths | string[] | [] → 自动发现 | Vault 根目录。~ 会展开;相对路径基于工作区 cwd 解析。显式路径优先,并且仍会与 DSH_KNOWLEDGE_PATHS 合并。 |
| rulesPaths | string[] | ["AGENTS.md","GEMINI.md","CLAUDE.md"] | 在工作区根目录探测的文件,会作为提示词片段注入。 |
| autoInjectRules | boolean | true | 注入规则片段,外加一行知识指令。设为 false 则完全不改动提示词。 |
| enableSafetyGuard | boolean | true | 启用破坏性命令防护。 |
| bannedPatterns | string[] | 见下文 | 大小写不敏感的正则表达式,匹配命令字符串。 |

bannedPatterns: [
'git\\s+reset\\s+--hard',
'git\\s+clean\\s+-fd',
'git\\s+restore\\s+\\.',
'rm\\s+-rf\\s+/(?!tmp)',
]

如果找不到 vault,插件会记录 Initialized with 0 path(s) —— 什么都没索引时,先看这一行。

支持的 vault 布局

A. 结构化条目(Antigravity 以及类似的多文件 vault):

knowledge/
└── posttracker_engine/
├── metadata.json # title, summary + optional tags / aliases / references
├── timestamps.json # optional
└── artifacts/
├── master_guide.md # read first: table of contents + current status
├── 01_watchdog.md
└── 02_reconciliation.md

metadata.json 的字段,按搜索权重排序:

| 字段 | 权重 | 用途 |
| title | 10 | 条目的可读名称 |
| tags | 6 | 主题词(reconciliation、pos、payroll) |
| aliases | 8 | 你实际输入的词,尤其是泰语/英语对照(ระบบลา、leave、ลาพักร้อน) |
| references | 4 | 真实文件路径或符号(src/pages/LeaveRequestPage.tsx、migration 024) |
| summary | 3 | 一段上下文说明,结果中截断到 400 字符 |

文档正文也会被搜索(+1),作为最后手段,所以只出现在文件里的符号依然能找到——但正文命中永远排在元数据命中之后。

B. 纯 markdown —— 任意 .md / .txt 文件目录树: text knowledge/ ├── architecture.md ├── deploy-guide.md └── deployment/ └── README.md

推荐的阅读顺序,能让上下文保持精简:条目大纲 → master_guide.md → 与任务匹配的那个编号产物 → 源代码。

安全守卫的行为

- 守卫检查的是 DSH 传给 tools.guard() 的执行对象:exec.name(工具名)和 exec.arguments(解析后的参数)。不是 exec.tool / exec.args——读这些会得到 undefined,守卫会静默地永不触发。
- 它只检查 bash、pwsh、cmd、terminal;其他工具一律返回 undefined,正常执行。
- 拒绝时返回的原因以 [BLOCKED BY DSH-KNOWLEDGE-BRIDGE SAFETY POLICY] 开头,运行时以 Error: ... 形式抛出。
- 守卫是单调的:拒绝无法被其他插件覆盖。

开发 bash
npm test # 28 tests: engine, host plugin, bundle contract
npm run validate # 21 static checks on the bundle contract
npm run demo # index examples/vault and print the agent's view
npm run demo -- ~/my-vault --query deployment # or any other vault

迭代时跑更窄的范围: bash
node --test lib/knowledge.test.js # discovery, index, search, read
node --test lib/index.test.js # tools, guard contract, prompt sections
node --test scripts/validate-bundle.test.js # the validator refuses broken bundles

不联网,不往临时目录之外写任何东西,而且没有安装步骤——CI 矩阵在 Linux 和 Windows 上、Node 20/22/24 各版本跑同样的命令。在沙箱化的 DSH 会话里,系统临时目录可能是只读的;先把 TEMP/TMP 指向可写目录。
text
index.js cordis host plugin: inject, tools, guard, prompt sections
lib/knowledge.js pure engine: discovery, index, search, read, rules loading
cordis.patch.yml DSH 应用的 bundle 补丁行
locale/{en,th}.json 插件管理器的显示标题和描述
assets/{banner,logo}.svg 仓库插图
scripts/demo.mjs 零安装演示(npm run demo) scripts/validate-bundle.js 21 项静态 bundle 契约检查(npm run validate) scripts/validate-bundle.test.js 验证校验器会拒绝损坏的 bundle examples/vault/ 示例 vault,包含两种受支持的布局 lib/.test.js node:test 测试套件 .github/workflows/ci.yml 测试矩阵(无安装步骤) CHANGELOG.md 发布历史 CONTRIBUTING.md pull request 必须遵守的不变量 SECURITY.md 这里什么算漏洞 CODE_OF_CONDUCT.md Contributor Covenant 2.1

改动必须通过的品质门:

| 门 | 命令 | 保护什么 |
| 单元测试 | npm test | 引擎行为、工具载荷裁剪、guard 真实的 exec 契约 |
| Bundle 契约 | npm run validate | inject 完整性、端口/ESM 形态、不含绝对用户路径、补丁接线 |
| 演示 | npm run demo | 全新 clone 仍能发现并索引 vault |

故障排查

| 症状 | 原因 / 修复 |
| Error: cannot get property "X" without inject,条目无法激活 | 你读取的每个 cordis 服务都必须列在 export const inject 里。在 if (...) 条件里(或 ?. 后面)读取 ctx.systemPrompt 一样会抛错——读取本身就是失败点。把服务读取放进 try,并且绝不要从 inject 里删掉 'systemPrompt'。 |
| 条目一直停在 pending,而不是失败 | 声明的服务还不存在。不会抛任何错;DSH 报告 pending (waiting for service: …)。检查服务名,并确认它的服务商插件已启用。 |
| 改了插件但行为没变 | cordis 缓存插件函数,ESM 缓存模块。关掉再打开不会重新导入。重启 DSH 宿主。 |
| Initialized with 0 path(s) | 找不到 vault。设置 DSH_KNOWLEDGE_PATHS 或 knowledgePaths,并确认该路径作为目录存在。 |
| guard 从不拦截任何东西 | guard 必须读取 exec.name / exec.arguments。用 exec.tool / exec.args 的片段永远匹配不上。 |

🇹🇭 ภาษาไทย

ทำไมต้องมีปลั๊กอินนี้

คุณภาพของเอเจนต์ไม่ได้ขึ้นกับความฉลาดอย่างเดียว แต่ขึ้นกับว่า มันเอื้อมถึงอะไรได้ ปัญหาจริง 3 ข้อที่ทำให้เกิดปลั๊กอินนี้:

1. Sandbox หลอกว่า "ไม่พบไฟล์" — โหมด workspace-write อ่าน vault หรือ repo นอก workspace ไม่ได้ และบน Windows shell จะแปลง error เป็น File Not Found ทำให้เอเจนต์สรุปว่า "ความรู้ไม่มีอยู่" แล้วเริ่มเดาสุ่ม
2. ความจำขาดตอน — ทีมเก็บเอกสารสถาปัตยกรรม SOP และ API contract ไว้ 50+ ฉบับใน vault (เช่น ~/.gemini/antigravity-ide/knowledge, ไดรฟ์แชร์, docs/) แต่ DeepSeek Harness ไม่มีวิธีค้นหา/index ไฟล์พวกนี้
3. 不可逆命令 — 自动智能体误跑 git reset --hard、git clean -fd、git restore .,未 commit 的工作全没了

dsh-knowledge-bridge 以 host 级 cordis 插件运行:用应用主进程的权限读文件,开放 3 个搜索工具,给模型注入一行 directive 让它知道有知识库,并在命令落到磁盘前拦下危险的 shell 命令。

目标

| 目标 | 实际做法 |
| 按需取用的精准知识 | 除了约 140 字符的 directive,什么都不塞进 prompt,再按主题通过 knowledge_search → knowledge_read 拉取内容 |
| 零配置 | 自己从 env var 或标准位置找 vault,代码里一行硬编码路径都没有 |
| 零依赖 | 只用 Node.js 内置模块(node:fs、node:path、node:os),不用装任何东西 |
| 不破坏用户的工作 | 单调 guard:命中规则立即拒绝,其他插件无法强制放行 |
| 可跨机器迁移 | discovery 基于 ~,可用 DSH_KNOWLEDGE_PATHS 覆盖,任何 markdown 形式的 vault 都能用 |

这个插件不是什么

- 不是每次把整个 vault 塞进 prompt 的系统 — 2 MB 的 vault ≈ 100 万 token,又慢又贵
- 不是 vector database — 排序用确定性的 keyword scoring,结果可预测,调试简单,不用跑 embedding service

功能

| | 功能 | 详情 |
| 🧠 | knowledge_search | 关键词搜索,权重明确:title 10 · id 8 · aliases 8 · tags 6 · references 4 · summary 3 · artifact 名 2 · 文件内容 1(lazy 读取 + 按 mtime 缓存)— 返回 id、title、score、截断后的 summary 和 artifact 列表,不返回文件内容 |
| 📖 | knowledge_read | 按需读取完整文档,或逐个读取 artifact(master_guide.md、07_migration.md、…) |
| 🗂️ | knowledge_list | 整个知识库的目录:id、title、artifact 数量、一行简介 |
| 🔎 | 自动查找 vault | DSH_KNOWLEDGE_PATHS → ~/.gemini/antigravity-ide/knowledge → ~/.antigravity-ide/knowledge → ~/.dsh/knowledge → ~/.codex/knowledge → ./knowledge → ./docs/knowledge → ./.knowledge |
| 📜 | 注入项目规则 | 从 workspace 查找 AGENTS.md / GEMINI.md / CLAUDE.md,放进 system prompt |
| 🛑 | Safety guard | 拒绝 bash / pwsh / cmd / terminal 中命中禁止 regex 的命令 |
| 🪶 | 省 token | 工具返回的 summary 会截断长度,因为工具结果会在之后每个 turn 重复发送 |

安装

方式 A — 安装为 DSH profile bundle(推荐)

包已经声明了 dsh.bundle.patch,所以像其他 DSH bundle 一样安装即可

1. โคลน / คัดลอกแพ็กเกจไปเก็บถาวร
git clone <your-repo-url> dsh-knowledge-bridge

2. ลงทะเบียนใน profile ของคุณ
~/.dsh/profiles/<profile>/package.json
{
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-knowledge-bridge"] } },
"dependencies": { "dsh-knowledge-bridge": "link:/absolute/path/to/dsh-knowledge-bridge" }
}

3. 安装 link

cd ~/.dsh/profiles/<profile>
pnpm install

重启 DeepSeek Harness — 插件会从 cordis.patch.yml 应用

方式 B — 在配置档里自己 merge patch

从 cordis.patch.yml 复制 insert 行,粘贴到 ~/.dsh/profiles/<profile>/cordis.patch.yml,然后重启 DSH

方式 C — 指向你自己的 vault

如果 vault 在标准位置,什么都不用配。否则: powershell

Windows (PowerShell) — 用 ; 或 , 分隔

$env:DSH_KNOWLEDGE_PATHS = "D:/team-docs/knowledge;~/my-vault"
bash

macOS / Linux

export DSH_KNOWLEDGE_PATHS="$HOME/my-vault:$HOME/team-docs"

…或者直接在 patch 里指定:knowledgePaths: ["~/my-vault"]

配置表(config)

所有键都是 optional,下面的默认值就是什么都不配直接安装时用的值

| 键 | 类型 | 默认值 | 含义 |
| knowledgePaths | string[] | [] → 自动查找 | vault 的 root,~ 会被展开,相对路径以 workspace 的 cwd 为基准,自己设置的路径优先级最高,并且仍会和 DSH_KNOWLEDGE_PATHS 合并 |
| rulesPaths | string[] | ["AGENTS.md","GEMINI.md","CLAUDE.md"] | 从 workspace 的 root 查找这些文件,然后作为 section 注入 prompt |
| autoInjectRules | boolean | true | 同时注入项目规则和单行 directive,如果设为 false,prompt 完全不会被改动 |
| enableSafetyGuard | boolean | true | 开启 guard,拦截破坏性命令 |
| bannedPatterns | string[] | 见下方 | regex(不区分大小写),用来匹配 command string |
js
bannedPatterns: [
'git\\s+reset\\s+--hard',
'git\\s+clean\\s+-fd',
'git\\s+restore\\s+\\.',
'rm\\s+-rf\\s+/(?!tmp)',
]

如果找不到 vault,插件会 log Initialized with 0 path(s) — 什么都没被 index 时,先看这一行

支持的 vault 格式

A. 结构化(Antigravity 风格的多文件 vault): text knowledge/ └── posttracker_engine/ ├── metadata.json # title, summary + tags / aliases / references (ไม่บังคับ) ├── timestamps.json # ไม่บังคับ └── artifacts/ ├── master_guide.md # อ่านตัวนี้ก่อน: สารบัญ + สถานะล่าสุด ├── 01_watchdog.md └── 02_reconciliation.md

metadata.json 里的字段按搜索权重排序:

| 字段 | 权重 | 用途 |
| title | 10 | 人能看懂的名字 |
| aliases | 8 | 你实际会输入的词,尤其是泰语/英语对照(ระบบลา, leave, ลาพักร้อน) |
| tags | 6 | 分类词(reconciliation, pos, payroll) |
| references | 4 | 文件路径或真实 symbol 名(src/pages/LeaveRequestPage.tsx, migration 024) |
| summary | 3 | 说明上下文的段落,搜索结果里会截断到 400 字符 |

文件正文也会被搜索(+1),作为最后手段,只出现在文件里的 symbol 也能搜到,但只要 metadata 匹配上,它的排名永远更低

B. 普通 markdown — 任何放着 .md / .txt 文件的文件夹: text knowledge/ ├── architecture.md ├── deploy-guide.md └── deployment/ └── README.md

推荐的阅读顺序(省上下文):先看目录条目 → master_guide.md → 与当前任务对应的 NN_.md 文件 → 最后再去看源码

safety guard 的行为

- guard 检查的是 DSH 传给 tools.guard() 的 execution object:exec.name(工具名)和 exec.arguments(已解析的参数)——不是 exec.tool / exec.args,因为这两个读出来是 undefined,guard 会静默失效
- 只检查 bash、pwsh、cmd、terminal;其他工具返回 undefined,照常执行
- 被拒绝时返回的文本以 [BLOCKED BY DSH-KNOWLEDGE-BRIDGE SAFETY POLICY] 开头,runtime 会显示成 Error: ...
- guard 是 monotonic 的:已经被拒绝的命令,其他插件也无法强行放行

开发与测试 bash
npm test # 28 เทสต์: engine, host plugin, bundle contract
npm run validate # 21 checks แบบ static บนสัญญาของ bundle
npm run demo # index examples/vault แล้วแสดงสิ่งที่เอเจนต์จะเห็น
npm run demo -- ~/my-vault --query deployment # หรือชี้ vault อื่นก็ได้

开发过程中只跑需要的测试集: bash
node --test lib/knowledge.test.js # discovery, index, search, read
node --test lib/index.test.js # tools, guard contract, prompt sections
node --test scripts/validate-bundle.test.js # ตัว validator ต้องปฏิเสธ bundle ที่พัง

不联网,不往 temp 文件夹之外写文件,而且什么都不用安装——CI 在 Linux 和 Windows 上跑同样的命令,Node 版本为 20/22/24。如果在带 sandbox 的 DSH 会话里运行,系统 temp 文件夹可能写不进去,先把 TEMP/TMP 指到可写的位置 text index.js cordis host plugin: inject, tools, guard, prompt sections lib/knowledge.js engine ล้วน: discovery, index, search, read, โหลดไฟล์กฎ cordis.patch.yml แถว patch ของ bundle ที่ DSH นำไปใช้
locale/{en,th}.json ชื่อและคำอธิบายที่แสดงใน Plugin Manager
assets/{banner,logo}.svg ภาพประกอบของรีโป
scripts/demo.mjs เดโมไม่ต้องติดตั้ง (npm run demo)
scripts/validate-bundle.js 21 checks ของสัญญา bundle (npm run validate)
scripts/validate-bundle.test.js พิสูจน์ว่า validator ปฏิเสธ bundle ที่พังจริง
examples/vault/ vault ตัวอย่างทั้ง 2 รูปแบบที่รองรับ
lib/.test.js ชุดเทสต์ node:test
.github/workflows/ci.yml test matrix (ไม่มีขั้นตอนติดตั้ง)
CHANGELOG.md ประวัติเวอร์ชัน
CONTRIBUTING.md ข้อกำหนดที่ PR ต้องรักษา
SECURITY.md อะไรถือเป็นช่องโหว่ของปลั๊กอินนี้
CODE_OF_CONDUCT.md Contributor Covenant 2.1

每次改动都必须通过的质量关卡:

| 关卡 | 命令 | 拦住什么 |
| Unit tests | npm test | engine 行为、工具 payload 裁剪、guard 真实的 exec 契约 |
| Bundle contract | npm run validate | inject 是否完整、ESM/端口格式、禁止出现用户绝对路径、patch 拼接 |
| 演示 | npm run demo | 重新克隆后仍能真正找到并索引 vault |

常见问题排查

| 现象 | 原因 / 解决办法 |
| 报 Error: cannot get property "X" without inject,entry 不激活 | cordis 里读取的每个 service 都必须写在 export const inject 中——在 if (...) 条件里或 ?. 之后读取 ctx.systemPrompt 同样会 throw,因为触发点是「读取」这个动作本身。请在 try 中读取,并且不要从 inject 里删掉 'systemPrompt' |
| entry 一直停在 pending,而不是失败 | 声明的 service 还没有提供者——不会有任何 exception,DSH 会报告 pending (waiting for service: …)。请检查 service 名称,并确认提供该 service 的插件是否已启用 |
| 改了插件代码,行为却没变 | cordis 会缓存插件的函数*,ESM 会缓存模块。toggle 关闭/开启不会重新 import → 必须重启 host |
| Initialized with 0 path(s) | 找不到 vault。设置 DSH_KNOWLEDGE_PATHS 或 knowledgePaths,并确认该 path 确实是文件夹 |
| guard 什么都不拦 | guard 必须读取 exec.name / exec.arguments。用 exec.tool / exec.args 的代码完全匹配不上 |

📄 License · 许可协议

MIT License — see LICENSE. Use it, fork it, ship it. MIT 许可协议——见 LICENSE。随便用、随便改、随便发布。
预览分享卡片长什么样 ↓Babydunx1/dsh-knowledge-bridge
分享 · DeepSeek Harness Hub
Babydunx1/dsh-knowledge-bridge

让智能体自动发现并检索本机知识库,拦截危险命令

回到顶部