Skip to content

Releases: lifangjin/dsh-maoying

v0.1.37

Choose a tag to compare

@lifangjin lifangjin released this 03 Nov 03:41

写手委派改名 draft,修复 preset 挂载失败(#2)

DSH ≥ 0.2.1-rc.3 下毛颖 preset 整体挂载失败的根因:委派组件为每个 toolName 注册 prompt section tool:${toolName},写手行 toolName: write 与 tool-fs 注册的 tool:write section 在同一 preset scope 撞名,第二次注册抛错 tool:write is already registered in this scope。写手委派改以 draft 注册(根因分析与改名方案来自 issue #2 报告者 @Cipher208,致谢)。

预设

  • agent.cordis.yml / agent.cordis.v2.yml:写手委派行 toolName: write → draft(行 id 同步 delegation-draft),主编 persona 的分工表 / Writing 六步法 ③⑤ / 共创模式措辞同步,原「一名双义」注释改写为 prompt section 撞名机理说明
  • restrict.mjs MAIN_AGENT_ALLOW:'draft' 进「角色委派」区,'write' 移入「主编亲笔」区按文件写本义放行——'write' 一名双义解除
  • delegation-labels roles 映射键、preset.yml 与 v2 preset 的 description 同步
  • preset id(maoying-write)、显示名(写手)、persona 内容均不变,只改委派注册的工具名;委派名自此避开 tool-fs / tool-fs-search 工具名集合 {read, write, edit, glob, grep} 整类撞名

文档与测试

  • docs/design.md §4 角色表 / 主编工具面 / delegation-labels 映射、docs/spec.md 五维字段三阶段与圣域两处、README.md 五帮手介绍契约同步
  • 测试 ROLES / ROLE_CN / EXPECTED_V1_ALLOW 改 draft;新增 PRESET_ID 映射解耦 toolName 与历史 preset id(maoying-write 保留,不动已装声明面)

门禁:npm test 241 tests 240 pass / 0 fail / 1 skip(yaml 条件类);npm run smoke 通过。

升级:DSH 0.2.1-rc.3+ 宿主重启 dsh web 即自动重装新版;#2 报告者的本地 patchedDependencies 补丁可移除(本修复与其等价)。

v0.1.36

Choose a tag to compare

@lifangjin lifangjin released this 02 Nov 10:26

角色卡 psychology 标准字段

角色心理曲线从零散附页升为角色卡标准字段,全链纳入。

数据规范

  • 角色卡 frontmatter 新增 psychology(心理曲线):总轴+分段心理变化的长文本;主角卡建议写全,配角可缺省
  • docs/spec.md、templates/novel/README.md 规范与模板同步

创作台面板

  • 快照契约(parseStateSnapshot)characters 字段白名单纳入 psychology
  • 全卡弹层新增「心理曲线」行(中英 i18n 同步);角色墙列表行保持轻量不加

工程化

  • test/panel-core.test.mjs 字段键断言+值断言;test/fixtures.mjs 补真路径 fixture
  • docs/design.md、docs/creator-panel.md 契约同步(字段清单、快照 JSON)

门禁:npm test 241 tests 240 pass / 0 fail / 1 skip(yaml 条件类);npm run smoke 通过。

v0.1.35

Choose a tag to compare

@lifangjin lifangjin released this 02 Nov 05:26

借鉴 dsh-superagent-prototype 的十项编排与工程化改造

编排纪律(presets,v1/v2 双源同步)

  • 主编委派给指针不给转述:任务描述只写章节号、文件路径与用户原话引用,大纲要点、设定细节由帮手读原文自取;主编不替帮手写实现方案、不改写需求、不加验收标准
  • 一次一问:向用户提问一次只问一个具体问题,拍板请求让人能直接答
  • 缺口清单固定格式:定稿维护中断按「缺口清单:①未落盘项 ②……」逐条列报,续跑逐条勾销;无台账增量的定稿视为未定稿
  • handback 协议:五帮手收到超范围请求一句话理由退回主编,不自行扩大解释;主编不自行把退回事项升级为新任务
  • 节奏参数外置:单章字数档位、伏笔清理阈值以 novel/style.md「节奏」节为准(缺省 2000-4000 字 / 15 条),persona 不再写死
  • 长命令后台纪律:index 重建、export、批量统计用后台 job 跑,不阻塞主编推进

拍板账(novel/decisions.yml)

方向性拍板(设定共创、分卷规划、基调与金手指变更、共创模式切换)经用户确认后落账,只增不改;越出既有拍板范围的重大变更须先再拍板——「这次改动是否越权」从记忆问题变成查账问题。maoying check 新增拍板账静态校验(id 重复 / date 格式 / source 枚举)。

创作台面板

  • 状态徽章悬停显示**「在等谁」**提示:等开写 / 写作中 / 等审校报告 / 已定稿;author-draft 模式待写章显示「等作者交稿」——面板向「只展示需要人的事」靠拢
  • 编辑器「阅读模式」按钮(上版遗留未发版项随本版发出):编辑态一键回只读,脏稿先确认;修复全屏取消后 fsFull 残留

工程化

  • 新增 test/docs-sync.test.mjs(12 断言):README 中英 CLI 命令集与数量字样、技能表 ↔ skills/ 目录、模板文件 ↔ 速查规范双向覆盖、拍板账键集——文档漂移从人工纪律变机器门禁
  • docs/design.md 增「不做清单(被否方案)」九条:不做数据库/API 层、主编写正文、自动发版、自动开写、多书并行、prompt 硬编码节奏参数、深嵌套 YAML、面板健康详情、多 Source 接入

门禁:npm test 241 tests 240 pass / 0 fail / 1 skip(yaml 条件类);npm run smoke 通过。

v0.1.34

Choose a tag to compare

@lifangjin lifangjin released this 31 Oct 15:00

新增

编辑器字体选择器

章节阅读页正文编辑卡工具行、字号 A−/A+ 之前加字体下拉(全屏编辑头部同款),六档:系统默认 / 黑体 / 宋体 / 楷体 / 仿宋 / 霞鹜文楷。本机未装的字体沿回落栈逐级降级(霞鹜文楷最终落 Noto Serif CJK SC → serif);选择全局记忆一份(localStorage,跨章共享),阅读与书写同源生效——只读正文与编辑器同字体切换;行号数字维持 UI 字体不动,行高公式不随字体变。

修复

行号缩放错位(时序加固)

面板缩放非 100% 档位下按 A−/A+ 调字号后行号与正文错位且不恢复。镜像测量机制经全矩阵复验无病,症状指向宿主 webview 迟到布局/绘制时序,本版三重加固:

  • 测量 effect 改 useLayoutEffect(绘制前重排行号,消灭缩放后旧坐标可见帧)
  • 双 rAF 复测兜字体换装、zoom 迟到应用等场景(不依赖 ResizeObserver 是否触发)
  • 滚动钳位重同步:缩放后内容变矮、浏览器夹紧 scrollTop 不发 scroll 事件时,行号层 transform 按当前值对齐
  • 附一次性发散告警([maoying] 前缀 console.warn),异常环境留现场数据

句式重复检查误报与显示

「。" 收尾 + 换行分段」的对话排版不再误报连续句式重复(前缀跳过空白字符);消息里的前缀转义控制字符并附 U+XXXX 码点——中文引号显示不再依赖字体,半角/全角引号一眼分清。

完整变更: v0.1.33...v0.1.34

v0.1.33

Choose a tag to compare

@lifangjin lifangjin released this 30 Oct 09:52

修复

Android compat 壳重启损坏 home patch(#1)

Android compat 壳(DeepSeekHarnessCompat)每次重启会重写 home 层 cordis.patch.yml 并把托管块拍成坏 YAML,导致宿主启动 fatal。本版把托管块写入层改为可配置,兼容壳环境默认改写 profile 层(壳不碰):

  • 层选择 resolvePatchLayer:环境变量 DSH_MAOYING_PATCH_LAYER=home|profile 覆盖优先;启发式——platform==='android' 或 DSH_HOME 含 com.deepseek.harness.compat / /payload/ 段时默认 profile 层
  • resolveProfilePatchPath:按 --profile 参数(兜底 web)解析 <home>/profiles/<name>/cordis.patch.yml,目录缺失自动退回 home 层
  • removeManagedBlockFromHome:切 profile 层时清掉 home 层遗留托管块,防双声明;块外内容逐字节保留
  • 写前自检:落盘前整文件 yaml.parse 回验(先中和 !!js 表达式,不误判宿主合法手工条目),解析失败拒写半截、保留旧文件并 warn
  • 坏块检测:托管块之外出现 - id: <预设显示名> 形状的坏行时 warn 并给出手工清理指引

壳每次启动会把 profile patch 重置成 seed,插件每次启动自动补写——自愈(真机已验,见 issue #1 第七节)。

Full changelog: v0.1.32...v0.1.33

v0.1.32

Choose a tag to compare

@lifangjin lifangjin released this 27 Oct 11:23

修复

  • 模型缓存命中率:compaction thresholdRatio 0.45 → 0.8(宿主默认)、tool-result-pruner thresholdChars 8192 → 32768(head 8192 / tail 2048),v1/v2 双源同步。根因:压力点上 pruner 以 surface replace 改写已发送的超预算工具结果、compaction 再摘要改写中段历史,两者都使 DeepSeek 前缀缓存从改写点起整体 miss;五本账(foreshadows/memories/index/clue-board/timeline)随章节累积普遍超旧阈值 8192 字符,是反复被剪的大头。重启 DSH 后安装器逐字节比较自动换新 preset,无需重装。

面板

  • 编辑器字号缩放:A−/A+,9–27px 档位、比例常显、localStorage 记忆,行号镜像同源联动
  • 全屏编辑:MaskPortal 覆盖层,Esc / 遮罩 / 按钮三路退出(不走 Fullscreen API)
  • 字数统计双口径并显:不含标点(CJK,与全库同口径)/ 含标点(去空白全部码点,u 标志防代理对双计)

测试

npm test 214 pass / 0 fail(1 skip 为 yaml 条件跳过);npm run smoke 通过。

v0.1.31

Choose a tag to compare

@lifangjin lifangjin released this 26 Oct 12:49

本版聚焦方法论技能库两轮扩编与一轮全面审查:起点编辑子良经验 + 龙空/阅文编辑/大神访谈/免费平台三路调研收编,方法论技能 4 → 6。

方法论技能 4 → 6

新增 maoying-suspense-craft(悬疑与对比)(8e36e01)

  • 悖论式悬念定义(「当前世界观下不可能发生却发生了」,与反转/冲突划清界限)、悬念-行动-线索循环(线索只解答一部分、新悬念两个来源、行动段必须带卖点)、堵死读者猜测、对比表现力杠杆(修真四万年列车战层层对比/反差消解/专业衬托)
  • 数据落账接口写明:线索/悬问/误导进 clue-board.yml,主线悬念排期进 foreshadows.yml

新增 maoying-volume-craft(卷纲与单元结构)(8bdb1f9)

  • 卷四定:主题(每卷一部独立小说)/收获/实力上限/刻度(约 20 万字一个大目标、6-7 万一个中目标,全书大纲不锁死)
  • 情节五步循环 + 卷内三幕嵌套;支线字数红线(无伏笔 6000 字内、带伏笔最长 3 万字)+ 高潮埋坑 2-3
  • 换地图三纪律 + 旧角保温、群像戏份账、期待线并行(3-5 条、静止 ≤3 章)

既有四技能扩充(8e36e01、8bdb1f9)

  • golden-opening:动笔前三件事(题材元素/对标拆解 3-5 本火书/平台开篇刻度)、开篇四型(大奉/大师兄/大王/亏成)、对抗格局聚焦(两势力单一矛盾)、金手指两原则、冲突内生原则、主角生活代入
  • beat-pacing:即时正反馈环(目标-行动-收获 + 升级文四拍)、期待感管理(双要素判据/打破平衡)、打脸节拍两档(单元小打脸对齐中爽点 1:2:1:1、大打脸弧按平台分档 飞卢3/番茄5-8/起点15-20 章)
  • review-checklist:镜头感检查(视角污染/情绪直给/心理超 3 句/无视线落点)、毒点(回忆杀>300 字/被压超 2 章)、阵营纪律红线(主角不懦弱 P0/同阵营不拖后腿/反派不降智)、群像蒸发
  • foreshadow-discipline:铺垫 vs 伏笔之辨(铺垫=预期管理拉高跌落,伏笔=串联呼应,诡秘总结章/大奉串案手法)

全面审查修正(fb5ab2b)

  • 打脸节拍两档重构,消解装逼四拍/中爽点/平台分档三方刻度矛盾
  • 落账职责对齐:埋坑/关系网/主线悬念登记归设定管理员,大纲师只点名(对齐 persona 落盘职权)
  • 章尾钩子四型统一到 beat-pacing 类型库原名;前 300 字加平台口径注;期待线 vs 活跃主线、中目标 vs 中爽点口径澄清
  • 核实通过:技能计数、design.md 文件数与 PRESET_FILES 一致、伏笔阈值三处同源、P0/P1/P2 校准

persona 同步(5c1688d、8bdb1f9)

  • v1/v2 双源同句同步(composition.test 逐字节断言):主编方法论清单四→六、大纲师加载 suspense-craft 与 volume-craft、写手加载悬疑/对比场景、Collab ① 题材对齐接「动笔前三件事」

文档

  • README/README.en 技能表 4→6、卸载清理措辞同步;style.md 通用基线新增「镜头」节与单章字数平台分档注(新书冷启动即生效)

升级

面板「一键升级」(「检测更新」可强制现测)或 pnpm --dir <profileDir> add dsh-maoying@0.1.31,装完重启 DeepSeek 生效。

v0.1.30

Choose a tag to compare

@lifangjin lifangjin released this 26 Oct 10:08

本版聚焦右栏窄 pane 的文章页排版:容器查询自适应 + 文档全面对账。

代码变更汇总

右栏 tab 正文补留白 + 窄 pane 自适应(c711db8、925a6b4)

  • 留白:文章页在侧栏打开后元素全顶 pane 边框——.myt-viewTab(右栏两 tab 正文根)补 padding: 14px 16px + box-sizing: border-box;顺修 .myt-page 中栏 minWidth: 720px 在窄 pane 内顶出横向滚动(创作台 tab 同病)
  • 窄 pane 自适应:全页样式核对后定位四处断点(约 330–420px 可用宽)——①顶栏四个带字按钮一行挤爆帽签 ②章纲头(标题/字数/编辑/删除/箭头)互挤裁切 ③状态流转行同险 ④五维卡双列 ~160px 过挤。修法:.myt-viewTab 设 container-type: inline-size + @container (max-width: 560px) 收拢——帽签独占一行、按钮次行右靠、三处容器放行 wrap、五维卡单列;窗口宽 pane 窄,media query 无效,必须容器查询;作用域全部钉在 .myt-viewTab,中栏 overlay 零影响。核对无恙:--dsw-alias-* 变量全局 body 作用域(非变量缺失)、正文/章纲文本换行、行号编辑卡、确认弹层宽度

打开形态陈旧 state 清扫(1d56315、e96f279)

  • 实测「右侧栏改分栏后关了重开,设置仍显示右侧栏」:overlay 关闭只是 display:none、React 实例常驻不卸载,state 停在旧值。修复显示/路由双活读:设置弹层形态显示值现读 localStorage;openChapterExternal 路由判定改 getOpenMode() 现读(同源隐患:陈旧 state 会让分栏点章不走路由)
  • 同类系统性排查后另修两处:工作区选择 activate 重开时回读 localStorage 记忆(防 effectiveWs 回落第一个 hasNovel);设置弹层字号/语言显示值同改活读。面板数据(ACTIVATE_EVENT 三重重拉)、文章页 params、DIRTY_EXIT(已知边界)核对无恙

文档对账(d3d0b2e)

  • README.en.md 补四处:打开方式三选一整段(三形态 + 0.2.x 要求 + 0.1.x 降级 + tab 草稿保活/重开现拉/换章重挂 30s 窗口)、功能特性条打开方式句、章节条目正文自动保存全套口径(0.1.22 起非手动保存)、顶栏设置枚举
  • README.md 功能特性条补界面语言可切;creator-panel.md i18n 键数 258 → 310(漏随)+ 窄 pane 自适应条目
  • 路由 23 条 / 九 tab / CLI 六命令 / 伏笔阈值 15 条全部与代码实况核对吻合

升级

面板「一键升级」(「检测更新」可强制现测)或 pnpm --dir <profileDir> add dsh-maoying@0.1.30,装完重启 DeepSeek 生效。

v0.1.29

Choose a tag to compare

@lifangjin lifangjin released this 26 Oct 06:25

本版三条体验修复:右栏 tab 正文留白、打开形态显示劈叉、常驻实例陈旧状态清扫。

代码变更汇总

右栏 tab 正文补留白(c711db8)

  • 文章页在侧栏打开后元素全顶 pane 边框(章题条/正文/分隔线贴边)观感差:.myt-viewTab 补 padding: 14px 16px + box-sizing: border-box(对齐官方 tab 紧凑观感、按文档型页面放宽;toast 掩体定位不受影响)
  • 顺修:.myt-page 的中栏 minWidth: 720px 在窄 pane 内顶出横向滚动——tab 作用域内置 0(创作台 tab 同病)

打开形态陈旧 state(1d56315)

  • 实测:右侧栏改分栏后关闭创作台再开,开在中栏(正确)但设置弹层仍显示「右侧栏」
  • 根因:overlay「关闭」只是 display:none,React 实例常驻不卸载,openMode state 停在旧值
  • 修复(显示/路由双活读):设置弹层形态显示值弹层开着现读 localStorage;openChapterExternal 路由判定改 getOpenMode() 现读(同源隐患:陈旧 state 会让分栏点章不走路由)

常驻实例陈旧 state 清扫(e96f279)

  • 同类 bug 系统性排查后修两处:
    • 工作区选择:activate 重开时回读 localStorage 记忆——陈旧 selWs 会让 effectiveWs 匹配失败回落「第一个 hasNovel」,不认用户选的工作区
    • 设置弹层字号/语言:弹层开着现读 localStorage(校验回落同初值逻辑),同活读口径
  • 排查确认无恙:面板数据(ACTIVATE_EVENT 三重重拉)、文章页 params(navigation 现值)、sbReady(0.1.28 已活探测)、DIRTY_EXIT(已知边界,文档已声明)

其他

  • 测试 214 pass / 0 fail / 1 skip(yaml 条件跳过),smoke 通过

升级

面板「一键升级」(「检测更新」可强制现测)或 pnpm --dir <profileDir> add dsh-maoying@0.1.29,装完重启 DeepSeek 生效。

v0.1.28

Choose a tag to compare

@lifangjin lifangjin released this 26 Oct 06:05

本版修复 0.1.27 右侧栏服务探测的一个时序性误判:设置里「分栏/右侧栏」异常置灰、分栏点章开在中栏。

代码变更汇总

右侧栏服务探测双路化 + 懒挂载(4510ca9…4510ca3)

用户实测:设置点「中间栏」后分栏/右侧栏灰死;分栏模式点章开在中栏。两症状同源——

  • 根因:宿主右侧栏服务由 sidebar-right 经 ctx.reflect.provide("sidebarRightTabs"/"sidebarRight", …) 发布,而 cordis 的 ctx.get(name) 默认 strict=true——提供者 fiber 非活跃态时静默返回 undefined。插件 apply 时严格探测拿空 → sbReady=false → ①设置除中间栏全置灰 ②右栏句柄永不挂载 → 分栏点章走回落开中栏。对照组:官方 files 插件(实证可用)从不 ctx.get,直读 ctx.sidebarRight 属性
  • 双路探测 probeSbService:非严格 ctx.get(name, false) 优先,ctx.sidebarRightTabs/ctx.sidebarRight 属性直读兜底,各自 try/catch;探测失败落 logger.warn(注明宿主 <0.2 还是服务晚到)
  • 活探测 sbProbe():设置置灰判定与形态切换守卫改为用点现探(弹层每渲染现探)——服务晚到时下次交互自动解锁,不再 apply 时拍死快照
  • 懒挂载 ensureSbHandle():apply 先试挂,此后入口点击/点章路由/overlay ensure 三处兜底重试(mountSidebarTab 失败自清理,重试安全;成功后 ref 挡重复注册)
  • 回归测试:smoke 新增场景③——严格 get 装死 + 属性直读可用的假 ctx 下,两个 tab 类型与两个 keyed seat 必须照常注册且不落降级 warn(复刻本次线上坑)

其他

  • docs/creator-panel.md §4.1 同步探测口径(eaebcff)
  • 测试 214 pass / 0 fail / 1 skip(yaml 条件跳过),smoke(含新场景)通过

升级

面板「一键升级」(「检测更新」可强制现测)或 pnpm --dir <profileDir> add dsh-maoying@0.1.28,装完重启 DeepSeek 生效。