🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话增强工具 Baisbt/dsh-GreaterClarity-plugin

Cordis
Baisbt71 天前有提交已提供中文文档扫描:含敏感能力

折叠思考链路、导出对话并快速定位历史输入

29.6/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Baisbt/dsh-GreaterClarity-plugin
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · other
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 71 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@dsh-external/dsh-greater-clarity(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 03:52:13

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 16 条)
  • 发起网络请求
    src/client/state.ts:54
    return fetch(API + path, {
  • 读取本地文件
    src/index.ts:99
    const raw = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8'))
  • 读取本地文件
    src/index.ts:104
    if (existsSync(SETTINGS_FILE)) renameSync(SETTINGS_FILE, SETTINGS_FILE + '.bak')
  • 写入本地文件
    src/index.ts:104
    if (existsSync(SETTINGS_FILE)) renameSync(SETTINGS_FILE, SETTINGS_FILE + '.bak')
  • 读取本地文件
    src/index.ts:114
    return existsSync(UNINSTALLED_FLAG)
  • 写入本地文件
    src/index.ts:125
    mkdirSync(GC_DIR, { recursive: true })
  • 写入本地文件
    src/index.ts:126
    writeFileSync(SETTINGS_FILE, JSON.stringify(s, null, 2) + '\n', 'utf8')
  • 读取本地文件
    src/index.ts:135
    if (inDir && AVATAR_EXTS.includes(extname(p).toLowerCase()) && existsSync(p)) return p
  • 读取本地文件
    src/index.ts:139
    if (existsSync(up)) return up
  • 写入本地文件
    src/index.ts:176
    mkdirSync(GC_DIR, { recursive: true })
  • 读取本地文件
    src/index.ts:187
    const bytes = readFileSync(p)
  • 删除本地文件
    src/index.ts:218
    if (next.plugin.enabled && softUninstalled()) rmSync(UNINSTALLED_FLAG, { force: true })
  • 删除本地文件
    src/index.ts:248
    if (existsSync(old)) rmSync(old)
  • 写入本地文件
    src/index.ts:250
    mkdirSync(GC_DIR, { recursive: true })
  • 写入本地文件
    src/index.ts:251
    writeFileSync(join(GC_DIR, 'avatar.' + ext), bytes)
  • 删除本地文件递归
    src/index.ts:300
    rmSync(GC_DIR, { recursive: true, force: true })
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 折叠思考链路
  • 导出对话流内容
  • 快速定位历史输入

对话快速定位,AI头像,支持导出对话流内容

README

由 DeepSeek 最新模型翻译生成
dsh-greater-clarity(GreaterClarity) DeepSeek Harness(DSH)Web 会话增强插件。在会话头部(「对话 / 轨迹」标签条右侧)提供四个入口: - 折叠 / 展开(Switch):一键全局折叠所有 AI 的「思考链路」与「工具调用」,只保留每轮的最终回答;开关 ON=「折叠」、OFF=「展开」。 - 导出:把当前会话导出为排版清晰的 Markdown,点击即下载到浏览器默认目录(无二次确认)。AI 只导出最终回答文本,用户只导出输入文本,图片用文件名指代;保留代码块 / 表格 / 列表结构。用户输入与附件文件名经过严格转义(反斜杠 / 结构符号 / 实体化 / 行首标记),阻断 Markdown 结构注入与裸 HTML 注入;AI 最终回答保持原样不转义。导出走「客户端直出」:直接用浏览器内存中的会话快照本地生成下载(毫秒级响应),快照不可用时自动回退服务端路径。文件名规则见下。 - 历史:打开/关闭「用户历史输入记录」快速定位面板,面板出现在按钮正下方。 - 设置:左导航 + 右内容的弹窗,配置插件总开关(启用/停用)、导出按钮显隐、AI 头像上传 / 大小(16–128px)/ 显隐,底部提供一键卸载。 此外:每条 AI 回复左侧显示头像(纯展示,可开关/调大小/上传自定义),头像下方带轮次标签(第 N 轮)。
展开完整文档(README 剩余 1 节)
dsh-greater-clarity(GreaterClarity)

DeepSeek Harness(DSH)Web 会话增强插件。在会话头部(「对话 / 轨迹」标签条右侧)提供四个入口:

- 折叠 / 展开(Switch):一键全局折叠所有 AI 的「思考链路」与「工具调用」,只保留每轮的最终回答;开关 ON=「折叠」、OFF=「展开」。
- 导出:把当前会话导出为排版清晰的 Markdown,点击即下载到浏览器默认目录(无二次确认)。AI 只导出最终回答文本,用户只导出输入文本,图片用文件名指代;保留代码块 / 表格 / 列表结构。用户输入与附件文件名经过严格转义(反斜杠 / 结构符号 / 实体化 / 行首标记),阻断 Markdown 结构注入与裸 HTML 注入;AI 最终回答保持原样不转义。导出走「客户端直出」:直接用浏览器内存中的会话快照本地生成下载(毫秒级响应),快照不可用时自动回退服务端路径。文件名规则见下。
- 历史:打开/关闭「用户历史输入记录」快速定位面板,面板出现在按钮正下方。
- 设置:左导航 + 右内容的弹窗,配置插件总开关(启用/停用)、导出按钮显隐、AI 头像上传 / 大小(16–128px)/ 显隐,底部提供一键卸载。

此外:每条 AI 回复左侧显示头像(纯展示,可开关/调大小/上传自定义),头像下方带轮次标签(第 N 轮)。

历史快速定位面板:打开后持续悬停(仅随「历史」按钮再次点击关闭);顶部固定「回到顶部」按钮;每条记录带「第 N 轮」序号徽章,支持搜索与点击跳转(跳转定位到该输入第一行)。若会话存在未加载完全的更早历史(DSH 原生「加载更早」可补),顶部显示「历史未加载完全」提示。

导出文件名规则:标题取左侧工作区显示的会话名称(displayTitle);时间戳取导出当日(点分格式,如 2026.8.24);会话存在未加载完全的历史时加前缀——
- 未加载完全:未加载完全历史对话_2026.8.24_会话标题.md
- 已加载完全:2026.8.24_会话标题.md

轮次语义:每条用户输入独立一轮并递增编号(含运行期插入的中途引导/steering)——历史窗口序号、头像下方标签、导出文档轮次三处编号严格一致。

状态持久化:全局折叠/展开开关保存在 Host 设置文件中,刷新页面或重启服务后自动还原。

目录结构

dsh-GreaterClarity-plugin/
├── package.json # dsh.bundle.patch + dsh.client.inject/platform + peerDeps 范围声明 ├── cordis.patch.yml # 官方 dsh plugin add 的 insert 挂载声明 ├── tsconfig.json # NodeNext,exclude src/client ├── tsconfig.test.json # 测试编译配置(src/pure + tests → build-test/) ├── tsdown.config.ts # host 自包含 ESM + client CJS(ModuleLoader banner) ├── scripts/build.sh # junction link + tsc 编译 host ├── LICENSE # MIT ├── src/ │ ├── index.ts # HOST:webServer 路由 + 设置持久化(纯逻辑引用 src/pure) │ ├── pure/ # 双端共享纯函数(单一事实源,node:test 覆盖) │ │ ├── markdown.ts # 转义/事件流导出构建/文件名净化/时间格式 │ │ ├── rounds.ts # 快照轮次采集/轮次映射/直出构建 │ │ └── settings-spec.ts # 设置模型/净化/合并/clamp │ └── client/ │ ├── index.ts # CLIENT 入口:apply(样式/DOM 层装卸/slot 注册) │ ├── state.ts # 共享状态 + 宿主通信 + 设置同步 │ ├── use-store.ts # React 订阅钩子 │ ├── styles.ts # 主题 token CSS │ ├── dom-layer.ts # 头像/折叠 DOM 层 + 轮次映射缓存 │ ├── export-panel.ts # 导出按钮(直出+兜底) │ ├── history-panel.ts # 历史快速定位面板 │ ├── settings-modal.ts # 设置弹窗 │ └── buttons.ts # 会话头部按钮区 ├── tests/ # node:test 单测(pure 层) ├── assets/DSH_Avatar.png # 默认头像 └── README.md

安装

方式 A:从 GitHub 源码安装(外部用户推荐)

dsh plugin --profile web add github:Baisbt/dsh-GreaterClarity-plugin

首次安装 pnpm 会拦截 prepare 构建脚本(allowBuilds 授权,源码安装的标准流程):把 pnpm 打印的 @dsh-external/dsh-greater-clarity@... 键原样加入该 profile 的 pnpm-workspace.yaml(allowBuilds: "": true;键随解析方式存在 git/codeload 两种形态,可同时保留多把),然后重跑一次安装命令即可。装入 web profile(含 dsh-web-app,提供本插件依赖的 webServer 服务)。

方式 B:本地目录 / npm

dsh plugin --profile web add
或发布到 npm 后:
dsh plugin --profile web add @dsh-external/dsh-greater-clarity

方式 C:运行时注入(开发)

在 DSH 会话内使用注入器工具: dev_build_plugin -> dev_inject_plugin

构建

需 DSH_CHECKOUT 指向 dsh 源码 checkout(含 packages/) $env:DSH_CHECKOUT = "D:\dsharness\deepseek-harness" bash scripts/build.sh # link 依赖 + tsc 编译 host
npm run build:client # tsdown 打包 host + client

设置持久化

设置写入 $DSH_HOME/greater-clarity/settings.json;上传的头像落盘 $DSH_HOME/greater-clarity/avatar.;默认头像来自包内 assets/DSH_Avatar.png。三处均通过 Host 路由 /dsh-greater-clarity/ 读写。

卸载与停用

三种粒度,按需选择:

| 需求 | 操作 | 效果 |
| 临时停用(保留设置) | 设置弹窗 → 「启用 GreaterClarity」开关关闭 | 全部功能与 DOM 层下线,会话头部仅留「启用」按钮;重启后保持停用 |
| 软卸载(清除数据) | 设置弹窗 → 底部「卸载插件…」(双确认) | 清空 $DSH_HOME/greater-clarity/(设置 + 头像),写入 uninstalled.flag 停用标记,跨重启生效;重新「启用」即恢复默认配置 |
| 彻底移除(profile 级) | 终端运行 dsh plugin --profile remove @dsh-external/dsh-greater-clarity | 从 profile 组合中移除 bundle 层,插件不再加载;建议先用软卸载清掉数据目录 |

说明:bundle 插件由 profile 配置层装配,「彻底移除」必须走官方 dsh plugin remove 命令——这是 DSH 的架构约定;弹窗内的卸载按钮负责的是数据清理与停用标记。

已知限制

- 导出路径:受浏览器安全限制,仅支持浏览器默认下载目录,无法自定义路径。
- 文件名:会话日志只保留 name(已剥离本地路径),图片导出用文件名(+ 附件存储派生路径)指代,无法还原原始完整路径;普通文件以文本中的 @路径 引用原样保留。
- 维护依赖:折叠 / 头像层与悬浮窗依赖 DSH 当前的稳定契约——服务名(webServer、slots、sessionQuery)、slot 名(conversation.session.header.utilities)、DOM 属性(data-chat-flow-kind、data-variant="think"、data-chat-call-id、data-chat-anchor-key、data-conversation-scroll)以及 Buttons 注入 props(sessionId、useSession),DSH 升级后需回归验证。
- 转义副作用:用户输入经严格转义后,导出文档源码中会呈现 \-、\ 等反斜杠序列与 < 等实体,渲染显示不受影响;行首 4+ 空格缩进的输入在导出中仍会呈现为代码块。
- 导出直出依赖:客户端直出读取会话对象层快照的 chat.order/chat.nodes 结构(防御式读取,异常自动回退服务端);标题在快照无 title 时取首条用户输入前 24 字。快照结构与 Host 端 sessionQuery 属同类非契约依赖,DSH 升级需回归。
- 头像路径白名单:设置中的 avatarPath 仅接受 $DSH_HOME/greater-clarity/ 目录内的图片文件(安全约束,目录外路径会静默回退到上传头像 / 默认头像);此前配置过外部路径的用户需把文件移入该目录或改用上传功能。
- 导出文件名前缀语义:「未加载完全历史对话_」前缀仅出现在客户端直出路径(直出只含已加载窗口);服务端兜底读盘为全量事件,文件名恒无前缀。
- 面板定位:面板锚定「历史」按钮下方,窗口缩放时随渲染即时校正;极端窄窗口下可能钳制在屏幕内边缘。
- 设置并发模型:单页面内并发 load/save 以请求序号守卫(仅采纳最新响应);多开 DSH Web 标签页时设置为「最后写赢」,无跨页协商。
- cordis peer 范围:peerDependencies.cordis 为 *(本插件对 cordis 仅类型导入、运行时零引用,避免 semver 预发布元组排除陷阱)。

更新记录

0.10.2 隐性问题修复

1. 兜底导出前缀语义修正:服务端兜底读盘即全量事件,文件名恒无「未加载完全」前缀(原实现会产出内容完整却命名为不完整的文件);前缀语义归位至直出路径。
2. 面板 resize 即时校正:窗口缩放时历史面板重新计算「历史」按钮下方锚定位置。
3. 设置并发守卫:load/save 请求序号化,仅采纳最新响应,消除快速连续操作时的乱序覆盖。
4. cordis peer 范围修正:>=4.0.0-rc 直连不受影响。

正确性
3. 导出丢首轮修复:事件流不以 turn/start 开头时(部分快照/回放窗口),已积累内容按独立轮输出而非丢弃。
4. 跳转吸附容器覆盖:滚动停稳检测改为捕获阶段监听全文档 scroll(静默 150ms 停稳 / 1200ms 兜底),不再依赖固定的 [data-conversation-scroll] 容器签名。
5. 空 step 轮不再整体隐藏:折叠分组中某轮没有最终回答行时保持该轮原样可见。
6. 请求体超限:以暂停读取 + 413 状态码响应取代直接断连;错误响应对已销毁套接字的二次写异常就地吞掉,消除未处理 rejection。
7. 悬浮窗跟随窗口缩放:HistoryPanel 打开时窗口 resize 会重算吸附位置。

健壮性
8. settings.json 损坏备份:解析失败时先把旧文件改名 .bak 再回默认值,不无提示覆盖。
9. POST 设置逐字段类型净化:非法类型不落盘;数值字段统一 clamp。

0.1.0 修复批次

1. 头像可见性遮挡判定:sticky 头像显隐判断从「仅视口相交」升级为采样点命中测试(中心 + 四内对角点,elementFromPoint 必须命中头像自身),被 session log 栏等浮层遮挡的头像不再误判为可见。
2. 导出 Markdown 注入防护:新增 escapeUserText 全局严格转义用户输入与附件文件名,阻断伪造标题/分隔线/列表/注释及裸 HTML 注入;AI 回答不转义。
3. 历史跳转悬浮窗吸附:历史记录跳转平滑滚动停稳后,悬浮窗重新吸附到目标行头像旁,几何与直接点击一致。
预览分享卡片长什么样 ↓Baisbt/dsh-GreaterClarity-plugin
分享 · DeepSeek Harness Hub
Baisbt/dsh-GreaterClarity-plugin

折叠思考链路、导出对话并快速定位历史输入

这是你的仓库?认领条目

回到顶部