dsh-markdown-xyy
给 DeepSeek Harness 的对话 Markdown 换上主题 —— 4 套内置主题(浅/深双档)+ 用户主题自由定义,顺带把插件迭代记成可回滚的版本台账。
运行在 DeepSeek Harness 上的 Cordis 插件:不动产品基线主题,用纯 CSS 给对话里的 Markdown 排版与配色换肤——标题、代码块、表格、引用、链接、高亮,浅色深色各一套,跟随系统自动切换。
📖 项目缘起
做这个项目的初衷很简单:原生对话样式在面对大量文本时,并不适合阅读。
大段对话内容堆在一起时,信息是「平」的——标题、引述、重点、代码全靠默认排版撑着,看得越快越抓不住重点。而我每天都要面对大量对话文本,把重点信息着色、层次分明就变得特别重要:扫一眼就能定位关键内容,长对话也能快速读完。
这个项目就是为此而来:给对话里的 Markdown 加一套「阅读辅助」主题——重点突出、排版清晰、深浅双档,同时绝不破坏产品默认主题。
本项目由 AI 全程协作完成:核心开发是我的合作伙伴 deepseek-v4-flash,四套主题的配色由国际友人 Gemini 协助调色打磨。
主题预览
草莓猛男粉 strawberry-mocha |
Cyber Titanium · 钛影 cyber-titanium |
|---|---|
![]() |
![]() |
| 丝绒草莓甜点 × Catppuccin Mocha 暗夜,标准参考实现 | Space Black 空间黑 × 阳极钛紫 × 电光青 × 冷银 |
High-Vis Clarity · 高清晰 high-vis-clarity |
松烟墨黛 pine-smoke-ink |
|---|---|
![]() |
![]() |
| 旧显示器 / 低色域友好:高反差冷白 × 纯天蓝 × 黄金重点 | 徽墨沉香 × 矿物朱砂 × 远山黛蓝 × 宣纸冷白 |
预览图存放于 screenshots/,换图直接覆盖同名文件即可。
特性
- ✔️ 4 套内置主题,每套浅色 / 深色双档,☀️ / 🌙 / 🖥️ 外观三档随系统切换
- ✔️ 主题选择持久化:选中的主题自动记住(localStorage),刷新、新开页面、重启后原样恢复,多标签页实时同步
- ✔️ 用户主题即放即用:往
~/.dsh/web-themes-xyy/放一个 CSS 文件就是新主题,无需打包、无需升级插件 - ✔️ 实时主题编辑器:设置页内新建 / 编辑用户主题,语法高亮 + 一键格式化,保存前双端 CSS 校验
- ✔️ 元素级排版增量覆盖:
:where()零优先级,只兜底裸 Markdown 元素,产品显式样式永远优先 - ✔️ 不可变版本台账:每个迭代 = 一个不可变 Package,run 卡片内即看当前版本与完整历史,可随时回滚
- ✔️ 常驻安装即用即走:npm registry 一条命令装好(
dsh plugin add dsh-markdown-xyy),GitHub 备选,进程重启不丢
快速开始
前置:一个可运行的 DeepSeek Harness 环境(dsh web)。本项目无运行时依赖,无需安装 npm 包。
常驻安装(推荐,重启不丢)
直接在 npm registry 安装(已发布:dsh-markdown-xyy):
dsh plugin --profile web add dsh-markdown-xyy
或跟随 GitHub main 最新(镜像尚未同步 npm 新包时可用):
dsh plugin --profile web add github:mengnanxyyyy/dsh-markdown-xyy
加载后进入 设置 → 主题设置:切换「系统自带」或 4 套内置主题,新建 / 编辑用户主题。
🎨 自定义主题(让 AI 复制粘贴,3 分钟换肤)
主题本质就是一个 CSS 文件:改它 = 换肤,无需改代码、无需升级插件,保存/放文件后刷新即生效。
方式一:让 AI 改(最快,推荐)
- 设置 → 主题设置 →「🆕 新建用户主题」→ 选一个最接近你审美的底子主题(默认草莓猛男粉,顶部下拉可换钛影 / 高清晰 / 松烟墨黛);
- 复制编辑器里的整段 CSS,粘贴给任意 AI(DeepSeek / ChatGPT / Claude);
- 把需求发给它,例如:
你是 CSS 主题专家。这是 DSH 对话 Markdown 主题的完整 CSS,文件结构不能破坏:
[把编辑器里的整段 CSS 粘贴到这里]
帮我改成「赛博朋克」风:① 把 --mdvr-accent 和各处 --dsw-alias-* token 改成霓虹紫+电光青
② 背景改深黑 ③ 代码块加霓虹描边。保持三段式结构(body / body[data-ds-dark-theme] /
:where())和全部变量名:只改值、不动名单,输出完整 CSS 让我直接粘贴回编辑器保存。
- 把 AI 返回的完整 CSS 粘贴回编辑器 →「💾 保存」→ 新主题立刻出现在列表可选用(保存前插件会做 CSS 语法校验,不过会拒绝并提示原因)。
方式二:手写 / 放文件
- 主题 = 三段式 CSS:① 浅色档
body {…}② 深色档body[data-ds-dark-theme] {…}③ 元素定制:where()。参考内置plugin/assets/themes/strawberry-mocha.css(全注释的标准参考实现); - 放文件即新主题:复制成
~/.dsh/web-themes-xyy/<你的名字>.css→ 设置页「🔄 刷新用户主题」; - 90% 的换肤效果来自几个关键变量(完整契约见 docs/variables.md):
--dsw-alias-bg-base/--dsw-alias-bg-layer-1… 背景与表面层次--dsw-alias-brand-primary品牌 / 强调主色--mdvr-accent主题强调色、--mdvr-link-*链接、--mdvr-code-*代码、--hl-*语法高亮
完整规范:docs/themes.md|变量契约:docs/variables.md
项目结构
dsh-markdown-xyy/
├── README.md / README.en.md # 中 / 英 README
├── AGENTS.md # 面向 Agent 贡献者的项目约定
├── LICENSE # MIT
├── package.json # 常驻安装包清单(main=lib/index.mjs,exports ./client)
├── cordis.patch.yml # dsh bundle 插件行(dsh plugin add 后挂载)
├── screenshots/ # 主题预览图(README 画廊)
├── docs/ # architecture / themes / variables / capabilities / development
├── manifest/
│ └── versions.json # 版本台账持久镜像
├── lib/
│ └── index.mjs # 常驻安装版 Host 半(生成产物)
├── client/
│ └── client.js # 常驻安装版 Client 半(__ModuleLoader__ 注册,生成产物)
├── plugin/
│ ├── host.js # Host 半源码镜像(版本台账 + 主题资产 RPC)
│ ├── client.js # 动态版 Client 半产物(勿手改)
│ ├── src/client.core.js # Client 半源码(唯一的可编辑源)
│ └── assets/ # panel.css / themes/(4 个内置主题)
└── scripts/
├── build-client.js # 动态版产物构建
├── build-installed.js # 常驻版双半产物构建
├── check-release.js # 发布门禁
└── minify.js # define 传输用安全精简
文档
| 文档 | 内容 |
|---|---|
| docs/architecture.md | 架构:双半分工 / 版本模型 / 主题管线 / 双通道 |
| docs/themes.md | 主题系统规范:能力边界 / 文件格式 / 用户主题 |
| docs/variables.md | 变量契约:L0 平台 token / L1 身份色 / L2 常量 / L3 旋钮 |
| docs/capabilities.md | 能力清单与路线图 |
| docs/development.md | 开发与发布流程(一次迭代 = 一个 Package) |
开发
迭代流程 改 MANIFEST → build → define → run → 验证 → tag 见 docs/development.md;发版前跑发布门禁:
node scripts/check-release.js
许可
MIT © 2026 dsh-markdown-xyy contributors




No comments yet. Be the first to write one.