DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

LunaticLegacy /

LunaticLegacy/dsh-mew-key

Verified

This plugin has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@3fb11dc2

Mew Key logo

Mew Key

给正在工作的 Agent 按一下喵键。

输入框工具栏里多一只猫爪,点一下,Agent 就软软地喵一声,顺手告诉你它此刻在做什么。

DSH 0.2.x · MIT · 单文件客户端插件 · 零网络请求

Mew Key 在输入框工具栏中的样子


为什么会有这个

Agent 跑长任务时,你只能盯着滚动的工具调用猜它到底在干嘛。打断它吧,代价太大;不打断吧,心里没底。

Mew Key 给了一个介于两者之间的动作:轻轻戳它一下。它会在下一个安全的模型步骤里撒娇一声,用一句话汇报当前进度,然后继续干活——不改计划、不动文件、不偏离任务。

既是状态探针,也是个没什么用的可爱玩具。

功能

能力 说明
一键触发 点一下猫爪即投递,没有面板、没有模式选择、没有二次确认。
撒娇语气 喵~ / 喵呜~ / Meow~ / にゃーん,最多一个猫 emoji,两行以内。不是冷冰冰的「喵。」
顺手报进度 同一句话里说明它正在做什么(只描述当前步骤,不剧透计划)。
不挡界面 注册在 conversation.input.right,是 composer 工具栏的流内元素——不覆盖队列卡片、图标或发送键。
温和优先 默认走 session/prompt 的 mode: 'steer':不取消当前工具,等下一个模型步骤生效。
可中断 Shift+点击 才走 session/cancel → 等待空闲 → 重新投递,破坏性操作需要显式修饰键。
有反馈 成功/失败都以按钮上方的小气泡呈现,2.8 秒后消失。看到气泡才算真投递了。
权限感知 没有 session/prompt 权限时直接不渲染;中断权限缺失时给出解释而不是静默失败。
会话隔离 每个 UI 槽的回调绑定当前 sessionId,不会误触其他会话。

快速开始

1. 安装

包内已包含编译好的 lib/client.js,安装时不需要额外构建。

dsh plugin --profile web add file:/absolute/path/to/dsh-mew-key

从 DSH 仓库源码启动时,等价写法是 pnpm dsh plugin --profile web add ...。

2. 重启

dsh web

插件 Host/Client 的引导图在启动时装配,改完客户端代码必须重启,浏览器刷新不够。

3. 按一下

打开任意普通 Session,输入框工具栏里、模型选择器左侧就是猫爪。

操作 效果
单击 温和插话:下一次模型步骤喵一声 + 说明当前进度
Shift+点击 先中断当前轮次,等它空闲后再喵(键盘用 Shift+Enter)

也可以把 cordis.patch.yml 当作配置层使用:包内自带 dsh.bundle.patch 声明,安装到 profile 时会自动插入 mew-key 插件行。

卸载:

dsh plugin --profile web remove dsh-mew-key

设计说明

几个不那么显然的选择,以及为什么:

为什么用 steer 而不是直接 cancel。 steer 是官方给「人在 Agent 干活时插话」准备的投递模式,不会终止正在运行的工具。实测其客户端语义是 running ? (mode==='steer' ? 'steering' : 'queued') : 'transcript'——空闲时它等价于普通新消息,所以单击在任何状态下都成立。

为什么挂在 conversation.input.right 而不是紧贴发送键。 DSH 工具栏的结构是 [right 槽][model 选择器][activity 槽][发送键]。模型与发送键之间只有 conversation.input.activity,那是单占位槽,被活动指示器占用时会触发"隐藏普通附件控件"的展开行为——抢它会把界面搞坏。input.right 是列表槽,插进去不覆盖任何东西,代价是猫爪落在模型选择器左侧而非紧贴发送键。

为什么猫叫交给模型说。 UI 自己打印「喵~」是确定的,但那就不再是 Agent 在回应你了。当前实现允许语气漂移:它可能说「喵~ 在改测试呀」,也可能突然变得浮夸。这是有意的取舍。

为什么需要重启。 客户端 bundle 在 dsh web 启动时装配进浏览器加载图,热更新不覆盖已加载的插件模块。

已知边界

  • 单击没有二次确认。 误触会真的给 Agent 插一条话;Shift+点击 更重,它真的会取消当前轮次。
  • 温和插话不是抢占。 Agent 卡在长阻塞工具里时,steer 要等后续模型步骤才被处理。
  • 中断不是无损暂停。 cancel 可能使当前工具操作被取消,且不会自动恢复原任务,是否重试由你决定。
  • 「正在做什么」是模型的自述。 它总结的是自己理解的当前步骤,不是工具进程的实时状态;真实状态请看会话流。
  • 语气和长度不可控。 全是对模型的文字要求,它可能不服从、写长、或干脆照旧冷淡。
  • 子进程未必立刻退出。 取消是运行时请求,外部工具能否立即终止取决于工具自身的取消机制。
  • 版本兼容以实测为准。 槽位与 API 依据 DSH 0.2.x 的实现确认,换大版本需要按实际 DOM/类型微调。

开发

dsh-mew-key/
├── package.json          # DSH bundle + browser client manifest
├── cordis.patch.yml      # Cordis 插入项
├── index.js              # Node Host 半部:无状态入口
├── src/client.tsx        # React TSX 源码 / UI + 操作逻辑
├── lib/client.js         # 可直接装载的编译版客户端
├── build.mjs             # TSX → DSH ModuleLoader 包装
├── preview.html          # 脱离 DSH 的静态交互预览
└── tests/bridge.test.mjs # Remote 桥接 + 桩 React 渲染测试
npm run build   # 需要能解析 'typescript'
npm test        # 只用 Node 标准库

当前 12 个测试全部通过,覆盖:Remote 调用顺序与失败传播、提示词内容、槽位选择、依赖声明,以及用桩 React 运行时真实渲染组件确认「只有一个按钮、单击走 gentle、Shift+点击走 interrupt」。

注意 build.mjs 只做 TSX→CommonJS 转译,不做类型检查;槽位名或属性名写错在编译期不会报错。lib/client.js 随包交付,可不在本机构建。

参考

  • Slots 子系统
  • Core 子系统
  • Session Controller 类型

更新日志

见 CHANGELOG.md。

许可

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 3fb11dc24020

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout