让智能体自动发现并检索本机知识库,拦截危险命令
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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。随便用、随便改、随便发布。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Babydunx1/dsh-knowledge-bridge
让智能体自动发现并检索本机知识库,拦截危险命令
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6