dsh-dream-incubator:让 DeepSeek Harness 在后台做梦的插件

前言

写 DSH(DeepSeek Harness)插件,大多数扩展都围绕「正经事」:接工具、管会话、路由模型。会话里积累的对话与工具日志,通常只是躺在日志文件里,很少被二次利用。

dsh-dream-incubator 走的是另一条路。它监听会话事件流,在你继续工作的同时于后台异步「做梦」,把当天的会话素材蒸馏成风格化的中文梦境报告,呈现在一个沉浸式网页里。定位上更像给 harness 加了一层「潜意识」,但工程实现是完整的:四种认知心理学机制、六个可轮换的梦境风格、一套 Web 路由和明确的隐私边界。下面按安装、机制、配置的顺序介绍。

这是什么

dsh-dream-incubator 由 Lisk809 维护,MIT 许可,当前版本 0.1.0。一句话定位:让 DeepSeek Harness 拥有潜意识——后台异步做梦,把日常对话与工具日志酿成梦境报告,呈现在沉浸式 WebUI 中。

具体来说,插件通过 Cordis firehose 监听会话事件流,在后台异步做梦,每个会话每个冷却期产出一篇梦境报告,集中呈现在 /dreams 沉浸式网页。

安装与启用

dsh plugin --profile web add dsh-dream-incubator

这条命令通过补丁包注册一行 dream-incubator。profile 的区别在于:headless profile 获得引擎与命令;web profile 额外挂载 UI。serveUi 为 true(默认值,仅对 web profile 生效)时,打开 http://<host>:<port>/dreams 即可浏览梦境页面。

工作机制

先说素材从哪来。插件通过 Cordis firehose 监听会话事件流,把会话事件整理成素材窗口;做梦时,引擎走「路由 → 取窗口 → 情绪扫描 → 生成 → 记录」的周期,整个过程异步进行,不阻塞手头的工作。

设计上遵循四种认知心理学机制:

  1. 激活-合成:每个梦从素材窗口的情绪扫描开始(PAD 模型:valence / arousal / dominance),再按六种风格之一合成叙事。
  2. 威胁模拟:失败回合、工具错误、中止请求会被加权进素材与情绪提示——压力大的日子和安静的日子,做出来的梦不一样。
  3. 记忆重组:引擎用按风格的噪声种子重排真实会话事件窗口,每个梦都是对真实事件的一次重新诠释,绝不原样重放。
  4. 孵化效应:冷却期与每日上限防止引擎过度做梦,间隔本身就是孵化。

梦境风格与自定义

内置六种风格:黑色悬疑、赛博朋克、超现实、奇幻、寓言、恐怖。风格库每 styleRotationDays 天轮换一次。

支持自定义 styles,追加在内置六种之后,参与同一轮换。每个条目需要 id(唯一,不与内置冲突)、nameZh / nameEntriggerfatigue / joy / anxiety / boredom / confusion / conflict 六选一)、imagery(非空字符串数组),palette 可选(默认取 style id):

styles:
  - id: cosmic
    nameZh: 星际漂流
    nameEn: Cosmic Drift
    trigger: boredom
    imagery: [深空尘埃, 失重的茶, 土星环上的雪]
    # palette: nebula   # 可选;默认取 style id

命令

插件提供三个会话命令:

  • /dream:立即强制做梦,绕过冷却与素材门槛。
  • /dreams:列出最近 8 条梦境,含风格、情绪、素材跨度,可逐条标记收录(collect)或遗忘(forget)。
  • /dreamsettings:查看实时引擎设置:模型路由、噪声、门槛、隐私、UI。

沉浸式 WebUI

serveUi 为 true 时,打开 http://<host>:<port>/dreams。页面是一间深夜画廊:紫蓝色星云光效与漂浮云雾作背景,首屏有一个大型 PAD 图形(valence × arousal × dominance)与漂浮噪点;下方是碎片卡片拼成的悬浮拼贴——每张卡片是不规则四边形或五边形,形状由梦的 id 派生,跨访问保持稳定——随鼠标 3D 倾斜,每种风格有一种低饱和强调色。点击卡片进入梦境详情;可按风格、情绪、时间筛选,统计行会告诉你最常梦见什么。页脚的月亮点击 7 次会打开只读 stardial 控制台。新梦境通过 SSE 实时推送。

Web 路由如下:

路由 用途
GET /dreams 页面本体
GET /dreams/assets/* 静态资源(字体、CSS、JS)
GET /dreams/api/dreams 账本 JSON(最新在前)
POST /dreams/api/dreams 变更记录(collect / forget)
GET /dreams/api/settings 实时引擎设置(只读,stardial 的数据源)
GET /dreams/api/stream SSE,推送每条新梦

配置

所有配置键均可选,默认值由 harness patch 提供——本包不含硬编码默认值,缺失键在加载时 fail loud;非法值(未知键、非整数限制、provider 缺 model、重复 style id 等)同样在加载时抛错,并显示确切信息。

默认值 含义
cooldownMs 3600000 同一会话两次梦之间的最小安静间隔
minMaterialEvents 4 距上次做梦后,引擎做梦所需的最少素材事件数
maxDailyDreams 8 每会话每日硬上限(午夜重置)
styleRotationDays 4 风格库(内置 + styles)每 N 天轮换
noiseIntensity medium 激活-合成噪声强度:low / medium / high
maxOutputTokens 500 扫描与做梦两次模型调用的输出 token 上限
timeoutMs 120000 单次做梦周期的端到端截止时间
privacyMode false 为 true 时,扫描提示只接收消息计数与工具名,不含用户文本
provider / model null 可选显式模型路由,必须同时出现;缺省时复用会话最近记录的 request/header 路由
styles [] 自定义风格,追加在内置六种之后
storePath ~/.dsh/dream-incubator/dreams.json JSON 梦境账本位置
serveUi true /dreams 提供页面,仅 web profile 生效

隐私与数据边界

隐私边界是设计里明确写出来的一部分。privacyMode 为 true 时,扫描提示只包含消息计数与工具名,不含用户文本。每个梦引用其确切的 materialSeqs(构建它所用的素材事件序号),引擎不触碰窗口外的会话数据。

梦境存储为版本化 JSON 账本,原子写入,上限 300 条,路径由 storePath 配置。

开发与发布

想看实现或做二次开发:

pnpm install
pnpm build    # tsdown → lib/
pnpm test     # vitest,86 个单元 + 集成 + 路由测试

发布目标是 dsh-plugin npm tag:

npm publish --tag dsh-plugin

发布产物包含 lib/(引擎、invariant 伴随、lib/webui/ 静态资源)以及供 dsh plugin add 使用的 cordis.patch.yml。依赖上,直接依赖 dsh-invariants、dsh-timeout、schemastery;peer 依赖 cordis 与 dsh-agent、dsh-llm、dsh-session 等 @deepseek-ai 系列包。

适用场景与注意

适合两类人。一是长期使用 DSH 的开发者,想要一种不占用注意力的会话回顾方式——梦境报告本质上是当天对话与错误的风格化摘要,情绪扫描还能提示「今天跑得不顺」。二是想研究 DSH 插件怎么组织的开发者,这个包覆盖了引擎、命令、WebUI、SSE、invariant 伴随等一整套结构,测试也比较齐全。

两点注意。第一,插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(本项目为 MIT)。第二,DSH 的理念是「一切皆插件」,社区目录是独立站点,与 DeepSeek、幻方没有官方从属关系,安装与使用以插件自身文档为准。

结尾

回顾一下:dsh-dream-incubator 用 Cordis firehose 监听会话事件流,在后台异步把日常对话与工具日志蒸馏成风格化中文梦境报告;四种认知心理学机制控制做梦的节奏与内容,/dreams 提供沉浸式浏览,隐私与数据边界写得清楚。装上它,你的 harness 会在你继续工作的时候,替你把今天重新「想」一遍。

  • GitHub:https://github.com/Lisk809/dsh-dream-incubator
  • 社区目录页:https://www.skillhub.cn/plugins/Lisk809/dsh-dream-incubator
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜