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

LLM 知识库 FlyAIBox/dsh-llm-wiki

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

把本地文件与网页编译成可追溯的 Markdown 知识库

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(dependency_conflict · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 57 处,展示前 42 条)
  • 读取本地文件
    src/compiler.ts:65
    images.push({ data: await readFile(asset.path), mediaType, name: basename(asset.path) });
  • 发起网络请求
    src/fetcher.ts:15
    fetch(url: string, workspaceRoot: string, signal: AbortSignal, scope?: Agent): Promise<FetchResult>;
  • 发起网络请求
    src/fetcher.ts:31
    async fetch(url: string, workspaceRoot: string, signal: AbortSignal, scope?: Agent): Promise<FetchResult> {
  • 读取本地文件
    src/local-runtime.ts:82
    const bytes = await readFile(item.path);
  • 发起网络请求
    src/local-runtime.ts:101
    const result = await this.fetcher.fetch(url, call.workspaceRoot, call.signal, call.scope);
  • 读取本地文件
    src/local-runtime.ts:204
    try { await stat(join(root, ".state", "manifest.json")); } catch {
  • 读取本地文件
    src/local-runtime.ts:230
    const body = await readFile(file, "utf8");
  • 读取本地文件
    src/local-runtime.ts:423
    try { await stat(path); return true; } catch (error) {
  • 删除本地文件递归
    src/local-runtime.ts:433
    if (basename(parent).startsWith("dsh-llm-wiki-image-")) await rm(parent, { recursive: true, force: true });
  • 删除本地文件
    src/local-runtime.ts:434
    else await rm(asset.path, { force: true });
  • 读取本地文件
    src/scanner.ts:44
    const root = await realpath(workspaceRoot);
  • 读取本地文件
    src/scanner.ts:45
    const requested = await realpath(isAbsolute(requestedPath) ? requestedPath : resolve(root, requestedPath));
  • 读取本地文件
    src/scanner.ts:51
    const rootStat = await lstat(requested);
  • 读取本地文件
    src/scanner.ts:59
    const stat = await lstat(path);
  • 读取本地文件
    src/scanner.ts:71
    const directory = await opendir(path);
  • 读取本地文件
    src/scanner.ts:111
    fingerprintParts.push(`${relative(root, item.path)}\0${item.bytes}\0${sha256(await readFile(item.path))}`);
  • 写入本地文件
    src/search.ts:23
    await mkdir(dirname(this.store.searchPath), { recursive: true });
  • 读取本地文件
    src/search.ts:32
    const body = await readFile(file, "utf8");
  • 写入本地文件
    src/store.ts:38
    mkdir(join(this.root, "raw"), { recursive: true }),
  • 写入本地文件
    src/store.ts:39
    mkdir(join(this.wikiRoot, "sources"), { recursive: true }),
  • 写入本地文件
    src/store.ts:40
    mkdir(join(this.wikiRoot, "summaries"), { recursive: true }),
  • 写入本地文件
    src/store.ts:41
    mkdir(join(this.wikiRoot, "concepts"), { recursive: true }),
  • 写入本地文件
    src/store.ts:42
    mkdir(join(this.wikiRoot, "entities"), { recursive: true }),
  • 写入本地文件
    src/store.ts:43
    mkdir(join(this.wikiRoot, "explorations"), { recursive: true }),
  • 读取本地文件
    src/store.ts:91
    const markdown = await readFile(join(this.root, "raw", "sources", source.id, "evidence.md"), "utf8");
  • 删除本地文件
    src/store.ts:124
    if (!stillOwned) await rm(resolveInside(this.wikiRoot, oldPage), { force: true });
  • 删除本地文件递归
    src/store.ts:133
    await rm(staging, { recursive: true, force: true });
  • 删除本地文件递归
    src/store.ts:215
    await rm(staging, { recursive: true, force: true });
  • 删除本地文件
    src/store.ts:250
    if (!activeOwner) await rm(resolveInside(this.wikiRoot, page), { force: true });
  • 删除本地文件
    src/store.ts:252
    await rm(resolveInside(this.wikiRoot, source.sourcePath), { force: true });
  • 删除本地文件递归
    src/store.ts:253
    await rm(join(this.root, "raw", "sources", id), { recursive: true, force: true });
  • 读取本地文件
    src/store.ts:270
    try { entries = await readdir(directory, { withFileTypes: true }); } catch (error) {
  • 读取本地文件
    src/store.ts:285
    return readFile(resolveInside(this.wikiRoot, relativePath), "utf8");
  • 读取本地文件
    src/store.ts:310
    const body = await readFile(snapshot);
  • 读取本地文件
    src/store.ts:327
    await stat(resolveInside(this.wikiRoot, page));
  • 读取本地文件
    src/store.ts:334
    await atomicWrite(resolveInside(this.wikiRoot, page), await readFile(snapshot));
  • 读取本地文件
    src/tools.ts:165
    try { return (await lstat(absolute)).isDirectory(); } catch { return false; }
  • 写入本地文件
    src/util.ts:21
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    src/util.ts:23
    await writeFile(temporary, data);
  • 写入本地文件
    src/util.ts:25
    await rename(temporary, path);
  • 删除本地文件
    src/util.ts:27
    await rm(temporary, { force: true }).catch(() => undefined);
  • 读取本地文件
    src/util.ts:35
    return JSON.parse(await readFile(path, "utf8")) as T;
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-attachment@deepseek-ai/dsh-jobs@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-skill@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 本地文件与网页整理
  • 生成可追溯引用
  • 保留原始证据与版本

一个面向 DeepSeek Harness(DSH)的 Markdown-first 知识库插件。它把本地文件、目录和网页整理为可由 Git/Obsidian 直接检查的 LLM Wiki,同时保留不可变原始证据、来源版本和可追溯引用

README

由 DeepSeek 最新模型翻译生成
dsh-llm-wiki dsh-llm-wiki 是一个面向 DeepSeek Harness(DSH)的 Markdown 优先知识库插件。它把本地文件、目录和网页整理为可由 Git/Obsidian 直接检查的 LLM Wiki,同时保留不可变原始证据、来源版本和可追溯引用。 项目不是 OpenKB 的包装器。它借鉴 Karpathy LLM Wiki 的“原始证据 + 编译知识”工作流,以及 OpenKB 的多格式导入经验,并按照 DSH 的插件、工具、任务和模型能力实现。 v1 能力 - 导入目录、PDF、DOCX、PPTX、XLSX/XLS/CSV/TSV、图片、Markdown/文本/HTML/JSON/XML。 - 导入普通 HTTP(S) URL、微信公众号文章和 Twitter/X 内容。 - 通过已安装的 web-content-fetcher skill 获取公开网页;需要登录或真实浏览器时返回 browser_required,由主 Agent 显式调用 web-access。 - 将知识编译为摘要、概念、实体和探索页面,来源锚点随结论保存。 - 使用 SQLite FTS5 做可重建全文检索;Markdown 和原始文件才是权威数据。 - 支持来源撤回、恢复、去重、版本继承、lint 和基于证据的问答。
展开完整文档(README 剩余 1 节)
dsh-llm-wiki

dsh-llm-wiki 是一个面向 DeepSeek Harness(DSH)的 Markdown 优先知识库插件。它把本地文件、目录和网页整理为可由 Git/Obsidian 直接检查的 LLM Wiki,同时保留不可变原始证据、来源版本和可追溯引用。

项目不是 OpenKB 的包装器。它借鉴 Karpathy LLM Wiki 的“原始证据 + 编译知识”工作流,以及 OpenKB 的多格式导入经验,并按照 DSH 的插件、工具、任务和模型能力实现。

v1 能力

- 导入目录、PDF、DOCX、PPTX、XLSX/XLS/CSV/TSV、图片、Markdown/文本/HTML/JSON/XML。
- 导入普通 HTTP(S) URL、微信公众号文章和 Twitter/X 内容。
- 通过已安装的 web-content-fetcher skill 获取公开网页;需要登录或真实浏览器时返回 browser_required,由主 Agent 显式调用 web-access。
- 将知识编译为摘要、概念、实体和探索页面,来源锚点随结论保存。
- 使用 SQLite FTS5 做可重建全文检索;Markdown 和原始文件才是权威数据。
- 支持来源撤回、恢复、去重、版本继承、lint 和基于证据的问答。

v1 不支持音视频、老式 .doc/.ppt、压缩包、EPUB、网页工作台或向量数据库。

仓库文档

- 需求分析
- 产品设计
- 架构设计
- 代码实现
- 验收与测试

本地开发

当前仓库的开发依赖通过 link: 指向同级的 /Users/fly/code/deepseek-harness;发布时它们是普通 peer dependencies。

cd /Users/fly/code/dsh-llm-wiki
pnpm install
pnpm run check

文档转换伴随程序需要 CPython 3.11+ 并预装锁定依赖,运行工具时绝不自动下载。macOS 自带的 Python 3.9 不满足 MarkItDown 要求:

python3.11 -m venv .venv
.venv/bin/pip install -r python/requirements.lock

网页导入还要求 DSH skill registry 能解析名为 web-content-fetcher 的本地 skill(来源:shirenchuang/web-content-fetcher)。需要登录或真实浏览器时,主 Agent 使用 eze-is/web-access;该 skill 不会被插件隐式执行,也不会被 vendored 到本仓库。

DSH 配置

构建后在 profile 或 bundle 的 cordis.yml 中挂载:

- name: dsh-llm-wiki
config:
root: .dsh/llm-wiki
pythonExecutable: /absolute/path/to/dsh-llm-wiki/.venv/bin/python
Optional overrides; each provider/model pair must be configured together.
compilerProvider: deepseek
compilerModel: deepseek-chat
visionProvider: openai
visionModel: gpt-4.1
maxFiles: 2000
maxBytes: 1073741824
maxModelCalls: 200
maxInputTokens: 1000000
webMaxChars: 100000
webMinChars: 200

root 相对于当前 DSH workspace。首次成功写入会把语言锁为 zh-CN。

Agent 工具

插件注册六个 model-visible 工具:wiki_ingest、wiki_query、wiki_status、wiki_lint、wiki_source_retract、wiki_source_restore。导入和 lint 通过 DSH Jobs 后台执行;状态和问答同步返回。

可重建索引和物理清除只提供人工命令,不注册为 model tool:

node lib/cli.js reindex --root /absolute/workspace/.dsh/llm-wiki
node lib/cli.js purge-source --root /absolute/workspace/.dsh/llm-wiki \
--source-id src-0123456789abcdef0123 --confirm-source-id src-0123456789abcdef0123

purge-source 仅接受已经 retracted 的来源,并要求重复完整 source id;删除 raw 后不可恢复。

数据目录

.dsh/llm-wiki/
├── raw/ # 不可变来源副本和标准化证据 ├── wiki/ │ ├── index.md │ ├── log.md │ ├── sources/ │ ├── summaries/ │ ├── concepts/ │ ├── entities/ │ └── explorations/ └── .state/ # manifest、staging、可重建 FTS 索引

安全原则

- 路径导入会先扫描再写入;目录导入要求 Agent 展示扫描摘要并获得用户批准。
- .env、私钥、常见凭据文件、浏览器配置、.git 和 wiki 自身目录始终拒绝。
- 网页 skill 只负责获取内容;插件不读取或保存浏览器 Cookie。
- 本地解析完成后,仅标准化文本和明确选择的图片可进入模型请求。
- 物理清除原始证据不是 model tool;只能由人工维护命令完成。
预览分享卡片长什么样 ↓FlyAIBox/dsh-llm-wiki
分享 · DeepSeek Harness Hub
FlyAIBox/dsh-llm-wiki

把本地文件与网页编译成可追溯的 Markdown 知识库

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