Skip to content

v0.5.5

Choose a tag to compare

@github-actions github-actions released this 05 Sep 10:47
· 247 commits to main since this release

KCoder v0.5.5

发布日期:2026-09-05 · 上游基线:deepseek-harness 0.1.3-alpha.1 (d347e703)

新特性

  • 产品数据家迁至 ~/.kcoder,老用户设置页一键迁移(本版主题):KCoder 的用户数据目录(会话、技能、插件、设置等全部数据)从上游默认的 ~/.dsh 换到自有 ~/.kcoder。上游 home 是 harness 家族工具链(终端 dsh CLI、npx dsh web、同源其他产品)的共享库——产品与浮动 CLI 共库意味着引擎代差互相污染(session format v0→v2 这类读写协议升级随时可能被旧 CLI 踩回),也谈不上产品私有数据边界。换家经上游原生 DSH_HOME 环境变量实现:应用启动时决策并向全部子进程继承,插件安装必然落新家,零 fork 改动:
    • 老用户无缝升级:升级后引擎继续运行在 ~/.dsh,一切照旧;设置页出现「数据迁移」入口,不迁移不影响任何使用,可择机操作;
    • 一键迁移、零重建:入口带说明卡片与确认模态框,确认后执行整库 rename(~/.dsh → ~/.kcoder,同盘原子操作瞬时完成)——会话与任务记录、投影缓存、已装插件及其依赖(node_modules、Python venv 随迁,无需重新下载或重建)、技能、MCP 配置、登录凭据、模型与多媒体设置全部原样保留;迁移中引擎短暂重启,完成后旧目录自动移除并落迁移标记;失败时引擎在旧目录原地恢复,状态不变可重试;
    • 决策规则:用户显式设置 DSH_HOME 的绝对尊重(自管 home,入口不出现);已迁移过或全新安装直接使用 ~/.kcoder 并落决策锁;「未决策 + 旧目录在」恒优先回旧家——残存的空 ~/.kcoder(如早前手工试验产物)不会把老用户劫持到空家,迁移执行时自动备份为 ~/.kcoder.stray-<时间戳>,不做删除;
    • 入口注入为保底式:状态推送链任何一环失手时入口仍出现(「检测中」占位 + 点击补发检测,也可直接发起迁移,执行时以主进程实际判定为准),不依赖推送成功与否;迁移经确认模态框二次确认后才执行。
    • 顺带清理误写入 home 的 qilin-accounts 目录(其他项目撞库产物,非 KCoder 数据)。

修复

  • 设置页不出现「数据迁移」菜单:应用启动把 home 决策结果写回进程环境变量 DSH_HOME(供子进程继承)后,迁移资格判定把这份应用自写的环境变量误读为「用户显式自管 home」,恒判「不可迁移」——设置页入口被主动拆除永不出现,「开始迁移」也会被误拒(提示「没有可迁移的旧数据」)。现外部环境变量只在改写前捕获一次,后续判定一律用捕获值、绝不回读自写值;用户真自管(显式设置过 DSH_HOME)的判定行为不变。
  • 代码预览 JSX 风格转义误渲染:右侧代码预览把源码中的 JSX 转义写法 {'{'} / {'}'} 当字面文本显示,已改为渲染真实 { / } 字符。

内部维护

  • 上游基线升级 0.1.2-rc.1 → 0.1.3-alpha.1(上游 tag dsh-v0.1.3-alpha.1;集成分支重建为 kcoder/0.1.3-alpha.1 = 基线 + 五修复分支 merge + 品牌化 / imageRequestPricing / 测试适配 cherry-pick):
    • 投影缓存读兼容被上游原生覆盖,projcache-migrate 退役:上游 projcache 域版本 5→7、原生兼容读取 v3–v6(缺字段不做 shortcut、坏档备份隔离、冷读重建回写 v7,启动期零迁移设计)——v0.5.3 引入的就地迁移模块升级路径已被引擎全量兜底(上游笔记将我们的迁移产物描述为 poisoned state 并显式处理),就此删除;历史任务标题等投影由引擎直接保障;
    • 会话存储格式 v0→v2:引擎内置迁移链读旧会话自动升级(KCoder 不直解会话文件,用户无感);session 持久化 handle-seam 重构 + 写租约(默认 JSONL 后端未变,未启用 SQLite,无影响);
    • composer 图片→通用文件附件重构(引擎内部化改造,插件面 slot / DOM 锚点不变,dsh-file-attach 兼容);消息编辑功能上游加即撤(净零);
    • 328 提交 / 2051 文件 diff 逐项核对,KCoder 全部注入锚点存活;完整性断言:集成分支与上游差异文件列表完全一致(2051=2051,comm 零差);定向回归 vitest llm-pi-ai + projection-cache + ui-chat 645/645。
  • README 新增封面图:landing 页真实应用形态(Playwright 注入桌面桥后实截),深浅两版选用深色版,置于标题下方首屏。
  • 内置运行时原生模块 ABI 配对修复(v0.5.5 mac 发布现场):上游基线 alpha.1 起引擎带入首个 ABI 锁定原生依赖 fs-ext(会话写租约的 flock),物化链按构建机系统 Node(ABI 127)编译,而打包应用在 macOS 真机以 Electron 内置 Node(ABI 140)运行引擎,dlopen 即崩——被 CI 的「Electron node 形态冒烟」在发布前拦下,未流出坏包。修复后:物化链把全部 ABI 锁定原生模块统一按桌面端 Electron 版本重编并实载验证;内置运行时的解释器固定为 Electron 内置 Node(不再依赖用户系统 Node 的版本运气,三平台行为一致);打包冒烟链整体切换到 Electron node 形态(本地与 CI 同口径)。
  • 发布链三平台补强(同版二次发布现场):Windows 物化链 node-gyp 供给改为钉版 npm 装入 scratch 后以 node 直调(不再赌各 runner 的 PATH);macOS 打包签名复用物化链已备好的钥匙串(macos 镜像 25.6.0 起 electron-builder 自建钥匙串的 set-key-partition-list 解锁失败,而物化链同款命令同镜像可用)。

升级注意

  • 老用户(存在 ~/.dsh):升级后一切照旧,无需手动操作;设置页出现「数据迁移」入口,可择机一键迁移。迁移前请确认没有其他程序(如终端里的 dsh 命令)正在使用 ~/.dsh;迁移中引擎短暂重启,进行中的回答会中断。
  • 曾显式设置 DSH_HOME 的用户:自管 home 继续被绝对尊重,迁移入口不出现,数据位置不变。
  • 全新安装:直接使用 ~/.kcoder,无感知。
  • 从 v0.5.3/v0.5.4 升级:v0.5.3 完成的投影缓存迁移产物被上游引擎按兼容读取全量兜底,无需任何回滚或手动处理。