deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
让 DeepSeek Harness Web 的回答图文并茂,并为联网搜索内容加上 GPT 式引用角标。
中文 · English
用 @copylee/dsh-free-search 等插件联网搜索时,搜到的网页、图片墙只显示在工具调用面板里,调用结束后面板通常会被折叠。最终回答只剩一段纯文字:
dsh-better-display 解决这两件事:
| 能力 | 效果 |
|---|---|
| 引用角标 | 模型把引用写成 [1](url "标题"),渲染为上标小圆角标;悬停显示站点图标、域名和标题,点击在新标签页打开来源 |
| 来源面板 | 回答结束后在末尾汇总所有被引用的网页(按 URL 去重、按首次出现排序),可展开为卡片列表 |
| 正文配图 | 模型把 image_search / page_images / 网页结果中的相关图片以  嵌入正文,渲染为带说明文字的图片;也支持 save_images 存到工作区后的本地路径 |
| 图集 | 同一行的 2 张以上图片自动排成网格图集 |
| 大图预览 | 点击图片全屏查看,可跳转原图,Esc 关闭 |
| 加载失败兜底 | 图片失效时退化为可点击的说明链接,不留破图 |
| 完整 Markdown | 基于 dsh-better-markdown 的 markstream-react 流式渲染:Shiki 代码高亮、Mermaid、KaTeX、表格、任务列表等全部保留 |
插件分两半,不修改 Harness 源码:
宿主端 (lib/index.js)
systemPrompt.section("better-display:rich-answer")
└─ 告诉模型:引用写成 [n](url),相关图片写成 
浏览器端 (lib/client.js)
conversation.chat.node / assistant-step
|- priority -110: dsh-better-display (active)
| markstream-react
| |- link [n](url) → 引用角标 + 悬停卡片
| |- image → 带说明的图片 / 图集 / 大图预览
| `- code → stream-markdown + Shiki
| + 回答结束后的「来源」面板
|- priority -100: dsh-better-markdown (若已安装,被覆盖)
`- priority 0: Harness 内置渲染 (fallback)
为什么由模型写入 Markdown,而不是直接读取工具结果?DSH 的 assistant 渲染器只能拿到本条消息的 text / reasoning / tool-call(name,args),工具结果在另一种节点里。让模型把引用和图片写进正文,是最稳定、与搜索插件解耦的方式,任何带 URL 的工具结果(内置 web_search、web_fetch 或其它搜索插件)都能用。
两者分工:
multi_search / advanced_search / platform_search、image_search / page_images 搜图取图。结果带编号和直链,方便模型引用。安装两者:
dsh plugin --profile web add @copylee/dsh-free-search
dsh plugin --profile web add @copylee/dsh-better-display
dsh --profile web
建议在 dsh-free-search 设置页打开搜图工具(image_search / page_images),然后直接这样问:
回答里会出现上标角标 ¹ ² ³、正文图片 / 图集,末尾有「来源 · N」面板。
装上 @copylee/dsh-image-gen 后,Agent 生成的图片会直接显示在回复正文里,而不是只给一个文件:
genimg:<任务 ID> 引用,本插件会在工具结果和系统提示里要求模型写成 。background: true,例如"讲讲高斯定理,配一张示意图")期间显示同比例的"生成中"占位,文字照常流式输出;回复结束后图片才完成也没关系,占位会自动换成图片。失败时占位显示失败原因。在回答里选中文字或图片,会弹出一个小工具条:
> 引用块。这两个功能取代了 dsh-btw,两者同时安装会出现两个工具条,建议卸载 dsh-btw。设置里的「选中工具条」可以整体关闭。
像 ChatGPT 那样,模型会用方框($$\boxed{…}$$)突出关键公式、最终结果和核心结论,每条回答通常一到三处。设置里的「重点框线」可以关闭。
本插件是 dsh-better-markdown 的超集,并以更低的 slot priority 覆盖它。安装本插件后建议移除 dsh-better-markdown,避免多打包一份:
dsh plugin --profile web remove dsh-better-markdown与 dsh-genui 同样互斥:二者都替换 assistant 渲染器,只会生效一个(本插件优先级更高)。
dsh plugin --profile web add @copylee/dsh-better-display
dsh --profile web --dump-config
dsh --profile web
需要 Node.js 20+、pnpm 10+:
git clone https://github.com/copylee711/dsh-better-display.git
cd dsh-better-display
pnpm install
pnpm run check
pnpm run build
dsh plugin --profile web add "$(pwd)"
dsh --profile web
Windows PowerShell 将 "$(pwd)" 替换为 (Get-Location).Path。
配置输出应包含:
# == @copylee/dsh-better-display
- id: better-display
name: "@copylee/dsh-better-display"
config:
citations: true
inlineImages: true
maxImages: 4
dsh plugin --profile web remove @copylee/dsh-better-display
卸载会同时撤下 prompt section 与 slot 覆盖,Harness 内置渲染器随即恢复。
在 DSH 左侧栏「插件」页打开 @copylee/dsh-better-display,点组件行的配置按钮即可调整,保存后下一条回答就生效,不用重启:
| 选项 | 默认 | 说明 |
|---|---|---|
引用角标 citations |
开 | 让模型用 [n](url) 标注联网来源,显示为上标角标并汇总「来源」面板 |
正文配图 inlineImages |
开 | 让模型把搜到的相关图片嵌入回答 |
配图数量 imageCount |
由 AI 决定 | auto:模型按内容需要决定配几张(纯文字/代码类不配,外观对比、地点介绍等多配);limit:限制每条回答最多张数 |
最多张数 maxImages |
8 |
1–20,仅在「限制最多」时生效 |
同样的字段也可以直接写在 profile 的 cordis.patch.yml 的 better-display 条目里(另有高级项 sectionOrder,默认 600,控制 system prompt 段落的排序)。两个开关都关闭时不注入任何 prompt,只保留增强渲染(已有的 [1](url) 链接和图片仍按新样式显示)。
htmlPolicy="escape")。http(s) 地址;javascript:、相对路径等保持为不可点击文本。referrerPolicy="no-referrer",懒加载。pnpm install
pnpm run check # tsc + vitest
pnpm run build
pnpm pack --dry-run
主要文件:
src/index.ts:宿主端,注册「引用 / 配图」system prompt section,并在设置变更时即时刷新src/client/index.ts:注册 Markstream 组件与 assistant slot 覆盖src/client/renderer.tsx:assistant 渲染、引用角标、图片 / 图集 / 大图预览、来源面板src/client/citations.ts:引用解析(纯函数)src/client/settings.tsx:插件页里的设置表单(写回 profile 配置)src/client/workspace.ts:工作区图片路径解析(与 DSH 内置规则一致)src/client/styles.css:基于 DSH --dsw-* token 的样式,自动适配深浅色tests/:流式渲染、安全策略、引用 / 图片 / 来源面板、prompt section 测试浏览器端分成三个文件:lib/client.js 随 DSH 启动加载;Mermaid(lib/client.mermaid.js)和代码高亮(lib/client.code.js)体积较大,在回答里第一次出现流程图或代码块时才由宿主按需加载。
0.2.0-rc.2 及以上。0.1.7 至 0.2.0-rc.1 请用 0.3.8,更早的版本请用 0.1.0CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。