At a glance
What it does
DeepSeek Harness web plugin that turns large pasted text into session-workspace attachments.
Web Profile
Not declared in supplied evidence
Evidence-verified
Checked Sep 10, 2026, 2:15 PM UTC
Code-evidenced contributions
What it adds to DSH
Intercepts qualifying pasted text in the web composer and replaces it with a saved-file reference.
Mechanism evidence ↗Provides a host tool for saving pasted text into a session workspace when the client listener does not handle it.
Mechanism evidence ↗Before you choose it
When text pasted into the web composer reaches the configured threshold (500 characters by default), this bundle saves it as a timestamped .txt file in the current session workspace and inserts a file reference into the composer. It also declares a save_paste host tool as a fallback path.
Best for
DeepSeek Harness web-profile users who paste long logs, drafts, source text, or other material they want the model to reference as a file.
Common tasks
- Keep a long pasted log or document out of the composer while retaining a workspace file reference.
- Use saved paste files as attachments that a model can read from the current session workspace.
- Provide a host-tool fallback for large text if the browser paste listener does not intercept it.
Permissions and data
Handles pasted composer text and writes accepted text to the current session workspace.
Permissions- Registers a web-client paste listener.
- Uses the host pasteStore/savePaste path to create text files in the session workspace.
- Documented output path: pastes/<timestamp>.txt in the current session workspace.
- The supplied README states that the plugin makes no network requests.
- No credential requirement is declared for the paste-saving behavior.
Limitations
- Only the web client is declared as the client platform.
- Text above the documented 1 MiB limit is rejected and falls back to ordinary paste rather than being saved.
- The source describes a fallback tool, but using it automatically depends on model behavior or project instructions.
- The README's npm release details differ from the supplied package manifest version; use the pinned source bundle for this listing.
What DSHub checked
- Pinned source commit, package manifest, and bundle patch structure were verified.
- The manifest declares Node ^22.19.0 || >=24.0.0 and listed DeepSeek Harness peer dependencies.
- The bundle patch declares dsh-auto-paste with minChars set to 500.
What DSHub did not check
- Installation and browser paste behavior were not executed.
- Actual file creation, fallback behavior, model access to saved files, and network behavior were not independently runtime-tested.
Pinned install
Install dsh-auto-paste
This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.
Maintainer source
Project README
dsh-auto-paste
A DeepSeek Harness plugin generated by
create-dsh-plugin(tool template) and extended with a web client paste listener. 由 create-dsh-plugin 生成并扩展的 DeepSeek Harness 插件:输入框大段粘贴自动存为附件文件。
Release / 发布状态
- npm:
dsh-auto-paste@0.1.2(npm 页面)—— 已发布到官方源registry.npmjs.org,dist-tag: latest。安装:npm i dsh-auto-paste(或--save-exact锁版)。 - 源仓库:
https://github.com/sakuraqqq/dsh-auto-paste,tagv0.1.0。 - 许可:MIT(见下)。
- 同步提示:npm 发布后国内镜像(npmmirror)同步有几秒到几分钟延迟,以官方 registry 为准。
License / 许可
MIT License — Copyright (c) 2026 misakamaster。 本插件以 MIT 许可开源:可自由使用、修改、再分发(含商用),需保留版权声明与许可文本。详见 LICENSE。 反馈(bug/建议)欢迎提交:QQ 群测试反馈或直接联系作者。
What it does / 功能
Web 客户端粘贴钩子(主路径) —
dsh.client.platform: web。在输入框粘贴超过阈值(默认 500 字符)的文本时:- 客户端拦截粘贴事件,通过现有 connection RPC(
/api→ Typert gateway)调用宿主pasteStore/savePaste; - 宿主把文本写入当前会话工作区的
pastes/<时间戳>.txt; - 输入框里插入文件路径引用(如
[已保存大段粘贴为附件: pastes/20260815-103000.txt (1234 字符)]),消息里引用该路径,模型可读该文件。 - 保存失败时回退为普通粘贴(原始文本直接进输入框),不丢数据。
- 超过 1 MiB 的文本会被服务端拒绝(大小上限,防资源耗尽):报错并回退为普通粘贴,不落盘。
- 客户端拦截粘贴事件,通过现有 connection RPC(
save_paste 工具(纪律兜底) — 宿主同时注册
save_paste工具,模型在用户贴大段文字时可主动调用,把文本持久化为pastes/<时间戳>.txt并在回复中引用路径。建议在项目AGENTS.md加一行纪律:## dsh-auto-paste 纪律 用户粘贴大段文字(约 500 字符以上)时:若输入框钩子未拦截,主动调用 save_paste 工具 把文本存入 pastes/<时间戳>.txt,并在回复中引用该工作区相对路径,不要复述原文。
Install / 安装与激活
方式一:从 npm 安装(推荐)
npm i dsh-auto-paste # 最新版(dist-tag: latest);--save-exact 可锁版
npm i dsh-auto-paste@0.1.2 # 或指定版本
# 在插件父目录执行,以包名注册到目标 profile:
dsh plugin --profile web add dsh-auto-paste
dsh --profile web # 重启 web profile,观察: [dsh-auto-paste] host ready ...
# 刷新浏览器页面后,控制台可见: [dsh-auto-paste] client paste listener ready (minChars=500)
方式二:本地目录安装(开发/调试)
# 在插件父目录(本仓库根)执行;相对路径锚定调用目录:
dsh plugin --profile web add ./dsh-auto-paste
dsh --profile web
改动插件后:pnpm install && pnpm run build(tsc → dist/),然后重启 dsh --profile web 并刷新页面。minChars 阈值在 cordis.patch.yml 的 row config 中调整。
Verification without an API key / 无 key 验证
dsh --profile web --dump-config | grep dsh-auto-paste # 配置层含本行
dsh plugin --profile headless add ./dsh-auto-paste
dsh --profile headless "run a probe" # host 半身加载;模型调用会 MISSING_CREDENTIAL
Manifest checklist / 清单自查
-
dsh.bundle.patch→./cordis.patch.yml(dsh 加载插件的硬性要求,缺失只会被当作普通依赖安装) -
dsh.client.platform: web+exports["./client"]→dist/client.js -
exports["./typert"]→dist/typert.host.js(typert-loader 自动注册 remote 调用) - 代码无外发数据:插件不发起任何网络请求,只写工作区
pastes/下的本地文件
Dependencies pinned / 依赖锁定
@deepseek-ai/dsh-tools:0.1.0-rc.6(exact — thenext-tag line; npmlatestis stale).@deepseek-ai/cordis:^4.0.1(peerDependency — host provides it; runtime import ofServiceresolves through the profile's node_modules).zod:^4.4.3(Typert host schema instances, same line as in-box host remotes).
Pitfalls / 坑(从真实 spike 提炼,防呆)
- Node version: DSH requires Node ^22.19.0 || >=24.0.0. Older Node (e.g. v22.17) only warns EBADENGINE but may hit runtime issues — upgrade if you can.
- Node 版本:DSH 要求 ^22.19.0 || >=24.0.0。旧版本(如 v22.17)只告警 EBADENGINE,不阻断,但建议升级。
- npm dist-tag trap (the big one):
@deepseek-ai/dsh-toolslatestis a STALE 0.0.1-rc.1; the real line is under thenexttag (0.1.0-rc.x). This scaffold pins the next-tag version for you — nevernpm i @deepseek-ai/dsh-toolsover it.- npm dist-tag 坑(最大):
@deepseek-ai/dsh-tools的 latest 是过期的 0.0.1-rc.1,正确版本在 next tag。本脚手架已锁 next 版本,勿再手动 npm i 覆盖。
- npm dist-tag 坑(最大):
- Version-line alignment: keep every
@deepseek-ai/dsh-*package on the same0.1.0-rc.xline so pnpm does not install two module copies.- 版本线对齐:所有 @deepseek-ai/dsh-* 包统一用同一 0.1.0-rc.x 线,避免 pnpm 装两份模块。
@deepseek-ai/cordisis a peerDependency: import onlytype { Context }where possible (erased at compile). At runtime the host hands youctx— theServicebase class import resolves through the profile's node_modules.- @deepseek-ai/cordis 是 peerDep:尽量只 import type(编译期擦除),运行时 ctx 由宿主传入。
- Pure ESM: package.json must set
"type": "module"; build withmodule: esnext+moduleResolution: bundlerto keep bare specifiers.- 纯 ESM:package.json 必须 "type": "module";tsc 用 module:esnext + moduleResolution:bundler 保留 bare specifier。
dsh plugin add <dir>anchors relative paths to the INVOKING directory — run it from the parent directory, not from inside the plugin.- dsh plugin add <dir> 的相对路径锚定调用目录——要在插件的父目录执行。
- In the bundle
cordis.patch.yml,nameis a package name (resolved via node_modules /$DSH_HOME/profiles/node_modules), not a relative path.- bundle 的 cordis.patch.yml 里 name 用包名(走 node_modules 解析),不要用相对路径。
- Registrations are effects:
ctx.tools.register()/ctx.on()auto-dispose on unload. Wrap your OWN resources (timers/connections) inctx.effect(() => { acquire; return cleanup }).- 注册是 effect:ctx.tools.register()/ctx.on() 卸载自动清理;自己的资源(timer/连接)要包 ctx.effect(() => {…; return cleanup})。
- Load order = service dependencies, never file order:
export const inject = ['tools']makes the plugin wait untilctx.toolsis ready.- 加载顺序靠服务依赖(inject),不靠文件顺序。
- Full end-to-end (model actually calls your tool) needs
DEEPSEEK_API_KEY; without it--verifyproves load/list/event, and the model call fails with MISSING_CREDENTIAL.- 端到端(模型真正调工具)需 DEEPSEEK_API_KEY;无 key 时 --verify 只能证明加载/列出/事件,模型调用会 MISSING_CREDENTIAL。
Operate deliberately
Install and manage
Prerequisites and target Profile
Target: Web Profile
Delivery: Dsh Bundle Git — sakuraqqq/dsh-auto-paste#32295b1d5b0cc6830b2ab3ffde84f51859bf28f2。
Verify, update, and remove
Show lifecycle commands
dsh plugin --profile web listCompatibility and access
Requires declared Node and DeepSeek Harness peer dependencies: Not declared in supplied evidence。
Review compatibility evidence ↗
Risk facts
Writes accepted pasted text to files under the current session workspace's pastes/ directory.
Evidence ↗The documented host limit rejects pasted text over 1 MiB and falls back to ordinary paste behavior.
Evidence ↗Evidence and editorial reviewManifest, Bundle patch, distribution and freshness
Immutable evidence
Review status and source activity
MIT-licensed bundle with verified immutable source structure; review local workspace-writing behavior before enabling it for sensitive pasted content.
AI reviewed Sep 10, 2026, 2:16 PM UTC。GitHub facts last checked Sep 10, 2026, 2:16 PM UTC。
No material source change has been recorded since this evidence baseline.