dsh-reveal-context
把 DSH 在对话里隐藏掉的上下文注入行重新显示出来.
背景
DSH 的对话视图会整体排除注入行. 判定在 isVisibleChatNode 里:
return node.visibility === 'visible'
&& node.kind !== 'system-prompt'
&& node.kind !== 'context'
&& !(node.kind === 'command' && node.data.name === 'permission')
也就是 context 这一类节点在对话里根本不渲染. 想看一眼当时到底注入了什么, 只能切到轨迹视图.
本插件不修改 DSH 源码, 而是注册另一个 conversation 定义: 它匹配同一批 user/message 事件, 但产出的节点 kind 是自己的 reveal-context, 于是能通过上面那条判定, 再由本插件自己的渲染器画成一行. 引擎对每个事件会依次询问所有定义, 上下文 key 是 (definition.kind, id), 所以 DSH 自带的那份定义照旧工作, 两者互不干扰.
ChatNodeDataMap 是 DSH 公开的 merge-extensible 载荷注册表, 新增一种节点 kind 是它设计内的用法.
安装
dsh plugin --profile web add azazo1/dsh-reveal-context
装完重启 dsh web.
使用
打开 设置 → 插件 → dsh-reveal-context:
| 字段 | 说明 |
|---|
| 显示被隐藏的注入行 | 总开关, 默认打开. 关掉后对话恢复成 DSH 默认的样子 |
| 仍然隐藏的来源 | 每行一个 source.kind, 逗号分隔也可以. 留空表示一个都不排除 |
偏好存在 profile 的 patch 层, 改完立即生效, 不需要刷新页面.
默认会显示全部来源, 包括每步刷新的 runtime-context 之类的环境快照. 环境快照是 form: 'snapshot', 后一条替换前一条, 所以各自只占一行; 觉得吵就把它填进"仍然隐藏的来源".
边界
- 只覆盖
user/message 上的非 user 来源, 也就是 context 这一类. system-prompt 行和 permission 命令行是别的 kind 和事件, 不在本插件范围内.
- 行渲染器读的是源事件的
content 与 source, 这些都是持久化事件的字段; 节点形状 (key / kind / id / target / anchorSeq / location / visibility / data) 沿用 DSH 当前版本内部使用的形状, 没有对外承诺, DSH 升级后可能需要跟进.
License
MIT