Skip to content

Releases: xling001/dsh-reading-companion

3.1.33 · 更正 tag 的说明

Choose a tag to compare

@xling001 xling001 released this 08 Oct 12:33
  • 更正 tag 的说明:README 原来写「自动 tag」「可自己加」,读起来像留空就会自动打 tag —— 实际不是:面板只是按你感想里的词给出几个建议,点一下才加上;tag 框留空就是没有 tag。
  • 同步更正 lib/index.js 里那句注释(原写「面板直接填进 tag 框」,与实现不符)。
  • ⚠️ 没有改任何行为 —— 只是把说明改成与实现一致。

升级后请重启 DSH Desktop。

3.1.32 · 修「人物关系」同章重复

Choose a tag to compare

@xling001 xling001 released this 08 Oct 11:56
  • 修「人物关系」里同一章被写两遍的问题:把补齐提示词第 2 步的判据,从「判断算不算新」换成「数章号」—— 已有的关系条目里出现过的 第N章,一个字都不要再写。原有措辞保留不动。
  • ⚠️ 这条只防新的重复;文件里已经出现的那几处要等压缩按对合并,或手动删。

升级后请重启 DSH Desktop。

3.1.31 · 图例纠错 + 四处过度描述清理

Choose a tag to compare

@xling001 xling001 released this 08 Oct 09:26
  • 图例纠错(唯一一条"说错了"的 ✗):> 完整原文都在 background.md 里(**这一轮看不到**) —— 3.1.22 起陪读 AI 可以按需读它(提示词里就有一段「想回忆前文时」)⇒ 括号不成立,还会让模型不去读 ⇒ 删括号。
  • F3 · 删悬空指针:规则 5 的「(见下面的条件说明)」—— 它指的是只在「文风」还没写过时才渲染的批次条件块 ⇒ 首批之后每一批都指向空气(实测确认:有指针、无目标);120 字上限同句已写全。
  • F7 · 消除口径对撞:规则 14 尾句「剧情流水…属于「时间与分线」或者不值得记」读起来像给流水账开了许可入口,与规则 12「不是流水账」对撞 ⇒ 改成「一律不记;只有构成阶段骨架、或挂不到人名下的大事才进」。
  • F6 · 删空操作:关系条目里「说不清就连括号一起省掉」—— 既然同句已说「括号可写可不写」,那句等于什么都没约束 ⇒ 删掉。
  • F8 · 统一口径:「不给 AI 看」改成「不进陪读提示词」(写这一节的本身就是 AI);并去掉自我指涉的「按第 12 条的形态写就行」(那句就写在第 12 条里)。

验收:906 测试 / 903 pass / 0 fail / 3 skipped · 变异电池 18/18 · 提示词 6,764 → 6,685 字(−79)。

升级后请重启 DSH Desktop。

3.1.30 · 通用概念把「人」摘出去 + 六处审计发现

Choose a tag to compare

@xling001 xling001 released this 08 Oct 08:33
  • 「通用概念」把「人」摘出去:那一节原来收了一堆人名(本该是人物卡)。规则 9 的判据从两问扩成按顺序过三问:① 约束了"后面能发生什么" ⇒「世界观」;② 是个人吗(含绰号 / 别名 / 前世名 / 只露一两面的次要角色)⇒「人物」;③ 都不是 ⇒「通用概念」(专名与术语)。非虚构那一句一个字没动。
  • 六处审计发现:规则 11 括注的指代错位 · 删悬空引用「守则第 1 条」·「写不下就拆成两条」划边界 · 分桶枚举补「人物状态」· 压缩时只有时间相邻才写章号区间 · 删掉与格式块逐字重复的示例。
  • 明确不改三条:规则 16 去重(4 个短语被守卫逐字钉住,收益仅约 100 字/批)· 规则 11 未覆盖 2 节(真机无异常)· 一条第三方误判。

升级后请重启 DSH Desktop。

3.1.29 · 提示词精简重述 + 纯减法

Choose a tag to compare

@xling001 xling001 released this 07 Oct 15:39
  • A3 · 提示词「规矩是参考、不是检查表」三处同义 → 只留首尾两处:删掉中间(规则 13b)那处重复 ✗,但保住它独有的那句——"不许为了回答①回头把全批再数一遍"(首尾都没有这条具体禁令 ✓)。
  • A4 · 规则 2(「人物关系」)重述:括号这件事原来由四条分着说 ✗(内容写前面 / 括号可写可不写 / 别用 甲 ↔ 乙 重复双方 / 说不清就省掉)⇒ 收成一条;并把容易误读的那句说明白(条目开头本来就是 甲 ↔ 乙,它真正要说的是"括号里面别重复双方"✓)。守卫钉住的两条短语逐字保留 ✓。
  • B1 · 纯减法:删掉 5 个没有任何消费者的字段 —— currentChars / previousChars / backgroundOmitted / backgroundTrimmed / backgroundCoarsened(面板不读、测试也不断言;renderBackgroundForPrompt 照旧把它们算出来 ✓,只是不再往读窗口上挂)。⚠️ /context 路由保留 —— 它是被测试刻意保留的能力(client.test.mjs 有文本契约钉着:"摘掉的是面板入口,不是这个能力"),不是死代码。
  • 提示词 6,552 → 6,287 字(−265)。

验收:906 测试 / 903 pass / 0 fail / 3 skipped · 变异电池 18/18。

升级后请重启 DSH Desktop。

3.1.28 · 提示词文风示例去章号 + 注入标题模板收成一处

Choose a tag to compare

@xling001 xling001 released this 07 Oct 15:18
  • 提示词:格式块的「文风」示例去掉章号(工单 A1)—— 规则 1 与条件说明都写着"文风不带锚点",只有示例还带着 `第1章` ✗ ⇒ 示例在教错形状(3.1.23 真机复发过的那条,当时只改了规则文字、没改示例)。新增守卫钉示例本身(变异检查已确认会红)。
  • 注入的分区标题模板收成一处定义(工单 A2)—— 从前四处各写一遍同一个模板 ✗(headerCost 预算记账 / headerText 实际渲染 / metaHeader / stateHeader)⇒ 改一处忘另一处就是"预算与实际渲染漂移" ✗。现在四处都走 sectionHeaderText(name),并收掉标题后多出来的那个空行(每节少一个空行)。新增守卫:模板字面量只许出现一次。
  • foundationBudgetChars 改为同源于唯一常量(工单 B3)—— 它原本在 lib/index.js 与 lib/host/memory-pipeline.js 各写一份 24000 ✗ ⇒ 搬到 lib/host/defaults.js,两边读它;contract.test.mjs 的守卫扩到这一对。值不变、行为零变化。

验收:906 测试 / 903 pass / 0 fail / 3 skipped ✓ · 变异电池 18/18 ✓ · 三条新守卫都做过变异检查(撤掉改动就会红 ✓)。

升级后请重启 DSH Desktop。

3.1.27 · 空的「前文脉络」不再写标题

Choose a tag to compare

@xling001 xling001 released this 06 Oct 16:18
  • 空的「前文脉络」不再写标题(读者:"前文脉络之前是不是因为和时间与分线重复所以决定不要了的,你可以把这个空节给去了"):
    它 3.0 起就并进了「时间与分线」(lib/host/sections.js 里标着 family: 'legacy'、"3.0 起并进「时间与分线」的主线名下")—— 当年正是因为内容重复才不要它的 ✓,但 renderBackground 从前无条件写每个注册节的标题 ✗
    ⇒ 新文件里永远留着一个"什么都没有的旧节" ✓(读者看到会以为漏了什么 ✗)。
    现在:只跳过"空的废弃节" ✓。
    • ⚠️ 只在它为空时跳过 —— 老文件里若真有 ## 前文脉络 的内容 ⇒ 照旧写回去 ✓(那是读者的数据,不许丢 ✗);
    • ⚠️ 「冷档案」的空标题保留 ✓ —— 它是在用的活节(冷归档区,planArchive 会把出窗的旧条目搬进去 ✓),空标题是有意的占位 ✓,不是遗留 ✗。
    • 判据用渲染结果是否全是空行 ✓,不另写一套"这一节有没有内容"的判据(那会变成第二份要同步维护的口径 ✗)。

守卫:test/background-entities.test.mjs 新增一条,同时钉住两件事 —— ① 空的废弃节不写标题 ✓;② 老文件里有内容时照旧写回、内容不丢 ✓。
⚠️ 做过变异检查:把跳过逻辑临时撤掉 ⇒ 这条守卫当场变红(空的废弃节不写标题)✓,再还原 ✓。

验收:全量 905 / 902 pass / 0 fail(新增 1 条守卫)✓ · 变异电池 18 / 18 ✓。

升级后请重启 DSH Desktop。

3.1.26 · 提示词体检(明确 / 放宽 / 去重 / 简化)

Choose a tag to compare

@xling001 xling001 released this 05 Oct 15:27

这一版是「提示词 + 上下文」的一次完整体检(读者:"看有什么该明确的没明确,该放宽模糊的又限制过多;是否有互相冲突重复,是否可以用更简单的话说明白")。全部改动都在提示词里(lib/host/memory.js),不动代码 ✓。

① 该明确、却没明确(2 处)

  • ⭐ 「世界观」的"名目"举例不全 —— 这是散行的根因 ✓:格式块原来只举「势力 / 地名 / 设定名」,模型看到「唯有爹娘才能给孩子姓名」「弃婴不稀罕」这类风气 / 礼法 / 忌讳,觉得三个都不沾 ⇒ 只好写成散行 ✗。
    ⇒ 补上 世道规矩:「(### 写势力 / 地名 / 设定名 / 世道规矩 —— 风气、礼法、忌讳也算名目)」✓
  • 规则 1 说"每条都以 `第N章` 开头" ✗ —— 而「文本类型」「文风(只写一次)」明令不许带章号锚点 ✓ ⇒ 改成「除「文本类型」「文风(只写一次)」外,每条都以…」✓

② 该放宽、却限制过多(1 处)

  • ⭐ 硬冲突:规则 5 说「『文风(只写一次)』一条 40 字内」✗,而条件说明里又要求它"写细一点、可到 120 字" ✓ ⇒ 两条指令打架。
    ⇒ 把文风从 40 字那把尺子里摘出来,并明写:「它是整本书的特征、且只写这一次 ⇒ 它可以写到 120 字」✓
  • (规则 13 的立卡门槛、规则 14「只留以后会用到的」刻意保留 ✓ —— 它们是治"过度联想"的 ✓)

③ 冲突 / 重复(3 处硬冲突已清)

  • ⭐ 规则 2 内部自相矛盾 ✗:同一句里既说"一条写一对人、两个视角一次写全",又说"双向关系分开写两条" ✓ ⇒ 删掉旧话 ✓
    ⚠️ 这里有一段值得记的历史:2026-10-02 读者否掉过"两侧各写一条"(当时一条只有 25 字上限 ⇒ 关系被压成标签,22 字/条 vs 旧版 82 字);2026-10-05 他又要"双向分开两个视角" —— 两次不矛盾:这次一条是 80 字 ✓。已写进守卫注释,免得以后有人"改回去" ✗。
  • 规则 2 与规则 17b 复述同一口径 ✗(同一对一条 + 双向分开)⇒ 规则 2 只留形状 + 指向 17b ✓
  • 规则 10 / 规则 18 / 格式块三处都讲散行兜底 ✗ ⇒ 只在规则 10 讲全,另两处指向它 ✓

④ 用更简单的话(3 处)

  • 规则 11(两步式):原来是一句 ~180 字的嵌套长句 ✗ ⇒ 拆成 ①②两小步 + 一句括注 ✓(信息一条没少)
  • 规则 20(整理者视角):删掉"那样读"、"最接近的整理者"等赘语 ✓
  • "三处判据的分工"整段砍掉 ✓ —— 它是"用规则解释规则"(第 17/13/11 条各管什么),三条规则自己已经写清了 ✓

真机验证(《某书》57 章,清空重补)

上一版 3.1.26
「世界观」散行 6 条 ✗ 0 条 ✓✓
世界观名目 2 主体 5 主体(武学 / 师徒身份 / 华山地理 / 世道规矩 / 江湖与门派 ✓)
「文风」 36 字 ✗(被 40 字压住) 91 字 ✓(人称 / 视角 / 用词 / 句式 / 节奏 / 对白 / 意象都写了)
通用概念 7 主体 / 8 条 / 231 字 16 主体 / 16 条 / 401 字 ✓
时间与分线 1 单元 / 7 条 / 293 字 ✗ 4 单元 / 22 条 / 801 字 ✓
人物 5 主体 / 27 条 / 802 字 3 主体 / 27 条 / 806 字 ✓
文件 / 注入 3,688 字 / 2,054 4,227 字 / 1,928 / 9,000(21%) ✓

读者对「人物关系」的评价:"是对的,甚至比上一版更好" ✓。

⚠️ 顺带记一笔:体检过程中我一度以为规则编号跳号(1..18 直接到 20 ✗)⇒ 把 20 改成 19 ⇒ 撞出重复编号(真正的 19 在「联网查设定类资料」那条 ✓)⇒ 已全部撤回 ✓。守卫当场抓到了它 —— 这是守卫有用的好例子 ✓。

验收:全量 904 / 904 / 0 ✓ · 变异电池 18 / 18 ✓。

升级后请重启 DSH Desktop。

3.1.25 · 提示词形状提示(三行 + 示例)

Choose a tag to compare

@xling001 xling001 released this 05 Oct 13:07
  • 提示词加了一个"形状提示"(读者:"用简短的提示告诉子代理规范写法"):就在材料之前(读正文前的最后一段),三行、带一个形状示例 ✓:
    ⚠️ 写的时候**照形状写**(别写成光秃秃的一行 —— 那样看不出它属于谁 ✗):
       分组节:`### 主体`,下一行写「- `第N章` …」;「人物关系」写成「- 甲 ↔ 乙:…」。
    
    ⚠️ 刻意不写成硬性规定(读者:"不是每条都要,也可以是一个大概的提示,或者简单示例")—— 它只是"读材料时顺手照这个形状写"的一个提示 ✓,尽量少的输入(三行 ✓)。

为什么只做到这一步(把试过的东西记在案):散行(看不出属于谁的行 ✗)反复出现,我试过两种机制级兜底,都不便宜 ✗,已撤回(工作树干净):

  • 解析侧:把散行收进一个合成主体 ### 未归类 ⇒ 会被压缩的"必须保留主体"检查当成真主体 ✗(实测 COMPACT_SECTION_LOST_ENTITIES: 世界观 · 未归类);
  • 渲染侧:只在注入时把它们并成一个单元 ⇒ 会把散行合并成不可分割的单元 ✗,40 条平铺条目从"能逐条截断"变成"全有或全无"(3 条粒度守卫当场红)。
    ⇒ 它看起来简单,实际会同时碰到压缩的"必须保留主体"与取舍的"逐条粒度"两个不变量 ✗ ⇒ 值得单独一轮做(已知两个坑在哪 ✓)。本版先用提示词降低发生率 ✓。

验收:全量 904 / 904 / 0 ✓ · 变异电池 18 / 18 ✓。

升级后请重启 DSH Desktop。

3.1.24 · 状态重合不重复写 + 空行 + 括号放宽

Choose a tag to compare

@xling001 xling001 released this 05 Oct 12:46
  • 人物行:状态与卡片最新一条重合时不再重复写(真机《某书》例行体检抓到 ✗):
    产出过 配角:`第42-43章` …;`第58章` 已过世,未安葬。 · 据练儿称已过世;未安葬,无坟墓。 ✗
    —— 卡片最新一条已经把这件事说了,再接一句现状就是啰嗦 ✓。
    判据:只比汉字(去掉标点/章号/空白 ✓),状态里的字有 40% 以上已经出现在最新那条里 ⇒ 视为同一件事,不再重复 ✓
    (⚠️ 这是启发式:误判的代价只是少写一句本来就重复的现状 ✓,比啰嗦两遍好 ✓;实测那条是 6/13 = 46%,所以阈值定在 40%)。
  • ### 主体 之前补一个空行(例行体检,纯观感):薄主体压成 - 主体:… 之后,它可能紧挨着下一个 ### 主体
    ⇒ 读起来像「这条属于下面那个主体」✗。空行在 markdown 里也让标题真的成为标题 ✓。
  • 关系条目的末尾括号改成「可写可不写」(读者:"并不需要指出来他们的关系属于什么类型也可以"):
    提示词规则 2 从「关系演变写在末尾的括号里」放宽为「末尾括号(关系类型或演变,如 (师徒) / (同门 → 对手))可写可不写 ✓ —— 不写也行;写了就放在最后 ✓」。
    ⚠️ 写了的时候,并进仍会保持它在最后、且只留最新的那个 ✓(否则就回到 3.1.23 修掉的那种 (师徒);`第32章` …(师徒) ✗)。

这一版是例行维护体检的收尾(上一版记下来的三条小问题,全部处理完 ✓):

  • 提示词与注入文本整段读过一遍 ✓:记号与图例一一对应 ✓、无互相矛盾的指令 ✓、无过时说法 ✓;
  • 文件纯净度 ✓:仓库 102 个文件(无垃圾 ✓)、隐私零命中 ✓(无任何本机路径/用户名 ✓)、LIVE 安装副本无垃圾无缺件 ✓。

验收:全量 904 / 904 / 0 ✓ · 变异电池 18 / 18 ✓。

升级后请重启 DSH Desktop。