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

渠道筛选按钮 WhatCannotBeSaid/dsh-im-workspace-buttons

DeepSeek Harness
WhatCannotBeSaid10 天前有提交已提供中文文档扫描:未发现敏感能力

在工作区表头按渠道筛选会话列表

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add WhatCannotBeSaid/dsh-im-workspace-buttons
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:侧边栏工作区标题行里,每个 @xmanrui/dsh-im 频道对应一个频道入口,点击后把会话列表筛选到该频道。从 eva-inspired-theme 中提取。

README

由 DeepSeek 最新模型翻译生成
工作区旁按钮 在官方「工作区」表头行里,每个已接入的 @xmanrui/dsh-im 渠道放一枚 28×28 图标按钮。点一枚只说该渠道的会话;再点一次回到官方列表。 本包是从 eva-inspired-theme 里剥出来的单功能插件:只保留这组按钮,不带来皮肤、不做主题替换,不依赖主题的 CSS、locale 命名空间或构建流程。 安装 1. 装包 npm install dsh-im-workspace-buttons --prefix ~/.dsh/profiles/desktop --registry=https://registry.npmjs.org 2. 把它加进 profile 的 bundle 列表(<profileDir> = ~/.dsh/profiles/desktop) package.json 的 dsh.profile.bundles 里追加 "dsh-im-workspace-buttons" 装完重启 DSH。本包自带 dsh.bundle.patch,不需要手改 cordis.patch.yml;但 profile 的 dsh.profile.bundles 必须包含本包名,否则 loader 不会挂载它。 前置条件:@xmanrui/dsh-im 与至少一个已接账号的渠道,否则按设计一枚按钮都不显示。
展开完整文档(README 剩余 1 节)
工作区旁按钮

在官方「工作区」表头行里,每个已接入的 @xmanrui/dsh-im 渠道放一枚 28×28 图标按钮。点一枚只说该渠道的会话;再点一次回到官方列表。

本包是从 eva-inspired-theme 里剥出来的单功能插件:只保留这组按钮,不带来皮肤、不做主题替换,不依赖主题的 CSS、locale 命名空间或构建流程。

安装

1. 装包
npm install dsh-im-workspace-buttons --prefix ~/.dsh/profiles/desktop --registry=https://registry.npmjs.org

2. 把它加进 profile 的 bundle 列表(<profileDir> = ~/.dsh/profiles/desktop) package.json 的 dsh.profile.bundles 里追加 "dsh-im-workspace-buttons"

装完重启 DSH。本包自带 dsh.bundle.patch,不需要手改 cordis.patch.yml;但 profile 的 dsh.profile.bundles 必须包含本包名,否则 loader 不会挂载它。

前置条件:@xmanrui/dsh-im 与至少一个已接账号的渠道,否则按设计一枚按钮都不显示。

从主题版迁移

eva-inspired-theme 1.2.0 起不再包含这组按钮。两个包不要同时装:

- 主题版用的是 data-eva-im- 契约与 eva-im-filter locale 命名空间,本包用 data-dsh-im- 与 dsh-im-workspace-buttons。同时装会在同一行出现两套按钮,且样式互不覆盖。
- 升级到 eva-inspired-theme@1.2.0 后装上本包即可无缝替换;交互、图标、顺序、可见性规则一致。

行为

| 插件 id | dsh-im-workspace-buttons(client 模块 id、locale 命名空间同名) |
| 出现在哪 | 官方 sidebar.workspaces.directoryFlow 标记所在的表头行,搜索槽左侧,按渠道表顺序 |
| 显示条件 | 对应渠道已接入才显示:connection.status 返回 bots[] 里有非空 botId,或旧版返回的 configured: true;探测不出结论(RPC 未就绪、请求失败)时首轮不画、之后保留上次结论 |
| 点击 | 只显示该渠道的会话行(按 data-dsh-im-session-channel 或行文本前缀认出);再点一次回到官方列表 |
| 折叠分组 | 只有点击时才展开、翻页、滚动到该渠道的首个会话,且以 CLICK_LIMIT = 200 步为上限 |
| 标签 | 走 Client locale 服务;跟随 profile 语言切换,注册表缺失时回退中文 |
| 不受影响 | 官方分组、折叠状态、spy 计数、会话顺序;不重排、不隐藏官方按钮 |

样式契约

样式由 runtime 自己注入一份 ,颜色全走 --dsw- 令牌:

| 选择器 | 作用 |
| [data-eva-im-button] | 28×28、无边框、无背景、--dsw-radius-sm 圆角、--dsw-alias-label-secondary 前景 |
| [data-eva-im-button]:hover | 前景转 --dsw-alias-label-primary |
| [data-eva-im-state='on'] | 已选中的那枚转 --dsw-alias-brand-primary |
| [data-eva-im-tree] [data-row-key]:not([data-eva-im-row='on']) | 非该渠道的会话行隐藏 |

选择器前缀沿用 data-eva-im-(提取时逐字保留,未改名),改前缀会破坏与 eva-inspired-theme 的样式兼容性。
注意第四条规则:不能用「JS 不写属性」表达 off —— 必须显式写 data-eva-im-row='on',否则一行都藏不住。

依赖

| 依赖 | 性质 |
| @xmanrui/dsh-im | 运行时必需。渠道表与状态探测都读它的 connection.status;未安装则一枚按钮都不显示 |
| 宿主 client 服务 sessions / workspaces / locale / connection | 只通过 ctx.get 取,不 import 宿主包 |
| eva-inspired-theme | 不需要。样式、locale 命名空间、构建都已内置 |

开发

node tools/build-client.mjs # 用 src/runtime.js 重写 client.js 的 runtime 段
node tools/build-client.mjs --check # 断言 client.js 与 src/runtime.js 一致
node --test --test-timeout=15000 test/*.test.mjs # 14 条行为测试,假 DOM,不需要浏览器
node test/render.mjs # 真浏览器:隔离 profile + 本包 + dsh-im,截图与交互断言

client.js 里的 runtime 是副本不是 import:client 模块加载器按经典脚本求值 client.js,文件里不能有模块图。tools/build-client.mjs 负责保持一致。

文件

| 文件 | 作用 |
| index.js | host 入口,ESM,export apply(ctx);只打一行日志,无 service / route / Config |
| client.js | 浏览器入口,window.__ModuleLoader__.load({ id, factory }),内含 runtime 副本 |
| src/runtime.js | runtime 真源(export function mountWorkspaceButtons(ctx)) |
| cordis.patch.yml | - insert: [{ id, name }],同时是浏览器 roster 的入口 |
| locale/zh.json · locale/en.json | meta.title / meta.description + 12 渠道文案 |
| tools/build-client.mjs | 把 src/runtime.js 内联进 client.js,--check 校验一致 |
| test/fake-dom.mjs · test/behaviour.test.mjs | 假 DOM 与 14 条行为断言 |

与主题版的三处偏离

1. locale 命名空间 从 eva-im-filter 改为 dsh-im-workspace-buttons。注册表对同名命名空间取先注册者的字典,两个包共用会互相盖掉;回退语言从 DICT.en 改为 DICT.zh,因为这套文案本来就是中文写的,未翻译的语言读中文比读英文对。
2. 样式从 theme.css 搬进 runtime 自己的 (data-dsh-im-workspace-buttons-sheet)。
四条规则逐字照抄,选择器、尺寸、颜色令牌不动。
3. disposer 多收一次 removeSheet()。主题里样式跟着皮肤文档走,插件卸掉后规则还留在 里;独立包里「卸载后不应继续影响文档」是必须遵守的约定,所以按钮和规则一起撤。

除这三处外,行为、渠道表、图标、探测间隔、点击上限、选择器都与主题版逐字一致。

许可

MIT — 见 LICENSE。
预览分享卡片长什么样 ↓WhatCannotBeSaid/dsh-im-workspace-buttons
分享 · DeepSeek Harness Hub
WhatCannotBeSaid/dsh-im-workspace-buttons

在工作区表头按渠道筛选会话列表

这是你的仓库?认领条目

回到顶部