🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

阅读视图 cainiaoNO1/dsh-better-display

DeepSeek Harness
cainiaoNO112 天前有提交已提供中文文档扫描:含敏感能力

折叠执行过程,聚焦最终回答,思考实时翻译

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add cainiaoNO1/dsh-better-display
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
L4 · 真实安装等级说明 →
数据截至 2026/10/29·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 12 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 46 处,展示前 19 条)
  • 读取本地文件
    lib/dsh-better-display.js:80
    if (existsSync(join(current, ".git"))) return current;
  • 读取本地文件
    lib/dsh-better-display.js:89
    entries = await readdir(rootPath, { withFileTypes: true });
  • 读取本地文件
    lib/dsh-better-display.js:98
    await access(join(rootPath, entry.name, "SKILL.md"));
  • 读取本地文件
    lib/dsh-better-display.js:115
    return candidates.find((path) => existsSync(join(path, "SKILL.md")));
  • 读取本地文件
    lib/dsh-better-display.js:267
    if (!existsSync2(customFile)) return {};
  • 读取本地文件
    lib/dsh-better-display.js:268
    const raw = readFileSync(customFile, "utf8");
  • 写入本地文件
    lib/dsh-better-display.js:277
    if (dir) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    lib/dsh-better-display.js:280
    writeFileSync(customFile, JSON.stringify(next, null, 2), "utf8");
  • 执行外部命令固定命令
    lib/dsh-better-display.js:341
    spawn("open", ["-R", targetPath], { detached: true, stdio: "ignore" });
  • 执行外部命令固定命令
    lib/dsh-better-display.js:343
    spawn("explorer.exe", [`/select,${targetPath}`], { detached: true, stdio: "ignore" });
  • 执行外部命令固定命令
    lib/dsh-better-display.js:345
    spawn("xdg-open", [targetPath], { detached: true, stdio: "ignore" });
  • 写入剪贴板
    lib/client.js:703
    void navigator.clipboard?.writeText(prompt);
  • 发起网络请求
    lib/client.js:15324
    var next = parser.fetch().text;
  • 发起网络请求
    lib/client.js:15690
    var token = parser.fetch();
  • 发起网络请求
    lib/client.js:16974
    var nxt = parser.fetch().text;
  • 发起网络请求
    lib/client.js:16978
    nxt = parser.fetch().text;
  • 发起网络请求
    lib/client.js:16984
    nxt = parser.fetch().text;
  • 发起网络请求
    lib/client.js:17070
    var next = parser.fetch().text;
  • 写入剪贴板
    lib/client.js:28948
    void navigator.clipboard?.writeText(path3);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-util-workspace-path@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-store@deepseek-ai/dsh-client-ui-chat@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-layout@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-better-display(自用维护版) DeepSeek Harness Web GUI 的「阅读」视图插件。本仓库从上游 aa2246740/dsh-better-display v0.3.6 分叉而来,是个人自用维护版:换掉官方 DSHX 构建链,改成可独立复现的 esbuild + lightningcss 构建,作为本地插件长期迭代。 给 Harness 加一个 阅读 页签:执行时能看到步骤、思考和进度;整轮成功结束后把过程收起来,只留下最终回答。原版「对话 / 轨迹」、输入框、模型选择、工具与审批全部保留。 一、这个仓库解决什么 | 能力 | 说明 | | 阅读视图 | 独立页签,聚焦最终回答,过程按轮次折叠 | | 思考卡片 | 实时跟随滚动、暂停/继续跟随、手动点击「展开阅读」锁定展开不被自动折叠吞入、可手动滚轮接管 | | 思考翻译 | 设置面板选定固定模型,英文 reasoning 异步译为中文显示,每张卡片可一键切回原文;默认关闭 | | 右上角开关组 | 自动折叠 / 自动展开 / 自动翻译 / 自动跟随,与「阅读 / 对话 / 轨迹」同一行靠右,全局生效并持久化 | | 过程折叠 | 三档强度(不折叠 / 标准折叠 / 过程摘要),默认开启 | | 毛玻璃 | 可选半透明背景,默认关闭 |
展开完整文档(README 剩余 1 节)
dsh-better-display(自用维护版)

DeepSeek Harness Web GUI 的「阅读」视图插件。本仓库从上游 aa2246740/dsh-better-display v0.3.6 分叉而来,是个人自用维护版:换掉官方 DSHX 构建链,改成可独立复现的 esbuild + lightningcss 构建,作为本地插件长期迭代。

给 Harness 加一个 阅读 页签:执行时能看到步骤、思考和进度;整轮成功结束后把过程收起来,只留下最终回答。原版「对话 / 轨迹」、输入框、模型选择、工具与审批全部保留。

一、这个仓库解决什么

| 能力 | 说明 |
| 阅读视图 | 独立页签,聚焦最终回答,过程按轮次折叠 |
| 思考卡片 | 实时跟随滚动、暂停/继续跟随、手动点击「展开阅读」锁定展开不被自动折叠吞入、可手动滚轮接管 |
| 思考翻译 | 设置面板选定固定模型,英文 reasoning 异步译为中文显示,每张卡片可一键切回原文;默认关闭 |
| 右上角开关组 | 自动折叠 / 自动展开 / 自动翻译 / 自动跟随,与「阅读 / 对话 / 轨迹」同一行靠右,全局生效并持久化 |
| 过程折叠 | 三档强度(不折叠 / 标准折叠 / 过程摘要),默认开启 |
| 毛玻璃 | 可选半透明背景,默认关闭 |
| 产物打开方式 | 系统应用(默认)或右侧栏预览 |
| mcp-app 卡片 | 最终回答里的 | 官方能力接入 | 反馈、工具详情、文件卡片、文件链接走官方 slot,不自造轮子 |

二、构建方式(已脱离 DSHX)

上游用官方 dshx 工具链构建客户端 bundle,那套工具不随 npm 发布,本机难以复现。
本仓库用 build.mjs 直接产出宿主可加载的产物: sh
npm install --legacy-peer-deps # 官方 @deepseek-ai/dsh-* 包互相锁版本,必须忽略 peer 冲突
npm run build # → lib/dsh-better-display.js + lib/client.js
npm run verify # 冒烟:产物满足宿主加载契约

build.mjs 做了三件上游 tsdown 配置在做的事:

1. CSS Module 编译:lightningcss 按 [hash]_[local] 生成作用域类名并压缩,输出「注入 + 导出类名映射」的模块,与官方产物结构一致。
2. Client bundle 包装:用 window.__ModuleLoader__.load({ id, factory }) 注册,模块体保持惰性,首次 materialize 才执行(CSS 注入因此也在那时发生)。
3. 平台外部化:只把 react、react/jsx-runtime、@deepseek-ai/dsh-client-store、 @deepseek-ai/dsh-client-ui-primitives 留给宿主共享模块表,其余(katex、micromark 全家桶等)全部内联进 bundle。

npm run verify 会校验:host 侧导出 name/inject/apply、client 只 require 平台模块、 factory 能真正执行、8 个 CSS Module 都已注入。

三、接入本机 DSH(link 方式,改完即生效)

sh
npm run build
dsh plugin --profile web add link:/Users/ymj/Desktop/code/dsh-better-display

之后每次改完源码,只需: sh
npm run build # 重新产出 lib/

然后重启 dsh web 进程并刷新页面(dsh.bundle 在开机时捕获,运行中的 Host 不会热挂载新 bundle)。

卸载: sh
dsh plugin --profile web remove dsh-better-display

不要手动往 profile 的 cordis.patch.yml 里再写一条 dsh-better-display insert,会和 dsh.bundle 重复挂载。

四、目录结构

text
build.mjs 自建构建脚本(esbuild + lightningcss) verify.mjs 产物冒烟校验 src/dsh-better-display.ts Host 侧入口(webServer 路由、技能状态探测) src/client/ 浏览器侧(Reader / ReasoningCard / 折叠 / Markdown / 设置面板) src/client/.module.css CSS Module,构建时编译成注入式样式 tests/ 纯逻辑单测(node:test + tsx) lib/ 构建产物,随仓库提交,便于直接安装

五、常用命令

sh
npm run typecheck # tsc --noEmit
npm run test # node --import tsx/esm --test tests/.test.ts
npm run check # typecheck + test + build + verify
npm run build:watch # 监听源码增量构建

六、兼容性

- DeepSeek Harness 0.2.x(@deepseek-ai/dsh-* peer 范围 >=0.2.0-rc.1 <0.2.1)
- Node.js ^22.19.0 || >=24
- 只改展示层,不触碰 Agent 执行、SDK 与模型凭据

七、思考翻译

设置 → 本插件 → 把思考翻译成中文 打开后,在下方选定一个固定模型(provider + model 列表来自宿主(ctx.llm)。

只在「你正看着它在思考」时翻译

翻译不会扫历史。触发条件是同时满足:

1. 你切到了这个会话(阅读视图只渲染当前激活会话,conversation.view 是 only: viewId);
2. 这段思考此刻仍在输出(节点 status === 'running' 且它是最后一个 reasoning 段)。

子代理同理:只有你切到那个子代理的会话、且它正在打思考,才会翻。历史记录里的英文思考保持原样,不产生任何调用——切会话不再是一次性账单。

节奏是「首次立即翻 + 每 1.6 秒节流跟进 + 收尾补一次」,所以边写边看就有中文可读;输出结束后保留最后一次译文,不会闪回英文。

卡片状态

| 状态 | 按钮文案 | 卡片正文 |
| 未翻译 | 翻译(仅英文卡片) | 原文(点击立即手动发起翻译) |
| 翻译中 | 正在翻译… | 原文(不闪烁) |
| 已翻译 | 译文 | 中文译文 |
| 原文较长 | 译文(仅前半段) | 截取设定上限字数的译文(默认 12000 字符,可设置) |
| 失败 | 翻译失败:<原因> | 原文(点击可重试) |

点按钮随时在原文与译文之间切换(aria-pressed 反映当前是否在看原文)。中文占主导的思考、短于 12 字的片段不会触发翻译,纯代码块也不会——既省钱也避免把通顺的中文重写一遍。
对于切会话之前就已经输出完成的思考,卡片右上角会显示「翻译」文字按钮,点击即可单独手动翻译,按需调用。

单次翻译字数上限设置

设置面板提供「单次翻译字数上限」配置,支持输入自定义数值与快捷预设按键(6000 / 12000 (默认) / 25000 / 50000 字符):
- 思考字数在上限内时全量翻译,卡片显示 译文;
- 超出上限时自动截取前半段翻译,卡片标记 译文(仅前半段),避免过度消耗 Token 或超时;
- 点击「译文」随时切回 100% 完整原文;
- 上限写进根 store,所有会话生效并持久化。

附加提示词

模型选择框下方有一个「附加提示词」输入框,内容会拼接到每次翻译的系统提示词末尾 (标为「用户附加要求(优先遵守)」,因为模型对末尾指令遵从度更高)。留空则完全不影响默认行为。
上限 2000 字;提示词参与译文缓存键,改提示词不会误命中旧译文。

例如填「除了代码和文件路径,其余英文术语也译成中文」,children 就会从 children 变成「子元素」,而不是默认规则下的保留英文。

实现

翻译只在宿主侧发起:浏览器 POST /better-display/translate-reasoning,宿主用 ctx.llm.prepareCall + stream 走一次纯文本补全,90 秒超时,客户端断开即中止。
译文按 provider + model + 提示词散列 + 文本散列 缓存在浏览器内存(上限 240 条),同一段思考不会重复付费。宿主没有 LLM 服务时该接口返回 503,插件其余功能不受影响。

八、计划

- [x] 思考卡片接「翻译模型」:设置面板选定固定模型,把英文 reasoning 异步译为中文展示,保留原文切换
- [x] 翻译只在会话激活且思考正在输出时触发;子代理同理
- [x] 设置面板支持附加提示词,注入每次翻译调用
- [ ] 折叠动效继续对齐官方 ChatView 的滚动行为

九、许可

展示与 Markdown 部分来自 DeepSeek Harness(MIT),动效参考 Transitions.dev。
本仓库代码遵循 MIT。上游版权见 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓cainiaoNO1/dsh-better-display
分享 · DeepSeek Harness Hub
cainiaoNO1/dsh-better-display

折叠执行过程,聚焦最终回答,思考实时翻译

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部