跳到正文
dsh-market 浏览插件 GitHub EN

JNNarrator/dsh-deckseek

阅读视图增强插件——执行过程自动收起、右缘消息导航导轨、页内查找、统一失败卡片,支持生成式 MCP Apps(SEP-1865)沙箱交互。

Star 数 ★ 1 分类 UI 增强 收录于 2026-09-07 npm dsh-deckseek

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add dsh-deckseek

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

English | 中文

🙏 鸣谢原仓库 aa2246740/dsh-better-display(MIT)及其作者与贡献者。

dsh-deckseek 是 aa2246740/dsh-better-display 的 fork,由 JNNarrator 独立维护的 DeepSeek Harness 展示与交互增强插件(MIT)。

它给 DSH 增加一个独立的 DeckSeek 阅读页签:执行过程自动折叠、最终回答完整保留,并支持三套阅读皮肤。它只改展示与交互视图——原生「对话 / 轨迹」页签、输入框、模型选择、工具与审批全部原样保留。

界面预览

DeckSeek 阅读视图

阅读视图(软卡皮肤):执行过程自动折叠、最终回答完整呈现——标题、表格、代码块、公式、引用都排在同一列里;工具栏吸顶常驻(读数 + 查找 / 动效 / 导出),右缘消息导航气泡贴附,输入框之上留白紧凑,不再被长任务列表撑出大片空白。

终端皮肤

终端皮肤(默认):窗口四角是字符边框、顶部是工作区标题栏(DeckSeek ~/work/deckseek)、底部是常驻状态栏(RUN / WAIT / IDLE + 12 轮 · 最新一轮 34 步 + ^K 命令 / ? 帮助),正文里 > 提示符开轮、⏺ ⎿ ✻ 一套字形词汇、braille spinner 转着表示在跑。三套皮肤(终端行 / 软卡卡片 / 纸面排版流)共用同一份 DOM,只换结构、密度与字号;颜色一律取自宿主主题 token,亮暗自动适配。

消息导航导轨 页内查找
消息导航导轨 页内查找
悬停气泡显示「第 N 轮 · 标题」,点击平滑跳转并闪烁标记落点,当前阅读位置自动加宽高亮 实时匹配计数、上/下跳转,命中精确滚动定位并闪烁高亮
执行过程与工具行 统一失败卡片
执行过程与工具行 统一失败卡片
折叠的回合直接给出计数(3 次工具调用 · 1 次失败),展开后每行按分类标注状态(已运行 / 已失败…),思考卡片可展开 失败原因、退出码与 stderr 摘要,外加可展开的原始记录,重试提示共用同一文案

三套阅读皮肤

在 DSH 设置的独立 DeckSeek 页里切换,即时生效,默认终端;也可以随时按 Ctrl/Cmd+K 在命令面板里换。

皮肤 取向 适合
终端(默认) 行列:等宽字体、字符边框窗口、状态栏、ANSI 角色色与工具类别色是唯一的颜色 喜欢 TUI / Claude Code 观感;盯执行过程
软卡 卡片容器:回答卡用宿主自己的 elevation(0.5px 发丝描边 + 柔光),用户卡从品牌色派生身份色 一般阅读;上下文分明、层次清楚
纸面 排版流:没有容器,只有标题层级与文章尺度的正文节奏,颜色只留给失败 长文精读、导出打印

三套皮肤只表达结构、密度、字体与圆角;颜色全部取自宿主主题 token,亮暗主题自动适配,插件不携带自己的调色板。皮肤切换不改变组件树——同一份 DOM,只有样式表换一册;详见 docs/design/reading-skins.md。

终端皮肤额外有:字符边框的窗口四角、可选的屏幕纹理(扫描线 / 暗角 / 辉光,三档,默认关闭)、底部状态栏(RUN / WAIT / IDLE + 轮数读数 + 两个面板键)、Ctrl/Cmd+K 命令面板与 ? 快捷键面板、j k g G / 导航键、工作区标题栏、流式回答末尾的 ▌ 光标、braille spinner + 每轮动词 + 右对齐耗时、工具调用按类别取色的 ⏺、右对齐的数字列、折叠回合的计数摘要(39 次工具调用 · 4 个文件 · 2 次失败)、收尾读数行的挂右发丝线、用户回合的整行底纹带,以及空闲屏的 braille 点阵标识。设计取舍与实测参数见 terminal-skin-v3.md、terminal-skin-v4.md、terminal-skin-v5.md。

功能特性

阅读视图

  • 执行中实时呈现原生步骤、思考与进度;任务成功后自动收起过程,保留最终回答与交互卡片。
  • 全部已知记录类型(系统提示词、执行过程、轮次统计等)均已适配;未知类型自动回退为可复制的原始记录卡片——DSH 尚未稳定,兜底始终保留。
  • 工具 / 命令失败以统一错误卡片呈现:失败原因、退出码与可展开的原始记录。
  • 长思考折叠为淡出卡片并两行跟随,展开即暂停滚动,可手动恢复。
  • 无损保真:原生 Markdown、代码高亮、数学公式、表格、图片与工具事实 100% 忠实呈现。

导航与查找

  • 消息导航导轨:右缘最小化气泡导轨(编辑器 minimap 风格)——你发送的每条消息对应一颗小刻度,不占布局、会话栏保持居中;当前阅读位置自动加宽高亮,悬停显示「第 N 轮 · 标题」,点击平滑跳转并闪烁标记落点。回合多时刻度自动压缩排布,始终全部可见(窄屏自动隐藏)。
  • 轮次键盘导航:Alt+↑ / Alt+↓ 在你的消息之间跳转,与导轨同一套定位逻辑。
  • 阅读页查找:覆盖你的问题与模型回答;匹配计数、上 / 下跳转、命中精确滚动定位并闪烁高亮;所有匹配块淡底标记,字符级出现位置经 CSS Custom Highlight API 精确染色、当前命中反白加强。
  • 会话阅读位置记忆:再次打开会话自动回到上次阅读位置,附短暂提示;「回到最新」随时可跳回底部。

导出与复制

  • 会话导出:阅读页工具栏一键把本轮会话导出为 Markdown(用户提问 + 模型回答,按显示顺序,过程保持折叠),文件名自动带时间戳。
  • 代码块一键复制;回答中的表格悬停即见「复制为 CSV」(RFC 4180,自动处理引号与换行)。

交互与状态

  • 状态与跟随:思考卡片紧跟最新并在结束后停在底部;思考时显示「正在思考中… 用时」,工具按类别显示阅读中/已阅读、搜索中/已找到等状态;滚动离开底部时底部居中浮出「↓ 回到最新」胶囊,带未读条数;发送或插话消息后自动跳回底部。
  • 宽度随容器:阅读列默认撑满左侧对话容器(上限 1100px 只为可读性封顶),不再沿用原生聊天列那套为气泡预留的窄宽度。
  • 动效可关:工具栏动效开关或跟随系统 prefers-reduced-motion,两处开关一次停下全部动画。
  • 双语 UI:全部阅读页文案随 DSH 应用语言切换(中文 / English),无需重启。
  • 自适应主题与字号:深浅色实时同步、零闪烁;字号跟随浏览器缩放与宿主的正文字号设置(皮肤的行高、前导格、块间距一同随动)。

兼容

  • 生成式 MCP Apps(SEP-1865):模型在回答中输出 mcp-app 代码块即自动挂载为活体交互卡片,在 sandbox="allow-scripts allow-forms" 沙箱 iframe 中运行,通过 JSON-RPC postMessage 双向通信(ui/initialize、ui/resize、ui/submit 等),卡片高度随内容在 60–2400px 之间自适应。
  • 306 项单元与组件测试:覆盖消息投影、Markdown 管道、SEP-1865 解析、自适应高度预算、两行流式跟随与它的延迟预算,以及搜索定位、复制回执、未读条数、阅读列宽度契约、皮肤分片、光标钩子、样式表契约(颜色只取宿主 token、token 引用可解析、字形一格宽)等界面交互(happy-dom)。

快捷键

键 作用
Alt+↑ / Alt+↓ 在你的消息之间跳转(输入框内打字时不触发)
Cmd/Ctrl+F 打开 / 关闭阅读页查找
Enter / Shift+Enter 查找中跳到下一个 / 上一个命中
Esc 关闭查找
← → Home End 工具卡内切换标签页

安装

发布渠道有两处,版本不同步:npm 上当前是 0.6.0,更新的版本以 GitHub Releases 的 tarball 为准(本仓库最新 0.11.0)。

0.11.0 起只支持 DSH ≥ 0.1.7-rc.1:peer 范围收窄为 >=0.1.7-rc.1 <0.2.0-0,不再兼容 0.1.3;装在更旧的宿主上会被 peer 校验判为不兼容,需 dsh plugin allow-version 放行。升级到 0.11.0 还有一处破坏性变更:设置命名空间由 deckseek 改为 dsh-deckseek,旧文档里的 deckseek.skin 不再被读取(皮肤会落回默认软卡),改名即可保留原选择。详见 CHANGELOG。

# 从 npm 安装(0.6.0)
dsh plugin --profile web add dsh-deckseek

# 或从 Releases 下载 tarball 后安装最新版
dsh plugin --profile web add ./dsh-deckseek-0.11.0.tgz

--profile 取 web / desktop / headless,按你实际使用的宿主形态选择。装好后重启宿主。

已收录于:

开发

npm test                                  # 252 项(node --test + happy-dom)
npx tsc -p tsconfig.json --noEmit         # 类型检查
DSHX_HARNESS=<DSH 检出路径> npm run build  # 构建 lib/(client + host 两半)

构建若报 Set DSHX_HARNESS to the checkout used for this build. 或 DSHX externalClientBundle adapter is missing,说明 devkit(tools/dshx)不在 DSHX_HARNESS 指向的检出里——用 DSHX_DEVKIT=<带 tools/dshx 的检出> DSHX_HARNESS=<目标检出> npm run build 分别指。

  • 依赖来自 DSH 检出,而非 npm:开发依赖通过 node scripts/link-harness-dependencies.mjs <DSH 检出路径> 以符号链接接入一个已构建的 Harness 检出,不要在本目录执行 pnpm install / pnpm add。
  • package-lock.json 是 --legacy-peer-deps 语义下的尽力而为产物:已发布的 @deepseek-ai/dsh-client-ui-settings 对 @deepseek-ai/dsh-client-ui-primitives 声明了 ^0.0.1-rc.1 peer,与本插件 0.1.x 区间无法相交,严格解析必然 ERESOLVE。
  • 因此不要在本目录运行 npm ci——它无法复现可用的依赖树。
  • 本地验证最新版时注意:profile 用 file: 指向 tarball 时,重建同名 tarball 后单独 dsh plugin --profile web install 不会更新(报 Already up to date)。需要 rm -rf <profile>/node_modules/dsh-deckseek 后 dsh plugin --profile web install --force,再逐字节比对 lib/client.js。

其他

v0.11.0 · 非官方 DSH 展示与交互增强插件。只改展示与交互视图,不改 Agent 核心执行逻辑、SDK 或模型凭据。

内容来自项目 README(GitHub)↗

评论

评论存放在 GitHub Discussions。用 GitHub 账号登录后可发表评论或点表情。