DeepSeek Harness Hub
← 返回列表

pangzi-club/dsh-client-ui-selection-add

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

源码:pangzi-club/dsh-client-ui-selection-add

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/24 · 已提供中文文档
综合分
27.3
GitHub 分
27.3
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add pangzi-club/dsh-client-ui-selection-add
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-invariants@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-slots
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-client-ui-selection-add

源码:pangzi-club/dsh-client-ui-selection-add

Web「选中即添加」功能插件:其浏览器侧把一个悬浮的添加到对话按钮贡献到会话拥有的 conversation.input.dock 槽位。只要某个会话的编辑器处于挂载状态,插件就监听文本选区;一个非空、非可编辑的选区会在其外接矩形上方浮出一个小按钮,点击它会预填编辑器草稿(inputActions.setDraft)而不发送——由用户自行确认后回车(或点发送)。其宿主侧刻意为空:捕捉选区并预填草稿属于纯浏览器端的展现,宿主无需持有任何状态。

组件挂载在会话作用域的 list 槽里,因此框架会交付会话标准 kit(useSession、sessionId、useProjection、useInput、inputActions),加上 session/input 的 owner share 与 selection 的 locale 席位;组件只取 inputActions 与 t。由于按钮通过 body 级 portal 渲染,该 dock 条目自身什么都不渲染——编辑器布局不受影响。

有两点值得说明:

- 预填而非直发。 点击只调用 setDraft(text);刻意不调用 submit(),让用户把引用的文本编辑过后再交给模型。(若要点击即发送,在 SelectionAddButton 里补一行即可。)
- 可编辑域守卫。 位于 input、textarea 或 contenteditable 里的选区永不显示按钮——在编辑器里选中是在改草稿,不是引用对话,按钮会与光标打架。

按钮文案在 dsh-client-locale 的 selection 命名空间下双语。锚点捕捉放在一个与框架无关的 selection.ts 模块里(selectionAnchorOf / isEditableField),单独单元测试。

模型体验

无。这里的一切都是浏览器交互:模型看不到工具、会话事件或 schema。该插件是基于输入机公开 inputActions 表面的纯呈现层。

KV Cache 影响

无失效。插件不读取会话数据,也不发布会话事件,因此会话日志、projections 与 KV 缓存都不受影响。

已知限制与后续工作

- 未限定在对话正文。 选区监听挂在 document 上;目前唯一的守卫是可编辑域检查。在侧栏或设置里选文本也会弹出按钮,因为在不改 ui-conversation(上面的「零改动核心包」取舍)的前提下,插件无法识别会话的滚动容器。要限定范围,需要正规的 conversation.selection. 槽(见下),或一个会话骨架本就拥有的 data- 钩子。
- 仅预填。 用户须在发送前确认;悬浮按钮上没有「立即发送」的入口。
- 多行选区 锚定在外接矩形的顶部(第一行);若选区起始靠近视口顶部,按钮可能被裁切。
- 按构造即仅限聊天视图。 按钮只在会话编辑器挂载时出现,因此不会出现在无会话的 hero 阶段;它并不区分当前激活的是哪个视图页签。

扩展点(「正规槽」)升级

当前路径借用既有的 conversation.input.dock,因此对 ui-conversation 零改动。若要把捕捉做成一等扩展点,则在 ui-conversation(packages/client/ui-conversation/src/client/apply.ts 的 children 以及 contract/slots.ts 的 SlotMap 合并)新增一个会话作用域槽,例如 conversation.selection.action { kind: 'list', scope: 'session' },并把本插件的条目注册到新槽。

独立构建并发布(社区插件)

本包是一个可构建、可独立发布的 DSH 客户端插件。它不需要 deepseek-harness monorepo 即可编译:package.json、tsconfig.json 与 tsdown.config.ts 都是独立的,且源码里的 @deepseek-ai/ 导入均为 import type,会从 node_modules 中按其发布版本解析。

构建

pnpm install
pnpm bundle        # tsc(产出 lib/types//.d.ts)+ tsdown(产出 lib/.js)
pnpm watch         # tsdown --watch

产物:
- lib/index.js — 宿主半(空的 apply;实际工作全部在浏览器半)
- lib/invariant.js — 不变式伴生模块
- lib/client.js — 浏览器 module-table bundle(window.__ModuleLoader__.load({ id, factory }))
- lib/types//.d.ts — TypeScript 声明

发布

先 pnpm bundle(或依赖 prepack 自动执行),然后:

npm publish            # 或 pnpm publish

发布面由 files 列表决定:lib/.js(+ map)与 lib/types//.d.ts,以及 cordis.patch.yml。

安装到 DSH(社区插件)

本包声明了 dsh.bundle manifest,因此与其他社区插件走同一通道(从 npm 安装):

npm install dsh-client-ui-selection-add
dsh plugin --profile web add dsh-client-ui-selection-add

或对本地构建:

1. 把本目录符号链接/junction 到 $DSH_HOME/profiles/node_modules/dsh-client-ui-selection-add。
2. 在 $DSH_HOME/profiles/web/cordis.patch.yml 追加宿主行:
- insert:
- id: ui-selection-add
name: dsh-client-ui-selection-add

(或直接 dsh plugin add,它会通过 dsh.bundle.patch → cordis.patch.yml 帮你写入。)

客户端半会注册到框架拥有的 conversation.input.dock 槽位,并拉取 locale 服务。两者都由标准 dsh web 构建提供(@deepseek-ai/dsh-client-ui-slots、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-conversation),因此标准 dsh web 构建能解析这些运行时。由于这些框架包并非全部是基线 module-table 行(它们是独立的 dsh.client graph 行),裸的社区安装只在已激活它们的 DSH Web 构建下可用——上游 dsh web 恰好如此。

交叉引用:deepseek-harness monorepo

本仓库是此包的独立家园。同样的源码也接入了 deepseek-harness monorepo,名为 @deepseek-ai/dsh-client-ui-selection-add,位于 packages/client/ui-selection-add;在那里,tsdown preset 与三处注册面(tsconfig.client.json 引用、packages/bundle/web-app/cordis.patch.yml 的 dsh.client 名册行、packages/bundle/web-app/package.json 依赖)都来自 monorepo 本身。本目录则改用上面的自包含配置来构建与发布。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群