Skip to content

Releases

v0.2.3

Choose a tag to compare

@masknull masknull released this 28 Sep 08:24

新增

  • 插件面板内的设置入口:左侧边栏「插件」→ 已安装 → dsh-session-prompt 卡片详情页内直接编辑会话头部提示词(默认展开),与「设置 → 插件设置」为同一组件、同一份配置,任一处保存两处同时生效。宿主未提供此挂载点时(旧版 DSH)自动回退为原单入口,设置页行为不变。
  • smoke 冒烟测试沙箱化:数据目录隔离到仓库内临时目录(此前会读到开发机上运行中实例的真实 profile 配置导致断言误报),mock 补齐事件总线订阅(此前直接崩溃)。

不兼容变更

  • 最低宿主版本提升至 DSH 0.1.7-rc.1:本版起仅支持 0.1.7 线,0.1.5 的兼容路径(插件 tab 的 settings.plugin.item 座位、settingsScope 控制器、legacy settings.yaml 迁移链)已全部移除;仍需 0.1.5 的用户请留在 v0.2.2。

修复

  • 宿主半配置热更新处理器:loader/volatile-update 事件的回调此前引用一个未定义的函数,配置热更新到达即抛错;现已重建为真正的 seed 函数并随事件重新求值。

v0.2.2

Choose a tag to compare

@masknull masknull released this 25 Sep 07:11

dsh-session-prompt — Release Notes

0.2.2

迁移:配置存储改为插件自有文件(0.1.5 / 0.1.7 行为一致,不再走宿主设置写通路)

新增

  • 配置的唯一事实源改为插件自有文件 <profile>/.dsh-session-prompt/settings.json,与凭证、catalog 缓存同目录。
  • 一次性迁移:文件不存在时,从 profile entry 的旧值播种,并从 settings.yaml / settings.yaml.imported(0.1.5 时代的配置文档)读取本插件的旧 section——宿主只导入“名字与 profile 条目 id 相同”的 section,旧命名空间的 section 不被导入,数据只存在于那份文档里,由插件自行读取。
  • 新增 HTTP 设置面 GET/POST /plugins/dsh-session-prompt/settings(loopback + per-process key 鉴权),浏览器卡片经它读写。
  • 迁移完成后,自动把 profile patch(cordis.patch.yml)里本插件写过的字段删掉——只删自己的,不碰其他插件/用户的字段。

性能

  • 设置保存不再触发任何 profile 重组:旧的写入通路(0.1.7 的 configEditor.edit)要全量 reconcile profile 树、热重载插件 fiber,并刷新所有客户端镜像;现在是一次本地原子文件写(tmp + rename)加原地应用,实测 8–20ms,代价恒定,不随配置规模增长,也与宿主后续版本对设置写入的优化无关(0.1.7-rc.2 已改善切换模型时的等待,本插件路径同样受益但不受其影响)。

修复

  • bundle patch(cordis.patch.yml)由“insert + 自带示例 config”改为纯 insert:该示例 config 会作为 inherited 层长期留在组合里,每次清理用户层后都会以“非默认值”身份覆盖用户配置,导致已同步的设置在后续开机被重置为示例值。
  • 迁移种子规则的默认值改为从 schema 的 meta.default 读取(此前手写默认值与 schema 不一致:triggers 写成五个 true、fields 写成 {},导致 schema 自身的默认值被误判为“真实覆盖”,旧配置永远同步不过来)。

兼容性

宿主要求:DSH ≥ 0.1.5-rc.2(0.1.5 线终点)。该下限已写入 package.json 的 engines.dsh,宿主会按它跳过不兼容的版本并提示。peer:cordis 4.0.1、schemastery 3.18.1、dsh-settings ≥ 0.1.5-rc.1。

宿主版本 状态 说明
0.1.5-rc.2 ✅ 支持 最低支持版本
0.1.7-rc.1 ✅ 已验证 端到端实测:一次性迁移、prompt 从旧文档恢复、patch 行清理
0.1.7-rc.2 ✅ 支持 该版本改善了切换模型时的等待,本插件路径不受影响

为什么两个版本行为一致:本插件的配置不再经过宿主设置服务,而是插件自有的 <profile>/.dsh-session-prompt/settings.json。宿主版本之间设置写通路的差异(0.1.7 的 configEditor.edit 全树 reconcile、describe() 按条目投影)完全不参与读写,因此不存在“某版本下写入慢 / 失效 / 被 inherited 层覆盖”的版本性差异。

迁移来源(0.1.5 时代配置):插件自行读取 settings.yaml(0.1.5 原件)或 settings.yaml.imported(0.1.7 首次启动时的改名备份)中的 session-head-prompt section。这一步不依赖宿主的导入机制——宿主只会导入名字与 profile 条目 id 相同的 section,且导入跑在插件首次加载之后,时机不可控。js-yaml 缺失时该层自动跳过,其余功能不受影响。

版本差异与取舍:无。设置入口始终是「设置 - 插件设置」里的本插件卡片,两个版本一致。

设置入口变更(自本版本起)

自 0.2.2 起,本插件的设置卡片固定在「设置 - 插件设置」共享块内(排位 10)。此前入口(0.1.5 时代的插件 tab / 命名空间表单)不再承载配置编辑——所有读写收敛到这一张卡片,配置的唯一事实源是插件自有文件。若升级后找不到设置项,请到「设置 - 插件设置」查看;两个宿主版本(0.1.5 / 0.1.7)入口位置一致。

升级注意

  • 首次启动自动完成迁移并清理 patch 行,无需手工操作;若自有文件已存在且从未在卡片上保存过,0.1.5 文档中的旧值优先于 schema 默认值生效。

v0.2.1

Choose a tag to compare

@masknull masknull released this 18 Sep 05:09

dsh-session-prompt v0.2.1

适配 DSH 0.1.5-rc.x(要求 DSH ≥ 0.1.5-rc.1;更老宿主无法加载。DSH dsh-v0.1.2-alpha.1 ~ 0.1.4.x 请使用 v0.2.0,更早宿主请使用 v0.1.x)。

为什么发布本次版本

DSH 0.1.5-rc.x 从 @deepseek-ai/dsh-settings 移除了 installSettingsSection / settingsNamespace 导出(已对照已安装的 0.1.5-rc.2 副本核实,该包现仅导出 SettingsConflictError、SettingsProvider、default、redactSecrets)。旧版本宿主半区启动即触发 does not provide an export named 'installSettingsSection',导致 dsh web 崩溃、整个 profile 无法启动。

变更

  • 设置命名空间改为普通字符串,注册改走 ctx.inject(['settings'], ...) + settings 服务的 installSection 方法——与本宿主自带的 bash-local / web-search-deepseek 插件同一模式
  • peerDependencies[@deepseek-ai/dsh-settings] 放宽为 >=0.1.5-rc.1
  • README 环境要求一节同步改写(v0.2.0 面向的是 dsh-v0.1.2-alpha.1 时代)
  • 客户端半区不变:ctx.settingsScope.bind({ namespace }) 在本宿主仍然存在;systemPrompt.section() API 未变

安装

dsh plugin --profile <profile> add github:masknull/dsh-session-prompt

固定版本安装:github:masknull/dsh-session-prompt#v0.2.1;本版本 tag 为 v0.2.1。

License

MIT

v0.2.0

Choose a tag to compare

@masknull masknull released this 30 Aug 12:21

dsh-session-prompt v0.2.0

适配 DSH dsh-v0.1.2-alpha.1(要求 DSH ≥ dsh-v0.1.2-alpha.1;更老宿主会拒绝加载并给出明确诊断,请改用 v0.1.x)。

为什么发布本次版本

DSH dsh-v0.1.2-alpha.1 移除了 @deepseek-ai/dsh-client-runtime 包,快照 store 原语迁入新冻结模块表词 @deepseek-ai/dsh-client-store。旧版本 client 半区 require("@deepseek-ai/dsh-client-runtime/client") 在新版加载器解析不到,导致 Failed to load plugins(missed the module table)。

变更

  • 客户端快照 store 原语改用 @deepseek-ai/dsh-client-store(createSnapshotStore / SnapshotStore)
  • SettingsScope 类型改从 @deepseek-ai/dsh-client-ui-settings/client 导入
  • ClientContext 类型替换为 @deepseek-ai/cordis 的 Context
  • 构建 externals 与 dsh.client.inject 同步更新
  • 客户端 factory 增加兼容守卫:老宿主(< dsh-v0.1.2-alpha.1)拒绝加载并提示升级 DSH 或回退 v0.1.x
  • 版本号 0.1.0 → 0.2.0

安装

dsh plugin --profile <profile> add github:masknull/dsh-session-prompt

固定版本安装:github:masknull/dsh-session-prompt#<commit-sha>;本版本 tag 为 v0.2.0。

License

MIT

v0.1.0

Choose a tag to compare

@masknull masknull released this 31 Aug 13:36

dsh-session-prompt v0.1.0

首个正式版本:在 DeepSeek Harness 的每个会话系统提示词最顶部注入用户配置的自定义提示词,可在 Web 设置页中即时编辑。

功能

  • 注入位置:插到会话系统提示词的最顶部(order: -200,位于默认区 -100 与用户区 0 之间),保证优先级最高
  • Web UI 设置:在「设置 → 插件配置」中新增一张卡片,可开关注入、编辑提示词文本、保存
  • 实时生效:提示词保存后下一次会话立即生效,无需重启
  • 数据校验:系统提示词渲染器会插值严格的 {{变量}} 引用并对未知或畸形分组抛错;插件拒绝保存含完整 {{ }} 分组的文本,坏提示词永远不会破坏请求

安装

dsh plugin --profile <你的profile名> add github:masknull/dsh-session-prompt

固定版本安装:github:masknull/dsh-session-prompt#<commit sha>;本版本对应 tag v0.1.0。

License

MIT