deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:sakuraqqq/dsh-auto-paste
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A DeepSeek Harness plugin generated by
create-dsh-plugin(tool template) and extended with a web client paste listener. 由 create-dsh-plugin 生成并扩展的 DeepSeek Harness 插件:输入框大段粘贴自动存为附件文件。
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,tag v0.1.0。MIT License — Copyright (c) 2026 misakamaster。 本插件以 MIT 许可开源:可自由使用、修改、再分发(含商用),需保留版权声明与许可文本。详见 LICENSE。 反馈(bug/建议)欢迎提交:QQ 群测试反馈或直接联系作者。
Web 客户端粘贴钩子(主路径) — dsh.client.platform: web。在输入框粘贴超过阈值(默认 500 字符)的文本时:
/api → Typert gateway)调用宿主 pasteStore/savePaste;pastes/<时间戳>.txt;[已保存大段粘贴为附件: pastes/20260815-103000.txt (1234 字符)]),消息里引用该路径,模型可读该文件。save_paste 工具(纪律兜底) — 宿主同时注册 save_paste 工具,模型在用户贴大段文字时可主动调用,把文本持久化为 pastes/<时间戳>.txt 并在回复中引用路径。建议在项目 AGENTS.md 加一行纪律:
## dsh-auto-paste 纪律
用户粘贴大段文字(约 500 字符以上)时:若输入框钩子未拦截,主动调用 save_paste 工具
把文本存入 pastes/<时间戳>.txt,并在回复中引用该工作区相对路径,不要复述原文。
方式一:从 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 中调整。
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
dsh.bundle.patch → ./cordis.patch.yml(dsh 加载插件的硬性要求,缺失只会被当作普通依赖安装)dsh.client.platform: web + exports["./client"] → dist/client.jsexports["./typert"] → dist/typert.host.js(typert-loader 自动注册 remote 调用)pastes/ 下的本地文件@deepseek-ai/dsh-tools: 0.1.0-rc.6 (exact — the next-tag line; npm latest is stale).@deepseek-ai/cordis: ^4.0.1 (peerDependency — host provides it; runtime import of Service resolves through the profile's node_modules).zod: ^4.4.3 (Typert host schema instances, same line as in-box host remotes).@deepseek-ai/dsh-tools latest is a STALE 0.0.1-rc.1; the real line is under the next tag (0.1.0-rc.x). This scaffold pins the next-tag version for you — never npm i @deepseek-ai/dsh-tools over it.@deepseek-ai/dsh-tools 的 latest 是过期的 0.0.1-rc.1,正确版本在 next tag。本脚手架已锁 next 版本,勿再手动 npm i 覆盖。@deepseek-ai/dsh-* package on the same 0.1.0-rc.x line so pnpm does not install two module copies.@deepseek-ai/cordis is a peerDependency: import only type { Context } where possible (erased at compile). At runtime the host hands you ctx — the Service base class import resolves through the profile's node_modules."type": "module"; build with module: esnext + moduleResolution: bundler to keep bare specifiers.dsh plugin add <dir> anchors relative paths to the INVOKING directory — run it from the parent directory, not from inside the plugin.cordis.patch.yml, name is a package name (resolved via node_modules / $DSH_HOME/profiles/node_modules), not a relative path.ctx.tools.register() / ctx.on() auto-dispose on unload. Wrap your OWN resources (timers/connections) in ctx.effect(() => { acquire; return cleanup }).export const inject = ['tools'] makes the plugin wait until ctx.tools is ready.DEEPSEEK_API_KEY; without it --verify proves load/list/event, and the model call fails with MISSING_CREDENTIAL.CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。