把 DSH 助手 Markdown 里合格的 `> [!NOTE]`、TIP、IMPORTANT、WARNING、CAUTION 块引用渲染成跟随主题的 GitHub 风格提示卡片,不改会话存档。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Aafff623/dsh-callout
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-callout
为 DeepSeek Harness (DSH) 助手 Markdown 提供 GitHub 风格提示卡片。它把符合条件的 > [!NOTE] 引用块渲染为带稳定类型、图标和语义色的紧凑卡片,不修改存储的会话内容或 DSH 核心渲染器。
先看效果
> [!WARNING]
> This operation may overwrite existing configuration.
安装插件并刷新 DSH Web 后,发送这段助手 Markdown。符合条件的首标记会成为警告卡片;畸形或未知标记仍按普通文本保留。
为什么需要这个插件
警告应该看起来像警告,而不必等到读者读到命令才意识到。关键结论应该容易定位,而不必把整段回答都套进彩色框里。
dsh-callout 让源格式保持可读的 Markdown,只在展示阶段做升级:
助手 Markdown → DSH MarkdownText → 普通引用块 → 提示卡片
它不修改存储的会话内容、provider、权限、工具或 DSH 核心渲染器。
支持的类型
| 类型 | 用途 | 语义色 |
|---|---|---|
NOTE |
前提、环境事实与边界 | 蓝 |
TIP |
更优或不太明显的做法 | 绿 |
IMPORTANT |
决策或关键结论 | 紫 |
WARNING |
潜在损失或破坏性操作 | 琥珀 |
CAUTION |
高影响或难以回退的操作 | 红 |
视觉与机制图
下面两张图把证据贴近实现:类型图展示支持的语义卡片,流程图展示带守卫的 DOM 展示层升级路径。
安装
没有设置项。装上之后,宿主半会把写法说明注入系统提示词,浏览器半会升级合格的助手 Markdown。
从 GitHub
dsh plugin --profile web add github:Aafff623/dsh-callout
然后硬刷新 Web UI(Ctrl+Shift+R)。dsh.bundle.patch 会把插件插入 profile bundle。
lib/ 已提交入库,git 安装无需本地构建。
npm
尚未发布。只有包进入你使用的注册表后,dsh plugin --profile web add dsh-callout 才可用。
规范语法
使用以下两种形式之一:
> [!NOTE]
> 正文写在下一行。
> [!NOTE] 正文写在同一行。
标记必须是引用块的第一段内容。多行 callout 的每一物理行都以 > 开头。
以下不是规范 callout:
[!NOTE] 没有 `>` 标记的正文。
普通文字 > [!NOTE] > 被压到同一行的正文。
畸形或未知标记会 fail-open,作为普通文本保留。插件不会把每一处出现的 [!NOTE] 都强行变成卡片。
保证的行为
- 五种固定类型,大小写不敏感。
- 代码、行内代码、强调、链接、列表、嵌套引用和后续段落不会触发引用块升级。
- 标记只从符合条件的首段文本节点移除,正文节点保留。
- observer 回声路径是幂等的:插件自身的文本变更不会被误判为编辑。
- 真实编辑可以移除插件拥有的卡片样式,并在安全时还原源标记。
- 深浅色板规则跟随 DSH 的
body[data-ds-dark-theme]开关。
不做的事
- 用户(Human)消息由 DSH 以纯文本渲染,刻意不在本插件作用域内。
- 它不是 Markdown 解析器替代品,也不新增 Markdown AST 节点类型。
- 不保证解析后能区分真实标记与被反斜杠转义的标记。
- 依赖当前 DSH Web DOM 约定;未来渲染器变化应通过回归套件和浏览器冒烟测试复核。
架构
| 层 | 文件 | 职责 |
|---|---|---|
| 宿主 | src/index.ts |
向系统提示词注入简洁的输出契约 |
| Bundle | cordis.patch.yml |
在 DSH bundle 中注册插件入口 |
| 浏览器 | src/client/index.ts |
匹配渲染后的 DOM、应用卡片属性/CSS、观察流式更新、负责卸载 |
| 验证 | test/callout.test.mjs |
测试 GFM 形状、负例与 observer 状态机 |
两半都由 esbuild 构建到 lib/。浏览器部分刻意保持纯展示层:使用插件自有 data-md-alert-* 属性与 --dsh-callout-* 变量,并通过 Cordis ctx.effect() 注册清理。
开发
npm install
npm run typecheck # tsc --noEmit
npm run build # esbuild → lib/index.js + lib/client.js(ModuleLoader 包装)
npm test # node:test,在 vm 沙箱中跑构建产物
lib/ 是刻意提交入库的:git 安装无需构建步骤。改动 src/ 后要执行 npm run build 并把刷新后的 lib/ 一起提交——CI 会检查漂移。
测试套件目前覆盖 30 个用例,包括:
- 标准单行与多行形式;
- 五种类型、小写类型、CRLF 与 CJK 文本;
- 未知/粘连标记、代码、强调、链接、列表、嵌套引用与缩进/围栏代码;
- 裸助手 Markdown 段落回退;
- 首次升级、observer 回声、真实编辑清理与节点移除释放;
- 增量脏根命中、无关 mutation 不得清卡片、以及父段落被重建后仍能剥标记。
需要快速目视时,打开 demo-before-after.html。本 README 中的图是确定性的实现示意,不是运行中会话的截图。
兼容性与维护
| 插件 | DSH 基线 | 状态 |
|---|---|---|
0.2.x |
0.1.2-rc.1 |
已测试 |
DSH 升级后,先运行 npm test,再冒烟测试一条标准 callout、一段代码示例、一次主题切换和一次会话切换。若渲染器、Markdown 根 class、客户端加载器或 chat-flow 属性发生变化,先复核 src/client/index.ts 再升级插件版本。
许可
MIT——见 LICENSE。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-task-board★ 7488
侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。
zhu1090093659/dsh-web#packages/dsh-web-all★ 7488
DSH Web UI 插件与皮肤合集:任务看板、git 图、右侧面板、远程移动端 UI、桌宠、实时 token 统计与皮肤中心。
omdsh-dev/DSH-better-sidebar★ 3555
侧边栏完整工作台:内置文件渲染编辑、终端、Git 与子代理,支持三方插件注册新 Tab。
ccch1mneyyy/dsh-TUI★ 2994
Claude Code 风格全屏终端 UI:像素鲸鱼顶栏、实时工作状态行、思考流式展开。
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 2274
右下角常驻的小鲸鱼余额挂件:显示余额、今日已用、每轮对话消耗与随机台词,带音效与设置菜单。
Devin-AXIS/deepseek-design#deepseek-idesign★ 1072
可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。