这一版不大,但很实在——把一个长期含糊的点做明确了:Web 管理台上,你看到的每一项技能、每一个工具,到底是平台自带、还是你自己装的,现在一眼可辨。顺手把主库写路径也收了口。

本文要点

  • 全站统一的来源徽标:靛蓝「内置」/ 琥珀「安装」(含暗色主题),技能列表、工具链路、意图映射、决策流、路由追踪、模拟测试全部接入
  • 后端单一真源:Skill.origin 按 SKILL.md 所在目录判定,并由 /api/skills 与 /api/tools-chain 透出
  • 主库写路径全量收口到进程内写闸门,补齐 WAL / SSRF 过滤 / 配置漂移检测等边缘缺陷
  • 依赖随 dependabot 同步 6 项(pydantic / fastapi / tokenizers / platformdirs / pypdfium2 / ruff)

Web 端:技能与工具一眼可分

此前在技能列表、工具链路、意图映射、决策流、路由追踪、模拟测试等界面,无法判断某项是「平台手搓的内置技能」还是「用户安装的 skill」——运维和使用者都难以一眼判断来源与可改性。这不只是美观问题:装了个自己的技能、却分不清哪个是平台自带的,排查和升级时很容易动错对象。

现在的做法是后端定真源、前端统一视觉语言:

一处判定、处处一致。加新界面时只要调同一个 helper,就不会再出现「这个页面忘了标来源」的漂移。

主库写路径收口与边缘加固

主库的写入此前存在绕过统一闸门的直连路径(conn.commit()),长周期运行下容易和分库写入抢同一把锁,埋下「database is locked」的隐患。v0.6.3 把主库写操作全量收口到进程内统一写闸门(write_main_with_retry + 全局锁),对称于分库写入,进程内统一串行。

顺带补齐一批边缘可靠性与安全缺陷:WAL 模式、SSRF 过滤、配置漂移检测——都是「平时跑得好好的、特定条件下才发作」的隐藏坑,现在一并堵上。

依赖更新

随 dependabot 同步 6 项依赖前进:pydantic 2.13.5→2.14.0、platformdirs 4.12.2→4.12.4、tokenizers 0.23.2→0.23.3、fastapi 0.142.2→0.143.0、pypdfium2 5.13.0→5.14.0、ruff 0.16.10→0.17.0。其中 dependabot 的 bump 只改了 requirements.txt / pyproject.toml 未重生成锁文件,已按 scripts/lock_deps.sh 重新生成两份锁文件,依赖一致性门禁恢复 0 告警。

门禁

升级注意

无破坏性变更、无新增配置、无数据迁移。纯前端视觉 + 内部写路径加固 + 依赖前进。若浏览器缓存了旧 bundle,升级后建议强制刷新一次。

延伸阅读