dsh-settings-organizer
v0.1.3
Published
Low-intrusion Settings presentation layer for DSH: group plugins, hide single settings / whole plugins, search settings, and restore hidden items — entirely through DSH's additive client-slot + settings-namespace seams.
Maintainers
Readme
🧰 DSH Settings Organizer(DSH 设置整理器)
为 DeepSeek Harness(DSH)打造的低侵入式设置展示层**:分组、折叠、隐藏、搜索与恢复设置 —— 全程绝不改动其他插件的配置。**
✨ 亮点
| 图标 | 功能 | 一句话 | |:---:|---|---| | 🗂️ | 按插件分组 | 每个插件的设置渲染为一个可折叠分组 | | 🎚️ | 折叠 / 展开 | 按分组独立,状态持久化,重启不丢 | | 🙈 | 想藏就藏 | 隐藏单个设置,或整个插件的设置 | | 🔍 | 搜索 | 匹配 label / key / path / 插件名 / 描述;无视折叠状态 | | ↩️ | Manage Hidden | 一键恢复单个字段、整个插件或全部 | | 🧹 | 零副作用 | 不碰其他插件配置,卸载无残留 |
🚀 30 秒上手
1️⃣ 安装插件(一条命令,见下)
2️⃣ 重启 DSH
3️⃣ 打开 设置 → "Settings Overview"
4️⃣ 折叠不关心的分组 → 搜索 → 隐藏噪音 → 完事📥 安装
dsh plugin --profile web add dsh-settings-organizer@latest --config.auto-install-peers=false💡
--config.auto-install-peers=false跳过几个未发布到公共 registry 的 DSH 核心包(由 DSH 运行时提供)。
🐛
@latest解析到旧版本? 这是 pnpm 11 的minimumReleaseAge供应链策略(发布不足约 30 天的版本会被排除出版本解析)。先装一次精确版本即可自动加白名单,之后@latest正常:dsh plugin --profile web add [email protected] --config.auto-install-peers=false或彻底关闭年龄门槛——在 profile 的
pnpm-workspace.yaml顶部添加minimumReleaseAge: 0(PowerShell 一键):$f = "$env:USERPROFILE\.dsh\profiles\web\pnpm-workspace.yaml" $c = Get-Content $f -Raw if ($c -notmatch '(?m)^minimumReleaseAge:') { Set-Content -LiteralPath $f -Value ("minimumReleaseAge: 0`n" + $c) -Encoding utf8 Write-Output "已添加 minimumReleaseAge: 0" } else { Write-Output "已存在,无需修改" }
🧩 它能做什么
以新增、可叠加的 Settings 区块("Settings Overview")加一个头部 "Manage Hidden" 动作注册:
- 插件分组 ——
settings.describe()的每个设置 namespace(ns)渲染为一个可折叠分组。 - 折叠 / 展开 —— 按分组独立,折叠状态持久化。
- 隐藏单个设置 —— 从概览中移走某个字段(纯展示)。
- 隐藏整个插件 —— 隐藏某个分组下的全部字段。
- 搜索 —— 匹配 label / key / path / 插件名 / 描述;搜索无视折叠状态;命中隐藏项显示 "Hidden · Restore" 提示,且绝不自动恢复显示。
- Manage Hidden —— 头部动作弹窗,可恢复单个字段、整个插件或全部。
🛡️ 安全保证
- 隐藏 ≠ 禁用 ≠ 删除。 隐藏只修改我们自己的展示列表——其他插件的配置永远不会被 update / replace / unregister。
- 卸载零残留。 本插件的注册全部挂在自己的 cordis fiber 上;禁用/移除后,所有设置页恢复 DSH 出厂原状。
- 不动 DSH Core。 不做 DOM monkey-patch、不用脆弱 CSS 选择器、不碰私有状态——只走官方
settings、settingsScope、slots接缝。 - 脏数据免疫。 失效的持久化状态在进入视图前会被清洗,既不会崩溃也不会误写。
🔄 兼容性
- DSH web profile,需 settings 域(
dsh-client-ui-settings/-general外壳)、client runtime/slots 与 locale 插件。 - 依赖面:
@deepseek-ai/dsh-client-*^0.1.0-rc.6、@deepseek-ai/cordis^4.0.1、react^18.2.0。
❓ 常见问题
Q: 隐藏设置会改它的值吗? 不会。隐藏只修改本插件自己的展示列表;设置的值和所属插件的配置原封不动。
Q: 卸载插件会弄坏我的设置吗? 不会。注册全部挂在本插件的 cordis fiber 上,移除即整体销毁,其他插件页面恢复出厂。
Q: 折叠状态会保存吗?
会——持久化在共享设置文档(~/.dsh/settings.yaml)里本插件的 namespace 下。
Q: 搜索会把隐藏的项翻出来吗? 不会。隐藏项绝不自动恢复显示——只会看到 "Hidden · Restore" 提示,由你主动恢复。
Q: 插件很多时好用吗? 好用。分组懒渲染,折叠即清净,搜索直达目标。
📋 已知限制
隐藏只作用于概览页:DSH 在其他插件自己的设置页里没有字段级渲染器,所以在这里隐藏的字段,在所属插件页面仍会出现。要在概览之外隐藏,需要上游的可选 Core 扩展点(见文档)。
👩💻 给开发者
- DEVELOPERS.md —— 构建 / 类型检查 / tag 触发的全自动发布流水线(npm OIDC Trusted Publishing + 带自动变更记录的 GitHub Release)。
- 规范与架构 ——
docs/dsh-settings-tidy.md、docs/phase-a/architecture.md、docs/phase-a/rfc-option-c-section-filter.md(硬性不变量、挂载与打包、状态模型)。
📄 许可证
MIT —— 见 LICENSE。
