dafiyu-dream:把最近对话压成一场短梦

前言

在 DeepSeek Harness(DSH)里做智能体或长期对话时,会话往往散落在导出文件、笔记目录里,很少有一种「本地可控、又能借助模型改写」的方式,把近期对话里的情绪片段收成可读、可存档的文本。dafiyu-dream 是面向这一需求的 DSH 插件:它不直接读 DSH 内置会话历史,而是从工作区里符合格式的对话 markdown 中抽样,经模型压缩意象、写梦、自检后落盘。下面介绍它的定位、流程、安装与配置,以及使用前需要接受的隐私与素材边界。

这是什么

dafiyu-dream(GitHub:MarkGaster/dafiyu-dream,维护者 MarkGaster)是 DeepSeek Harness 的 dream generator:从最近对话里挑出情感强度较高的片段,压缩成抽象意象,写一段短梦,自检通过后保存为 markdown。分类上属于模型推理类插件;仓库 README 描述为:pick the most emotionally charged fragments of recent conversations, compress them into abstract images, write a short dream, self-check it, and save it as a markdown file。当前版本在 package.json 中为 0.1.0,许可证 MIT,尚未发布到 npm(private: true)。

核心流程

插件按固定流水线工作,一场梦最多约 5 次远程请求(压缩 1 次、写梦 1 次、自检失败时最多重写 3 次)。

  1. 挑素材:在配置的 sourceDir 下,按文件名 glob 匹配普通文件(不递归),用「情感强度 × 长度 × 天数衰减」加权随机抽样,默认窗口 7 天、抽 6 条(windowDays、k 可改)。
  2. 压成意象:一次 API 调用,把每条被抽中素材的前 220 字压成 3–5 个抽象短语(物件、动作、场景、天气、声音等)。
  3. 写梦:第二次调用只接收这些短语、随机主题、人格与固定规则;配置 verbatim: true 时还会带入一句原话。
  4. 自检:检查字数、段数、元叙述、括号旁白、原样片段位置等;不通过则最多重写三次,仍不过会标为 status: draft。
  5. 落盘:输出到 outDir,默认文件名形如 dafiyu-dreams/dream-YYYY-MM-DD-<seed>.md。

长度与狂野度可通过 slash 命令或配置覆盖:short(约 150–250 字)、standard(约 250–400 字)、long(约 600–1000 字);狂野度 low / mid / high / auto(按抽中素材加权分自动选档)。

安装与启用

官方说明目前只支持从源码目录以本地链接方式安装。在仓库根目录执行(将路径换成你机器上的绝对路径):

dsh plugin --profile <你的 profile> add link:/absolute/path/to/dafiyu-dream -w

DSH 对本地链接插件常用 @local/ 命名习惯;package.json 中包名为 @local/dsh-plugin-dream,未来若发 npm 可能改为 dsh-plugin-dream。安装后输入框 / 菜单应出现 /dream;若没有,刷新页面。运行环境要求 Node >=22。

插件以当前 dsh 进程权限读写 sourceDir、outDir、personaPath 等路径,不做沙箱;安装前请自行查看源码与 MIT 许可证。

典型用法

在 DSH 输入框中使用 slash 命令:

输入 效果
/dream standard 长度 + 自动狂野度
/dream short 150–250 字
/dream long 600–1000 字
/dream high 最疯狂的档
/dream long high 又长又疯

使用前需先把对话导出为 markdown 放入 sourceDir(默认相对工作区下的 dafiyu-memory),且满足下文「素材格式」;插件不会自动读取 DSH 会话历史。

配置要点

在 profile 的 Cordis 配置中可选填写(字段均以 README 为准):

- id: dafiyu-dream
  name: '@local/dsh-plugin-dream'
  config:
    sourceDir: dafiyu-memory
    outDir: dafiyu-dreams
    personaPath: dafiyu-persona/persona.md
    sourceGlob: 'chat-*.md,qq-*.md'
    apiKeyEnv: DEEPSEEK_API_KEY
    model: deepseek-flash
    length: standard
    wild: auto
    windowDays: 7
    k: 6
    verbatim: false

API key 三选一:环境变量 DEEPSEEK_API_KEY(推荐,改后需重启 DSH)、配置项 apiKey、或 apiKeyFile 指向只含 key 的文件。Windows 上若进程启动早于 setx 设置的环境变量,插件会尝试从注册表 HKCU\Environment 再读一次。

未配置 workspace 时,相对路径以进程工作目录为基准,不一定等于 DSH 活跃工作区;若报找不到素材目录,应显式设置 sourceDir 或 workspace。

素材格式与适用场景

工具面向中文对话素材:单段汉字占比低于 45% 会跳过。文件须同时满足:文件名含 YYYY-MM-DD 且在 windowDays 窗口内;段落以 ## 开头(两个井号加空格);该段含全角冒号的 **我说:**,仅对用户发言打分。示例结构:

## 10:35 · 一段对话

**我说:**
(你说的话)

---

**DeepSeek说:**
(AI 说的话)

适合:已有按上述格式导出的近期对话 md、希望在本地目录生成「认不出原文但情绪连贯」的短文本存档、并愿意接受模型远程处理素材前 220 字的使用者。不适合:期望零出站、或不愿维护导出格式的场景。

隐私与限制(使用前必读)

压缩步骤会把被抽中素材的前 220 个 UTF-16 码元原文发给模型;抽象化发生在远程,降低的是「读起来不像原文」,不是「原文不出网」。写梦请求主要发送 3–5 个格式校验过的短语(不保证语义无残留)、人格(≤64 KiB 时整份)、规则与可选原句;梦文件只写入 outDir,无额外 HTTP 上传。想减少出站量可调小 k、缩小 sourceDir,或自行把素材改写成隐喻后再放入(本版无本地抽象器)。

其他已知限制包括:素材可能带来提示注入风险,勿把不可信 md 放入 sourceDir;枚举与读取有文件数、体积上限;sourcePattern 旧字段会直接报错;人格文件超过 64 KiB 时静默改用内置一句话人格。

结尾

dafiyu-dream 把「导出对话 md → 加权抽样 → 意象压缩 → 写梦自检 → 本地 markdown」串成一条可在 DSH 里用 /dream 触发的流水线,适合在 Harness 工作流里做轻量、可配置的对话衍生产物。插件目录页:https://www.skillhub.cn/plugins/MarkGaster/dafiyu-dream;源码与完整说明:https://github.com/MarkGaster/dafiyu-dream。

羽毛球分组比赛记分
小程序二维码

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

小夜