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

知识复习库 HeWhenJay/dsh-project-knowledge-review

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

先检索本地资料再作答,证据不足时提醒补充

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

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

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

状态速览

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

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

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 62 处,展示前 37 条)
  • 写入本地文件
    lib/local-store.js:47
    await mkdir(directory, { recursive: true });
  • 写入本地文件
    lib/local-store.js:50
    await writeFile(ticket, `${process.pid}\n${token}\n`, { encoding: 'utf8', mode: 0o600, flag: 'wx' });
  • 读取本地文件
    lib/local-store.js:53
    const tickets = (await readdir(directory)).filter((name) => name.endsWith('.ticket')).sort();
  • 写入本地文件
    lib/local-store.js:55
    const heartbeat = setInterval(() => { void utimes(ticket, new Date(), new Date()).catch(() => undefined); }, 15_000);
  • 删除本地文件
    lib/local-store.js:58
    await unlink(ticket);
  • 删除本地文件
    lib/local-store.js:65
    await unlink(ticket);
  • 读取本地文件
    lib/local-store.js:71
    for (const name of await readdir(directory)) {
  • 读取本地文件
    lib/local-store.js:78
    const [ownerPidText] = (await readFile(target, 'utf8')).split(/ ? /);
  • 读取本地文件
    lib/local-store.js:80
    const info = await stat(target);
  • 删除本地文件
    lib/local-store.js:82
    await unlink(target);
  • 读取本地文件
    lib/local-store.js:90
    const parsed = JSON.parse((await readFile(path, 'utf8')).replace(/^ FEFF/, ''));
  • 写入本地文件
    lib/local-store.js:101
    await mkdir(dirname(path), { recursive: true });
  • 写入本地文件
    lib/local-store.js:102
    await mkdir(documentsPath(path), { recursive: true });
  • 写入本地文件
    lib/local-store.js:103
    await writeFile(indexPath(path), '', 'utf8');
  • 读取本地文件
    lib/local-store.js:172
    journal = JSON.parse((await readFile(journalPath(path), 'utf8')).replace(/^ FEFF/, ''));
  • 删除本地文件
    lib/local-store.js:187
    await unlink(journalPath(path));
  • 删除本地文件
    lib/local-store.js:280
    await unlink(journalPath(path));
  • 删除本地文件
    lib/local-store.js:442
    await unlink(journalPath(path));
  • 发起网络请求
    lib/media-services.js:11
    const response = await fetch(endpoint, {
  • 发起网络请求
    lib/media-services.js:43
    const response = await fetch(joinApiPath(config.baseUrl, 'audio/transcriptions'), {
  • 发起网络请求
    lib/media-services.js:83
    const response = await fetch(current, { redirect: 'manual', signal: AbortSignal.timeout(timeoutMs) });
  • 删除本地文件递归
    lib/local-store.test.js:18
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/local-store.test.js:35
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/local-store.test.js:52
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/local-store.test.js:65
    await rm(directory, { recursive: true, force: true });
  • 读取本地文件
    lib/local-store.test.js:73
    const before = JSON.parse((await readFile(`${storePath}.index.jsonl`, 'utf8')).trim());
  • 读取本地文件
    lib/local-store.test.js:75
    const after = JSON.parse((await readFile(`${storePath}.index.jsonl`, 'utf8')).trim());
  • 删除本地文件递归
    lib/local-store.test.js:82
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/local-store.test.js:99
    await rm(directory, { recursive: true, force: true });
  • 读取本地文件
    lib/local-store.test.js:107
    const before = JSON.parse((await readFile(`${storePath}.index.jsonl`, 'utf8')).trim());
  • 读取本地文件
    lib/local-store.test.js:110
    const after = JSON.parse((await readFile(`${storePath}.index.jsonl`, 'utf8')).trim());
  • 写入本地文件
    lib/local-store.test.js:130
    await writeFile(`${storePath}.journal.json`, JSON.stringify({ version: 1, document, record }), 'utf8');
  • 读取本地文件
    lib/local-store.test.js:136
    await assert.rejects(stat(`${storePath}.journal.json`), /ENOENT/);
  • 读取本地文件
    lib/local-store.test.js:153
    assert.equal(JSON.parse(await readFile(storePath, 'utf8')).documentCount, 40);
  • 写入本地文件
    lib/local-store.test.js:166
    await writeFile(storePath, JSON.stringify(legacy), 'utf8');
  • 写入本地文件
    lib/local-store.test.js:167
    await writeFile(`${storePath}.v1.backup.json`, '历史备份不得覆盖', 'utf8');
  • 写入本地文件
    lib/local-store.test.js:187
    await writeFile(storePath, JSON.stringify(legacy), 'utf8');
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-settings@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-api-remotes@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 检索本地资料作答
  • 证据不足提醒补充

中文 DSH 知识复习插件:有证据才回答、资料缺失提醒补充学习视频。

README

由 DeepSeek 最新模型翻译生成
dsh-project-knowledge-review 一个面向中文 DSH 用户的独立本地知识复习插件。 它把文字资料、OCR 图片文字和 ASR 音频转写保存到 DSH 用户目录,在回答知识问题前先检索本地 evidence;严格模式下没有足够证据就明确拒答。插件不需要数据库、向量模型、账号登录或项目 Token,也不会连接、安装或识别任何外部项目。 主要能力 - 零配置本地资料库:首次使用时自动创建 v2 存储。 - Evidence-first 问答:先检索,再根据 evidence 回答;严格模式证据不足即拒答。 - 当前 DSH 模型作答:插件只提供检索 evidence 和系统约束,最终答案仍由当前会话模型生成。 - Markdown 摘要:文字、OCR、ASR 入库后立即生成 Markdown 自动提要;自动过滤导入元数据、RAG 模板和纯时间戳,也可用当前 DSH 模型回写更好的 Markdown 摘要。 - 两级分类:插件自动生成系统初分类,用户可在知识库页面建立并调整自己的二次分类。 - 一级知识库页面:侧栏点击“知识库”进入独立工作区,可查看详细摘要和详细原始内容。 - 安全 Markdown 预览:摘要与原始内容都支持渲染视图和 Markdown 源码视图;不执行 HTML 或脚本。
展开完整文档(README 剩余 1 节)
dsh-project-knowledge-review

一个面向中文 DSH 用户的独立本地知识复习插件。

它把文字资料、OCR 图片文字和 ASR 音频转写保存到 DSH 用户目录,在回答知识问题前先检索本地 evidence;严格模式下没有足够证据就明确拒答。插件不需要数据库、向量模型、账号登录或项目 Token,也不会连接、安装或识别任何外部项目。

主要能力

- 零配置本地资料库:首次使用时自动创建 v2 存储。
- Evidence-first 问答:先检索,再根据 evidence 回答;严格模式证据不足即拒答。
- 当前 DSH 模型作答:插件只提供检索 evidence 和系统约束,最终答案仍由当前会话模型生成。
- Markdown 摘要:文字、OCR、ASR 入库后立即生成 Markdown 自动提要;自动过滤导入元数据、RAG 模板和纯时间戳,也可用当前 DSH 模型回写更好的 Markdown 摘要。
- 两级分类:插件自动生成系统初分类,用户可在知识库页面建立并调整自己的二次分类。
- 一级知识库页面:侧栏点击“知识库”进入独立工作区,可查看详细摘要和详细原始内容。
- 安全 Markdown 预览:摘要与原始内容都支持渲染视图和 Markdown 源码视图;不执行 HTML 或脚本。
- 可选 OCR / ASR:默认关闭,只有用户显式开启并配置 DSH 凭据后才访问对应服务。
- 大库友好:轻量 JSONL 索引、单文档原文文件、游标分页和按需原文读取。
- 键盘友好:阅读标签支持方向键切换,抽屉支持 Escape 关闭与焦点返回,并遵循“减少动态效果”偏好。
- v1 自动迁移:旧版整库 JSON 会迁移到 v2,并保留不可覆盖的原始备份。

3 分钟快速上手

第 1 步:安装插件

dsh plugin --profile web add dsh-project-knowledge-review

安装后重新启动当前 DSH Web 进程并刷新页面。成功后可以看到:

- 侧栏出现“知识库”,位置在“工作区”上方;
- “设置”页面出现“知识复习”;
- 新会话可以使用 project_knowledge_ 工具。

第一次使用不需要配置数据库、向量模型、账号或 Token。默认使用“知识库仅供参考”:仍会先检索本地资料,再把知识库证据与模型补充分区展示。

回答策略:reference 资料库:~/.dsh/project-knowledge-review/knowledge.json OCR:关闭 ASR:关闭

第 2 步:添加第一份资料

在任意 DSH 对话中直接粘贴你有权使用的文字,例如:

把下面内容加入知识库,标题是“RAG 证据检索入门”,来源是“我的学习笔记”:

RAG 在生成回答前先检索资料库。严格模式要求回答引用资料标题与来源;当前知识库没有足够证据时,应明确拒答。

插件会调用 project_knowledge_add_text,保存原文并返回:

- 资料 ID;
- Markdown 自动提要;
- 摘要来源;
- 系统初分类;
- 本地保存结果。

请只导入自己编写、公开授权或已确认有权使用的资料。

第 3 步:打开知识库阅读

点击侧栏“知识库”,即可搜索资料、按系统分类或个人分类浏览,并在“摘要 / 原始内容”和“渲染 / Markdown 源码”之间切换。

知识库主阅读界面

界面分为三个按需区域:

- 左侧资料导航:搜索、系统分类、个人分类和资料列表;
- 中间阅读画布:显示完整摘要或按需读取原始内容;
- 右侧资料信息:点击顶部“资料信息”后打开,不会永久挤占正文。

第 4 步:建立自己的分类

在左侧点击“新建分类”,创建例如“RAG 入门”“前端复习”等目录。选择一份资料后,打开“资料信息”,即可修改“我的分类”。

资料信息与个人分类

系统初分类用于解释插件最初如何归类;“我的分类”由你控制,两者互不覆盖。

第 5 步:基于证据复习

回到对话后这样提问:

根据我的知识库解释 RAG 为什么需要引用证据。

插件会先调用 project_knowledge_search。只有返回了 evidence,当前 DSH 模型才会基于证据回答,并引用资料标题与来源。

默认 reference 模式会固定区分:

知识库内容基于本地 evidence 的结论;未命中时明确说明知识库没有相关资料。

模型补充当前模型提供的通用知识,不冒充知识库结论。

如果你希望资料里没有答案就完全拒答,可以在“设置 → 知识复习”切换为 strict。

常用操作速查

| 想做什么 | 对 DSH 说什么 |
| 添加文字资料 | 把下面内容加入知识库,标题是“……”:…… |
| 基于知识库复习 | 根据我的知识库解释…… |
| 查看资料数量 | 我的知识库有多少份资料? |
| 查看保存位置 | 知识库资料保存在哪里? |
| 检查项目隔离 | 知识库是否与当前项目共享? |
| 改进自动提要 | 请根据这份资料生成更准确的 Markdown 摘要并回写 |

查询数量、标题、来源、存储位置或共享范围时,插件调用 project_knowledge_overview。作用域始终是当前 DSH 用户的本地资料库,sharedWithCurrentProject 始终为 false。

知识库页面行为

“知识库”入口采用与“任务看板”一致的侧栏按钮规格,并固定放在“工作区”区块之前。知识库打开后,点击任意对话、设置、任务看板、SSH、文件树或其他外部功能都会自动退出知识库,并让原点击继续生效。任务看板或 SSH 打开时点击知识库,也会在同一次点击中退出原面板并进入知识库;从知识库点击任务看板或 SSH 也能单击反向切换。

窄屏下,资料导航和资料信息会变成抽屉,正文使用完整可用宽度。阅读标签支持方向键切换,抽屉支持 Escape 关闭与焦点返回。

页面只借鉴主流文档与知识产品的信息架构,不复制第三方品牌或素材。

回答策略

strict

- 知识问题必须先检索。
- 只有 answerStatus=ANSWERED 且 evidence 非空时才能回答。
- 只陈述 evidence 支持的结论。
- 没有证据时必须明确说明:当前知识库中没有足够证据,不能回答。
- 不使用模型记忆补齐知识结论。

reference(默认,界面显示“知识库仅供参考”)

- 仍先检索知识库。
- 允许当前模型补充通用知识。
- 必须明确区分“知识库证据”和“模型补充”。

可以在“设置 → 知识复习”中切换策略。

工具

插件公开以下 DSH 工具:

| 工具 | 用途 |
| project_knowledge_overview | 查询数量、标题、来源、存储位置、作用域和共享状态 |
| project_knowledge_search | 检索本地 evidence |
| project_knowledge_add_text | 添加用户提供或确认有权使用的文字资料 |
| project_knowledge_update_summary | 用当前 DSH 模型生成的 Markdown 摘要更新一份资料 |
| project_knowledge_import_image_ocr | 对公开图片 URL 执行 OCR 后入库 |
| project_knowledge_import_audio_asr | 对公开直链音频执行 ASR 后入库 |

工具名为了保持已有 DSH 会话兼容而保留 project_knowledge_ 前缀;这不表示插件会连接任何外部项目。

本地 v2 存储

默认路径:

~/.dsh/project-knowledge-review/knowledge.json

同目录还会出现:

knowledge.json # 常数大小 manifest knowledge.json.index.jsonl # 元数据与检索 token 轻量索引 knowledge.json.documents/ # 每份资料一个 JSON 原文文件 knowledge.json.categories.json # 用户二次分类 knowledge.json.locks/ # 多进程 ticket 锁 knowledge.json.journal.json # 中断恢复日志,仅写入期间存在 knowledge.json.v1.backup*.json # v1 迁移备份(如有)

v2 的设计目标:

- 列表和概览不加载全量原文。
- 原文按单条 ID 哈希文件名直接定位。
- 写入和元数据更新使用跨进程 ticket 锁。
- journal 中断恢复保持清单、JSONL 索引和单条原文一致。
- 单次预览、请求体和媒体文件均有大小限制。

OCR 与 ASR

OCR / ASR 默认关闭。启用步骤:

1. 打开“设置 → 知识复习”。
2. 开启对应服务。
3. 配置 Base URL 与模型名称。
4. 将 API Key 保存到 DSH 凭据库。

安全边界:

- 只接受公开 HTTP(S) 图片 URL,或公开可直接下载的音频 URL。
- 拒绝 URL 用户信息、非 HTTP(S) 协议、本机地址和私有网络地址。
- API Key 不写入插件设置 JSON,也不会回显。
- 插件不自动处理视频网页分享页;请提供字幕文字或公开音频直链。

设置项

| 设置 | 默认值 | 说明 |
| enabled | true | 关闭后工具和提示词保持静默 |
| answerPolicy | reference | 默认“知识库仅供参考”;可切换为严格 strict |
| localStorePath | ~/.dsh/project-knowledge-review/knowledge.json | 插件自己的本地资料库 |
| projectName | 我的知识库 | 用户可见名称;仅是命名,不是外部项目 |
| requestTimeoutMs | 120000 | OCR / ASR 请求超时 |
| ocrEnabled | false | 是否启用 OCR |
| ocrBaseUrl | DashScope OpenAI 兼容地址 | OCR 服务地址 |
| ocrModel | qwen-vl-ocr | OCR 模型 |
| ocrApiKeyEnv | DSH_KNOWLEDGE_OCR_API_KEY | DSH 凭据引用名 |
| asrEnabled | false | 是否启用 ASR |
| asrBaseUrl | OpenAI API 地址 | ASR 服务地址 |
| asrModel | whisper-1 | ASR 模型 |
| asrApiKeyEnv | DSH_KNOWLEDGE_ASR_API_KEY | DSH 凭据引用名 |

隐私与发布边界

- 插件独立发布、独立运行、独立存储。
- 插件没有项目 URL、项目 API Key、配对码、能力文件或项目安装逻辑。
- 插件不会主动向外部项目同步资料。
- 插件摘要和分类只属于插件本地库。
- 如果个人项目希望使用这些资料,应由该项目在自己的服务端实现主动、只读同步;这不属于本插件的公共能力。

开发

npm install
npm test
npm run typecheck
npm pack --dry-run

npm test 会先清理并重建 lib/,防止删除过的旧功能残留在发布包中。

License

MIT
预览分享卡片长什么样 ↓HeWhenJay/dsh-project-knowledge-review
分享 · DeepSeek Harness Hub
HeWhenJay/dsh-project-knowledge-review

先检索本地资料再作答,证据不足时提醒补充

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