Chloride233/dsh-cot-profile
Real-time chain-of-thought trajectory profiling for DeepSeek Harness: live wording indicators, profile-family judgment, per-session measurement records
これは DeepSeek Harness(DSH)プラグインです。当サイトは GitHub README、インストール情報、メンテナンス状況、公開セキュリティシグナルをまとめています。
dsh-cot-profile
面向 DeepSeek Harness 的实时思维链轨迹画像插件:边流式边统计 reasoning 里的签名措辞指标(let me / we / let's / I),对照内置基线判断当前会话的轨迹画像族,并可选的按会话记录测量聚合数据。
先读:关于"推断模型"的诚实边界
措辞指纹描述的是 (模型 × 装配) 组合——system prompt、工具 schema、reasoning effort——不是模型身份。来源研究(xiaobright/modeltest)证明:接口变化时,不同模型会呈现完全相同的措辞模式(V4 Flash 反例:minimal 装配下与 Pro 同样 we 高、let me 为零,但能力不同档)。
因此本插件回答的是"当前会话的行为像哪个轨迹画像族"(minimal-like / standard-like / gray-like),并把原始指标并列展示,结论由你自己下。不做"这就是某模型"的断言。
功能
- 实时 UI:会话头部徽章 + 可折叠悬浮面板,由会话投影推送帧驱动——无轮询、无自定义 RPC。
- 指标:
let me/we/let's/I计数、首行模式(We need…/The user wants…/Let me…/I…)、块长中位数、阶段性可见回复数。 - 判定:加权距离匹配内置基线画像 + 置信度;满 N 块(默认 10,可配置)才下结论。
- 可扩展:画像族与各维度权重均可编辑(Web 设置页或 cordis 配置)。
- 记录模式:会话结束时落一条聚合 JSON 记录(事件和/或 JSONL)——用真实数据校准基线的测量仪器。
- 隐私:只有聚合数据离开 host 计算;原始思维链文本从不记录、从不传输。
安装
dsh plugin --profile web add github:Chloride233/dsh-cot-profile
核心插件(徽章、面板、记录)立即可用。Web 设置页额外需要一个对 DeepSeek Harness 0.1.0-rc.6 的临时一次性补丁(见下文);不打补丁也可用——改用 cordis 配置。
配置
配置在 cot-profile 插件行(本仓库 cordis.patch.yml 或你的 profile 的 cordis.yml)。默认值:
- id: cot-profile
config:
minBlocksForJudgment: 10 # 满 N 块 reasoning 才给判定
badge: true # 会话头部徽章
panel: true # 实时面板
panelMode: overlay # 'overlay'(默认,零风险)| 'track'(实验性右侧轨道栏)
weights: {} # 各维度权重;{} = 内置默认
profiles: [] # 自定义画像族;[] = 内置基线
record:
emit: true # 会话结束时发 cot-profile/record 事件
file: '' # 可选 JSONL 路径(~ 开头会自动展开为用户主目录)
面板形态:
overlay(默认):悬浮面板,钉在会话右侧——官方 additive 槽位,零风险。track(实验性):真正的右侧列,通过直接操作 DOM 往 shell 的三栏网格追加轨道(MutationObserver 监听grid-template-columns)。不遮内容、不替换任何官方 UI,但运行在官方槽位系统之外——DSH 升级若改变框架结构可能需要适配此模式。默认关闭。
权重默认(let me/we 权重最高,对应研究中的分离度):
{ "letMe100": 3, "we100": 3, "lets100": 2, "i100": 1.5,
"firstLineWeNeed": 1.5, "firstLineUserWants": 1, "firstLineLetMe": 1.5,
"firstLineI": 1, "firstLineOther": 0.5, "p50BlockChars": 1, "visibleReplies": 1.5 }
自定义画像族形如 { "id", "name", "description", "vector" },vector 可取任意上述维度;想追踪的每个模型/版本加一个画像族即可参与判定。
可选:Web 设置页
DeepSeek Harness 0.1.0-rc.6 只对浏览器暴露一份硬编码的 settings 命名空间白名单(dsh-host-apiproxy 的 WEB_SETTINGS_NAMESPACES;其源码注释称把该决策挪进 settings.register() 是 deferred work)。上游支持插件自声明暴露之前,运行:
sh scripts/install-patch.sh
脚本把已安装的 dsh-host-apiproxy 复制进 web profile 并把 cot-profile 加入白名单。幂等、可选——不打补丁插件也完整可用。注意事项:
- profile 里执行
pnpm install会移除复制品;之后重新运行本脚本即可。 - dsh 升级可能改变白名单布局;脚本找不到目标结构时会明确报错,绝不静默失效。
FAQ
- 本地路径安装加载失败?
dsh plugin add <本地目录>走 pnpm 的link:协议,link 包的依赖从它自己所在目录解析——所以检出目录里需要可解析的node_modules。在检出目录跑pnpm install(或软链到运行中 harness 的 node_modules)即可。用 GitHub 地址安装(github:...)没有这个问题——pnpm 从商店原生解析依赖。
事件与数据
| 出口 | 形态 |
|---|---|
| 投影键 | cot-profile——任意会话级槽位用 useProjection('cot-profile') 读取(类型见 lib/index.d.ts 的 CotProfileView) |
cot-profile/update | { sessionId, blocks, counts, firstLines, p50BlockChars, visibleReplies, vector, judgment, ui, revision, seq }(500ms 节流) |
cot-profile/record | 会话结束时的聚合记录(仅当会话有 ≥1 个 reasoning 块) |
记录 schema(v1)
{
"v": 1,
"sessionId": "...",
"startedAt": 1720000000000,
"endedAt": 1720000100000,
"preset": "anchored-standard", // 已知时(agent-preset/selected)
"provider": "deepseek", // 已知时(agent/request 捕获)
"model": "deepseek-v4-pro", // 已知时
"reasoningBlocks": 193,
"indicators": { "letMe": 1, "we": 179, "lets": 88, "i": 17,
"p50BlockChars": 111, "visibleReplies": 1,
"firstLines": { "we-need": 120, "other": 73 } },
"vector": { /* 归一化指标向量 */ },
"judgment": { "family": "minimal-like", "confidence": 0.87, "distances": {} }
}
隐私边界(硬性要求):记录只含聚合指标,绝不含原始思维链文本。文件记录默认关闭、显式开启。
GUI 校准(半自动)
设置页(Settings → 思维链画像 → 数据校准)会扫描配置的记录文件,按(provider, model, preset)分组、聚合每组指标向量均值,并提供一键 「应用为画像族」——把实测分组写成一条新的画像族进入 profiles 配置。聚合全自动,应用永远是人工决定;内置基线绝不被动改写。
扫描读取 GET /cot-profile/records——插件在 web server 上注册的路由。它只读配置的 record.file 路径并返回聚合结果(绝不含原始思维链文本);未配置文件时返回空结果。若设置页扫描报错,先确认 JSONL 路径已填且已跑完几个会话。
开发
npm test # node --test test/analyzer.test.js(零依赖)
lib/analyzer.js— 纯分析逻辑(tokenize、计数、首行分类、向量、距离、判定)lib/profiles.js— 内置基线(标注为估算值——用记录模式数据校准)lib/index.js— host:会话投影、事件、记录落盘lib/client.js— 徽章、面板、设置页
Upstream wishlist
以下均为 DeepSeek Harness 0.1.0-rc.6 的临时缺口,本插件暂以变通方式绕过:
- 插件自声明 settings 暴露 —— 把命名空间白名单从
dsh-host-apiproxy挪进settings.register(),让插件免补丁暴露自己的配置。 - 右侧列的可加槽位 —— 提供
conversation.details.panel这类列表席位,让悬浮面板升级为原生右侧列。
License
MIT,见 LICENSE。轨迹方法论源自 xiaobright/dsh-anchored-standard 与 xiaobright/modeltest(MIT,仅使用公开聚合数据)。
セキュリティとインストールエビデンス
このスコアは公開リポジトリメタデータと当サイトに登録されたインストールエビデンスのみに基づくもので、コードセキュリティ監査とは異なります。
公開プラグインカタログから取得し、公開 GitHub リポジトリにリンクしています。
リポジトリは MIT ライセンスを宣言しています。
過去180日以内にコードの更新があります。
再現可能な正確なインストールメタデータはまだ登録されていません。リポジトリの説明に従って手動で確認してください。
確認したパッケージメタデータにインストールライフサイクルスクリプトは宣言されていません。