dsh-settings-search
objectivex666/dsh-settings-search
Instantly find DSH settings pages, tabs and rows by keyword, pinyin, intent or AI — and jump straight to them.
설치
dsh plugin --profile web add github:objectivex666/dsh-settings-searchREADME
dsh-settings-search
为 DSH(Cordis)设置面板提供即时搜索能力,快速定位设置页与通用设置项。
中文 · English
功能特性
- 🔍 实时搜索:在设置面板中嵌入搜索框,输入关键词立即过滤所有已注册的设置页(
settings.section)与通用设置项(settings.general.item)。 - 🧩 三种搜索样式:可选择经典侧栏、窗口顶栏或弹出搜索页;选择会保存在当前浏览器。
- ⌨️ 搜索快捷键(v1.10.0):在设置面板内按
Ctrl+F或⌘F聚焦搜索框;可在「设置搜索」页启用或关闭,关闭后保留浏览器默认查找。 - 🤝 导入 DSH 模型配置(v1.9.0):在 AI 配置区一键读取 DSH 当前默认模型的 Base URL 与模型名;为避免凭据扩散,导入始终不包含 API Key。
- 🎯 新用户引导(v1.9.0):仅在安装后首次打开设置面板时弹出引导弹窗,介绍四种搜索样式、拼音/意图/AI 联想、点击即达与自动导入索引等核心功能;不再提供“不再显示”和手动重开按钮。
- 📂 页内选项搜索(v1.2.0):不只搜页面,还能直达每个设置页内部的具体选项——插件页的标签页(
settings.plugins.tab)、Web UI 插件的卡片(web-ui.plugin.item)、通用设置行等,结果以「页面 › 选项」面包屑展示。 - 🔤 拼音联想搜索(v1.5.0):输入拼音首字母(如
sz)或全拼(如shezhi)即可联想中文设置项;支持↑/↓选择、Enter跳转、Esc关闭,命中的文字自动高亮。 - 🧠 意图联想搜索(v1.6.0):直接描述想做的事(如「太亮了」「字太小」「忘记密码」),无需知道选项名即可联想真实设置项,结果在「猜你想找」分组展示。
- 🤖 AI 联想搜索:没有本地匹配时,用你配置的 OpenAI 兼容、Anthropic 或本机 Ollama 模型理解搜索意图并推荐设置项。默认关闭,可在「设置搜索」页开启并配置;Ollama 无需 API Key。
- 🧾 日志与导出(v1.7.0):记录插件运行、搜索与 AI 请求的关键动作,可在「设置搜索」页一键导出、复制或清空,便于排查问题。不会记录 API Key。
- 🧭 点击即达:选中结果后自动点击对应的左侧导航项打开所在分区;若是页内标签页会继续点开对应标签,并高亮闪烁目标选项行。无法自动跳转时显示手动路径提示。
- 🌱 启动自动索引(v1.8.0):首次打开设置面板时自动遍历各设置分区,静默读取分区内选项(如「启用创意工坊卡片」)并导入搜索索引;此后分区选项无需逐页手动打开即可直接搜索,读取完成后自动恢复当前所在分区,导入过程搜索框下方会显示提示,完成后自动消失。
- 🛠 自带设置页(v1.4.0):左侧导航新增「设置搜索」页——展示当前版本,一键检查 npm 注册表上的最新版本;有更新时直接给出复制就用的
dsh plugin update命令。 - 🧭 更新说明查看(v1.7.1):在「设置搜索」页「检查更新」旁新增「查看更新说明」按钮,可拉取 GitHub Release 更新内容并就地展示;拉取失败时自动跳转 Release 页面。
- 🌐 多语言支持:内置中英文国际化,可跟随 DSH 本地化系统扩展。
- 🎨 主题适配:完全使用 CSS 变量,自动跟随 DSH 主题(亮/暗)。
- ⚡ 动态响应:实时订阅设置项的新增/删除/变更,搜索结果自动刷新。
安装(命令行)
本插件是一个标准的 DSH profile bundle:安装后自动写入设置面板, 无需手动修改任何 DSH 配置文件。
前置要求
- DeepSeek Harness (DSH):任意包含 Web 界面(
dsh web)的版本。 - 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。
非
webprofile 请把命令中的--profile web换成你的 profile 名。
手动接线(不通过命令行安装时)
把本包加入 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 秒;取消搜索会中止请求。
插件不会安装或启动 Ollama,也不会下载模型。使用时需自行准备已运行的 Ollama 服务和模型。请求由浏览器发出,因此「本机」指浏览器所在设备,而非远程 DSH 服务器。
连接被拒绝时检查服务地址;跨域访问失败时,将当前 DSH 页面的确切来源(如 http://127.0.0.1:3080)加入 Ollama 的 OLLAMA_ORIGINS,并重启 Ollama。不要使用不必要的通配符来源。非本机地址仍要求 HTTPS。
包结构
lib/index.js Host half(空实现,保证作为合法 Cordis 插件行加载)
lib/client.js Browser half(搜索框 UI,__ModuleLoader__ 格式)
cordis.patch.yml 组合补丁:插入 settings-search 插件行
scripts/check.mjs 结构自检(npm test)
scripts/ai.test.mjs AI 接口回归测试(模拟请求,不运行模型)
开发
npm test # 结构检查及 Ollama / OpenAI / Anthropic 模拟接口回归测试
历史说明:v1.1 及之前仓库曾附带
dsh-settings-search.js(会话内cordis_define动态插件源)。因与正式包代码长期双份维护漂移,已于 v1.4.1 移除;如需动态用法可从 git 历史(tagv1.4.0)取回参考。
反馈与贡献
欢迎提交 Issue 反馈 Bug、功能建议或使用疑问: GitHub Issues, 也欢迎直接发起 Pull Request。
提交 Issue 时,请尽量完整地提供以下信息,便于定位与复现:
- 问题描述:期望的行为与实际发生的情况。
- 复现步骤:一步步说明如何复现,包括触发关键词、所在设置页等。
- 日志:在「设置搜索」页的「日志与导出」中导出最近的搜索/运行日志并粘贴(API Key 不会被记录,可放心提供);控制台报错也请一并附上。
- 环境信息:DSH 版本、Node.js 版本、插件版本(可在「设置搜索」页查看)、操作系统与浏览器。
- 截图/录屏:涉及界面表现时,附上截图或录屏更有帮助。
更新日志与发布
每次版本更新需同时更新 GitHub Release 与 git tag,正文为双语,并写明「新功能」与「修复」:
- 更新 CHANGELOG.md(中文)与 CHANGELOG.en.md(英文),两者各含
### ✨ 新功能 / Features与### 🐛 修复 / Fixes。 - 同步
package.json与 README 的版本号,按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(需ghCLI 且已登录)
未带
--publish时脚本只校验并打印 release 正文,不会创建 tag、推送或发布。