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

本地证据检索 Cooberped/dsh-evidence

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

上传文件到会话,按坐标精确回读原文证据

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Cooberped/dsh-evidence
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · chat
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@cooberped/dsh-evidence(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.13.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:46:26

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 21 条)
  • 发起网络请求
    lib/client.js:260
    const res = await fetch(`/api/workspace-files?session=${encodeURIComponent(currentSessionId)}`, {
  • 发起网络请求
    lib/client.js:400
    const res = await fetch("/api/upload", {
  • 发起网络请求
    lib/client.js:592
    void fetch(`/api/upload?path=${encodeURIComponent(ref)}`, {
  • 写入本地文件
    lib/retrieval/runtime.js:84
    await mkdir(indexDir, { recursive: true, mode: 0o700 });
  • 读取本地文件
    lib/retrieval/runtime.js:85
    const info = await stat(indexDir);
  • 写入本地文件
    lib/retrieval/runtime.js:98
    await chmod(`${dbPath}${suffix}`, 0o600);
  • 写入本地文件
    lib/retrieval/runtime.js:121
    await chmod(dbPath, 0o600);
  • 写入本地文件
    lib/retrieval/runtime.js:124
    await chmod(dbPath, 0o600);
  • 写入本地文件
    lib/upload.js:136
    await mkdir(anchor, { recursive: true });
  • 读取本地文件
    lib/upload.js:137
    const canonicalAnchor = await realpath(anchor);
  • 读取本地文件
    lib/upload.js:138
    const anchorInfo = await lstat(canonicalAnchor);
  • 读取本地文件
    lib/upload.js:147
    info = await lstat(current);
  • 写入本地文件
    lib/upload.js:153
    await mkdir(current, { mode: 0o700 });
  • 读取本地文件
    lib/upload.js:161
    info = await lstat(current);
  • 读取本地文件
    lib/upload.js:165
    const canonicalCurrent = await realpath(current);
  • 读取本地文件
    lib/upload.js:171
    const info = await lstat(path);
  • 删除本地文件
    lib/upload.js:514
    await unlink(resolved);
  • 删除本地文件
    lib/upload.js:605
    await unlink(path);
  • 删除本地文件
    lib/upload.js:616
    await rmdir(dir);
  • 读取本地文件
    lib/workspace.js:90
    entries = await readdir(join(cwd, rel), { withFileTypes: true });
  • 读取本地文件
    build.mjs:6
    const pkg = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8'))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-fs@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 上传文件到会话
  • 私有本地检索
  • 坐标级精确读取原文

把本地文件变成 DeepSeek Harness 里可版本化的证据:composer 上传、私有本地检索,以及坐标级精确读取 PDF/DOCX/XLSX/PPTX。

README

由 DeepSeek 最新模型翻译生成
dsh-evidence 在 DeepSeek Harness 里传文件,让模型真的能读。 在 Web 输入框上传文件或整个文件夹。解析和索引都留在本机。模型先检索紧凑证据,再按需展开准确的页码、幻灯片、行区间或表格范围——而不是把全文塞进 prompt,也不用退回 Python 遍历。栅格图片继续走 Harness 原生视觉链路。 [!IMPORTANT] npm Beta 已经可以安装。 公开的预发布版本是 @baseland/dsh-evidence@0.6.0-beta.4,包页面在 @baseland/dsh-evidence。请用 @beta 安装这一版。latest 仍指向第一个已发布版本 0.6.0-beta.1,因为这次预发布不会移动它。这不是稳定版承诺。 GitHub 仓库仍是 Cooberped/dsh-evidence。npm 包名是 @baseland/dsh-evidence,因为 npm 组织 @cooberped 无法认领。 它怎么工作 1. 只上传一次,文件落在当前会话工作区。 2. 在本地建索引——不把全文预先塞进模型上下文。 3. 围绕具体问题检索紧凑证据。 4. 只在需要时展开带版本的准确坐标。 5. 基于证据回答;没有证据就明确说明。 这样,文件就变成可以定位、按需回读的证据,而不是整篇塞进 prompt。
展开完整文档(README 剩余 1 节)
dsh-evidence

在 DeepSeek Harness 里传文件,让模型真的能读。

在 Web 输入框上传文件或整个文件夹。解析和索引都留在本机。模型先检索紧凑证据,再按需展开准确的页码、幻灯片、行区间或表格范围——而不是把全文塞进 prompt,也不用退回 Python 遍历。栅格图片继续走 Harness 原生视觉链路。

[!IMPORTANT]
npm Beta 已经可以安装。 公开的预发布版本是 @baseland/dsh-evidence@0.6.0-beta.4,包页面在 @baseland/dsh-evidence。请用 @beta 安装这一版。latest 仍指向第一个已发布版本 0.6.0-beta.1,因为这次预发布不会移动它。这不是稳定版承诺。

GitHub 仓库仍是 Cooberped/dsh-evidence。npm 包名是 @baseland/dsh-evidence,因为 npm 组织 @cooberped 无法认领。

它怎么工作

1. 只上传一次,文件落在当前会话工作区。
2. 在本地建索引——不把全文预先塞进模型上下文。
3. 围绕具体问题检索紧凑证据。
4. 只在需要时展开带版本的准确坐标。
5. 基于证据回答;没有证据就明确说明。

这样,文件就变成可以定位、按需回读的证据,而不是整篇塞进 prompt。

安装

需要带 web profile 的 DeepSeek Harness CLI,以及 Node.js >=22.13.0。从源码安装还需要 PATH 里有 pnpm。日常行为仍按 npm @deepseek-ai/dsh@0.1.7-rc.2 核对。包里同时声明了 engines.dsh:>=0.1.7-rc.2 <0.3.0,所以 0.3.0 以下的 0.2.x 宿主也可以安装。

下限是 Harness 0.1.7-rc.2。上传按钮仍使用 …Regular 图标名。@deepseek-ai/dsh-client-ui-primitives@0.2.1-rc.2 仍导出这些名字,conversation.input.left 和 conversation.input.dock 也仍在 0.2.0-rc.2 与 0.2.1-rc.2 的会话客户端里。0.1.6 及更早版本上,图标会对不上。仓库没有为旧版打过 release tag;若仍要跑 ≤ 0.1.6,请用图标改名之前的代码,或上游 taxueseek/dsh-files。

从 npm 安装

dsh plugin --profile web add @baseland/dsh-evidence@beta
dsh --profile web --dump-config # 确认组合配置中已有该 bundle layer
dsh web # 重启

请用 @beta。它指向这次预发布 0.6.0-beta.4。只写包名会跟着 latest 走,而 latest 仍是 0.6.0-beta.1。那是 npm 上的第一个版本,注册表会保留 latest;用 beta 标签发布这一版不会移动它。以后发出稳定版时,latest 应该改到那个版本。@beta 继续表示预发布。

说明见 v0.6.0-beta.4。@beta 装到的就是这一版。这一版更新了运行时依赖:read-excel-file 9.3.10 → 9.3.12,修好了工作表 XML 里 <sheetData/> 出现得比较靠后时会崩溃的问题;pdfjs-dist 6.3.289 → 6.4.299;pdfjs-dist 带进来的可选依赖 @napi-rs/canvas 1.0.8 → 1.0.10。仍带有 0.6.0-beta.1 里还没有的三处上传修正:同一批里第二个及之后的文件会把卡片插到正确位置;较长的中文文本在开头一段正好切在半个字上时仍会被认出;已确认是文本的卡片会显示自己的短扩展名(.md 显示为 MD),而不是一律 TXT。开发依赖 @types/node 在 lockfile 里也从 26.6.3 升到了 26.6.5。

dsh plugin add 会把后面的参数交给 profile 里的 pnpm,这也是 Harness bundle 发布指南里的安装方式。如果你的 npm 客户端走了国内镜像(例如 npmmirror),而镜像上还没有这个包,就给这一条命令指定官方注册表:

dsh plugin --profile web add @baseland/dsh-evidence@beta --registry https://registry.npmjs.org/

卸载用 dsh plugin --profile web remove @baseland/dsh-evidence。

profile 和插件的用法遵循官方 Harness 插件参考和同一份发布指南。

从源码安装

git clone https://github.com/Cooberped/dsh-evidence.git
cd dsh-evidence
pnpm install --frozen-lockfile
pnpm build

dsh plugin --profile web add . # 把当前 checkout 链接到 web profile
dsh --profile web --dump-config # 确认组合配置中已有该 bundle layer
dsh web # 重启

本地安装是对当前 checkout 的链接:拉取更新后重新执行 pnpm install --frozen-lockfile && pnpm build 并重启。卸载用 dsh plugin --profile web remove @baseland/dsh-evidence。

怎么用

1. 打开 Harness Web 输入框。
2. 添加文件:回形针多选、文件夹按钮选整个目录,或者直接把东西拖到页面上。
3. 确认每个预期文件都有独立卡片,并显示 AI 可读取。
4. 提一个具体问题——模型会自己调用工具。

好用的提示词:

先索引这三个文件,不要立即总结。

在这些材料中查找 Q3 留任指标的定义和公式。
每个判断都给出来源文件与准确页码、幻灯片、行区间或 Sheet!Range。

比较会议决定与工作簿目标。
如果材料不足,请说明缺少什么,不要猜测。

两个工具

| | search_documents | read_document |
| 用来 | 找答案在哪 | 读某个位置是什么 |
| 主要入参 | file_paths,可选短 query | file_path 加 coordinate/version,或 offset/limit,或 sheet/cell_range/list_sheets |
| 不带 query | 索引发生变化的内容并返回紧凑清单,适合"先把这几个文件读一下" | — |
| 返回 | 排序后的证据块,每条带 path、format、text、coordinate 和 version | 一个分页窗口,或精确展开的单个坐标 |

两条规则撑起整个循环:

- 坐标绑定版本(源文件哈希 + 解析/切块 Schema)。只要给了 coordinate,version 就是必填,并在返回任何内容前校验。文件改过之后旧坐标会明确报错,而不是悄悄读到错行。
- 零召回不等于可以猜。 工具会引导模型换词重试、在合理时顺序读取,或者明确报告文件中没有证据。

支持格式与诚实边界

| 输入 | 本地转成的文本 | 稳定坐标 | 当前边界 |
| Text | UTF-8、UTF-16 BOM、高置信度无 BOM UTF-16、GB18030 | line:S-E,可附 chars:S-E | 其他编码和二进制文件会被拒绝 |
| PDF | 文本层提取,保留页边界 | page:N,可附页内行/字符范围 | 扫描件和纯图片页没有 OCR |
| DOCX | 正文、段落、表格、页眉、页脚、脚注、尾注 | line:S-E,可附 chars:S-E | 不做图片 OCR,也不是 Word 像素级渲染器 |
| XLSX | Sheet 清单、单元格值、范围、行列坐标 | 带引号规则的 Sheet!A1:F40 | 不计算公式、不解释图表/形状、不执行宏 |
| PPTX | 按页序提取 DrawingML 文本与 speaker notes | slide:N,可附页内行/字符范围 | 不做幻灯片图片 OCR,不解析图表数据、SmartArt、动画和嵌入对象 |
| JPEG/PNG/WebP/GIF | Harness 原生图片附件 | Harness 附件身份 | 需要支持视觉的模型;不由 read_document 解析 |

格式一律由字节判定,不看扩展名——可执行文件改名成 .pdf 会被拒绝。长输出按行分页并受字符预算约束,任何截断都会显式标记。

能力细节——输入框、检索、精确读取、视觉转交

输入框与上传

- 回形针多选文件、整文件夹选择,以及页面级拖放。
- Finder 多选会合并 DataTransfer.items 与 DataTransfer.files,混合批次不会悄悄只剩第一个可识别文件。
- 文档在 Harness 图片专用 drop handler 之前被接管;纯 JPEG/PNG/WebP/GIF 仍走原生图片链路。
- 有界并发上传(默认 4);单个文件失败不会取消整批。
- 按字节嗅探真实格式的文件卡,展示 上传中 / AI 可读取 / 失败 状态。
- @ 候选同时包含上传文件和工作区文件,对模型只给出工作区相对路径,不暴露宿主机绝对路径。
- 每会话配额、SHA-256 去重、TTL 清理、安全文件名归一化、文件夹递归清理。

本地检索

- 中文连续段按重叠 bigram 建索引并以短语查询,因此 流程绩效 不会命中只含 绩效流程 的块。单汉字走有界子串回退;Q3 这类字母数字保持整词。
- 只有启动能力探针成功才启用 SQLite FTS5;否则明确选择 JS 内存后端,并在工具结果里说明。
- 默认不持久化模型检索词。

精确文档读取

- XLSX 支持工作簿结构盘点、1-based Sheet 选择、坐标保真的 A1 范围、合并表头、隐藏/稀疏 Sheet,以及明确的检测值计数。
- PPTX 按演示文稿关系声明的页序读取,而不是 ZIP 文件名顺序。
- system prompt 要求模型优先使用本插件工具;只有收到明确错误或"不支持能力"提示后,才可回退 Python/shell。

原生视觉转交

- JPEG/PNG/WebP/GIF 使用 Harness 原生输入框附件 rail 和供应商中立的 base64 image_url 路径。
- 所选模型仍必须声明支持图片输入;插件不会把纯文本模型变成视觉模型。

配置

bundle 在 cordis.patch.yml 中提供保守默认值。Harness 会在 bundle layer 之后应用用户 profile overlay,启动前先查看最终组合结果:

dsh --profile web --dump-config

| 配置项 | 默认值 | 含义 |
| maxFileBytes | 24 MiB | 单次文档读取字节上限 |
| uploadMaxBytes | 24 MiB | 单次上传请求体字节上限 |
| maxUploadBytesPerSession | 512 MiB | 会话上传配额;0 表示显式关闭 |
| readLimit | bundle patch 为 2,000;Schema 回退值 800 | 单次 read_document 返回的最大行数 |
| maxOutputChars | 24,000 | 基础字符窗口;叙述型格式使用更小的分格式窗口 |
| maxConcurrentUploads | 4 | 同时受理的上传请求体数量 |
| uploadTtlMs | 7 天 | 上传文件保留时长 |
| retrievalEnabled | true | 启用 search_documents;关闭后仍保留 read_document |
| retrievalMaxFiles / retrievalMaxResults | 12 / 12 | 单次检索文件数 / 返回证据块数 |
| retrievalQueryLogEnabled | false | 是否持久化归一化后的模型检索词 |
| trustedHosts | [] | 额外的反向代理 authority;为空表示仅回环 |

其余不常用配置项及其权威默认值见 src/index.ts。显式配置的 retrievalIndexDir 必须是绝对私有路径,且不展开 ~。

运行时后端。 包要求 Node.js >=22.13.0,这是 pdfjs-dist 的最低版本,且 Node 20 已于 2026-04-30 结束支持。持久检索索引还需要运行时提供 node:sqlite,并且编译了 FTS5。启动探针发现缺其中任意一项时,改用功能完整但仅限进程内的 JS 后端。回退是支持的,并写在工具输出里。

安全与隐私

- 按文件字节判断格式,不看扩展名。 扩展名只是提示。PDF 头与 OOXML ZIP 成员决定解析器;已知异类二进制和伪装文件会被拒绝。
- 有界 OOXML。 在解析器分配内存前限制 ZIP 成员数量与名称长度、声明 XML 大小、XML 总展开量、工作簿行列以及稀疏 Sheet 维度。
- 工作区包含性。 读取走 ctx.fs;存在 session cwd 时,目标必须留在当前会话工作区内。
- 安全上传落盘。 拒绝预先存在的符号链接与特殊文件;平台支持时使用 exclusive/no-follow 创建;配额与删除保持 fail closed。
- 默认仅回环。 上传与工作区端点要求回环 Host 并做同源校验。trustedHosts 只用于部署方控制的反向代理。

trustedHosts 不是身份认证。 当前 Harness WebServer 的插件约定不能证明某个 session ID 一定属于调用者。不要把本插件直接暴露成未经认证的公网多租户上传服务;应使用仅回环的自托管方式,或由同时约束 session 访问的认证代理承载。

数据存在哪里,什么会离开本机

| 存储 | 默认位置 | 内容 | 生命周期 |
| 上传文件 | <会话工作区>/.dsh-filess/<storageKey>/ | 上传的原始字节 | 每会话配额、SHA-256 去重、默认 7 天 TTL 清扫 |
| 检索索引 | $DSH_HOME/dsh-files/index | 供检索的索引内容、坐标、版本;只有显式开启时才存 query | 私有权限、文档/query TTL;无法持久化时回退 JS 内存 |

- 解析与索引都发生在 Harness 主机本地;插件自身不会调用任何外部解析服务。
- 但工具返回的证据确实会进入对话,并可能发送给你配置的模型供应商;原生图片附件同样会发送给所选视觉模型供应商。
- 不要把检索目录同步到云盘,也不要提交到 Git。

已知边界——本项目刻意不做的事

- 扫描版 PDF 和 Office 文件中的内嵌图片不做 OCR。
- Office 版式会转成文本和坐标,不做像素级还原。
- XLSX 公式不计算,宏永不执行。
- PPTX 图表、SmartArt、动画和嵌入对象不做解释。
- 上传配额锁是进程内的,不是跨进程事务。
- 纯 Node 没有完整可移植的 dirfd/openat 链,同 UID 恶意进程抢占祖先目录仍属于 OS 隔离边界。
- 清单允许 0.3.0 以下的 Harness 0.2.x 安装。端到端用过的仍是 0.1.7-rc.2 的 web profile;换更新的宿主之前,请先在本机冒烟。

项目状态

| 项目 | 公开源码 Beta,由 Cooberped 独立维护 |
| 目前测过 | npm @deepseek-ai/dsh@0.1.7-rc.2 的 web profile |
| 最低版本 | 0.1.7-rc.2 或更高,且低于 0.3.0。 在 0.1.6 及更早版本上,上传图标会对不上。若仍要跑更旧的 Harness,请用那次改动之前的代码,或上游 taxueseek/dsh-files;仓库没有为旧版打过 release tag |
| 实测目标模型 | OpenCode Go — DeepSeek V4 Flash |
| npm | 公开 Beta @baseland/dsh-evidence@0.6.0-beta.4(GitHub pre-release v0.6.0-beta.4)。请用 @beta 安装。latest 仍留在第一个已发布版本 0.6.0-beta.1;这次预发布不会移动它,这也不是稳定版。GitHub 仍是 Cooberped。包在维护者的 npm 账号 baseland 下,因为组织 @cooberped 无法认领 |
| 兼容性 | engines.dsh 为 >=0.1.7-rc.2 <0.3.0。@deepseek-ai/dsh-* 的 peer 使用同一范围,只有 @deepseek-ai/dsh-client-runtime 是 >=0.1.1-rc.2 <0.3.0,因为 npm 上没有更新的那一包。Harness 0.2.1 读 engines.dsh,忽略这些 peer。0.1.7-rc.2 和 0.2.0-rc.2 仍按 peer 判断。这是安装声明;这里还没有把完整的 0.2 会话重新跑一遍 |

本项目不是 DeepSeek 官方插件,与 DeepSeek 不存在隶属或官方背书关系。

和 dsh-files 的关系

本仓库保留 taxueseek/dsh-files 的 MIT 许可 Git 历史(含署名与 MIT 声明),并由 Cooberped 独立维护(已离开 GitHub fork 网络)。它不是 clean-room 重写。

不要在同一个 profile 里同时安装 dsh-files 和 @baseland/dsh-evidence。两者注册的 cordis 行 id 都是 files-toolkit。

在上游的上传与 read_document 之上,本仓库增加了本地私有检索(search_documents)、带版本校验的坐标、更严的上传/路径/OOXML 边界、PPTX 文本与演讲者备注、面向中文语序的检索,以及社区发布与治理。

开发

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm benchmark:retrieval
pnpm license:check
pnpm package:check

pnpm release:check # 以上全部,用于最终候选

release:check 覆盖类型检查、两个 bundle、聚焦回归测试、双后端检索正确性、许可策略,以及打包与发布要求。benchmark 使用确定性的合成 PDF/DOCX/XLSX/PPTX 素材——真实业务文档、答案集与模型输出一律留在仓库之外,详见 benchmark/README.md。

参与贡献

欢迎提交 Issue 和 Pull Request。所有贡献都由维护者在必需检查通过后人工评审合并,GitHub 不会自动合并社区代码。

Harness 界面、peer 或上游 API 断裂的修复尤其欢迎——0.1.7 将图标改名为 …Regular 即是一例。详见 CONTRIBUTING.md。

提 PR 之前:阅读 CONTRIBUTING.md 并为提交签署 DCO;为行为变更补充聚焦测试;在本地跑最小相关检查;不要把真实文档、凭据、私有路径和模型输出提交到 Git;每一项新增视觉素材都要登记到 assets/README.md。

安全问题按 SECURITY.md 处理。发布归属与来源检查见 RELEASING.md。

许可、传承与标识

项目代码与仓库原创 SVG 文档图形采用 MIT License。上游历史与版权声明完整保留。依赖与附带数据的许可见 THIRD_PARTY_NOTICES.md。

DeepSeek、DeepSeek Harness、OpenCode Go 及其他第三方名称或标识归各自权利人所有,此处仅用于说明兼容性或测试目标。素材来源登记见 assets/README.md。
预览分享卡片长什么样 ↓Cooberped/dsh-evidence
分享 · DeepSeek Harness Hub
Cooberped/dsh-evidence

上传文件到会话,按坐标精确回读原文证据

这是你的仓库?认领条目

回到顶部