@fishdivinity/dsh-local-search

中文文档
0.4.3发布于 2026/11/06MITES Module零依赖构建来源已验证近 30 天下载 2244

本地文件搜索和文档全文搜索Windows上的DeepSeek Harness - 文件名通过Everything(es.exe),PDF/DOCX/XLSX/PPTX/EPUB内部文本通过Anytxt作为五个只读工具. 本机文件搜索与文档全文检索:文件名走一切,PDF/DOCX/XLSX/PPTX/EPUB正文

中文使用文档
文档目录17 节
  1. 为什么会这样
  2. 什么时候用
  3. 目录
  4. 工具
  5. 所需资源
  6. 安装
  7. 配置
  8. 范围
  9. 选择引擎
  10. 错误和诊断
  11. 安全和限制
  12. 已知的限制
  13. 如何比较
  14. 对于人工智能特工
  15. 发展
  16. 更改日志
  17. 许可证
Local Search icon

本地搜索深搜索策略

文件名称和文档文本来自整个机器,在五个只读工具后面——所以模型搜索你的磁盘而不是猜测路径.

npm version awesome · DSH plugin platform dsh CI

联合国 • 妇女 简体中文 • 妇女 安装 • 妇女 配置 • 妇女 工具 • 妇女 警卫

为什么会这样

会话会看到一个文件夹 . grep 财务报告和审定财务报表 glob 当工作需要一个 住在其他地方的文件时, 模特儿要么猜出一条路, 要么停下来, 问你一个问题—— 然后在另一个窗口里, 看着你.

搜索不是昂贵的部分。 挑出正确的一击,打开文件,读出重要的部分,把其中两个放在一起,并且能够说出答案的来源——就是说. 这正是一个模型的优点, 一旦它能够达到一个指数.

此插件同时给出 : es.exe 用于文件和文件夹 名称 所有东西都为它们提供了索引 内部文本 PDF,DOCX,XLSX,PPTX,EPUB,RTF,TXT和MD文件. 整个表面是只读的——没有写出,删除,再索引,OCR或启动一个引擎. 浏览从那些已经建成的引擎的索引中解答:毫秒,而不是驱动器的再扫描.

什么时候用

  • 搜索是一个步骤,而不是目标. 你要求的是其他的东西——一个摘要、一个比较、一个定点——而答案需要一份你无法指向的文件。 把外观交还给自己需要一个窗口开关和一个贴纸.
  • 你知道答案 不是关键词. "我们同意供应商的价格条款" "关于这个错误的说明" 模型可以尝试用两种语言来取出5个发音,读取点击,并带回引文和路径.
  • 答案跨越文件. "遵守这两个合同的付款条件","最后三个会议说明对时间表的决定是什么". 搜索字段返回命中列表;读取和比较是您想要授权的部分 .
  • 作品为批发. "在这30个合同中,每个合同中都列出对方"——没有搜索领域这样做. 搜一搜,每出一出,写一出桌子.
  • 文件不是文本 . grep 无法打开 PDF, a .docx,或电子表格。 要么文字通过Antxt, 要么你用手粘住它.
  • 答案必须引用一个来源. 路径加片段可以检查; 假想的段落不能检查 .

目录

工具

工具发动机用于
local_search_files一切通过 es.exe文件/文件夹名称、路径、交叉驱动的发现
local_search_content任意 JSON- RPCPDF、DOCX、XLSX、PPTX、EPUB、RTF、TXT、MD内部文本
local_search_fragments任意在一个索引文件中围绕匹配的片段
local_search_read任意提取一个索引文件的纯文本, 封顶
local_search_status两者检查每个引擎是否可以到达

所需资源

  • 视窗.
  • 深搜索策略 >=0.2.1-0 <0.3.0-0 ——0.2.1和0.2.2(含预放行)运行;0.3预放行被拒.
  • 所有东西 运行, 加 es.exe (从空工具单独下载;插件自动检测 PATH/ 常见安装文件夹,或设置) files.everything.esPath) (中文(简体) ).
  • 任意搜索器 搜索内容: 图形界面 (单位:千美元)ATGUI.exe必须运行 因为JSON-RPC服务 生活在里面。 单靠索引服务是不够的.

此插件确实如此 没有 把东西都包起来, es.exe,或 Anytxt. (中文(简体) ). 分别安装和许可.

安装

命令会写入一个配置文件, 它必须是来自- Desktop app 拥有的配置文件 desktop, (中文(简体) ), dsh web 拥有 web数字 :

dsh plugin --profile desktop add @fishdivinity/dsh-local-search   # Desktop app
dsh plugin --profile web add @fishdivinity/dsh-local-search       # dsh web

web 是一个在首次使用时初始化的已运出模板; desktop 必须是打开一次,只有 dsh 与桌面应用程序捆绑可以管理. 要安装源而非 npm tarball, 请将 spec 转换为 github:fishdivinity/dsh-local-search。 。 。 .

重新启动配置文件或打开新会话 。 五个 local_search_* 工具出现在模型工具箱中.

配置

边栏 插件 – 报告 本地搜索 纸牌 官方插件 组合 ~ 插件自己的页面 。 GitHub 插件的同一张牌形状。 保存应用到下一个工具调用中; 离开页面会丢弃未保存的编辑 . 重设,在描述下,首先显示它会清除什么,只有确认后才会写出:引擎和限制设置去,一个新鲜的探测器重新填充它们,搜索范围加上启动检查开关则被放任.

网页按能力排列: 文件名称 财务报告和审定财务报表 文件内容 每一个打开后端取取器,一旦选中后端的字段即可显示; 搜索范围, (中文(简体) ), 限制 财务报告和审定财务报表 启动 与后端运行相同,所以关闭页面。 东道主 GET /dsh-local-search/api/describe 提供区段、已注册后端、字段类型和硬封顶,页面只使这些区段、新后端不改变页面逻辑.

测试连接 位于 Antxt 终点字段下。 它与"万事俱备"一起探测出所打入的终点——任何东西都不必先去保存,并将结果及其修补放入可以再去探查的对话. 这个 es.exe 字段中的路径也会被检查,所以那里的一个打字符表示文件丢失,而不是报告保存的二进制。 一个失败的引擎获得其官方下载页面的链接;这个插件从不捆绑,下载,或安装任何产品.

在它写前先存支票. 当终点或 es.exe 路径是编辑的一部分, 页面会先检查它们: 无论拒绝什么检查都没有写入, 对话框询问是否 无论如何保存 ——故意例外而不是默认. 硬拒绝( 该路径没有文件, 没有这样的目录, 拒绝的地址) 得不到这样的出路 。 主机只检查路径是否存在; 它从不启动由请求命名的文件 。 当焦点离开时,也会检查路径字段和端点:缺失路径,属于文件的目录,或者输入下标出非本地地址,一旦值变化就立即清除.

路径字段重写为保存上的标准拼写 : d:/alpha 保存为 D:\alpha (上件驱动信件、回击、无后排分隔符),和 allRoots 是通过条目重写条目。 当路径存在时,上盘拼写获胜(d:/alpha → D:\Alpha) (中文(简体) ). 这种重写只发生在Windows上:页面向主机询问其平台,并留下了POSIX风格的值. 空间与非ASCII名称单独存在—— D:\Alpha\我的项目\drawio a 键入时为细,因为主机将值传递到 es.exe 和文件 API 不经过外壳。 路径也可能从 ~/; 它被扩展到它使用的地方, 保存会写回已解决的绝对路径 .

复制诊断. 这张卡有一张 复制诊断 按钮在其描述下: 它打开一个对话框, 上面有此机的纯文本快照—— 插件和DSH版本, profile, (中文(简体) ), shell,无论页面运行在另一台机器、OS和节点上的Host,每个引擎的状态都有解释它的代码,当它失败时,它尝试的地址加上传输错误,配置的状态 es.exe 路径、结束点、编码、超时、限制和后端、带有默认范围的搜索根、启动-写入结果(包括出错)和探测时间。 文本带有一个标题,一个用于其状态标记的一行传奇,以及连接到代码表的链接,因此一个人或者另一个助手可以在没有来源的情况下对它采取行动. 粘贴到聊天中, 这样助手就可以先通过它工作; 打开一个 问题 如果这不能解决它。 主目录和 DSH_HOME 已经减少到 ~。该文本位于 GET /dsh-local-search/api/diagnose。 。 。 .

启动检查. checkEnginesOnStart 默认是:每个启动探测器两次都探测引擎一次,如果一次失败,则在右下角留下一张卡片,每台引擎有一行并用什么固定. 卡片每20秒对运行的引擎进行再检查,一旦两者都回答——在"深度搜索"(Anytxt's GUI general does)后起动的引擎不会留下虚假的警报后去除自己. 关闭它为这个分页隐藏它,包括重新装入后;开关是您如何停止探测器和卡片. 测试连接 和初赛通过的工作 无论是哪种方式.

第一次运行填补了它所能完成的,然后停止: files.everything.esPath 或者说 content.anytxt.url 尚未设置, 插件探测器一次, 写下答案, 以及隐藏的记录 autoConfigured 键。 之后,一个字段你保持清晰 而不是再次被填充.

每个密钥都是可选的,行配置取代了整个配置对象,而不是合并. 仅 timeoutMs 保留在简介中 cordis.patch.yml:每个工具在注册时都会固定其截止时间,因此页面不显示,而不是显示一个不会生效的字段.

密钥默认含义
files.backendeverything文件名后端 auto 用户.
files.everything.esPath自动检测绝对路径到 es.exe。分辨率顺序:配置值, ES_PATH,常见的安装文件夹, where.exe。 。 。 .
files.everything.esEncodinggbk用于解码的代码页面 es.exe 输出。 任意 TextDecoder 标签被接受; 页面报价 gbk 财务报告和审定财务报表 utf-8。 。 。 .
content.backendanytxt内容后端 auto 用户.
content.anytxt.urlhttp://127.0.0.1:9920本机的 Anytxt JSON-RPC 端点(127.0.0.1, (中文(简体) ), localhost 或者说 [::1] 页:1 默认也尝试 :9921。 。 。 .
scopes.workspaceRoot会话默认目录目录 scope=workspace。 。 。 .
scopes.workRoot空目录 scope=work;在使用该范围之前需要.
scopes.personalRoot空个人目录 scope=personal;在使用该范围之前需要.
scopes.allRoots空 (自动)Antxt 的分号分隔根 scope=all;空使用平台默认根(驱动根于Windows,挂载卷于macOS, /home (原始内容存档于2018-09-26). on Linux. 所有东西 scope=all 搜索其索引的所有卷.
scopes.defaultScopeall工具调用省略时使用的范围 scope数字 : all 编号 : workspace 编号 : work 编号 : personal。 。 。 .
limits.maxResults20工具省略时每次调用的结果 limit; 硬盖100,不可配置.
limits.readMaxChars8000默认 local_search_read 窗口; 硬盖 二万个字符.
checkEnginesOnStarttrue探测两台引擎每次启动一次,并显示故障卡.
timeoutMs30000按计时暂停预算;仅配置 YAML.

示例行覆盖 :

- id: fishdivinity-local-search
  name: '@fishdivinity/dsh-local-search'
  config:
    scopes:
      workRoot: '~/Projects'
      personalRoot: '~/Documents'
    limits:
      maxResults: 50

0.1或0.2配置文件不需要手编辑:启动时其9个平键(esPath, (中文(简体) ), esEncoding, (中文(简体) ), anytxtUrl, (中文(简体) ), workspaceRoot, (中文(简体) ), workRoot, (中文(简体) ), personalRoot, (中文(简体) ), allRoots, (中文(简体) ), maxResults, (中文(简体) ), readMaxChars)移入上方结构并取出. 当设置层拒绝该写入时——一个家补丁会覆盖配置文件——旧密钥会停留并仍然被读取.

范围

  • all (默认):整个计算机; scopes.allRoots 为 Antxt (空出时的平台默认根) —— 在 Windows 上驱动根, 在 macOS 上挂载卷, /home 在 Linux 上,所有索引的卷.
  • workspace: 会话的工作目录.
  • work数字 : scopes.workRoot (工作目录).
  • personal数字 : scopes.personalRoot (个人名录).

scopes.defaultScope 设定工具调用省略时使用哪一个 scope; 它默认为 all。通过 scope 或者说 path 仅当用户明确限制搜索时.

选择引擎

engine 默认为 auto后端 : files.backend 页:1 local_search_files, (中文(简体) ), content.backend 页:1 local_search_content, (中文(简体) ), fragments,以及 read。 。 。 .

  • local_search_files数字 : auto 或者说 everything。 。 。 .
  • local_search_content 编号 : fragments 编号 : read数字 : auto 或者说 anytxt。 。 。 .
  • local_search_status数字 : auto, (中文(简体) ), everything,或 anytxt。 。 。 .

如果添加更多的引擎,工具名称保持稳定; engine 数值为添加剂。 内容项目兼有 engine 和自述 ref 例如 anytxt:123; 将参考文献无改动地传递到 local_search_fragments编号 :local_search_read,然后通过 engine 只是作为断言.

错误和诊断

每次失败都是打字 HarnessError 有稳定的代码。 代码表——每个代码的产生, 你看到什么,做什么——生活在 docs/troubleshooting.md这是解释代码的唯一地方.

一个工具调用返回代码和一个一行消息等等,故意:一个开始安装引擎或编辑配置的模型将一个失败的搜索转换成环境修复,而有用的动作是倒回 grep编号 :glob 并说它是.

如果搜索报告 *_DOWN后退至 grep编号 :glob 并说你掉回。 这台机器的人类照片——版本, profile, (中文(简体) ), shell,平台,引擎状态,根,探测时间——是 复制诊断 在插件卡上或 GET /dsh-local-search/api/diagnose。 。 。 .

安全和限制

  • 只读: 不注册写入、 删除、 索引同步、 OCR、 导出或设置操作.
  • es.exe 总是用固定的 argv 产出; 模型文本随后 --这样 -export-*, (中文(简体) ), -save-settings, (中文(简体) ), -clear-settings, (中文(简体) ), -exit, (中文(简体) ), -reindex, (中文(简体) ), -save-db,而且运行计数开关无法到达.
  • Anytxt 只通过 Search, (中文(简体) ), GetResult, (中文(简体) ), GetFragmentAll,以及 GetRawTextByFID。 。 。 .
  • 除了已配置的本地 Antxt URL 外, 没有网络访问 .
  • 限制结果; local_search_read 覆盖返回的文本.
  • 插件运行时具有用户权限,可以读取用户能读取的文件. 搜索工具默认为 all (每个可用的根); 偏好 scope=workspace编号 :work编号 :personal 或者说 path 当搜索应该停留在一棵树上.

已知的限制

  • 今天的引擎只有Windows. 瞄准镜/路径层已经具有平台意识(窗口驱动根,macOS) /Users + 键 /Volumes时, Linux /home),所以标签和根不假设驱动字母;macOS/Linux的本土后端是稍后我们可能添加的东西. 在这些系统中,这些工具仍然回答问题,但报告两个引擎都没有(missing-tool 编号 : down),而卡外加诊断为平台取名.
  • 默认范围是 all: 内容搜索查询每个默认根(每个根最多两个RPC). 如果配置 allRoots 全部缺失(一个未插入的驱动器),调用返回到工作空间,结果如此表示;一个部分缺失的根被跳过并在结果中命名.
  • 所有 1.4 索引元数据,而不是文件内容; 内容使用 Anytxt .
  • Anytxt的JSON-RPC API是本地和非官方的;GUI版本可以改变行为. 插件报告无法达到/ 错误形状的响应而不是猜测 .
  • Anytxt的指数可能已经停滞了. 验证重要点击 read/原始文件.
  • 没有自动启动: 开始 ATGUI.exe 写入索引并留给用户.
  • Anytxt的条款限制个人/非商业用途;商业用途需要自己的许可证.

如何比较

local_search_files + 键 local_search_contentdsh-tool-everythingdsh-workspace-search
目标任意路径( E)任何路径在一个工作空间内的文件和文本
文档文本 (PDF/DOCX/XLSX/PPTX/EPUB)是的,通过 Antxt没有纯文本
先决条件所有东西 + 任意运行一切都在运行(飞出自己的SDK DLL)dsh-better-sidebar

不同的是对: Anytxt 文档内容,以及一个路由表,既回答"文件在哪里",又回答"文件说什么".

对于人工智能特工

只能看到一个文件夹的会话, 并且被问到其他问题, 应该搜索而不是猜测 。 将问题映射到一个工具:

问题工具回来的是什么
这个文件在哪里?local_search_files路径和名称, 任何地方, 所有索引
这份文件怎么说?local_search_contentAnytxt 从文本中取出匹配行, 并带有 ref 每击一次
哪个部分?local_search_fragments一次比赛的片段——通过 ref 不变
把短信给我local_search_read已提取一个文件的纯文本, 封盖
引擎还在吗?local_search_status在报告“无结果”之前
  • scope 默认为 scopes.defaultScope (单位:千美元)all (b) 退出保险箱; workspace, (中文(简体) ), work 财务报告和审定财务报表 personal 正在明确缩小范围 path 覆盖 scope。 。 。 .
  • 通过内容点击 ref 返回未变 (anytxt:123(三); engine 是一种需要检查的断言,而不是一个选择者.
  • EVERYTHING_DOWN 编号 : ANYTXT_DOWN 意思是引擎没有运行——回到 grep编号 :glob 并说你倒回。 一个下行引擎不是"没有这样的文件".
  • local_search_status 说引擎是否有效 而不是如何修复 固定属于用户,在插件卡中;安装或启动引擎不是您的调用.
  • 限制结果(limits.maxResults 每个呼叫的默认值, 硬度100; local_search_read 2万个字符). 缩小查询而不是呼号 .
  • 每一次失败都带有一个稳定的代码 docs/troubleshooting.md; 引用代码,而不是流言.
  • 仅Windows,而引擎分别被安装:文件名结果覆盖Everything索引,内容结果覆盖Antxt索引.

本节可供机器阅读的更短的副本载于 llms.txt术语包的答案是: 本地搜索,所有, es.exe, Anytxt, 全文搜索, PDF / Word / Excel / PowerPoint / EPUB文本, 交叉驱动搜索, 工作空间外的文件名.

发展

没有依附关系;测试使用Node的内置测试跑道.

npm test
npm run check
npm run pack:check

引擎和配置模块(lib/everything.js, (中文(简体) ), lib/anytxt.js, (中文(简体) ), lib/roots.js, (中文(简体) ), lib/platform.js, (中文(简体) ), lib/format.js, (中文(简体) ), lib/config.js)独立于DSH运行时间,因此他们的测试在平地节点下进行. lib/client.js 作为浏览器的一半:它直接被写入客户端模块系统的懒惰-CJS工厂格式,所以没有构建步骤. 见 docs/architecture.md, (中文(简体) ), docs/extending-engines.md, (中文(简体) ), docs/config-migration.md 对于规则,一个配置形状的变化必须遵循 .github/RELEASING.md。 。 。 .

添加语言是两个文件: lib/locales/<lang>.json 准确持有基线的密钥集(仅值, .- 分开的钥匙, {name} 保留占位符),以及 locale/<lang>.json 对于插件列表的标题和描述。 一包只登记在外壳已经发行的语文上——卡片从不给取取器添加一包——和 test/client.test.js 当组合键或占位符从基线漂移时失败. zh 财务报告和审定财务报表 en 留在捆绑中: apply 无法等待请求,第一个框架不得闪出其他语言.

此放行船初始 de, (中文(简体) ), es, (中文(简体) ), fr, (中文(简体) ), ja, (中文(简体) ), pt (巴西葡萄牙语)和 ru 包——6个IDSH0.2.2介绍. 它们是对照英文基线校对的;本土审查仍然是受欢迎的,一次替换整个文件。 IDs必须精确匹配外壳列表(pt没有 pt-BR),否则包被忽略了,卡片会倒回英语.

更改日志

见 变动情况 (中文)或 变换式. en.md (英语). 它们停留在寄存器;npm tarball 船只运行时间文件, README, LICENSE, locale, 和图标 .

许可证

麻省理工学院. 所有产品和Anytxt都是单独的产品,拥有自己的许可证和商标;该项目不附属于空工具或CBEWIN.

版本与发布记录

@fishdivinity/dsh-local-search 共发布 10 个版本,首次发布于 2026/10/28;过去 12 个月发布了 10 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.4.3latest2026/11/069 天前
0.4.22026/11/0510 天前
0.4.12026/11/0411 天前
0.4.02026/11/0312 天前
0.3.12026/10/3115 天前
0.3.02026/10/3115 天前

关于 @fishdivinity/dsh-local-search 的常见问题

@fishdivinity/dsh-local-search 是什么?

本地文件搜索和文档全文搜索Windows上的DeepSeek Harness - 文件名通过Everything(es.exe),PDF/DOCX/XLSX/PPTX/EPUB内部文本通过Anytxt作为五个只读工具. 本机文件搜索与文档全文检索:文件名走一切,PDF/DOCX/XLSX/PPTX/EPUB正文

如何安装 @fishdivinity/dsh-local-search?

在项目目录运行 npm install @fishdivinity/dsh-local-search,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@deepseek-ai/cordis(^4.0.5)、@deepseek-ai/dsh-llm(>=0.2.1-0 <0.3.0-0)、@deepseek-ai/dsh-tools(>=0.2.1-0 <0.3.0-0)、@deepseek-ai/dsh-timeout(>=0.2.1-0 <0.3.0-0)、@deepseek-ai/schemastery(^3.18.5)、@deepseek-ai/dsh-system-prompt(>=0.2.1-0 <0.3.0-0)、@deepseek-ai/dsh-working-directory(>=0.2.1-0 <0.3.0-0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fishdivinity/dsh-local-search 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/fishdivinity__dsh-local-search 是否存在。

@fishdivinity/dsh-local-search 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@fishdivinity/dsh-local-search 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@fishdivinity/dsh-local-search 可以商用吗?

@fishdivinity/dsh-local-search 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fishdivinity/dsh-local-search 的下载量有多少?

根据 npm 官方下载统计,@fishdivinity/dsh-local-search 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,244 次,日均约 75 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fishdivinity/dsh-local-search 还在维护吗?

最新版本 0.4.3 发布于 2026/11/06(9 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/10/28。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。