English | 中文
版本说明:本仓库为精简版,包含 A–G 七大模块(对话导出 / 交接摘要 / 成本优化 / 全局检索 / 本地语义检索 / 对话知识资产 / 跨会话知识合成)。 开发者版(A–J 九大模块,含执行轨迹分析、Prompt 工作台、多模型竞技场、任务编排、安全审计)请见 beijingwahw/dsh-companion-dev。
DeepSeek Harness 官方伴侣插件 —— 基于 Cordis 框架与 Harness Plugin SDK 构建,为 DeepSeek Harness 平台提供对话智能导出、上下文交接摘要、API 成本优化、全局对话检索、本地语义检索、对话知识资产与跨会话知识合成七大能力。
- 开发语言:TypeScript(
strict: true,ESM) - 运行框架:DeepSeek Harness(Cordis ≥ 4.0,一切皆插件)
- API 直连:DeepSeek 官方 API(
https://api.deepseek.com) - 数据安全:所有用户数据仅存于 Harness 插件沙箱本地,API Key 以 AES-256-GCM 加密落盘
| 模块 | 能力 | 独立开关 |
|---|---|---|
| A · 对话智能导出 | Markdown / PDF / JSON / PNG 长图导出、回合级勾选导出(角色徽章 + 内容预览 + 全选/全不选,仅导出选中回合)、时间戳开关、隐私脱敏(手机号/邮箱/身份证/银行卡自动打码)、批量可视化多选(筛选 + 全选 + 已选计数)、多会话批量 ZIP 打包、导出进度实时显示与一键中止;含中文的 PDF 由客户端 canvas 光栅化为免打印多页 PDF(无 window.print() 对话框冻结) |
enableExport |
| B · 上下文交接摘要(上下文工程 2.0) | 会话选择面板(当前会话徽章 / 筛选 / 选中任意历史会话)、一键生成 ≤500 字四段式交接摘要、map-reduce 分层摘要(超长对话分块压缩,突破单次字符预算,段级缓存复用)、查询聚焦(输入主题定向保留相关内容)、上下文血缘图谱(追踪摘要跨会话传播链路:来源/后代 + 深度)、上下文压力监测(token 估算 + 耗尽预测 + 四级健康建议,交接前一眼看清"还能聊多久")、可编辑、复制到剪贴板、保存为模板、导入摘要作为新对话的 system 首条消息实现上下文继承 | enableHandoff |
| C · API 成本优化(开发者模式 + 预测性成本智能) | API Key 加密托管、官方动态计价引擎(每小时抓取 DeepSeek 与国产厂商官方定价页,新模型/调价自动导入,抓取失败静默降级内置快照)、峰谷分时计价(高峰时段按高峰价计费)、峰谷自动调度(高峰窗口实时解析自官方定价页)、模型智能路由、日/月双档预算 80%/100% 预警并自动暂停非必要调用、缓存命中折扣计费、每日/每周 Token 消耗与费用报表;预测性成本智能:支出预测(OLS 线性回归外推 + 月末投影)、异常检测(中位数 + MAD 鲁棒 z 分数)、what-if 模拟(调用量倍数 / 缓存命中率 / 模型迁移场景沙盘)、变化归因(按模型分解费用变化,定位"这个月多花的钱去哪了") | enableCost |
| D · 全局对话检索 + 对话内搜索 | 关键词模糊搜索、时间范围筛选、自定义标签增删与按标签过滤、结果点击直达对话;对话内搜索(Ctrl+F 浮动查找栏,CSS Custom Highlight API 无侵入高亮,大小写/全词开关、查询历史、流式输出期间自动重同步) | enableSearch |
| E · 本地语义检索(自适应检索系统) | 纯本地混合检索引擎:BM25 词法 + 字符 trigram 哈希向量语义近似 + RRF 倒数排名融合 + 时序感知加成,检索质量显著超越关键词匹配且零外部依赖;查询智能(拼写纠错 + 从你的语料学到术语关联的共现扩展,响应携带溯源注记)、质量诊断(相关度强度 + 双通道覆盖率 + 可执行建议)、相关性反馈学习(点击即反馈:查询词并入会话点击画像,后续检索温和上浮你最终打开过的会话——饱和计数 + 90 天半衰 + 35% 封顶三重防漂移,越用越懂你)、MMR 多样性重排(λ=0.7 贪心选择,头部结果从"最优的重复"变成"最优且互补的组合")、知识地图(全部会话质心贪心聚类为主题簇,发现"重复解决过哪些问题",点击簇标签直达深入检索)、查询建议(输入框自动补全:语料前缀补全 + 共现续写 + 点击画像加权,"你的语料告诉你该搜什么")、命中解释(每条命中携带透明账本:词法命中词 × 频次、语义形状相似度、新近/反馈加成分解 + 一句话人话摘要——"为什么是这个会话"一目了然)、零命中救援(检索失败自动放宽查询:宽阈值纠错 0.35 + 噪声词剔除后重试,救援过程全溯源可回退)、检索盲区分析(零命中查询自动入日志,词元级聚合挖掘"反复搜索但历史无覆盖"的主题——次数 × 停留跨度 × 新近度评分,告诉你该补什么知识)、主动脉搏(主动洞察引擎:盲区缺口 + 反馈学习画像 + 索引健康三类信号源即时聚合为洞察卡片,按严重度排序、封顶 6 条,推送克制);语义/关键词模式一键切换、语义排名徽章(词法/语义名次)、命中摘要片段;惰性增量索引(updatedAt 漂移检测 + 5 秒节流),语料统计与倒排表增量维护(无过滤查询免全语料扫描,实测提速 37 倍);命令面板 find <词> / map [minSize] / blindspots / pulse |
enableRetrieval |
| F · 对话知识资产 | 把对话升级为可积累的知识资产:实体抽取(纯本地规则抽取命令 / 路径 / 技术专名 / 代码标识符 / 中文术语 / 版本号六类实体,零 LLM 调用)、自动标签建议(freq × 类型权重 × IDF 打分推荐标签,一键应用,尊重用户判断)、关联会话推荐(实体重叠 + IDF 加权 + 余弦式归一,回答"还有哪些对话在谈同一件事")、全局实体图谱(点击实体直接发起检索,知识变检索入口)、主题趋势演化(实体动量:近窗口 vs 上一窗口频次变化率,rising / falling / stable 三向判定 + 最近 8 周逐周覆盖时间线,一眼看出"最近在火什么、什么在退烧") | enableKnowledge |
| G · 跨会话知识合成(Deep Research) | 面向全部历史对话的深度研究引擎:块级检索(会话按回合分块,词法命中率 + trigram 余弦双通道打分)、证据选择(分数降序 + 单会话块数封顶 + 字符预算,防单一会话垄断证据)、契约式合成(只用证据作答 + [编号] 引用标注 + 证据不足时明确声明,结论先行、矛盾明示)、知识演化追踪(跨会话信念版本化:同一主题的版本号/数值随时间变化即演化事件,语义化版本比较判定升级/回退,生成"你现在应该相信什么"的信念时间线——答案不是错的,只是旧了)、证据来源一键跳回原会话;命令面板 research <问题> 同通道 |
enableSynthesis |
七个模块均为独立 Cordis 子插件,可任意组合启停,互不影响。
- DeepSeek Harness
>= 0.1.0 - Node.js
^22.19 || >=24 - pnpm(
npm install -g pnpm)
dsh plugin add beijingwahw/dsh-companion --profile web启动后插件面板自动加载:
dsh web常用进阶命令:升级
dsh plugin upgrade dsh-companion --profile web;卸载dsh plugin remove dsh-companion --profile web;本地路径安装dsh plugin add ./dsh-companion --profile web。更多方式见「开发期热更新」后附。
| 层 | 方法 | 生效范围 |
|---|---|---|
| 运行配置 | 编辑 dsh 用户层 cordis.patch.yml(~/.dsh/profiles/<name>/ 或 ~/.dsh/),保存即生效 |
dsh 原生监视用户层,事务性重载该行(bundle 层默认值已全量列出,照抄整行覆盖即可) |
| 开发期代码 | npm run dev 起独立 cordis + HMR 进程 |
保存 src/ 下任意文件或 cordis.yml → 旧实例卸载(effect 回卷)→ 新代码挂载,无需重启 |
| 安装产物 | 改代码 → pnpm build → 重新 dsh plugin add beijingwahw/dsh-companion --profile web → 重启 dsh |
更新已安装的插件 |
npm run dev 的组成:仓库根 cordis.yml 依次挂 logger / timer / hmr / 宿主桩 / 本插件(直接加载 src/index.ts,config 与 cordis.patch.yml 逐键一致);
dev/host-stubs.ts 提供 dsh 宿主 7 个服务的最小桩(webServer / storageDomain / credentials / sessionQuery / commands / settings / systemPrompt)——存储域为内存版且按名缓存,热重载后开发数据不丢。
注意:开发 HMR 需 Node ≥ 24.11(24.1.0 等早期 24.x 的 Node 内部接口与 cordis-plugin-loader 1.0.2 不兼容,表现为编辑文件不触发重载)。
git clone https://github.com/beijingwahw/dsh-companion.git
cd dsh-companion
pnpm install
pnpm run build
dsh plugin add . --profile web- 打开插件设置页的「开发者模式」总开关。
- 在「API Key 管理」输入框粘贴你的 DeepSeek API Key 并保存。
- Key 通过 AES-256-GCM 加密后存入 Harness 插件沙箱的
companion存储域; - 任何接口响应、日志、事件中均不会出现 Key 明文(
/cost/state仅返回apiKeyConfigured布尔)。
- Key 通过 AES-256-GCM 加密后存入 Harness 插件沙箱的
- 可选:点击「测试连接」验证 Key 有效性(对应
/cost/test-call)。
- 单次导出:对话界面头部操作区点击「导出」,或命令面板执行
export。选择格式(Markdown / PDF / JSON / PNG 长图),勾选是否保留时间戳(默认开启)、是否隐私脱敏,确认后文件经浏览器下载到本地。 - 回合级选择(吸收自 dsh-conv-export):导出对话框内逐回合勾选——角色徽章(用户蓝 / 助手绿)+ 两行内容预览 + 时间,全选/全不选与已选计数实时更新;仅导出选中回合(如剔除失败的尝试或跑题的段落),默认全选。批量导出模式不参与回合选择。
- 导出进度与中止:光栅化导出进行中按钮实时显示「done/total」分片进度;「取消」按钮变为「中止导出」,中止信号贯穿 API 请求与逐片光栅全过程;导出进行中 Esc 不再关闭对话框(以中止按钮为唯一出口)。
- PNG 长图:整篇对话经客户端 canvas 光栅化(SVG foreignObject,2x 视网膜)为一张纵向长图直接下载;仅客户端界面可用(命令面板无 canvas),不参与批量 ZIP。
- 批量导出:导出对话框勾选「批量导出」进入可视化多选界面——全选/全不选工具栏、已选计数(n/N)、按标题或会话 ID 实时筛选(全选作用于当前筛选结果并与已有选择取并集)、勾选行高亮与未勾选行淡化;确认后自动打包为 ZIP 下载(单次最多 100 个会话,自动去重;命令
export-batch仍可直接按 ID 列表导出)。 - PDF 说明:纯 Latin-1 内容直接生成结构化 PDF 文件;含中文等非 Latin-1 字符时由客户端光栅化为免打印多页 PDF(A4 分页、JPEG 编码、零依赖 PDF 组装),全程无
window.print()对话框——该路径在部分平台(尤其 Windows Chrome)会冻结整个浏览器;无光栅能力的环境(命令面板)退回打印视图由浏览器另存为 PDF。
- 生成:对话头部点击「交接摘要」按钮(或命令
handoff),对话框顶部的会话选择面板默认选中当前会话(带「当前」徽章)并自动生成摘要;也可按标题 / 会话 ID 筛选后选择任意历史会话生成(选中即自动重新生成,切换会取消在途请求并重置编辑状态)。插件调用 DeepSeek API 按固定四段式 Prompt 生成摘要:核心结论 / 已解决的问题 / 关键背景信息 / 待办事项与未解决问题(≤500 字)。 - map-reduce 分层摘要(上下文工程 2.0):超长会话超出单次摘要字符预算时自动分块——map 阶段逐段要点摘要(段级缓存,未变更的分块不重复调用),reduce 阶段递归归并为最终摘要;统计信息展示分块数与缓存命中数。
- 查询聚焦:摘要对话框输入聚焦主题(如"部署流程"、"性能优化")后重新生成,Prompt 将定向保留与主题相关的内容,无关细节被压缩——同样的预算,更相关的上下文。
- 上下文血缘图谱:摘要对话框底部展示该会话的血缘——内容从哪些会话流入(来源链)以及摘要流向了哪些会话(后代链),每条记录带深度与内容摘录,跨会话的上下文传播一目了然。
- 上下文压力监测(
GET /handoff/context-health):摘要对话框顶部的压力仪表实时展示选中会话的 token 占用——估算 token 数与占用百分比进度条、按近 N 回合平均增速外推的"还可聊多少回合"耗尽预测、四级健康分级(healthy / watch / advice / critical)与对应交接建议;帮助用户判断"现在交接是否已经太迟"。 - 编辑与复用:摘要在可编辑弹窗中展示,支持「复制到剪贴板」与「保存为模板」;模板可后续查看、删除,生成摘要时也可指定已有模板作为指令文本(缺省回退固定契约 Prompt)。
- 导入继承:新建对话时通过输入区 dock 的「导入历史摘要」入口(或命令
handoff-import)粘贴摘要。插件将其武装给下一个新对话,自动作为system角色第一条消息注入,实现跨对话上下文继承。
- 官方动态计价:计价引擎每小时抓取 DeepSeek 官方定价页(含峰谷分时计划)与智谱/百度文心/字节豆包/Kimi 等国产厂商定价页,自动发现带价模型并导入;官方价格内容变化时持久化新快照,重启后沿用;抓取失败静默降级为内置刊例价快照,不影响实时计价。用户可按模型 id 自定义单价覆盖(最长前缀匹配)。
- 峰谷分时计价:官方定价页声明的高峰时段(缺省北京时间 9:00–12:00、14:00–18:00)按高峰价计费,空闲时段按空闲价;缓存命中的输入按折扣价计费。
- 峰谷自动调度:开启后,任务可标记「紧急 / 普通」。「普通」任务在高峰时段进入延迟队列(容量上限 100),自动等到空闲时段再发起 API 调用;高峰窗口优先取计价引擎对官方定价页的实时解析,异常时回退内置缺省窗口;预算暂停期间排队任务会在执行前被复检拦截;交互式操作(如生成交接摘要)按「紧急」处理,不参与延迟。
- 模型智能路由:开启后按任务类型自动选模 —— 翻译、摘要等简单任务走
deepseek-chat,代码生成、推理等复杂任务走deepseek-coder;支持自定义路由规则覆盖默认策略。 - 日/月双档预算:分别设置日预算与月预算上限(CNY,0=不限)。任一档消耗达 80% 时通过 Harness 通知系统提醒;达 100% 时再次提醒并自动暂停非必要 API 调用(必要调用仍放行但持续告警)。
- 成本报表:独立视图页提供详尽可视化面板——汇总卡片(调用数 / Token 总量 / 费用 / 节省金额 / 延迟执行数 / 缓存命中率 / 日均费用 / 峰值日)、日/月预算进度条(80% 黄、100% 红)与在途调用预授权展示、每日 Token 图(输入/输出堆叠)、每日费用与节省对比图、模型费用排行(水平占比条 + 调用数与费用占比)、缓存命中结构条(命中折扣价 / 未命中全价)、峰谷 24 小时时间轴(高峰段高亮)、多厂商定价概览(厂商 + 模型数 + 实时/快照/自定义来源徽章)、定价来源与抓取时间,支持手动触发官方定价刷新。命令
usage可在面板内快速查看本月文本报告。 - 预测性成本智能(HTTP API,供报表视图与外部集成消费):
GET /cost/forecast:支出预测——OLS 线性回归拟合「日费用 ~ 时间」趋势并外推未来 N 天,返回趋势斜率、拟合优度 R²、日均费用、逐日预测点与月末费用投影(已花费 + 未来预测到月底);历史不足 5 天时返回sufficient: false。GET /cost/anomalies:异常检测——中位数 + MAD(绝对中位差)鲁棒 z 分数定位费用异常日,对离群值免疫(均值/标准差会被异常值本身污染);按严重度分级(mild / high / critical)并返回期望值与偏离倍数。POST /cost/what-if:场景沙盘——在历史基线上叠加调用量倍数、目标缓存命中率、模型迁移(from → to 比例)三种算子的任意组合,返回基线 vs 投影的日费用、30 天投影与按模型分解。GET /cost/attribution:变化归因——对比最近 N 天与前 N 天两个等长窗口,按模型分解费用变化贡献份额(降序),回答"这个月多花的钱去哪了"。
- 历史对话列表顶部注入全局搜索框(或命令
search):- 关键词:模糊匹配全部历史对话内容;
- 时间:日期选择器按范围过滤;
- 标签:命令
tag或结果页为会话增删自定义标签,支持按标签筛选。
- 搜索结果以列表呈现,附命中片段,点击直达对应对话。
- 对话内搜索(吸收自 dsh-conv-search):对话头部点击「对话内搜索」或按
Ctrl/Cmd+F打开浮动查找栏:Enter/Shift+Enter、F3/Ctrl+G:下一个 / 上一个命中(环绕);Esc关闭;↑/↓浏览查询历史;Aa/ab开关:区分大小写 / 全词匹配;- 高亮经 CSS Custom Highlight API 以覆盖层绘制,不触碰 React 管理的转录 DOM;模型流式输出或加载更早消息时经 MutationObserver 自动重同步,激活命中按「文本节点 + 偏移」身份保持,不跳动读者的滚动位置;
- 匹配只扫描对话滚动视口,自动排除输入区草稿与搜索栏自身,无幻影命中。
- 检索视图页顶部的模式 Pill 一键切换语义检索(混合排序)与关键词检索(FTS)。
- 混合排序:每条命中附词法排名与语义排名徽章及 RRF 融合分——BM25 捕捉精确词法匹配,字符 trigram 哈希向量捕捉"字符组成相似但用词不同"的近义表达(中英混排、拼写变体),RRF 倒数排名融合两路结果,对单路失效鲁棒。
- 查询智能(轴线 8):检索前对查询自动做两级扩展,扩展词只追加不替换——
- 拼写纠错:查询词不在语料词表时,用 trigram 余弦在词表里找最近邻(≥ 0.55 且该词真实出现 ≥ 2 次才采纳)——"perfomance" 自动救回 "performance",纠错候选必然可在你的对话里命中,不猜通用词典;
- 共现扩展:对语料中真实出现的查询词,经倒排表直达包含它的文档,统计同文档共现词的 salience(共现文档数 × IDF)取最强者——从你自己的语料学到术语关联(中文提问 ↔ 英文术语、缩写 ↔ 全称),随对话积累自进化;
- 扩展溯源随响应返回(
expansion.notes),检索视图页的智能提示栏以 Pill 展示"auth←鉴权(共现)",扩展行为完全可解释。
- 时序感知排序(轴线 9):融合分乘性新近度加成
1 + 0.25 × 2^(-年龄/30天)——排名语义不变,仅把同等相关性向近期轻推(最新文档最多 +25%,相关性仍占主导)。 - 质量诊断(轴线 10):每次检索返回四级判定(strong/fair/weak/empty)+ 相关度强度(头部融合分 / 理论满分)+ 双通道覆盖率 + 区分度 + 可执行建议;空结果区分"索引未建立"与"查询写法问题";智能提示栏一行人话把黑盒分数翻译成"这次检索可信吗"。
- 检索盲区分析(轴线 19,
GET /retrieval/blindspots/ 命令blindspots):零命中(且救援也失败)的查询自动写入日志——"反复想找但历史里没有"是最真实的知识缺口信号。分析时按词元聚合(多主题长查询同时给每个主题锚记一次敲击),盲区评分 = 搜索次数 × log(1 + 首末停留天数) × 新近度(90 天半衰),孤例失败不推送;每个盲区附查询原形与一句话行动建议。 - 主动脉搏(轴线 18,
GET /retrieval/insights/ 命令pulse):主动洞察引擎——信号提供者注入式架构聚合盲区缺口(轴线 19)、反馈学习画像(轴线 11)、索引健康(覆盖率/最近同步)三类信号源为洞察卡片;按严重度(critical/watch/info)排序、封顶 6 条、单一信号源失败静默隔离;检索视图页「主动脉搏」按钮即开即合成。 - 零外部依赖:全部计算本地完成,无嵌入模型、无网络请求,隐私红线——不上传任何第三方。
- 惰性增量索引 + 增量语料统计:每次检索前对账会话列表(updatedAt 漂移检测,5 秒节流),仅重读变更会话;termDf/gramDf/平均长度/词元倒排表随 put/delete 增量维护,无过滤查询直读缓存(免全语料扫描,实测提速 37 倍);索引持久化到存储域,重启不丢。
POST /retrieval/reindex可手动全量重建。 - 命令面板执行
find <检索词>同样走混合检索,输出附查询扩展溯源与质量摘要行。
- 全局实体图谱:检索视图页底部的知识面板展示覆盖会话数最多的头部实体(命令 / 路径 / 技术 / 代码 / 术语 / 版本六类徽章);点击任一实体直接以实体名发起检索——知识图谱变成检索入口。
- 单会话洞察:检索结果行点击「知识」按钮,面板展开该会话的洞察:
- 实体列表:按显著性(freq × 类型权重 × IDF)降序,附频次与全局覆盖数;
- 建议标签:头部实体推荐为标签,一键应用到该会话(复用模块 D 标签系统;只建议不自动写入,尊重用户判断);
- 关联会话:基于实体重叠推荐相关历史对话(IDF 加权——共享稀有实体比共享常见实体更能说明"在谈同一件事";余弦式归一避免长会话偏向),附共享实体与相似度,点击直达。
- 实体抽取为纯本地规则:行首命令动词表、路径模式、技术专名(缩写 / 驼峰 / 高频首字母大写)、代码标识符(驼峰 / snake_case / 反引号 / 点号链)、中文引号术语、版本号——零 LLM 调用、零成本、零隐私外泄。
- 主题趋势演化(
GET /knowledge/trends):知识面板顶部展示实体动量榜——对比近 N 天与上一 N 天两个等长窗口的实体频次,计算动量(变化率)并判定 rising / falling / stable 三向;每行附迷你周级柱状图(最近 8 周逐周覆盖会话数),点击趋势行直接以实体名发起检索;动量排序优先 |momentum| × log(总频次),避免"3→6 次"的小样本噪声压过真正的长期趋势。 - 前瞻记忆引擎(轴线 20,
GET /knowledge/cognition//knowledge/intentions/ 命令todo):对话里说过要做的事("明天试试这个方案"、"下周再优化"、"回头重构")自动提取为前瞻意图——时间标记(明天/后天/周末/下周/下个月,模糊标记取 7 天缺省视界)× 意图动词共现判定,问句排除("怎么修复?"是求助不是承诺);到期后主动浮现(超期越久越靠前,≥14 天升级为 critical 洞察)——"5 天前你说要试试 X,做了吗?"兑现或放下,都好过遗忘。 - 间隔重复巩固(轴线 21,
POST /knowledge/review/grade/ 命令review):从对话中提取"问题 → 解法"片段作为知识卡片(问题行 × 窗口内解法行配对),SM2 精简版间隔调度(1/3/7/14/30/60 天阶梯)——到期提醒复习,检索式练习(先看问题回忆解法,再翻开核对),"记得"升档、"忘了"归零次日重来;新片段先沉一晚次日首复习,对抗遗忘曲线。 - 类比检索(轴线 22,
GET /knowledge/analogy?q=/ 命令analogy):把问题抽象为结构形状(约束类别 × 解法类别:网络/性能/版本/依赖/并发…),跨全部历史经验做形状级匹配——相似度 = 0.7 × 约束重叠系数 + 0.3 × 解法重叠系数;主题词元重叠低而形状分高判定为跨域类比(领域不同而结构相同,如 docker 网络隔离 ↔ k8s service 互通——主题检索永远找不到的先例),单独标注优先展示。 - 遗忘预测引擎(轴线 23,
GET /knowledge/forecast/ 命令forecast):为每一条知识片段给出连续的记忆画像——艾宾浩斯指数衰减模型R(t) = exp(-t/S)计算当前保持率(含从未进入复习循环的旧片段),稳定性 = 档位间隔 × 个体节律 × 标定因子(标定保证「到期时刻的预测保持率恰等于阈值」,与轴线 21 调度数学自洽);三档分区:≥70% 稳定 / 30–70% 滑落区(最佳巩固窗口,救得回来)/ <30% 深度遗忘区;节律漂移预警——复习日程按当时的节律排定,预测用当前的节律重算,节律变差时未到期的知识也会被提前预警(日程已过期,记忆还在衰减)。 - 个体节律自适应(轴线 24,
GET /knowledge/rhythm/ 命令rhythm):你不是「平均人类」——闭环比例控制器以 85% 命中率(合意困难工作点)为目标动态调整节律系数 ease ∈ [0.5, 2.0],直接乘进间隔阶梯:命中率高 → 间隔拉长省出注意力,命中率低 → 间隔压缩抢在遗忘前巩固;间隔拉长 → 命中率下降 → ease 回落,控制器自稳收敛到「你的」遗忘曲线;冷启动保护(样本不足 3 次不动系数)。 - 认知负荷调度(轴线 25,
GET /knowledge/load?cap=):注意力是稀缺资源——到期复习按「可救性 × 巩固投资」分诊:滑落区知识正处最佳巩固窗口优先安排,深度遗忘区降权(按重新学习节奏,不挤占救得回来的名额),高档位滑落加权保护(60 天档滑落比 1 天档损失更大);每日封顶(默认 8 条)+ 洪峰顺延(不是丢弃),负荷状态透明(clear / normal / overload)——复习是一份每日计划,不是一场倾倒。 - 认知面板:检索视图页「认知面板」按钮(
CognitionPanel)一屏整合六轴——到期意图列表(超期徽章 + 即将到来预告)、遗忘预测区(保持率进度条 + 分区徽章 + 距跌破阈值倒计时,滑落区优先展示)、复习卡片(负荷分诊结论 + 回忆 → 核对 → 自评闭环 + 节律系数标记)、类比检索框;洪峰时复习区顶部显示顺延徽章与负荷摘要;「主动脉搏」同时聚合认知脉搏(到期意图 / 复习 / 片段资产 / 遗忘预测 / 节律 / 负荷六类信号),认知信号与检索信号统一推送。 - 命令面板执行
insight(全局图谱)或insight <会话ID>(单会话洞察)。
- 入口:检索视图页搜索框旁的「深度研究」按钮(输入问题后点击),或命令面板
research <问题>(如research 我之前对性能优化得出过哪些结论?)。 - 块级检索:候选会话(FTS 关键词召回 + 近期会话兜底,封顶 32 个)按回合分块(1800 字符/块,回合不跨块),每块经词法命中率 + trigram 余弦双通道打分(各占 50%),复用模块 E 的同源分词器但粒度到块——检索的是"证据片段"而非"会话"。
- 证据选择:分数降序选取,单会话块数封顶(3 块)防止某一长会话垄断证据,总字符预算(26000 字符、至多 10 块)内尽量多收——多样性与覆盖面优先。
- 契约式合成:合成 Prompt 强制三条纪律——只使用证据中出现的信息(不足时明确回答"证据不足")、每个关键论断带
[编号]引用标注、先给直接结论再列依据且矛盾明示;回答即带引用的"迷你研究报告"。 - 结果展示:回答下方列出全部证据来源(会话标题 + 日期 + 摘录),点击直达原会话;统计行显示检索会话数 / 命中块数 / 采用证据数 / 合成模型。
- 知识演化追踪(轴线 17):合成后对证据块做纯本地信念比较——提取主题锚(技术专名)+ 版本号/数值声明,同锚不同值即演化事件(旧值 → 新值 + 双方时间戳与会话);语义化版本比较(v2.10 > v2.9)判定升级/回退,事件按时间升序排成信念时间线。研究面板的「知识演化」区块展示——"这个结论后来被推翻/升级过"一目了然,零 LLM 开销。
- HTTP API:
POST /synthesis/answer(body:{ question })→{ answer, model, sources[], evolution, stats },供外部集成消费。
根配置(cordis.patch.yml 可覆盖任意字段):
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enableExport |
boolean | true |
启用模块 A |
enableHandoff |
boolean | true |
启用模块 B |
enableCost |
boolean | true |
启用模块 C |
enableSearch |
boolean | true |
启用模块 D |
enableRetrieval |
boolean | true |
启用模块 E(本地语义检索) |
enableKnowledge |
boolean | true |
启用模块 F(对话知识资产) |
enableSynthesis |
boolean | true |
启用模块 G(跨会话知识合成) |
apiBaseUrl |
string | https://api.deepseek.com |
DeepSeek API 基址(manifest 已放行该域名) |
apiTimeoutMs |
number | 60000 |
单次 API 调用超时(毫秒) |
停用单个模块:将对应开关置为 false(配置层),或在 manifest.json 的模块声明中关闭。模块之间零耦合,停用一个不影响其余模块。
src/
├── index.ts # 宿主入口:挂载核心服务 + 按配置挂载七个模块子插件
├── config.ts # 根配置 schema(schemastery 校验)
├── core/ # 核心基础设施
│ ├── service.ts # CompanionCore 根服务(ctx.companion,持有动态计价引擎)
│ ├── vault.ts # SecretVault:AES-256-GCM 加密保险库
│ ├── crypto.ts # AES-256-GCM 原语(Node crypto)
│ ├── deepseek.ts # DeepSeek Chat Completions 客户端
│ ├── usage.ts # 用量记账存储(日粒度,含缓存命中 tokens)
│ ├── pricing.ts # 计价桥接层(官方 usage → 计价引擎用量形状)
│ ├── price/ # 动态计价引擎(移植自 dsh-usage-ledger):
│ │ # types / catalog(多厂商刊例价目录)/ scrapers(官方定价页解析)/ service
│ ├── retrieval/ # 本地混合检索引擎(轴线 1/8/9/10):
│ │ # tokenize(分词/trigram)+ engine(BM25 + 哈希向量
│ │ # + RRF 融合 + 时序加成 + 增量统计/倒排 + 摘要片段)
│ │ # + query(查询智能:拼写纠错 + 共现扩展)
│ │ # + quality(检索质量诊断:四级判定 + 通道覆盖 + 建议)
│ ├── cognition/ # 认知三轴(轴线 20/21/22)+ 元认知三轴(轴线 23/24/25):
│ │ # prospective(前瞻记忆:意图提取 + 到期计算)
│ │ # + episodes(问题→解决片段提取与结构形状)
│ │ # + spaced(SM2-lite 间隔重复调度,含 ease 节律乘子)
│ │ # + analogy(结构形状跨域类比匹配)
│ │ # + forecast(遗忘预测:保持率画像与分区)
│ │ # + rhythm(个体节律:ease 闭环控制)
│ │ # + load(认知负荷调度:分诊 + 封顶 + 顺延)
│ ├── insights/ # 主动脉搏引擎(轴线 18):信号提供者注入式聚合
│ │ # (盲区/学习/索引/意图/复习/片段/预测/节律/负荷 → 洞察卡片)
│ ├── time.ts # 北京时间峰谷窗口计算
│ ├── transcript.ts # 对话转录格式化(MD/JSON)
│ ├── privacy.ts # 隐私脱敏(手机/邮箱/身份证/银行卡)
│ ├── pdf.ts / zip.ts # 零依赖 PDF 生成 / ZIP 打包
│ └── http.ts # 私有 HTTP 路由器(前缀 /companion)
├── modules/
│ ├── export/ # 模块 A:导出 + 批量 ZIP + 光栅载荷(PNG/免打印 PDF)
│ ├── handoff/ # 模块 B:摘要生成 / 模板 / 武装导入
│ │ # + hierarchical(map-reduce 分层摘要)+ lineage(血缘图谱)
│ │ # + context-health(上下文压力监测:token 估算 + 耗尽预测)
│ ├── cost/ # 模块 C:网关 / 调度器 / 路由 / 日/月双档预算 / 设置
│ │ # + forecast(预测性成本智能:预测/异常/what-if/归因)
│ ├── search/ # 模块 D:检索 + 标签
│ ├── retrieval/ # 模块 E:语义检索插件(混合排序接线 + 增量索引)
│ ├── knowledge/ # 模块 F:对话知识资产(entities 实体抽取 + 倒排索引接线)
│ │ # + trends(主题趋势演化:实体动量 + 周级时间线)
│ │ # + 认知三轴接线(意图/片段/复习三表 + 认知端点与命令)
│ └── synthesis/ # 模块 G:跨会话知识合成(Deep Research)
│ # retrieval(块级检索 + 证据选择)+ 合成 Prompt 构建
├── client/ # 浏览器端 UI(slots 注入,官方组件库)
│ ├── index.tsx # 客户端入口:slot 注册 + 对话内搜索控制器生命周期
│ ├── api.ts # 类型化 fetch 封装(全部模块的私有 HTTP API)
│ ├── raster.ts # 客户端光栅导出引擎(移植自 dsh-conv-export):
│ │ # PNG 长图 / 免打印多页 PDF(foreignObject → canvas → JPEG → PDF 组装)
│ ├── convsearch/ # 对话内搜索(移植自 dsh-conv-search):
│ │ # engine(Highlight API)/ controller(浮动栏+快捷键)/ styles
│ └── components/ # 导出弹窗 / 摘要弹窗(聚焦+血缘+压力仪表)/ 导入 dock /
│ # 检索视图(语义开关+知识面板+趋势榜+认知面板+深度研究)/ 报表视图
└── types/ # Harness 子系统适配层类型声明
关键设计:
- 一切皆插件:宿主入口只做挂载编排;每个功能模块是独立 Cordis 函数插件,注册即 effect,生命周期由 Cordis 自动回卷。
- 单一服务门面:模块间不互相 import,跨模块协作一律经
ctx.companion(核心服务)或ctx.companionCost(成本网关)。 - 双通道同构:命令面板 handler 与私有 HTTP 端点(
/companion/*)复用同一套模块服务函数,无重复逻辑。 - UI 非侵入:所有界面经 Harness slots 注入(
conversation.session.header.actions、conversation.input.dock、conversation.view),组件取自官方 UI 原语库,颜色仅用语义令牌,无悬浮窗、无全局样式。
完整的内部契约(服务签名、HTTP API、命令表、slot 清单)见 DESIGN.md。
| 要求 | 实现 |
|---|---|
| 数据本地化 | 对话内容、设置、API Key 仅写入 Harness 插件沙箱的 companion 存储域,不上传任何第三方服务器 |
| API Key 加密 | AES-256-GCM(12 字节随机 IV + 认证标签),自描述载荷 v1.<iv>.<tag>.<ciphertext>;密钥与密文分离存储 |
| 网络权限 | manifest.json 全量放行 DeepSeek 官方 API、全部国产与海外主流模型厂商端点、各厂商定价页及常见中转/聚合网关,供动态计价引擎实时抓取;存储域仅 companion;服务清单逐项列明 |
| 无追踪 | 无任何遥测 / 行为分析代码;manifest.json 显式声明 tracking: false, telemetry: false |
| Key 不外泄 | 任何响应、日志、事件中不出现 Key 明文;导出与摘要内容仅在浏览器本地生成 |
- 完整 Harness 插件源码(
src/,TypeScript strict) -
manifest.json(权限与隐私声明)、package.json、cordis.patch.yml(bundle patch 层)、tsconfig.json -
README.md/README.en.md(双语):功能介绍、安装指南、使用说明 -
DESIGN.md:架构契约与开发规范 - 七模块独立启停:配置开关 + 独立子插件 + manifest 模块声明三层保障
本插件在原有四大模块基础上,吸收并整合了以下三个同系仓库的核心能力:
| 来源仓库 | 吸收的能力 | 落点 |
|---|---|---|
dsh-usage-ledger |
官方定价页动态计价引擎(实时抓取/解析/兜底快照)、峰谷分时计价、多厂商价格目录与专用解析器、缓存命中折扣、日/月双档预算 | src/core/price/、src/modules/cost/ |
dsh-conv-export |
PNG 长图光栅导出、免打印对话框多页 PDF(foreignObject → canvas → JPEG → 零依赖 PDF 组装)、图片 data-URL 内联、回合级选择导出(回合预览列表 + 勾选面板 + 进度/中止交互) | src/client/raster.ts、src/modules/export/(kind:'raster' 载荷、GET /export/turns + turns 请求字段)、src/client/components/ExportDialog.tsx |
dsh-conv-search |
对话内搜索引擎(CSS Custom Highlight API 无侵入高亮)、浮动查找栏(快捷键/查询历史/大小写与全词开关)、流式输出 MutationObserver 重同步与命中锚点保持 | src/client/convsearch/ |
移植时统一了命名空间(companion-*)、注释语言与错误处理纪律,并按本插件的 slots/双通道架构重新接线;全部改动通过 tsc -p tsconfig.json 严格类型检查与累计 78 项冒烟断言(四套套件:轴线 8/9/10 及引擎一致性 22 项、轴线 11/12/13 19 项、轴线 14/15/16 17 项、轴线 17/18/19 20 项)。
MIT