安装验证:运行验证通过 (L5) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍AI
在 DSH 中基于已配置模型生成、阅读和更新仓库 Wiki 与溯源知识卡片。
- 生成/阅读/更新仓库 Wiki
- 支持溯源知识卡片(Grounded Claims)
- 复用 DSH 已配置模型,无需二次填 Key
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add github:D2Moqi/dsh-openwiki#v2.0.5安装方式: GitHub · 运行验证通过 (L5)
验证与兼容性
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
○ 作者未声明 dsh 版本要求 —— 安装不会因版本被拒。
| 插件版本 \ dsh | dsh 0.2.1-rc.2 当前 | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.1.7-rc.2 |
|---|---|---|---|---|---|
| v2.0.5 | ✓ | ✓ | ✓ | ✓ | ✓ |
v2.0.5github✓ 运行验证通过 102026-10-19
https://github.com/D2Moqi/dsh-openwiki
✓dsh 0.2.1-rc.2当前2026-10-19L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.2.1-rc.2 · 档位: l4-sandbox
签发:2026-10-19 · 有效至:2026-10-26
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.1-alpha.42026-10-16L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.2.1-alpha.4 · 档位: l4-sandbox
签发:2026-10-16 · 有效至:2026-10-23
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.1-alpha.22026-10-12L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.2.1-alpha.2 · 档位: l4-sandbox
签发:2026-10-12 · 有效至:2026-10-19
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.2.0-rc.22026-10-09L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.2.0-rc.2 · 档位: l4-sandbox
签发:2026-10-09 · 有效至:2026-10-16
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.1.7-rc.22026-09-25L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.1.7-rc.2 · 档位: l4-sandbox
签发:2026-09-25 · 有效至:2026-10-02
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.1.6-alpha.22026-09-20L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.1.6-alpha.2 · 档位: l3-fullscan
签发:2026-09-20 · 有效至:2026-09-27
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.1.6-alpha.12026-09-16L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.1.6-alpha.1 · 档位: l4-sandbox
签发:2026-09-16 · 有效至:2026-09-23
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.1.5-rc.22026-09-11L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.1.5-rc.2 · 档位: l4-sandbox
签发:2026-09-11 · 有效至:2026-09-18
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓dsh 0.1.3-alpha.22026-09-09L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dsh0.1.3-alpha.2 · 档位: l3-fullscan
签发:2026-09-09 · 有效至:2026-09-16
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
✓版本史前2026-09-30L5 · 运行验证通过
- • Node.js: v24.14.0
- • DSH: unknown
- • 被测插件工件: github · https://github.com/D2Moqi/dsh-openwiki#v2.0.5
ID: dsh-openwiki@v2.0.5@dshunknown · 档位: l3-fullscan
签发:2026-09-30 · 有效至:2026-10-07
查看检查项与证据
已在加载器目录树中激活(150 个条目)
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-openwiki/)``[](https://www.dsh.so/artifact/dsh-openwiki/)``[](https://www.dsh.so/artifact/dsh-openwiki/)``[](https://www.dsh.so/artifact/dsh-openwiki/)``[](https://www.dsh.so/artifact/dsh-openwiki/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 中,按「取更严者」→ 总评级 中。
v2.0.5dsh 清单v2.0.5git2026-10-21v2.0.5版本一致clean · npmvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(12 条)
- 警告childProcess · code-exec
lib/index.js:258handle = subprocess.spawn({ - 警告childProcess · code-exec
lib/index.js:389const handle = subprocess.spawn({ - 警告childProcess · code-exec
lib/index.js:871handle = subprocess.spawn({ - 警告fsWrite · files
lib/index.js:616const code = `const fs=require('fs');fs.mkdirSync(${JSON.stringify(envDir)},{recursive:true});fs.writeFileSync(${JSON.stringify(envPath)},${ - 警告fsWrite · files
lib/index.js:1549code = `const fs=require('fs');fs.mkdirSync(${JSON.stringify(dir)},{recursive:true});fs.writeFileSync(${JSON.stringify(path)},${JSON.stringi - 警告fsWrite · files
lib/index.js:1551code = `const fs=require('fs');const b=fs.readFileSync(${JSON.stringify(base64.path)},'utf8');fs.mkdirSync(${JSON.stringify(dir)},{recursive - 警告childProcess · code-exec
src/host/index.js:261handle = subprocess.spawn({ - 警告childProcess · code-exec
src/host/index.js:392const handle = subprocess.spawn({ - 警告childProcess · code-exec
src/host/index.js:874handle = subprocess.spawn({ - 警告fsWrite · files
src/host/index.js:619const code = `const fs=require('fs');fs.mkdirSync(${JSON.stringify(envDir)},{recursive:true});fs.writeFileSync(${JSON.stringify(envPath)},${ - 警告fsWrite · files
src/host/index.js:1552code = `const fs=require('fs');fs.mkdirSync(${JSON.stringify(dir)},{recursive:true});fs.writeFileSync(${JSON.stringify(path)},${JSON.stringi - 警告fsWrite · files
src/host/index.js:1554code = `const fs=require('fs');const b=fs.readFileSync(${JSON.stringify(base64.path)},'utf8');fs.mkdirSync(${JSON.stringify(dir)},{recursive
展开 5 条审计发现
- medium/dsh-openwiki/rpc 仅用源码中公开的固定请求头 x-dsh-openwiki: 1 鉴权
lib/index.jsRPC_HEADER 就是常量字符串 'x-dsh-openwiki',等于公开口令。任何能访问 Harness Web 服务的本地进程(若服务未绑定回环,还包括远端)都可以调用全部 handler:runtime/install 全局 npm 安装、model/env 读取明文密钥、kb/import 与 kb/delete 以真实用户权限写删文件、job/start 带着用户 API Key 启动 CLI;同源前端代码或 UI 中的 XSS 也可借此绕过 fs 沙箱。
- mediumopenwiki/model/env 返回 ~/.openwiki/.env 中的明文 API Key,与注释所称“已脱敏”不符
lib/index.jsMANAGED_ENV_KEYS 含 OPENAI_COMPATIBLE_API_KEY/A NTHROPIC_API_KEY/GEMINI_API_KEY/OPENROUTER_API_KEY,而函数注释声称“已脱敏”实则未做任何遮蔽;openwiki/model/env 通过 readOpenWikiEnvStatus 把明文供应商密钥返回给任意 RPC 调用方(配合弱鉴权可直接读取),同时密钥以默认权限明文落在 ~/.openwiki/.env。
- low通过 node 子进程以真实用户权限写/删文件,刻意绕过 DSH fs 沙箱
lib/index.jsnodeWriteFile/nodeRemoveFile 与 applyEnvUpdates 的回退分支用 node -e 以真实权限写 ~/.openwiki/.env 和任意已注册工作区的 openwiki-kb 目录,无视 workspace-write 限制;内容可经 kb/import 由调用方控制,删除为递归。范围受 safeImportName 限制(拒绝 ..、绝对路径、控制字符),因此影响限于覆盖/删除 <workspace>/openwiki-kb/source/files 内文件并重写凭证文件。
- low插件加载时自动执行 npm install -g openwiki,未征求用户确认
lib/index.jsensure() 在 apply 中无条件执行(void ensure().then(...)),插件首次加载时若未检测到 CLI 就以用户权限从 npm 拉取并全局安装第三方包(含其安装脚本),随后该 CLI 还会带着用户的模型 API Key 启动;一旦该 npm 包被投毒即等同宿主代码执行,且全程无提示。
- low所有工作区默认开启自动更新,git HEAD 变化即自动启动消耗模型的生成任务
lib/index.js任何一次 openwiki/workspaces 调用(打开面板)都会触发 maybeDefaultAutoUpdate(),为每个工作区启动 15 秒一次的 git rev-parse 轮询,HEAD 变化时自动 startJob 更新任务,使用用户的模型凭证重新生成文档并改写工作区文件,用户并未显式选择开启。
未发现后门或对外窃取;风险来自仅凭固定请求头鉴权的 RPC 接口,可读回明文 API Key、绕过沙箱写文件,并在加载时自动全局安装 npm 包、默认开启自动更新。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-09-05 · 活跃度:稳定
• 仓库创建: 2026-08-29
• 星标: ★ 2 · 复刻: 3
• 健康度: 稳定 — 近 90 天有提交
来源
GitHub: github.com/D2Moqi/dsh-openwiki
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
