DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ShadowQuill /

ShadowQuill/DialogueContextBridge

Verified

对话上下文桥接 — 为大语言模型(LLM)/AI 智能体的对话做跨会话上下文桥接的 DSH 插件:把一次对话的共识打包成可移植快照,一键引入新对话(三层快照 / SQLite+FTS5 / AES-256-GCM)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@83e0aae9

DialogueContextBridge · 对话上下文桥接

为大语言模型(LLM)与 AI 智能体的对话会话做跨会话上下文桥接。

把一次对话里「已经了解的信息」打包成可移植的知识单元,一键引入新对话,让 AI 不必反复从头了解背景。

DialogueContextBridge 对话上下文桥接

资源 链接
📖 文档站点 shadowquill.github.io/DialogueContextBridge
架构设计 docs/architecture.md
快照格式 docs/snapshot-schema.md
宿主联调 docs/dsh-host-integration.md

CI Deploy Docs License: MIT Docs Site

这是什么

做长周期项目(软件开发、学术研究、产品设计)时,你和大语言模型(LLM)/ AI 智能体的工作往往跨越多个对话会话。每开一个新对话,模型都「失忆」,要重新解释一遍背景,于是出现三个老问题:

  • 效率低:反复手动复制粘贴历史上下文;
  • 信息丢:关键决策、代码、参数在摘要里被磨平;
  • 体验断:长期项目的连续性被会话边界切断。

DialogueContextBridge 是一个 DSH(DeepSeek Harness,一个面向大语言模型的智能体运行时)插件,用「对话上下文快照」解决这件事:在源对话里 /compile + /save,在新对话里一键引入,AI 立刻拿到你们此前达成的全部共识。

所有数据只存在本机 ~/.dsh/,不上传任何服务器;快照是纯文本 Markdown,任何能读文本的 Agent 都能接手。

核心设计:三层快照

快照不是对话日志的转储,而是一个结构化的三层复合体。

层 内容 处理策略
① 关键消息原文 最终敲定的代码、决策结论、技术参数、硬性指令 逐字保留,禁止压缩与截断
② 结构化摘要 讨论背景、推导过程、中间试错、已排除方案 由 /compile 压缩为分层要点
③ 用户偏好与设定 风格偏好、角色设定、项目硬性约束 按稳定 key 归档,便于跨快照裁决

这个分层是为了解决「摘要损失」:把不可压缩的东西和可压缩的东西分开处理,而不是对整段对话做一次无差别摘要。

flowchart LR
  A[对话消息] --> B[分类器]
  B --> C[① 原文层]
  B --> D[② 摘要层]
  B --> E[③ 偏好层]
  C & D & E --> F[token 预算裁剪]
  F --> G[Markdown + Schema 头]
  G --> H[(SQLite + FTS5)]

三层快照数据流

快速开始

环境要求

  • Node.js ≥ 18.17
  • 一个基于 Cordis 的 DSH 运行时
  • SQLite ≥ 3.34(用于 FTS5 trigram 分词器,中文检索依赖它;低版本会自动回退到 unicode61)

安装

# 在 DSH 工作目录中安装
npm install dsh-plugin-dialogue-context-bridge

启用插件

在 DSH 配置中加载插件,或在设置面板中搜索「对话上下文桥接」启用:

import bridge from 'dsh-plugin-dialogue-context-bridge';

ctx.plugin(bridge, {
  maxTokens: 4096,
  autoSave: false,
});

三条命令跑通闭环

# 1. 把当前对话编译为快照草稿(只在内存中,不写盘)
/compile --title "上下文桥接架构评审" --tags 架构,phase1

# 2. 确认无误后落库
/save

# 3. 在任何时候按关键词找回它
/snapshot-search 上下文桥接

# 4. 在新对话里一键引入——默认「仅新信息」模式(只读背景,不回写)
/import snap_a1b2c3

#    想让当前对话与历史快照融合?用 merge 模式(Phase 3 基线)
/import snap_a1b2c3 --mode merge

#    只看简报、不注入,先确认内容对不对
/import snap_a1b2c3 --dry-run

跨设备 / 跨账号迁移记忆(文件导入导出)

快照文档是纯文本 Markdown + 自描述 Schema 头,可脱离本插件独立存在。导出为文件后, 拷贝到另一台机器或账号,再用 /dcb-import 接手——这就是 spec 要求的「可迁移性」超越 聊天内复制粘贴的形态。

# 导出单条快照为 .md 文件(默认落 <数据目录>/exports/)
/dcb-export snap_a1b2c3

# 导出全部快照
/dcb-export --all

# 指定导出目录
/dcb-export --all -o ~/Desktop/my-snapshots

# 先预览、不落库:解析并校验文件,确认内容对不对
/dcb-import ~/Desktop/my-snapshots/snap_a1b2c3__xxx.md --dry-run

# 导入到记忆库(自动分配新 id,绝不覆盖本地已有快照)
/dcb-import ~/Desktop/my-snapshots/snap_a1b2c3__xxx.md

导入后会生成新 id(避免与本地或其他来源的相同 id 冲突覆盖),正文校验和重算后写回; 目标库若开启加密,导入内容会按本地策略重新加密落盘。

打开 Web UI

dsh --profile web          # 启动并自动打开默认浏览器到 Web UI
# 后台运行且不自动开浏览器: dsh --profile web --no-open

插件加载后,在对话里输入 /dcb 会返回一张**「记忆库总览」卡片**(近期快照表 + 一键操作清单);它同时也是功能导航主页,列出全部命令的中文速查。所有命令都可在输入框按 /(或点菜单按钮)唤起命令面板,鼠标点选即执行,走宿主、不经模型、零 token——无需手打命令。命令回执统一为纯文本卡片(emoji 标题 + · 项目符号 + → 引导 + ─ 分隔线,DSH 命令回执不解析 Markdown,故不用任何标记符号)。

手打命令也会被宿主拦截:每个命令都声明了 input 输入提示符,因此即使在输入框手打整条带参命令(如 /dcb-merge snap_a1b2c3 --policy newWins)再回车,也会由宿主直接执行、不会当作聊天发给模型——从根上避免历史 /import ... --mode merge 被模型当成对话、烧 token 的问题。菜单点选与手打现在行为一致。

命令参考

命令 说明 常用选项
/compile 编译当前对话为三层快照草稿并预览 --title --tags --max-tokens --full --discard
/save 把草稿写入本地记忆库;无草稿时即时编译并保存 --title --tags --max-tokens
/snapshot-search <keywords> FTS5 全文检索(多关键词为 AND 语义) -n, --limit
/snapshot-list 列出快照 -n, --limit --here
/snapshot-show <id> 查看快照完整文档与完整性校验结果 --meta
/snapshot-remove <id> 删除快照及其索引(不可撤销) —
/snapshot-history <id> 查看快照版本历史(Phase 4 版本控制) —
/snapshot-rollback <id> 回滚快照到历史版本并重新落库 --to <ref>
/import <id> 把历史快照引入当前对话:默认「仅新信息」,亦可「合并」 --mode inject|merge --policy snapshotWins|newWins|timestamp -d, --dry-run
/dcb-merge <id> 一步融合快照的高频别名,等价 /import <id> --mode merge(少一次交互) --policy snapshotWins|newWins|timestamp -d, --dry-run
/dcb <id> 一键台:带 <id> 等价 inject 一键引入;不带 <id> 显示近期快照与快捷操作 —
/dcb-save 一键导出当前对话为快照:编译并落库,回显可复制的 id 与引入命令(Phase 4 一键操作)。默认省略整段快照全文以压低对话历史体积 --title --tags --max-tokens --full(回显完整 Markdown 全文)
/dcb-export <id> 把快照导出为独立 .md 文件(明文、自描述 Schema 头,可被任意 Agent 接手) --all -o, --out <dir>
/dcb-import <path> 从 .md 文件导入快照到记忆库(自动分配新 id 防覆盖) --dry-run

/compile 与 /save 是有意分开的两步:快照一旦落库就可能被其他对话引入,必须由你确认内容后再持久化。若你更喜欢一步到位,把配置项 autoSave 打开即可。

配置项

在 DSH 设置面板中可热改,无需重启(配置经 installSettingsSection 接入,改动即通过 setSource 热更新到日志级别、token 预算、合并策略、加密口令与版本控制开关)。唯一例外:dataDir 在加载期已打开数据库,改后需重启 dsh web 方能切换数据目录。

配置项 默认值 说明
dataDir dialogue-context-bridge 数据目录,相对路径挂在 ~/.dsh 下
maxTokens 4096 单个快照的 token 上限,可扩展至 8192
maxBulletsPerSection 6 摘要每小节保留的最大要点数
maxHistoryMessages 400 /compile 单次读取的消息上限
autoSave false /compile 后是否自动落库
searchLimit 10 检索默认返回条数
encryption.enabled false 启用 AES-256-GCM 静态加密
encryption.passphrase '' 加密口令(≥ 8 位,不落盘)
encryption.indexPlaintext false 加密时是否仍建明文索引(默认关闭,开启会通过索引泄漏内容)
logLevel info 日志级别
merge.policy newWins 合并模式(/import --mode merge)的冲突裁决规则:newWins 当前对话覆盖历史快照、snapshotWins 历史快照优先、timestamp 按时间戳先后
versioning.enabled false 记忆库版本控制:每次保存/删除快照后自动 git 提交(数据目录下 snapshots/ 子目录即仓库),并可用 /snapshot-rollback 回滚。注意:被版本化的是快照 Markdown 明文,git 历史不加密

关于加密擦除

口令不落盘。丢弃口令即等价于销毁全部密文(cryptographic erasure)——这也意味着口令丢失后快照无法恢复,请自行妥善保管。

项目结构

DialogueContextBridge/
├── src/
│   ├── index.ts              # Cordis 插件入口(apply / 服务注册 / 生命周期)
│   ├── config.ts             # schemastery 配置 Schema
│   ├── service.ts            # 编译→预览→落库→检索的编排层
│   ├── types.ts              # 三层快照数据模型
│   ├── commands/             # 命令层(/compile、/save、/snapshot-*)
│   │   ├── compile.ts
│   │   ├── save.ts
│   │   ├── search.ts
│   │   ├── manage.ts
│   │   ├── format.ts         # 面向用户的输出渲染
│   │   └── shared.ts         # 选项解析与错误包装
│   ├── core/                 # 与宿主解耦的纯逻辑
│   │   ├── lexicon.ts        # 语义识别词典(可扩展)
│   │   ├── classifier.ts     # 消息 → 三层分类
│   │   ├── summarize.ts      # 摘要器(内置抽取式,可注入 LLM 实现)
│   │   ├── budget.ts         # token 预算裁剪
│   │   ├── serializer.ts     # Markdown + Schema 头 序列化/解析
│   │   └── compiler.ts       # /compile 的完整流水线
│   ├── storage/              # SQLite + FTS5
│   │   ├── database.ts
│   │   ├── migrations.ts
│   │   └── repository.ts
│   ├── security/crypto.ts    # AES-256-GCM 封装
│   ├── dsh/types.ts          # 宿主能力的类型接缝
│   └── utils/                # id / token 估算 / 路径 / 日志
├── tests/                    # vitest 单元测试
└── docs/
    ├── architecture.md       # 架构与设计决策
    └── snapshot-schema.md    # 快照文档格式规范

开发指南

npm install          # 安装依赖
npm run dev          # tsup 监听构建
npm run typecheck    # 类型检查
npm run lint         # ESLint(Airbnb TypeScript 风格)
npm test             # vitest
npm run test:coverage
npm run build        # 产出 lib/(esm + cjs + d.ts)

代码约定

  • 风格:Airbnb TypeScript 风格指南,由 ESLint + Prettier 强制;
  • 注释:所有公开函数、接口必须有完整 JSDoc(含 @param / @returns);
  • 范式:优先函数式,用工厂函数替代 class(ESLint 规则会拦住 class 声明);
  • 提交:遵循 Conventional Commits,由 commitlint 校验。
feat(core): 支持按标签过滤快照检索
fix(storage): 修正 trigram 短词回退时的空结果
docs(readme): 补充加密擦除说明

type 允许 feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert;scope 建议使用 core|storage|security|commands|dsh|config|docs|deps|release。

单元测试的边界

src/core、src/storage、src/security 全部可在纯 Node 环境下测试,不需要启动 DSH。宿主相关的耦合被收敛在 src/dsh/types.ts 这一个文件里——若 DSH 的命令/对话 API 与此处声明不同,只需改这一处适配。

路线图

  • Phase 1 快照导出:三层编译、Markdown + Schema 落盘、FTS5 检索
  • Phase 2 快照导入:「仅了解新引入信息」模式(快照作为只读背景情报注入,/import + InjectionService 宿主接缝)
  • Phase 3 合并模式:当前上下文与引入快照智能融合,偏好层按可配置规则裁决(newWins / snapshotWins / timestamp),冲突清单写入「裁决报告」供复核(/import --mode merge [--policy ...],merge.policy 配置项)
  • Phase 4 UI 优化 / 一键操作 / 设置面板集成:经 ctx.settings(installSettingsSection)把 Config Schema 接入 DSH 设置面板,自动渲染配置表单并热改无需重启(日志级别、token 预算、合并策略、加密口令、版本控制开关均 live 生效;dataDir 变更需重启);新增 /dcb 一键台(不带 id 显示近期快照与快捷操作)与 /dcb-save 一步导出可复制快照;记忆库版本控制此前已完成(/snapshot-history + /snapshot-rollback 回滚)
  • Phase 4.1 卡片 UI 统一:新增 src/commands/card.ts 渲染助手(引用块标题带 + GFM 表格 + 状态徽标 + 快捷操作清单),/dcb、/import、/save、/dcb-save 回执统一为清爽卡片;设置表单字段描述收紧。注:DSH 0.1.x 的设置面板卡片由 harness 预编译进 web 包,外部插件无法注入自定义卡片,故卡片统一落在对话内呈现
  • Phase 4.2 快照文件导入 / 导出:新增 /dcb-export <id>(--all 全量、-o <dir> 指定目录)把快照写成独立明文 .md 文件,以及 /dcb-import <path>(--dry-run 预演)从文件导入记忆库;复用 serializer.ts 的 serializeSnapshot / parseSnapshot / verifySnapshotDocument 保证往返零损失,导入自动分配新 id 防覆盖、按本地加密策略重加密落盘。顺带修 parseFlags 把 --dry-run 转驼峰 dryRun(修复 /import --dry-run 此前静默失效)

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 83e0aae96be7

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout