前言¶
在 DeepSeek Harness(DSH)里,侧栏往往挂着多个工作区或项目文件夹。列表一长,默认统一的文件夹图标很难一眼区分「这是前端仓库还是数据分析脚本」。手工给每个项目换图标,若没有集中入口,配置也容易散落在各处。
社区插件 dsh-workspace-icons(维护者 bloodyxu,分类:趣味换装)针对的是:在 Web 侧栏里为每个项目目录提供可辨认的图标——内置 160 个 Hugeicons(stroke-rounded 免费集),每个图标有固定配色,也支持 emoji 或图片 URL;未手动设置时,插件会读取项目根目录下的有限证据并请求 AI 推荐图标,模型不可用则由本地规则兜底。数据保存在浏览器 localStorage,不写项目磁盘。
这是什么¶
dsh-workspace-icons 是 DSH 的 Cordis 插件包(当前资料中版本 2.1.0,许可证 MIT,要求 Node >= 20)。它分浏览器端与 Host 端两半:浏览器端负责设置页、右键选图标与侧栏 CSS 渲染;Host 端负责读项目清单与调用 DSH 配置的默认模型做建议。插件以当前 Harness 进程权限运行;安装前宜自行查看 GitHub 仓库 源码与许可证。社区目录页:skillhub.cn 插件条目(与 DeepSeek / 幻方无官方从属关系,DSH 生态本身也遵循「一切皆插件」的思路)。
核心功能¶
图标来源¶
- 内置图标:160 个 Hugeicons,分 10 类(code / web / data / design / docs / media / science / brand / business / life),带搜索。
- 颜色:每个内置图标颜色由目录位置按黄金角在 OKLCH 中生成,同一图标颜色恒定;浅/深主题下对比度约在资料给出的区间内,emoji 与图片不受影响。
- Emoji:7 组共 60+ emoji,另可粘贴任意单个 emoji。
- 图片:仅允许
https://…与data:image/…;拒绝javascript:、file:等 scheme。 - Remove icon:恢复默认文件夹图标。
AI 与本地规则¶
默认开启自动建议。规则要点(摘自 README):
- 只分析尚无手动图标且尚无建议的项目。
- 同一项目至少间隔 10 分钟再分析;失败后等待 2 分钟重试。
- 并发与超时:Host 端最多 2 个项目并行,单项目 25 s、单次请求 45 s 预算;一次仅一个请求在飞。
- 手动图标始终优先;删除手动设置后,之前的 AI 建议会重新生效。
Host 读取范围限于项目根、非递归:package.json 等常见清单(各最多约 1.4 KB)、README* 前 900 字符、顶层目录项(最多 40 个,跳过 node_modules、.git 等)及语言比例抽样。模型需返回 {"glyph":"<name>","why":"<one line>"},glyph 须与内置图标名完全一致;失败则走本地规则链(依赖 → README/名称关键词 → 主语言 → 清单类型 → 通用文件夹图标)。
可在 Settings → Project icons 关闭「Pick icons automatically」以停止新请求;已保存建议仍显示,可逐个覆盖或清除。请求使用 DSH 的 agentDefaultModel,仅发送路径、名称与上述摘录,不涉及完整源码写入项目。
数据存放¶
两套 localStorage,键为项目文件夹路径(无路径时用 workspace id):
dsh-workspace-icons.v1:手动图标。dsh-workspace-icons.auto.v1:AI/规则建议(含 reason、source、时间戳)与自动开关。
每库最多 500 条,超出删最旧项;不跨机器同步,清空浏览器数据会丢失配置。
安装与启用¶
安装命令须使用 README 原文形式,<profile> 为你运行 Harness 的 profile(桌面应用一般为 desktop):
dsh plugin --profile <profile> add dsh-workspace-icons
该命令会把包写入对应 profile 的 dependencies、追加到 dsh.profile.bundles(从而加载 cordis.patch.yml 中的 Host 行),并由 pnpm 完成依赖装配。
重启 Harness,待 Host 半加载后,Settings 中应出现 Project icons 页;侧栏项目行右键应能打开图标选择器。
典型用法¶
两处入口共用同一存储:
- 侧栏右键项目行(推荐):在任意项目标题上右键,打开选择器;可选内置图标、粘贴 emoji 或填写图片 URL,立即生效。若有 AI 建议,会显示为「AI suggested · reason」,可接受或重新生成。
- Settings → Project icons:列出全部项目逐项设置或清除;页顶有「Pick icons automatically」开关与 Re-suggest all。
选择器三个标签页:Icons(默认)、Emoji、Image。
从 1.x 升级时注意:2.0 起图标名由 Phosphor 改为 Hugeicons 命名(如 sparkle → sparkles 等),旧配置可能需要重选。
实现要点(便于排查)¶
浏览器端(client.js)占用官方槽位:settings.section(Project icons,order: 25)与 shell.overlay(右键菜单,order: 40)。侧栏绘制无官方槽位,通过 [data-row-key="workspace:<id>"] 隐藏原生 SVG 并用 ::before 绘制自定义图标。
Host 端注册鉴权路由:
POST /api/workspace-icons/suggest
请求体含 language(zh | en)与 projects 数组(key、path 绝对路径、title);仅绝对路径、最多 24 个项目、去重、body 上限 64 KB。存在 workspaceRegistry 时只读已注册工作区目录。模型经 ctx.get('llm').stream(...) 调用;@deepseek-ai/dsh-llm 为可选 peer 依赖,导入失败时仍可仅靠本地规则工作。
适用场景与注意¶
适合在 DSH Web UI 中长期维护多个仓库、希望侧栏快速扫一眼区分类型的开发者。不适合期待「配置进仓库、团队机器一致同步」的场景——当前设计明确为纯本机 localStorage。
注意:
- 自动建议会产生模型调用成本与延迟,可在设置中关闭。
- 图片 URL 需可访问且符合安全策略;插件拒绝危险 scheme。
- 插件能力与 Harness 版本、profile 及可选 LLM 依赖是否解析成功相关;无模型时仍有规则兜底图标。
结尾¶
dsh-workspace-icons 把「项目辨识度」收拢到侧栏右键与统一设置页:160 个带固定配色的 Hugeicons、emoji/图片,以及可选的 AI 建议与本地方案。若要在本机 DSH 中试用,可按上文安装命令安装并重启 Harness。
- 目录页:https://www.skillhub.cn/plugins/bloodyxu/dsh-workspace-icons
- 源码与文档:https://github.com/bloodyxu/dsh-workspace-icons