← Back to home@deathbook

dsh-think-phrases

DeepSeek Harness plugin: top-right widget counting let me / we / let's / I'll in reasoning chains

Stars
1
Language
TypeScript
Created
Aug 15, 2026
Updated
Aug 27, 2026
GitHub repo

Introduction

dsh-think-phrases

🤖 本项目由 DeepSeek V4 Flash Max 完全自主生成。

🔗 GitHub:https://github.com/deathbook/dsh-think-phrases


右上角思维链短语统计插件,适用于 DSH Desktop 与普通 dsh web 环境。

统计当前会话所有思维链(reasoning blocks)中 let me / we / let's / I'll 的出现次数, 便于快速查看当前对话的 DeepSeek-V4-Pro-0813 模型是否进入灰测思维链。

安装

# npm(推荐)
dsh plugin --profile desktop add dsh-think-phrases

# 或 GitHub
dsh plugin --profile desktop add github:deathbook/dsh-think-phrases

# 源码安装(本地开发 / 调试)
git clone https://github.com/deathbook/dsh-think-phrases.git
cd dsh-think-phrases
pnpm install
# 在 profile 的 dependencies 中 link 到本地目录

安装后重启 DSH 宿主。插件会通过 cordis.patch.yml 自动挂载到 profile 的 bundle 组合中。

兼容性

环境支持
DSH Desktop 2.x✅
普通 dsh web / dsh console✅
DSH 上游(无 Desktop service)✅

本插件不依赖 Desktop 专用 service(desktopProfiles、desktopPnpm、desktopWindow), 在同一套源码下同时兼容 Desktop 与普通 DSH 环境,符合 DSH 插件生态倡议书 的三条原则:组合优先 · 声明清晰 · 兼容优先。

功能

  • 统计思维链中的高频短语/单词:
    • let me
    • we(匹配表达"我们"的 we,包括 we're、we'll、we-need、pre-we 等;不匹配 weird、sweet 等单词里偶然出现的 we)
    • let's
    • I'll(同时统计全写 I will)
  • 全部忽略大小写。
  • 只统计思维链(reasoning)文本,不统计可见正文与用户消息。
  • 面板实时显示每项计数和总计。

设计

由可复用模板 dsh-plugin-template 派生,采用双半边架构(符合 DSH 插件生态的 组合优先原则):

  • 宿主半边 src/index.ts + src/projection.ts — 注册 thinkPhrases 会话投影: 投影框架对完整会话日志逐条执行 apply(仅统计 assistant/message 事件的 reasoning 块,支持 surface replace 回退),不受客户端窗口截断影响。
  • 客户端半边 src/client/ — 挂载到官方 slot conversation.session.header.utilities (会话头部右侧工具区),通过 useProjection('thinkPhrases') 实时读取计数; 丸粒按钮显示总数,点击拉出面板、点外部或 Esc 收起。

计数规则

短语正则说明
let me/\blet\s+me\b/gi
we/\bwe\b/gi匹配表达"我们"的 we,含 we're/we'll/we-need/pre-we;不匹配 weird/sweet 等
let's`/\blet(?:['']ss)\b/gi`
I'll`/\bi(?:[''']ll\s+will)\b/gi`

忽略大小写;只统计思维链(reasoning)文本,不统计可见正文与用户消息。

目录结构

dsh-think-phrases/
├── src/
│   ├── client/
│   │   ├── ThinkStatsWidget.tsx   # 客户端统计面板组件
│   │   ├── index.ts               # 客户端插件入口(导出 inject + apply)
│   │   └── think-stats.module.css # 面板样式
│   ├── index.ts                   # 宿主插件入口(导出 name + apply)
│   └── projection.ts              # thinkPhrases 会话投影与计数规则
├── .gitignore
├── LICENSE                        # MIT
├── README.md
├── cordis.patch.yml               # bundle 挂载声明
├── package.json
├── pnpm-lock.yaml
├── tsconfig.json
└── tsdown.config.ts

构建

pnpm install
pnpm run build   # lib/index.js (宿主) + lib/client.js (浏览器) + lib/types

构建产物 lib/ 随包发布(package.json files 字段),但不在 Git 仓库中跟踪(.gitignore)。

安装到 profile

将 dsh-think-phrases 加入 profile 的 dependencies(link:/file:/工作区即可), 并在 dsh.profile.bundles 追加 "dsh-think-phrases",然后 pnpm install 并重启 dsh 宿主 (插件集合与客户端引导图均在启动时组合)。

标签

DSH 插件生态通用标签:

  • dsh
  • dsh-plugin
  • deepseek
  • harness
  • reasoning
  • stats

声明

本插件遵循 DSH 插件生态倡议书 的三条原则:

  • 组合优先:通过官方 slot(conversation.session.header.utilities)和 service(sessionProjections、slots)组合能力,不覆盖其他插件的内部实现。
  • 声明清晰:明确声明依赖的 inject(slots、sessionProjections),不依赖运行时巧合。
  • 兼容优先:同时在 Desktop 与普通 DSH 环境下可用,不破坏已有组合。

License

MIT