Skip to content

Releases: FablerTan/dsh-qq-relay

v0.25.6

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:44
  • 诉求:jev 换了部署(换决策模型、或走兼容 Decisions 协议的代理)时,模型 id 与地址只能写 profile
    patch 再重启;而 API key 早在 v0.24.0 就能在页面改。这次把 gate.model 与 gate.jevEndpoint
    也收进「行为」页。
  • host:EDITABLE_GATE_KEYS 增加 model / jevEndpoint;maskConfig 回显当前生效值
    (它们不是密钥,可以读,页面据此回填);refreshClassifier 的签名带上模型 / 地址 / bot 标签,
    变化时替换分类器实现;relaySignature 忽略这两项——改模型 / 地址不重建 relay 连接。
    校验沿用 normalizeGate:模型 id 非空,地址必须是 https://(http 代理会被 400 拒绝)。
  • client:form.ts 新增 gateJevModel / gateJevEndpoint 两个必填输入(从状态回填),
    「行为」页在阈值下方新增「jev 模型 id」「jev 分类器地址」两行;地址写错当场提示。
  • 默认值不变:typesafe/jev-1.14 + https://openrouter.ai/api/alpha/decisions,不配就是原行为;
    只改 key 的老用户升级后表单会回填默认值,保存不会额外写入除非确实改过。
  • 单测仍 300(扩展现有用例:可编辑 / 覆盖优先级 / 脱敏视图 / 非法值 / 端到端热切换 + key 不被冲掉);
    pnpm check 全绿。
  • 文档同步:gate / config / client / architecture / roadmap / README / AGENTS / 本文件;client 半身改了
    src/model/{api,form}.ts 与 src/view/panels/BehaviorPanel.tsx,lib/client.js 已重建。
  • 需要重启 dwdev GUI 才能生效(host / client 都改了)。

完整版本历史:docs/changelog.md

v0.25.5

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:30
  • 问题:另一台 Mac mini 升级到 DSH 0.2.1-rc.2 后,「QQ 群聊」预设(id qq-relay)在配置页显示
    「未注册」、DSH 新建会话的 preset 列表里也选不到;宿主报两条注册错误
    tool-subagent: toolFilter is no longer supported; ...(tool-subagent 与
    tool-subagent-fork 各一条)——一条错误就让整份 preset 变 broken,不是某个字段的小警告。
  • 原因:lib/model/preset-template.js 是 2026-10-19 抄的 standard.patch.yml 快照,委派两行
    还带着 toolFilter: { deny: [schedule_create, ...] };新版 @deepseek-ai/dsh-tool-subagent 的
    apply() 已把 toolFilter / persona 从配置面移除,见到即抛错。新版 standard 这两行只剩
    provider / toolName(spawn 行另有 modelSelectionSettings)。
  • 修法:按 0.2.1-rc.2 的 standard 重新对齐组合表——删掉两处 toolFilter,行数不变(21 行,
    persona 仍由插件在第一行注入)。presets.json 本身没问题,人设 / 模型 / 权限都保留。
  • 兜底:lib/controller/presets.js 注册失败时解析宿主错误里的 <字段> is no longer supported,
    深拷贝定义、剔除该字段后重试(最多 4 轮)并打警告——DSH 以后再删字段,预设不会立刻整份失效。
  • 可见性:注册失败日志不再只猜「id 冲突」,改为同时提示「DSH 升级后组合表 schema 变化」并指向
    persona.md §2.2。
  • 单测 298 → 300(组合表 schema 守卫 + 「宿主移除字段自动剔除并重新注册」);pnpm check 全绿。
  • 文档同步:persona / architecture / roadmap / README / AGENTS / 本文件;client 半身未改
    (lib/client.js 无需重建)。
  • 需要重启 dwdev GUI 才能生效;那台 Mac mini 更新到 v0.25.5 后重启 DSH,预设会重新注册
    (日志 [relay] 已注册 QQ 预设「qq-relay」,配置页不再显示「未注册」)。

完整版本历史:docs/changelog.md

v0.25.4

Choose a tag to compare

@github-actions github-actions released this 20 Oct 07:26
  • 问题:新机器点「环境」页一键修复时,写 compose 需要 environment.webuiToken,但保存 token 走的是
    整份配置保存——normalizeConfig 把空的 wsUrl / accessToken / selfId 当成「必填缺失」,
    直接 400 且不写盘。于是死循环:没有 token 就没法一键修复,没配 OneBot 又存不了 token。
  • host:normalizeConfig 区分「配置无效」(真的写错,仍然 400)与「待补全」(三项连接信息留空):
    后者 ok: true 但 ready: false,照常落盘,problems 里逐条提示必填项;lib/index.js 改用
    ready 决定是否启动 / 重建 relay(reconnect / rebind / 映射操作同步改判),保存日志写
    「还没配全 OneBot 连接信息,relay 暂不启动」。
  • client:buildConfigPatch 允许 wsUrl / selfId 留空(填了但格式不对仍当场报错),
    保存提示区分「已保存(待补全)」与「已保存并重连」。
  • 单测 297 → 298(配置「待补全」vs「无效」/ 端到端:没配 OneBot 也能保存 WebUI token 且不启动 relay);
    pnpm check 全绿。
  • 文档同步:config / client / env / architecture / roadmap / README / AGENTS / 本文件;client 半身改了
    src/model/form.ts 与 src/viewmodel/settings.ts,lib/client.js 已重建。
  • 需要重启 dwdev GUI 才能生效。

完整版本历史:docs/changelog.md

v0.25.3

Choose a tag to compare

@github-actions github-actions released this 20 Oct 06:54
  • 决定:v0.25.2 的「按 docker endpoint 识别引擎并给 start-orbstack / install-orbstack 等动作」
    在真机上并没有让问题更简单——另一台 Mac mini 的 OrbStack 装了一半、context 指向已卸装的 socket,
    按引擎给动作反而把人引向修 OrbStack。实际更省事的做法是用 Colima,所以整段回滚
    (git revert v0.25.2),环境页恢复 v0.25.1 的行为:macOS 只认 Colima(启动 / 重启 / 安装),
    Linux 用已有 daemon。
  • 回滚范围:移除 start-orbstack / start-docker-desktop / install-orbstack 动作、
    engineOfEndpoint 与 engines 探测、waitDaemonUp;docker info 直连失败时仍用
    docker --context colima 兜底;版本号 0.25.2 → 0.25.3(0.25.2 已发布,不回退 tag)。
  • 那台机器怎么办:如果 docker endpoint 指向残留的 OrbStack / Docker Desktop,环境页会显示
    docker 的原始报错;装上 / 启动 Colima 后执行 docker context use colima(或直接 colima start,
    它会创建 colima context),再点「重新检测」即可。
  • 单测 299 → 297(回滚掉 endpoint 归属引擎 / OrbStack 动作的两个用例);pnpm check 全绿。
  • 文档同步:env / client / architecture / roadmap / README / AGENTS / 本文件;client 半身未改
    (lib/client.js 无需重建)。
  • 需要重启 dwdev GUI 才能生效。

完整版本历史:docs/changelog.md

v0.25.2

Choose a tag to compare

@github-actions github-actions released this 20 Oct 06:30
  • 问题:v0.25.1 的兜底写死了 docker --context colima。另一台机器的 docker endpoint 被 context
    指到 OrbStack(unix:///Users/…/.orbstack/run/docker.sock,socket 不存在),本机又没有 colima
    context,于是环境页显示
    「failed to connect …: no such file;改用 --context colima 仍失败:context "colima": context not found」,
    按钮却只有「启动容器引擎(colima start)」——对这台机器全是无效动作。
  • 探测泛化:新增 docker context ls --format '{{json .}}' 读取 context 列表 / endpoint / 当前值;
    docker info 直连失败时逐个 docker --context <name> info 试(不再写死 colima),谁通了本轮
    后续 docker 命令(inspect / compose up / restart)都带它。macOS 另增引擎探测:colima status、
    /Applications/OrbStack.app 或 ~/.orbstack、/Applications/Docker.app。
  • 按引擎给动作:lib/model/env.js 新增 engineOfEndpoint(/.colima/ → Colima、/.orbstack/ →
    OrbStack、/.docker/run/docker.sock → Docker Desktop)。失败说明改成「容器引擎未运行:docker
    当前指向 OrbStack,endpoint 不存在:…」;装了对应引擎 → 新动作 start-orbstack /
    start-docker-desktop(open -a …,执行后最多等 25 秒 daemon);没装 → install-orbstack
    (brew install --cask orbstack,需确认);识别不出才退回 Colima 三件套。证据里列出
    --context <name> 的失败原因与已知 context 列表。
  • 动作目录:新增 start-orbstack / start-docker-desktop / install-orbstack,进
    ENV_FIX_ORDER 与 fixPlan.needsConfirm(安装类)。
  • 单测 297 → 299(endpoint 归属引擎 / 指向 OrbStack 的机器给「安装 OrbStack」/ 新 argv);pnpm check 全绿。
  • 文档同步:env / client / architecture / roadmap / README / AGENTS / 本文件;client 半身未改
    (lib/client.js 无需重建)。
  • 需要重启 dwdev GUI 才能生效。

完整版本历史:docs/changelog.md

v0.25.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 06:15
  • 问题:环境页的探测失败只显示「退出码 1」,docker 写在 stderr 的真实原因(例如
    failed to connect to the docker API at unix:///var/run/docker.sock)全丢了;同时
    colima start 退出码 0(already running, ignoring)但 Docker daemon 仍连不上时,
    一键修复会反复重试同一个动作、最后停住,步骤一直「未通过」。
  • 探测可读:lib/controller/env.js 新增 probeMessage(stderr 末行优先);docker / colima
    探测失败时把原文写进步骤说明与证据(截断 300 字),不再只给退出码。
  • docker endpoint 兜底:docker info 直连失败时,在 macOS 上自动用
    docker --context colima 再试;成功则本轮所有 docker 命令(inspect / compose up / restart)
    都带该 context,证据里注明「直连失败:…;已自动改用 --context colima」。
    覆盖插件进程环境里 DOCKER_HOST / docker context 配错的情况。
  • 区分「启动」与「重启」引擎:新增探测 colima status;VM 没起 → start-daemon,
    VM 在跑但 daemon 连不上 → 新动作 restart-daemon(colima restart,仅 macOS,需确认)。
  • 不推进就跳过:一键修复把「执行后步骤仍未推进」或「动作失败」的动作标记为没能自动完成,
    记录该步说明后继续执行后面独立的步骤(如生成 compose),收尾日志逐条列出没完成的动作与原因。
  • 单测 294 → 297(引擎启停区分与可读错误 / context 兜底 / 动作不推进跳过);pnpm check 全绿。
  • 文档同步:env / client / architecture / roadmap / README / AGENTS / 本文件;lib/client.js 已重建。
  • 需要重启 dwdev GUI 才能生效。

完整版本历史:docs/changelog.md

v0.25.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 05:52
  • 问题:v0.23.0 的 fix-all 在点按钮那一刻算一次序列,只收集「未通过步骤」自己列出的动作。
    引擎没起时 NapCat 容器步骤是 skip(不贡献动作),写完 compose 也不会重新求值 → compose-up
    永远进不了序列,新机器点一次「一键修复」只写了个 compose;另一处 restart-napcat 被写进顺序表
    却没有任何步骤会产出它(死代码)。两个原因叠加,用户看到的现象就是「跳过 napcat」。
  • 逐轮推进:fix-all 改成「探测 → 执行计划里的第一个动作 → 再探测」,直到计划为空 / 需要确认 /
    动作失败 / 同一动作连续两次没有推进;skip 步骤在前置补齐后自动变成可修复,装引擎后出现
    compose-up,容器起来后才轮到 OneBot / 回填。顺序表移除死条目 restart-napcat
    (写 OneBot 时本身会重启 NapCat)。
  • 安装 / 启动引擎进计划:install-docker / start-daemon 也由一键修复执行,但需要页面确认:
    status.fixPlan = { sequence, titles, needsConfirm, next } 下发计划,页面渲染「将依次执行:… /
    下一步:…」并用 window.confirm 确认;host 侧同样强制校验 confirm:true(覆盖已有 compose 同理)。
  • token 闭环:写 OneBot 配置不再要求插件 accessToken 非空——按「插件 token → OneBot 现有
    token → 自动生成 32 位 hex」取值,生成后由 backfill-config 回填,新机器扫码后能一路走完。
  • 可读性:跳过 / 阻塞步骤的说明写清「先解决哪一步」;一键修复收尾把下一步写进动作日志
    (例如「可自动完成的步骤已跑完;下一步(QQ 登录):…」),全部通过记「环境已就绪」。
  • client:「环境」页新增修复计划提示行与一次性确认;「安全边界」补一条逐步补全说明。
  • 单测 292 → 294(test/env.test.js 11 个:修复序列逐步展开 / 一键修复确认后连做四步 /
    token 双空生成);pnpm check 全绿。
  • 文档同步:env / client / architecture / roadmap / README / AGENTS / 本文件;lib/client.js 已重建。
  • 需要重启 dwdev GUI 才能看到新的「环境」页提示与逐步修复行为。

完整版本历史:docs/changelog.md

v0.24.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 05:26
  • 「行为」页新增「OpenRouter API key」密码框:保存后立即热切换 jev 分类器,不用重启 GUI;
    留空表示不修改,host 永不回显 key(status.config.gate 只给 jevApiKeyConfigured /
    jevApiKeySource / jevApiKeyEnv)。
  • 解析优先级:gate.jevApiKey(设置页保存)> 环境变量 gate.jevApiKeyEnv(默认
    OPENROUTER_API_KEY);两者都没有时保持 fail closed(普通消息不接话),只打告警。
  • host:model/gate.js 新增 resolveJevApiKey;组合根把分类器换成稳定代理对象,
    key / 阈值变化只换内部实现、不重建 relay;settings.json 的 gate 子项按子项合并,
    只改阈值不会冲掉已保存的 key。
  • 单测 291 → 292(key 校验 / 优先级、mask 不回显、保存后分类器热启用、清空即停用);pnpm check 全绿。
  • 文档同步:README / gate / config / client / architecture / AGENTS;lib/client.js 已重建。

完整版本历史:docs/changelog.md