DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Webask — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-webask

Webask

向 DeepSeek 网页聊天发送单行问题,而不是消耗 DSH 上下文。提供撰写器按钮和全局快捷键面板,并支持历史记录。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-webask@0.1.0
README兼容性版本

兼容性与来源证明

Webask 以 dsh-webask 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/24

版本

0.1.0stable
2026/9/24

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
0
最近提交
2026/9/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rIm@xmanrui/dsh-im将十二种 IM 渠道和公网 AI Office 接入本机 DeepSeek Harness。Univer Officedsh-univer-officeDSH × Univer 集成,内置协作 Gateway 和 Viewer:内联预览、实时浮动 Worktree 窗口,以及 DeepSeek Harness 中的会话结束审查操作。

README

WebAsk

Send one-liner questions to DeepSeek's web chat instead of burning your DSH context. Composer button · global hotkey palette · history.

DeepSeek Harness resends the whole conversation on every turn. So a twenty-token question — the kind you already know will be short — does not cost twenty tokens. It costs the entire context window it rides on.

WebAsk hands exactly those questions to the free web chat and never lets them enter the conversation at all.


What you get

A button beside the composer

You have already typed the question into DSH. Instead of sending it, click the WebAsk button. The text is lifted out of the draft — cleared through the official input actions, so it never reaches the model — copied to your clipboard, and opened in a new tab.

The button is disabled unless there is a real draft to lift and the composer is in a plain, sendable phase, so it can never fire mid-submission.

A palette on a global hotkey

mod+shift+k anywhere opens a centred input. Type, press Enter, done. Shift+Enter for a newline, Esc to close.

Underneath sits a local history. Every question can be:

  • re-opened in the web chat,
  • copied again,
  • or inserted back into the composer — the closing loop, for when the answer turns out to deserve follow-up in a real session.

A settings tab

Settings → Plugins → WebAsk: target site, URL template, global hotkey, whether to copy to the clipboard, history on/off, and the history limit.


An honest note about ?q=

https://chat.deepseek.com/?q=… is a community convention, not a feature of the site. chat.deepseek.com does not read that parameter by itself — userscripts exist specifically to add the behaviour. Pretending otherwise would make this plugin quietly broken for everyone who does not have one installed.

So WebAsk does both things at once, every time:

  1. it always copies the question to your clipboard, and
  2. it opens the templated URL.

If you do run such a userscript, the flow is fully automatic. If you do not, you press ⌘V once in the tab that just opened. Either way the question costs zero tokens — which is the entire point.


Install

dsh plugin --profile web add dsh-webask

Then restart that profile. Plugin installs change the package graph, and the package manifest and client-module metadata are cached for the life of the process — a restart is what picks them up.

Verify before you restart, if you like:

dsh --profile web --dump-config | grep -A2 webask

Supported sites

Every preset below speaks the same ?q= convention:

SiteTemplate
DeepSeekhttps://chat.deepseek.com/?q={q}
Kimihttps://www.kimi.com/?q={q}
Qwenhttps://chat.qwen.ai/?q={q}
豆包https://www.doubao.com/?q={q}
腾讯元宝https://yuanbao.tencent.com/?q={q}
智谱 GLMhttps://chatglm.cn/?q={q}
Geminihttps://gemini.google.com/?q={q}

Because the template is editable, a site WebAsk has never heard of works too. Use {q} where the question goes. With no {q} at all, the question is appended as a q= query parameter, preserving whatever else the URL already carries.


Privacy

Nothing leaves your machine except the question you chose to ask a web chat, in the tab you opened. History and settings live in this browser's localStorage and are never uploaded. WebAsk sends nothing to the model, and its host half is an empty mount row — no service, no tool, no route.


How it works

WebAsk is a presentation-only client plugin. It occupies three documented slots and reaches the composer only through published action faces — it never touches the DOM to read or clear your draft.

SlotSurfaceAccess used
conversation.input.rightthe composer buttonuseInput (read draft, phase) + inputActions.setDraft (lift the draft out)
shell.overlaypalette + toastsuseSessions(s => s.current) for the active session, plus a bridge published by the composer button for insert-back
settings.plugins.tabconfig pageuseResource / useWorkspaces standard kit

Notes for anyone reading the source:

  • No build chain. build.mjs is ~40 lines with zero dependencies: it inlines the stylesheet as a string and wraps src/client.js in the CJS closure-factory the browser module loader expects. No bundler, no TypeScript, no CSS pipeline.
  • require("react") is resolvable inside the client factory, so the UI is written with React.createElement and needs no JSX transform.
  • Strings are registered with ctx.locale with a built-in bilingual fallback, so the UI still reads correctly if the locale service is unavailable.
  • The overlay is root-scoped while the draft is per-session. Rather than reaching into the input hub by id, the composer button publishes its own official action face into a tiny shared store; "is there somewhere to insert into?" then has a truthful answer, and the insert-back action is disabled when there is not.

Development

npm run build     # src/ -> lib/client.js
npm run verify    # 37 offline checks: slot wiring, click paths, persistence

verify runs the built bundle in a VM against a fake browser and a minimal React stub, then drives the real click paths. It catches a mistyped slot name or a mis-read prop here, rather than as a button that silently does nothing.


License

MIT © DanZai233