Bundle
@huanlin/dsh-plugin-auto-blame
Auto-blame: when a turn closes, asks an LLM for three cynical follow-up prompts and shows them as click-to-send bubbles above the composer. Host-gated master toggle in the settings page.
- Source
- HuanLinOTO
- stars
- 11 stars
- License
- AGPL-3.0
- Updated
- Updated 7 days ago
Readme
<p align="center">
<a href="https://dshfind.com/zh/plugins/huanlinoto/dsh-plugin-auto-blame"><img src="https://dshfind.com/api/card/huanlinoto/dsh-plugin-auto-blame?lang=zh" alt="dsh-plugin-auto-blame card"></a>
</p>
# dsh-auto-blame
[](https://www.npmjs.com/package/@huanlin/dsh-plugin-auto-blame)

当模型完成当前轮次对话后,将最后 3 条消息发送给 LLM,生成 3 条批判性跟进请求,显示在输入框上方作为可选项,点击直接发送。生成期间"领导视野"标签带 DeepSeek 蓝色流光扫过(同 Deep diving... 特效),建议到达后气泡依次淡入。
## 工作原理
```
[host] agent/turn-stopping 触发
→ fire-and-forget 调 ctx.llm.stream() 生成 3 条毒舌跟进
→ session.append('auto-blame/suggestions', { turn, suggestions })
→ projection unit 折叠该事件 → session/projection 推送帧
↓
[client] useProjection('autoBlame') 收到值
→ conversation.composer.dock 渲染 3 个气泡
→ 点击 → inputActions.setDraft(text) + submit()
```
- **fire-and-forget**:LLM 调用不阻塞 turn 关闭,建议晚几百 ms 出现
- **非 surface 事件**:`auto-blame/suggestions` 不进入 model-visible 历史,不干扰 agent loop
- **失败静默**:LLM 失败 / 解析失败 → 不 append 事件,不显示气泡
- **点击发送**:走 InputBar 同一路径(`inputActions.setDraft + submit`)
- **下一轮清空**:新 turn 开始时 projection 归零,旧气泡立即消失
## 开发
```sh
pnpm run typecheck # tsc --noEmit
pnpm test # vitest run(28 个单测)
pnpm run build # tsc + tsdown → lib/index.js, lib/invariant.js, lib/client.js
pnpm run bundle:client # 只构建 client bundle
```
### 依赖链接(sibling dsh checkout)
本插件依赖 `@deepseek-ai/dsh-*` workspace 包。开发时需要手动 Junction 链接到 sibling dsh checkout:
```powershell
$dest = 'node_modules\@deepseek-ai'
New-Item -ItemType Directory -Path $dest -Force
# 参考 dsh-spur 的 node_modules 结构创建 Junction
```
或从 `dsh-spur` 复制 `node_modules`(含 typescript / tsdown / vitest / @types/* / cordis / @deepseek-ai/dsh-client-*),再补建 `dsh-agent` / `dsh-llm` / `dsh-session` / `dsh-session-projection` 的 Junction。
## 运行
```sh
# 从 npm 安装(推荐)
dsh plugin --profile web add @huanlin/dsh-plugin-auto-blame
# 本地开发(热更新)
dsh plugin --profile web add "link:D:/Projects/deepseek-harness/dsh-auto-blame"
```
安装后重启 `dsh web` + 浏览器硬刷新(`Ctrl+Shift+R`)。
## 检查
- [x] 零源码 patch
- [x] `package.json` 声明 `dsh.bundle.patch`
- [x] `cordis.patch.yml` insert 行 id/name/config 齐全
- [x] `files` 含 `lib/` + `cordis.patch.yml`
- [x] `peerDependencies` 含 cordis + `@deepseek-ai/*`
- [x] typecheck / test / build script 齐全
- [x] 预构建策略(`lib/` 入库,无 `prepare` 脚本)
- [x] 不导出 default
- [x] 测试分层(Unit)
Install
dsh plugin --profile web add github:HuanLinOTO/dsh-plugin-auto-blame
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install huanlin-dsh-plugin-auto-blame from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.