DeepSeek Harness (DSH) 采用“一切皆插件”的架构理念。在构建智能体对话流时,经常需要引用特定资源(如报告 ID、数据库记录等)。如果没有统一的渲染标准,这些引用可能只是普通的 Markdown 链接,缺乏上下文展示和交互入口。dsh-reference-render 插件旨在解决这一痛点,提供一种域中立的结构化引用渲染方案。
插件定位¶
这是一个由 popingalex 维护的 DSH 客户端插件。它不拥有业务真理,而是作为渲染层存在,将标准的 GFM(GitHub Flavored Markdown)链接转换为具有交互功能的行内 Chip。
核心能力¶
- 域中立渲染:插件不处理具体的业务逻辑,内容由其他插件通过契约提供。
- 自动转 Chip:普通的 GFM 链接会自动被渲染为行内 Chip。
- 装饰支持:支持 dot、bar、icon 装饰,每侧最多 3 个。
- 交互能力:
- 悬浮预览:鼠标悬停可查看引用内容。
- 右侧栏跳转:点击 Chip 可在右侧栏打开对应资源。
安装与启用¶
由于该插件尚未发布至 npm,需直接从源码构建安装。请确保你的环境满足依赖要求(DSH 0.2.1-alpha.1,Node.js ^22.19.0 或 >=24.0.0)。
git clone https://github.com/popingalex/dsh-reference-render.git
cd dsh-reference-render
pnpm install
pnpm build
npm pack
dsh plugin --profile web add ./dsh-reference-render-0.1.0.tgz
典型用法¶
1. 基础引用¶
在对话文本中直接使用 [label](dsh-ref:<kind>:<id>) 语法,插件会将其渲染为 Chip。
Build completed. See [RP-42](dsh-ref:report:RP-42) for details.
2. 内容插件集成¶
内容插件可以通过注册插槽和监听事件来声明引用并提供装饰。例如,内容插件可以注册 reference.hover.content 并提供图标装饰。
ctx.effect(() => ctx.slots.register({
name: 'reference.hover.content',
select: (owner) => isOurs(owner.descriptor) ? {} : null
}, MyHoverCard))
ctx.on('reference/open', ({ descriptor }) =>
isOurs(descriptor) ? (ctx.sidebarRight.openResource(descriptor.uri), { handled: true }) : undefined)
适用场景与注意¶
- 适用场景:适用于需要在对话流中嵌入各种资源引用的场景,特别是需要统一交互体验(如悬浮预览、侧边栏跳转)的 DSH 插件开发。
- 兼容性:目前仅供 DSH 0.2.1-alpha.1 测试使用。
- 运行机制:
- 未声明的引用保持为普通 Chip,无操作(Hover 和 Click 均无效)。
- 移除该插件不会影响主机(DSH 主进程)。
- 生态说明:该插件收录在社区目录(SkillHub)中,与 DeepSeek 或幻方无官方从属关系。
总结¶
dsh-reference-render 为 DSH 插件生态提供了标准化的引用渲染层。它通过解耦渲染逻辑与业务逻辑,让内容插件专注于数据提供,而由该插件统一处理引用的展示与交互。