趣味
#dsh-plugin
dsh-spur
悬挂在 DSH 聊天流里的辫子(皮鞭):抓住鞭梢甩动,速度够快就自动替你向 agent 发送 go work! 催它干活
dsh-external
@dsh-external
⬇ 3
★ 5
master
安装
dsh plugin --profile web add github:dsh-external/dsh-spur
需要可复现安装时,可在仓库后追加 #commit 固定提交。
悬挂在 DSH 聊天流里的辫子(皮鞭):抓住鞭梢甩动,速度够快就自动替你向 agent 发送 go work! 催它干活
该插件未提供要点说明,请参考仓库 README。
dsh-plugin
- 安装并启动 DeepSeek Harness:
npx @deepseek-ai/dsh web - 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
- 用 dsh plugins list 确认已安装,必要时重启 Harness 生效
插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。
| 代码仓库 | github.com/dsh-external/dsh-spur |
| 许可证 | 未标注(见仓库) |
| 主要语言 | master |
| 下载量 | 3 |
| GitHub 星标 | 5 |
| 最近推送 | 2026-09-04 |
| 收录日期 | 2026-09-19 |
| 分类 | 趣味 |
事实信息来自公开插件目录快照(2026-10-03),介绍文案由本站再加工。
以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。
[图片: dsh-plugin-spur card]
# dsh-spur
[](https://www.npmjs.com/package/@huanlin/dsh-plugin-spur)
> 小鲸鱼不听话?抽就完了。
一根悬挂在 DSH 聊天流中的辫子(皮鞭)。抓住辫梢甩动——速度足够快时,向 agent 发送一条 `go work!` 消息,鞭策它去干活。
## 功能
- Verlet 物理引擎渲染的辫子,作为 `position: fixed` 的 SVG 叠层,锚定在视口右上角,垂入聊天区域。
- 辫梢圆点是唯一可抓取的元素(在整体 `pointer-events: none` 的叠层上设为 `pointer-events: auto`)。
- 鼠标按下 → 辫梢锁定到光标;鼠标移动 → 跟踪速度(指数移动平均);鼠标释放 → 带末速度释放。
- 释放速度超过阈值(2.0 px/ms)时:
1. 保存当前输入草稿。
2. `inputActions.setDraft('go work!')`
3. `inputActions.submit()`
4. 提交事务完成后(phase 回到 `plain`)恢复原草稿。
- 释放后辫子继续摆动,阻尼振荡直至静止。
## 架构
单 bundle 双入口(host `.` + 浏览器 `./client` + invariant `./invariant`),仿照 `yet-another-subagent`。
- **宿主半边**(`src/index.ts`):空 `apply`——纯客户端插件。
- **浏览器半边**(`src/client/index.ts`):注册 `conversation.composer.dock` list slot(id `dsh-spur`,order 50)。dock 是编辑器卡片下方的条带;辫子本身是 `position: fixed` 的 SVG 叠层,通过 `createPortal` 挂载到 `document.body`。
- **物理引擎**(`src/client/physics.ts`):Verlet 积分绳索 + 距离约束。与 React 组件分离,便于单元测试。
### Slot 选择
`conversation.composer.dock`(list,session 作用域)——编辑器卡片下方的条带,由 `ui-conversation` 拥有。session 作用域意味着辫子仅在 session 活跃时渲染(hero 模式自然隐藏)。dock 条目从框架接收 `InputZone`(owner)+ `SessionStandardProps`(`useInput`、`inputActions`)。
### 消息发送
插件使用 session 的输入机来发送消息——与 InputBar 相同的路径:
```ts
inputActions.setDraft('go work!')
inputActions.submit()
```
覆盖前先保存当前草稿,提交事务完成后恢复,确保用户的在途文本不被破坏。
## 开发
```sh
pnpm install # 安装开发依赖
pnpm run typecheck # tsc --noEmit(通过 ../dsh 解析 DSH 源码)
pnpm test # vitest run(物理引擎单元测试)
pnpm run build # tsc + tsdown → lib/index.js, lib/invariant.js, lib/client.js
```
### 基于 DSH checkout 类型检查
`tsconfig.json` 继承 `../dsh/tsconfig.base.client.json`,继承其 `paths` 映射到同级 DSH checkout 的 `packages/*/*/src`。需在 `../dsh` 是 DSH checkout 根目录的同级布局下运行 typecheck。
### 预构建 lib/
`lib/` 随仓库提交(与 `dsh-web-ui-notify` / `dsh-activity-plugin` 相同模式),git 安装时无需 `prepare` 脚本。开发时改动源码后跑 `pnpm run build`(或 `pnpm run bundle:client`)重建 `lib/`,再提交。
## 安装
```sh
# 从 npm 安装(推荐):
dsh plugin --profile web add @huanlin/dsh-plugin-spur
```
## 配置
无配置。session 活跃时辫子始终存在。
## 已知限制
- **无空闲摆动动画。** 未交互时辫子垂直悬挂。可通过在锚点上施加周期性正弦力来添加空闲摆动。
- **锚点位置固定在屏幕(右上角)。** 未来可将辫子附着到编辑器右边缘,随滚动/resize 跟踪位置。
- **甩动阈值硬编码。** 速度阈值(2.0 px/ms)不可配置。改为 `Config` 字段可按部署调优。
## 设计参考
- 插件开发规范:`plugin-development-guide.md`
- DSH Native UI slot 速查:`DSH-Native-UI.md`
- Verlet 绳索物理:标准游戏物理技术(参见 Thomas Jakobsen《Advanced Character Physics》)
数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。