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

设置面板搜索 objectivex666/dsh-settings-search

DeepSeek Harnessv1.13.1
objectivex66617 天前有提交已提供中文文档扫描:含敏感能力

给 DSHCordis设置面板加一个搜索框,输入关键词就跳到对应的设置页和设置项。

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @objectivex666/dsh-settings-search
npm 源 · @objectivex666/dsh-settings-search 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.2 下真实安装成功(非静态推断);本次验证针对插件 v1.14.0,当前版本为 v1.13.1
L5 · 运行时冒烟等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 17 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包@objectivex666/dsh-settings-search @ 1.13.1
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 09:39:39

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 29 处,展示前 24 条)
  • 执行外部命令来自配置/变量
    lib/index.js:125
    child = spawn(command, args, {
  • 写入本地文件
    lib/index.js:182
    mkdirSync(dir, { recursive: true })
  • 读取本地文件
    lib/index.js:200
    if (existsSync(legacy) && !existsSync(target)) renameSync(legacy, target)
  • 写入本地文件
    lib/index.js:200
    if (existsSync(legacy) && !existsSync(target)) renameSync(legacy, target)
  • 读取本地文件
    lib/index.js:216
    if (!existsSync(candidate) || statSync(candidate).size < maxBytes) return candidate
  • 读取本地文件
    lib/index.js:216
    if (!existsSync(candidate) || statSync(candidate).size < maxBytes) return candidate
  • 读取本地文件
    lib/index.js:226
    return readdirSync(dir).filter((name) => LOG_FILE_PATTERN.test(name)).map((name) => join(dir, name))
  • 读取本地文件
    lib/index.js:233
    const info = statSync(path)
  • 删除本地文件
    lib/index.js:254
    unlinkSync(entry.path)
  • 读取本地文件
    lib/index.js:266
    if (!existsSync(path)) return 0
  • 写入本地文件
    lib/index.js:307
    appendFileSync(target, `${accepted.join('\n')}\n`, 'utf8')
  • 写入本地文件
    lib/index.js:356
    writeFileSync(file, '', 'utf8')
  • 删除本地文件
    lib/index.js:360
    unlinkSync(path)
  • 发起网络请求
    lib/client.js:576
    const response = await fetch(LOG_ROUTE, {
  • 发起网络请求
    lib/client.js:626
    const response = await fetch(LOG_ROUTE, { method: 'GET' })
  • 发起网络请求
    lib/client.js:650
    const response = await fetch(`${LOG_ROUTE}?count=1`, { method: 'GET' })
  • 发起网络请求
    lib/client.js:950
    const response = await fetch(url, {
  • 发起网络请求
    lib/client.js:1039
    const response = await fetch(request.url, {
  • 写入剪贴板
    lib/client.js:3099
    await navigator.clipboard.writeText(formatLogs(LOGS))
  • 写入剪贴板
    lib/client.js:3138
    await navigator.clipboard.writeText(logViewerState.text)
  • 请求外部主机registry.npmjs.org
    lib/client.js:3177
    const res = await fetch(`https://registry.npmjs.org/${NPM_NAME}/latest?t=${Date.now()}`)
  • 发起网络请求
    lib/client.js:3177
    const res = await fetch(`https://registry.npmjs.org/${NPM_NAME}/latest?t=${Date.now()}`)
  • 请求外部主机api.github.com
    lib/client.js:3206
    const res = await fetch('https://api.github.com/repos/objectivex666/dsh-settings-search/releases/latest', {
  • 写入剪贴板
    lib/client.js:3229
    try { await navigator.clipboard.writeText(updateCommand); setCopied(true); setCopyFailed(false) } catch { setCopyFailed(true) }
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
涉及外部主机:registry.npmjs.org、api.github.com

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

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 设置面板即时搜索
  • 定位设置页
  • 定位通用设置项

给 DSH 设置面板加个搜索框的插件。

v1.14.02026-10-18
· v1.14.0 · 适配 Harness 0.2.1-rc.2 逐项核对后确认 0.2.1 对插件所依赖的接口没有破坏性变化:connection / remote. 服务、settings.describe(无参、namespaces[].ns/value)、llm.listConfigurableProviders(settingsNs/settingsPath)、pluginManager 清单字段、宿主 Fetch 路由注册与路径校验、四个设置 slot 座位、全部 18 个 --dsw-* 主题令牌、插件列表页的分组钩子、DeepSeek 适配器常量、__ModuleLoader__ 交付格式都保持不变。0.2.1 新增的是插件市场、api-remote-access(非 owner peer 的方法级鉴权,对本插件无影响)与平台化的客户端 bundle 文件名,插件无需改动即可继续工作。 · 新功能 · 兼容性自检脚本(npm run compat):直接读取本机安装的 Harness(桌面版 app.asar,自动查找或 --asar / DSH_ASAR 指定),把上面这些「不属于任何 npm 公开 API 的接口」逐项断言一遍并打印 PASS/FAIL。升级 Harness 后先跑它,失败项就是需要适配的地方;因为它需要本机安装包,不进入 CI。当前对 0.2.1-rc.2 12/12 通过。 · 修复 · 插件页分组搜不到:设置面板里「插件」页的会话插件 / 全局插件分组标题此前不会被索引收录——DSH 的 CSS Module 类名保留驼峰(RotMhW_groupTitle),而页内选项采集用的是区分大小写的 [class*="title"]。现在改为大小写不敏感匹配,并优先采集较浅层的页面/分组标题,避免几十个插件卡片先把 24 条名额占满;这两类分组现在都能进入索引并跳到对应位置。 · 索引缓存版本:持久化索引结构升到 v2,旧缓存自动失效并重建(不必手动点「手动重建索引」),升级后立刻包含新采集的条目;写入 v2 时顺手清理旧的 v1 缓存键。 · 页内搜索框不再被当成设置项:插件页顶部自带一个搜索输入,它的 会被页内选项采集误当成一个设置项(结果里出现「插件 › 搜索插件」)。现在含 input[type="search"] 的 会被跳过;普通设置行的文本输入不受影响。 --- · Adapted to Harness 0.2.1-rc.2 An item-by-item audit found no breaking change in the surfaces this plugin relies on: the connection and remote. services, settings.describe (no arguments; namespaces[].ns/value), llm.listConfigurableProviders (settingsNs/settingsPath), the pluginManager inventory fields, the host Fetch route registry and path validation, all four settings slot seats, all 18 --dsw-* theme tokens, the Plugins-page group hooks, the DeepSeek adapter constants, and the __ModuleLoader__ hand-off format are unchanged. What 0.2.1 added is the plugin market, api-remote-access (method-level gating for non-owner peers, irrelevant here), and platform-suffixed client bundle filenames — the plugin keeps working without changes. · Features · Compatibility audit (npm run compat): reads the Harness installed on this machine (the desktop app.asar, auto-detected or given through --asar / DSH_ASAR) and asserts every surface listed above, printing PASS/FAIL pe
v1.13.12026-10-06
· v1.13.1 · 修复 · 导入 DSH 模型配置(内置 DeepSeek 路由):默认模型是 DSH 内置的 DeepSeek 路由时(deepseek-official / deepseek-account,地址写死在适配器里而不在设置里),原先会提示「没有可导入的 Base URL」;现在直接导入 DeepSeek 的接口地址 与模型名,并按适配器固定的 Messages 协议识别为 Anthropic 接口(设置里显式配置过 baseURL 时仍以设置为准)。该路由没有可供插件使用的 API Key,成功提示会说明需自行填写;其它 provider 缺少 Base URL 时仍按原样提示模型名。 --- · Fixes · Import DSH model config (built-in DeepSeek route): when the default model is one of DSH's built-in DeepSeek routes (deepseek-official / deepseek-account, whose address lives in the adapter rather than in settings) the import used to report that there was no Base URL to import. It now imports DeepSeek's own endpoint, together with the model name, and maps it to the Anthropic interface through the adapter's fixed Messages protocol (a baseURL configured in settings still wins). Those routes carry no API key the plugin could use, and the success notice says so; other providers without a Base URL still get the model-naming message.
v1.13.02026-10-06内容较长已截断
· v1.13.0 · 新功能 · 日志落盘与日志文件夹:日志按天写入 $DSH_HOME/logs/dsh-settings-search/settings-search-YYYY-MM-DD.log(文件名带日期,每天一个文件,与其它插件日志同级)。单个文件上限 100 MB,超出则同日续写编号分片(.1、.2…);整个日志目录上限 100 MB,超出时按时间删除最旧的文件,正在写的文件永不删除。旧版无日期的 settings-search.log 会在首次运行时并入当天文件,不会留下孤儿文件。「设置搜索」页的日志区新增「打开日志文件夹」,可在系统文件管理器中直接打开该目录。 · 查看日志:日志区新增「查看日志」按钮,弹出只读日志窗口,显示磁盘日志末尾(更早内容可打开日志文件夹查看),支持刷新、复制与打开文件夹;宿主日志通道不可用时自动回退显示本次会话的记录并说明原因。 · 适配 DSH 0.2 正式版:正式版把客户端插件清单迁到 remote.pluginManager 命名空间,插件现在从 listBundles / listPlugins 读取已安装插件,并在每次打开设置面板时复核;其它插件安装、更新或启用状态变化后仍会自动重建设置索引。更早版本继续使用原来的 pluginManager 客户端服务。 · 修复 · 日志记录逻辑:改为「内存环形缓冲 + 批量写盘」——每条日志生成一行 时间 [级别] [运行号:序号] 消息 {上下文},按 1.2 秒或 40 条批量提交给宿主,页面隐藏/关闭前再冲刷一次;同一份行格式同时用于文件、查看窗口与导出文本。写盘失败不会递归记日志,清空日志时也会丢弃未提交的队列并截断磁盘文件。 · 宿主路由鉴权:日志通道注册在 DSH 连接服务的 /api 精确 Fetch 路由上(与官方会话日志导出同一通道),沿用页面自身的鉴权,浏览器只访问文档相对路径,不需要也无法接触令牌。 · 日志尾部读取:读取超过尾部预算的日志时改为按实际读取的字节数解码,避免日志被并发截断或发生短读时把未初始化内存当作日志返回。 · 打开日志文件夹(Windows):改为通过 shell 自己的 open 动词启动(cmd /c start),不再直接 spawn explorer.exe——后者在 windowsHide(CREATE_NO_WINDOW)下会创建一个永远不可见的窗口(实测该窗口 IsWindowVisible()=false),表现就是「点了没反应」。新路径窗口可见且直接置前;宿主还会把本次启动命令写进日志([host] 打开日志文件夹 ok (cmd.exe)),下次可以直接从日志判断。 · 日志计数器:日志标题旁的计数显示当天日志文件中的条目数(由宿主返回,读取/写入/清空时同步刷新),不再是本次会话的内存缓冲;早先几天的记录可在日志文件夹里查看,宿主通道不可用时才回退为本次会话条数,鼠标悬停有说明。清空日志会同时删除本插件的历史日志文件。 · 导入 DSH 模型配置:正式版把客户端接口迁到了 remote.* 命名空间,插件仍按旧的 connection.api 读取,于是点击「导入 DSH 模型配置」时报 Cannot read properties of undefined (reading 'settings')。现在按运行中的 DSH 自动选择接口:0.2 正式版走 remote.settings / remote.llm,更早版本继续走 connection.api。 · 无法导入时说明原因:默认模型在 DSH 设置里没有可导入的 Base URL(例如由 DSH 账号内置提供的模型)时,提示具体模型名,而不是笼统的「未找到 DSH 当前默认模型配置」。 · 客户端加载依赖:dsh.client.inject 中已不存在的 @deepseek-ai/dsh-client-runtime 换成 0.2 的 @deepseek-ai/dsh-api-gateway 与 @deepseek-ai/dsh-api-remotes。 · 插件卡片索引对齐正式版:0.2 把插件管理页移到了独立的侧栏「插件」面板(plugins.item),设置面板内的「插件」分区只渲染标签页,而搜索与跳转都限定在设置面板内,因此不再为 0.2 索引这些卡片,避免结果跳到不存在的位置;旧版座位(settings.plugin.item、web-ui.plugin.item)保留,老版本照常索引。 · 索引重建信号:0.2 里原有的两路信号都已失效——pluginManager 服务不存在,而备用指纹只统计两个旧版卡片座位,因此在 0.2 上恒为空([]),装完插件后索引不会自动重建。除改用 remote
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-settings-search 给 DSH(Cordis)设置面板加一个搜索框,输入关键词就跳到对应的设置页和设置项。 Awesome DSH Plugin Listed on dsh-plugin.org 中文 · English 功能特性 DSH 的设置项散落在各个分区和插件页里,找一个开关往往要一页页翻过去。这个插件把面板里的每一页、每一行都采进一份索引,再在面板上放一个搜索框,你直接说想找什么就行。 - 🔍 实时搜索。装好以后设置面板里会多出一个搜索框,输入关键词就实时过滤所有已注册的设置页(settings.section)与通用设置项(settings.general.item)。 - 🧩 三种搜索样式。经典侧栏、窗口顶栏、弹出搜索页,挑一个顺眼的。选择记在当前浏览器里,换浏览器或换机器要重新选一次。 - ⌨️ 搜索快捷键(v1.10.0)。在设置面板里按 Ctrl+F 或 ⌘F,焦点直接落到搜索框上。不需要的话可以在「设置搜索」页关掉,关掉以后按 Ctrl+F 恢复成浏览器自己的查找。 - 🤝 导入 DSH 模型配置(v1.9.0)。在 AI 配置区点一下,插件会读取 DSH 当前默认模型的 Base URL 与模型名。
展开完整文档(README 剩余 1 节)
dsh-settings-search

给 DSH(Cordis)设置面板加一个搜索框,输入关键词就跳到对应的设置页和设置项。

Awesome DSH Plugin
Listed on dsh-plugin.org

中文 · English

功能特性

DSH 的设置项散落在各个分区和插件页里,找一个开关往往要一页页翻过去。这个插件把面板里的每一页、每一行都采进一份索引,再在面板上放一个搜索框,你直接说想找什么就行。

- 🔍 实时搜索。装好以后设置面板里会多出一个搜索框,输入关键词就实时过滤所有已注册的设置页(settings.section)与通用设置项(settings.general.item)。
- 🧩 三种搜索样式。经典侧栏、窗口顶栏、弹出搜索页,挑一个顺眼的。选择记在当前浏览器里,换浏览器或换机器要重新选一次。
- ⌨️ 搜索快捷键(v1.10.0)。在设置面板里按 Ctrl+F 或 ⌘F,焦点直接落到搜索框上。不需要的话可以在「设置搜索」页关掉,关掉以后按 Ctrl+F 恢复成浏览器自己的查找。
- 🤝 导入 DSH 模型配置(v1.9.0)。在 AI 配置区点一下,插件会读取 DSH 当前默认模型的 Base URL 与模型名。默认模型走 DSH 内置的 DeepSeek 路由、设置里没有 Base URL 时,导入的是 https://api.deepseek.com/anthropic。导入的内容里没有 API Key,这一点是有意的。
- 🎯 新用户引导(v1.9.0)。装好以后第一次打开设置面板时弹一次,讲的是实时搜索、拼音与意图联想、AI 联想、点击即达、自带设置页和自动导入索引。关掉就不会再出现,也没有手动重开的入口。
- 📂 页内选项搜索(v1.2.0)。索引里有页面,也有页面内部的选项,比如插件页的标签页(settings.plugins.tab)、插件页里的会话插件 / 全局插件分组标题、旧版的插件卡片座位(settings.plugin.item / web-ui.plugin.item,0.2 已移除)、通用设置行。结果显示成「页面 › 选项」的面包屑。
- 🔤 拼音联想搜索(v1.5.0)。输入拼音首字母(sz)或全拼(shezhi)就能联想到中文设置项。↑/↓ 选择,Enter 跳转,Esc 关闭,命中的字自动高亮。
- 🧠 意图联想搜索(v1.6.0)。记不清选项叫什么也没关系,直接写「太亮了」「字太小」「忘记密码」,插件会猜你指的是哪几个设置,结果显示在「猜你想找」分组里。
- 🤖 AI 联想搜索。本地匹配不到时,把搜索词交给你自己配置的 OpenAI 兼容接口、Anthropic 或本机 Ollama 模型,由模型判断你想改什么。功能默认关闭,需要到「设置搜索」页打开并填好配置,Ollama 不必填 API Key。
- 💾 持久设置索引(v1.12.0)。采集过的索引存在本机浏览器里,只在首次安装,或者别的插件安装、更新、启用、停用时重建,也可以在「设置搜索」页手动重建。
- 🧾 日志与查看(v1.13.0 / v1.7.0)。插件运行、搜索与 AI 请求的关键动作按天写进 DSH 日志目录($DSH_HOME/logs/dsh-settings-search/settings-search-YYYY-MM-DD.log,文件名带日期,一天一个)。单个文件写到 100 MB 就同日换编号分片续写(.1、.2…),整个日志目录上限 100 MB,超了删最旧的文件,正在写的那个不删。「设置搜索」页里可以直接查看日志、打开日志文件夹、复制、导出或清空,标题旁的计数是当天文件里的条目数。API Key 不会进日志。
- 🧭 点击即达。选中一条结果,插件替你点开左侧对应的导航项,目标在页内标签页里就继续点开那个标签,并把目标行高亮闪一下。跳不过去的时候显示手动路径提示。
- 🌱 启动自动索引(v1.8.0)。第一次打开设置面板时,插件自己把各分区走一遍,静默读走分区里的选项(比如「启用创意工坊卡片」)并收进索引,读完回到你原先待着的分区。过程里搜索框下方有提示,读完自动消失。这之后那些选项不用逐页打开也能搜到。
- 🛠 自带设置页(v1.4.0)。左侧导航多了「设置搜索」页,显示当前版本,可以一键查 npm 上的最新版本。有更新时给出能直接复制执行的升级命令,命令里带着 profile 名和最新版本号。
- 🧭 更新说明查看(v1.7.1)。「设置搜索」页的「检查更新」旁边还有一个「查看更新说明」,拉取 GitHub Release 的内容就地展示,拉不到就直接跳到 Release 页面。
- 🌐 多语言支持。内置中英文两套文案,跟着 DSH 的本地化系统走,也可以继续扩别的语言。
- 🎨 主题适配。样式全部用 CSS 变量写,亮色暗色跟着 DSH 走。
- ⚡ 动态响应。插件实时订阅设置项的新增、删除和变更,结果列表跟着刷新。

安装(命令行)

本插件是一个标准的 DSH profile bundle。装完会自动写进设置面板,不需要手动改任何 DSH 配置文件。

下面的命令都是给命令行 profile 用的。桌面端用的是 desktop profile,由桌面应用自己管理,命令行改不动它,在桌面端装插件要走应用的插件管理页。

前置要求

- DeepSeek Harness (DSH)。DSH 0.2 正式版(桌面版与 dsh web)和更早的 0.1 版本都可以,插件会按运行中的版本自动选择对应接口。当前已在 0.2.1-rc.2 上逐项核对过(npm run compat),0.2.0 及之前的行为保持不变。
- Node.js。18 或更高,推荐 LTS。

通过 npm 安装(推荐)

dsh plugin --profile web add @objectivex666/dsh-settings-search

通过 GitHub 安装

dsh plugin --profile web add github:objectivex666/dsh-settings-search

本地源码安装(开发调试)

dsh plugin --profile web add /path/to/dsh-settings-search

装完记得重启 DSH(dsh web),打开设置面板就能看见搜索框。要卸载就跑 dsh plugin --profile web remove @objectivex666/dsh-settings-search。

如果你的 profile 不叫 web,把命令里的 --profile web 换成实际的名字。

它不做什么

- 索引存在本机浏览器里,换个浏览器要重新采集一遍。
- 导入 DSH 模型配置时不带 API Key,写日志时也不记录 API Key。
- 关掉搜索快捷键之后,Ctrl+F 还给浏览器,插件不再拦截。

手动接线(不通过命令行安装时)

不想用命令行的话,把本包加进 profile 依赖,声明成 bundle 层就行(dsh plugin add 帮你做的就是这件事)。

你的 profile 的 cordis.patch.yml(或通过 --patch 传入)
- insert:
- id: settings-search
name: '@objectivex666/dsh-settings-search'

包内自带 cordis.patch.yml,内容和上面一样,dsh plugin add 会自动应用。

本机 Ollama(v1.11.0)

在「设置搜索」页打开「AI 联想搜索」,把「接口类型」选成「Ollama(本机)」,要填的东西不多。

- Base URL。默认 http://127.0.0.1:11434,端口可以自己改。填根地址、/api、/api/chat 或 /v1 都能识别。
- 模型名。点「获取模型」从服务返回的列表里挑,也可以手动敲完整模型名(包括标签),用 ollama list 能看到手头有哪些。
- API Key。不用填,发往 Ollama 的请求不会带上原来那套云端密钥。

保存后可以点「测试接口」看看通不通。本地模型第一次加载可能比较慢,Ollama 请求的超时时间定在 120 秒,搜索中途取消会中止这次请求。

请求由浏览器直接发出,所以「本机」说的是浏览器所在的那台机器,不是 DSH 服务器所在的机器。插件不会安装或启动 Ollama,也不会下载模型,服务和模型都要自己准备好。

连不上先看服务地址对不对。浏览器报跨域错误时,把当前 DSH 页面的确切来源(例如 http://127.0.0.1:3080)加进 Ollama 的 OLLAMA_ORIGINS,重启 Ollama 再试,别图省事写通配符来源。Ollama 不在本机时,地址仍然要求 HTTPS。

包结构

lib/index.js Host half(日志文件 + /api/settings-search-log 路由) lib/client.js Browser half(搜索框 UI,__ModuleLoader__ 格式) cordis.patch.yml 组合补丁:插入 settings-search 插件行 scripts/check.mjs 结构自检(npm test) scripts/ai.test.mjs AI 接口与设置索引回归测试(模拟请求,不运行模型) scripts/log.test.mjs 宿主日志文件与路由回归测试(临时目录,不写用户目录)

开发

npm test # 结构检查及 Ollama / OpenAI / Anthropic 模拟接口回归测试
npm run compat # 针对本机已安装的 Harness 核对兼容性(服务名、Remote 描述符、slot、主题令牌、路由、DeepSeek 常量)

npm run compat 直接读本机安装包(默认自动查找,也可 --asar <app.asar> 或 DSH_ASAR=<app.asar>), Harness 升级后先跑一遍就能知道哪些「非公开契约」变了——它检查的正是这个插件依赖、但不属于任何 npm API 的那些接口。

历史说明。v1.1 及更早的版本里,仓库还带一个 dsh-settings-search.js(会话内 cordis_define 动态插件源)。它和正式包长期分头维护,两边越改越不像,v1.4.1 已经删掉。想参考动态插件的写法可以翻 git 历史,tag v1.4.0 里还在。

反馈与贡献

用着不对劲、想到什么功能,或者只是没搞明白怎么用,都可以开 GitHub Issues 说。也欢迎直接提 Pull Request,动手改代码之前先看一眼 贡献指南,结构、代码约定、测试和发布流程都写在里面。

提 Issue 时把这些写全,定位和复现都会快很多。

- 问题描述。你期望发生什么,实际发生了什么。
- 复现步骤。一步步写清楚怎么做,包括输入的关键词和当时所在的设置页。
- 日志。在「设置搜索」页的「日志」区块里点「导出日志」,把最近的搜索与运行日志贴上来,API Key 不会被记录,可以放心发,控制台里的报错也一并附上更好。
- 环境信息。DSH 版本、Node.js 版本、插件版本(「设置搜索」页能看到)、操作系统和浏览器。
- 截图或录屏。跟界面表现有关的问题,截图比文字描述清楚。

更新日志与发布

每次版本更新,要同时更新 GitHub Release 和 git tag。正文用双语,写清「新功能」与「修复」。

- 更新 CHANGELOG.md(中文)和 CHANGELOG.en.md(英文)。两边各要有「新功能」和「修复」两节,英文对应 Features 与 Fixes。
- 把 package.json 的 version 和 lib/client.js 里的 PKG_VERSION 一起改掉(npm test 会校验两者一致)。功能列表旁边新加的版本标注也顺手补上,然后按 vX.Y.Z 打 tag 并推送。GitHub Actions 会同时发 npm(npm-publish.yml)并创建双语 GitHub Release(release.yml)。
- 本地预览 release 正文用 node scripts/release.mjs --version <ver>
- 打 tag 并发布用 node scripts/release.mjs --version <ver> --publish(需要装好 gh CLI 并已登录)

不带 --publish 时,脚本只校验并打印 release 正文,不会创建 tag、推送或发布。
预览分享卡片长什么样 ↓objectivex666/dsh-settings-search
分享 · DeepSeek Harness Hub
objectivex666/dsh-settings-search

给 DSHCordis设置面板加一个搜索框,输入关键词就跳到对应的设置页和设置项。

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