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

消息复制增强 Asianfleet/dsh-message-copy-enhance

DeepSeek 客户端v0.2.1
Asianfleet76 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

复制模型回复时保留链接公式与代码格式

29.9/100
综合分
4
GitHub 星标
284
npm 周下载
—/5
用户评分

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Asianfleet/dsh-message-copy-enhance.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 76 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-message-copy-enhance @ 0.2.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/21 23:44:12

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

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 复制为Markdown
  • 保留链接与公式源码
  • 保留代码围栏

把 dsh 助手输出复制为 Markdown,保留链接、LaTeX 源码和代码围栏。

README

由 DeepSeek 最新模型翻译生成
dsh-message-copy-enhance npm version npm downloads License: MIT TypeScript English · 一个 DeepSeek Harness 客户端 UI 插件:当你在模型消息中选中文本并复制时,剪贴板内容会被重写为 Markdown,这样链接、LaTeX 源码、代码围栏语言信息等就不再丢失。 工作原理 DSH 通过 dsh-client-ui-conversation → dsh-client-ui-primitives 渲染模型输出: | 内容 | DOM 结构 | 恢复方式 | | 链接 | | 直接取 href,输出 label | | 行内 / 块级 LaTeX | KaTeX 渲染的 .katex / .katex-display | 从 MathML 分支中的 取回 TeX 源码,输出 $...$ / $$...$$ | | 代码块 | .md-code-block(横幅显示语言)+ pre | 输出围栏代码块;语言来自 language- 类或横幅的 infostring | | 标题 / 强调 / 列表 / 引用 / 表格 | 标准 HTML | 恢复为 GFM |
展开完整文档(README 剩余 1 节)
dsh-message-copy-enhance

npm version
npm downloads
License: MIT
TypeScript

English ·

一个 DeepSeek Harness 客户端 UI 插件:当你在模型消息中选中文本并复制时,剪贴板内容会被重写为 Markdown,这样链接、LaTeX 源码、代码围栏语言信息等就不再丢失。

工作原理

DSH 通过 dsh-client-ui-conversation → dsh-client-ui-primitives 渲染模型输出:

| 内容 | DOM 结构 | 恢复方式 |
| 链接 | | 直接取 href,输出 label |
| 行内 / 块级 LaTeX | KaTeX 渲染的 .katex / .katex-display | 从 MathML 分支中的 取回 TeX 源码,输出 $...$ / $$...$$ |
| 代码块 | .md-code-block(横幅显示语言)+ pre | 输出围栏代码块;语言来自 language- 类或横幅的 infostring |
| 标题 / 强调 / 列表 / 引用 / 表格 | 标准 HTML | 恢复为 GFM |

该插件在 捕获阶段 监听 document 上的 copy 事件,仅当选区起始于 [data-chat-flow-kind="assistant"] 消息内部且包含 markdown 关键元素时才接管:

1. 将选区扩展到完整的 .katex 元素(在公式中间选中也能拿到完整源码)
2. 用 Range.cloneContents() 克隆选区 DOM
3. 用内置的零依赖 DOM→Markdown 转换器恢复 markdown(src/client/toMarkdown.ts,用 TypeScript 编写,类型擦除后内联进 bundle)
4. preventDefault() 并写入 text/plain 和 text/markdown

其他选区(用户气泡、工具卡片、纯文本)和空选区完全不受影响;如果转换失败,会自动恢复默认复制行为。

项目结构

dsh-message-copy-enhance/
├── package.json # dsh.client 元数据(客户端插件声明) ├── tsconfig.json # 类型检查配置(strict,包含 src/test/vite.config.ts) ├── vite.config.ts # vite 构建(DSH module-loader 输出)+ vitest 配置 ├── src/client/ │ ├── index.ts # 插件入口:复制拦截 + apply/inject(TS,apply(ctx) 使用官方 │ │ # @deepseek-ai/cordis Context 类型,与 dsh-client-ui- 相同) │ └── toMarkdown.ts # DOM→Markdown 转换器(TS,零依赖) ├── lib/ │ ├── index.js # 宿主侧空操作插件(由 DSH Loader 加载的 JS 入口) │ └── index.d.ts # 宿主入口的类型声明 ├── dist/client.js # 构建产物(预生成) └── test/ # vitest(.test.ts):转换器 / 打包 / 包布局

构建与测试

npm install # 开发依赖:typescript / vite / vitest / @types/node / linkedom / @deepseek-ai/cordis(官方类型)
npm run typecheck # tsc -p tsconfig.json — 完整类型检查(严格模式)
npm run build # vite build — 将 src/client 打包为 dist/client.js,采用 DSH 模块加载器格式
npm test # vitest run — 36 个用例(转换器 / 真实打包 / 包布局)
npm run test:watch # vitest — 监听模式
npm run test:coverage # vitest run --coverage — v8 覆盖率报告

发布

发布由 release-it 驱动,并使用 Conventional Commits 变更日志。请在 main 分支上、工作区干净的状态下运行:

pnpm release

它是交互式的:首先会展示自上一个标签以来的提交作为变更日志预览(按类型分组,包含 conventional-commits 推荐版本),然后你从提示中选择下一个版本(patch / minor / major / 预发布变体 / 自定义)。按顺序会发生以下事情:

1. 检查(npm run check:release):版本是有效的 SemVer,该版本尚未发布到 npm(或自其标签以来有新的提交),GITHUB_TOKEN 已设置,npm 已认证;然后运行类型检查和测试套件。
2. 提示 — 打印变更日志预览,并交互式选择下一个版本(显示来自 conventional commits 的推荐升级;feat → minor,fix/perf/revert → patch,破坏性变更 → major)。
3. 变更日志 — 根据自上一个标签以来的提交重新生成 CHANGELOG.md,置于所选版本下。
4. 构建 — npm run build(DSH 模块加载器客户端打包)。
5. 发布 — 提交 chore(release): vX.Y.Z,打标签 vX.Y.Z,推送到 GitHub,创建 GitHub Release(发布说明来自变更日志),然后执行 npm publish。

前提条件:

- 已导出 GITHUB_PAT_TOKEN(一个 GitHub PAT — 具有 repo 范围的经典令牌,或在本仓库上具有 Contents: Read and write 权限的细粒度令牌;gh auth token 也可以;GITHUB_TOKEN 可作为后备),并已 npm login。协作者预检查会被跳过(github.skipChecks),因为细粒度令牌在该端点上会收到 403;GitHub 在创建发布时仍会强制执行真实权限。
- 提交遵循 Conventional Commits;脚本仅识别这些类型。

实用变体:

pnpm release:dry # 试运行:预览所有内容而不做任何更改
pnpm release -- --increment=patch # 跳过提示并强制 patch 升级(或 minor/major)
pnpm release -- --ci # 完全非交互式(用于 CI;回退到补丁版本号递增)

注意:如果设置了 CI 环境变量,release-it 会自动切换到非交互模式。

安装

dsh plugin --profile desktop add dsh-message-copy-enhance

升级

dsh plugin --profile desktop add dsh-message-copy-enhance@latest

此包尚未发布 1.0 版本,像 ^0.1.0 这样的脱字符范围仅覆盖补丁版本(0.1.x)——次版本递增(0.1 → 0.2)超出了该范围,因此 dsh plugin update 不会获取到它。请使用 @latest(或 @)显式升级。

用法

在任意模型回答中选中内容并按 Ctrl/Cmd+C,然后粘贴到 Typora / Obsidian / VS Code / 任意 markdown 编辑器中,即可获得完整的 markdown。

限制

- 跨多条消息的选区不会被拦截(仅处理起始于助手消息内部的选区)。
- 被渲染白名单过滤掉的链接(例如 file:、相对链接)本身就没有 href,无法恢复。
- 代码块仅恢复选中的行(不会强制展开整个代码块);当选中区域不包含语言标识行时,语言标签会缺失。
- 显示为 .katex-error(KaTeX 渲染失败)的元素会以 $source$ 形式输出。
- 表格以 GFM 管道表格形式输出;| 会被转义。

许可证

MIT — 版权所有 (c) 2026 Asianfleet
预览分享卡片长什么样 ↓Asianfleet/dsh-message-copy-enhance
分享 · DeepSeek Harness Hub
Asianfleet/dsh-message-copy-enhance

复制模型回复时保留链接公式与代码格式

这是你的仓库?认领条目

回到顶部