Back to home@ShadowQuill

DialogueContextBridge

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

Stars
0
Language
TypeScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

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

命令参考

命令说明常用选项
/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 <id>一键台:带 <id> 等价 inject 一键引入;不带 <id> 显示近期快照与快捷操作
/dcb-save一键导出当前对话为快照:编译并落库,回显可复制的 Markdown 与 id(Phase 4 一键操作)--title --tags --max-tokens

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

配置项

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

配置项默认值说明
dataDirdialogue-context-bridge数据目录,相对路径挂在 ~/.dsh
maxTokens4096单个快照的 token 上限,可扩展至 8192
maxBulletsPerSection6摘要每小节保留的最大要点数
maxHistoryMessages400/compile 单次读取的消息上限
autoSavefalse/compile 后是否自动落库
searchLimit10检索默认返回条数
encryption.enabledfalse启用 AES-256-GCM 静态加密
encryption.passphrase''加密口令(≥ 8 位,不落盘)
encryption.indexPlaintextfalse加密时是否仍建明文索引(默认关闭,开启会通过索引泄漏内容)
logLevelinfo日志级别
merge.policynewWins合并模式(/import --mode merge)的冲突裁决规则:newWins 当前对话覆盖历史快照、snapshotWins 历史快照优先、timestamp 按时间戳先后
versioning.enabledfalse记忆库版本控制:每次保存/删除快照后自动 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|revertscope 建议使用 core|storage|security|commands|dsh|config|docs|deps|release

单元测试的边界

src/coresrc/storagesrc/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.settingsinstallSettingsSection)把 Config Schema 接入 DSH 设置面板,自动渲染配置表单并热改无需重启(日志级别、token 预算、合并策略、加密口令、版本控制开关均 live 生效;dataDir 变更需重启);新增 /dcb 一键台(不带 id 显示近期快照与快捷操作)与 /dcb-save 一步导出可复制快照;记忆库版本控制此前已完成(/snapshot-history + /snapshot-rollback 回滚)

License

MIT