Skip to content

feat(models): 支持服务端发布模型配置与客户端来源追踪 - #4222

Closed
xd-bobo wants to merge 4 commits into
mainfrom
feat/model-catalog-db
Closed

xd-bobo wants to merge 4 commits into
mainfrom
feat/model-catalog-db

Conversation

@xd-bobo

@xd-bobo xd-bobo commented Sep 10, 2026 •

Copy link
Copy Markdown
Collaborator

这次改了什么

摘要

让输入框、模型设置和添加供应商消费服务端发布的公共模型配置。后台更新默认工作窗口、推理强度、Fast 或已审阅文案后,客户端刷新即可使用;已经保存的个人选择继续优先。

配套服务端 Draft PR:https://github.com/xindong/cindy-server/pull/617。本 PR 保持 Draft:已合入本次获取的最新 main 并完成本地回归,真实环境联调仍待完成。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化(N/A:非独立目标)
  • docs / test / chore 文档、测试或工程维护
  • 其他:N/A

范围

  • 关联 Issue / 需求:公共模型配置数据库发布、外部供应商模板共用;无关联 Issue。
  • 本 PR 包含:Registry V5 产品默认和五语文案;模板显式引用共用型号;字段来源与约束说明;活跃 Desktop 独立 5 分钟目录刷新;配置装配回执;远程 / Mobile 恢复默认等待主机确认;V1–V5 契约样例和发布目录离线导出工具。
  • 明确不包含:Skill、插件基座、Gateway 实扣或账号权限调整、新引擎协议实现、生产配置切换。
  • 用户可见变化:模型名称和简介可在线更新、可按发布名称搜索;高级设置可查配置来源;恢复默认删除对应个人覆盖。默认显示只用于首次初始化和明确恢复默认的路线,不扩展或重置老用户清单。
  • 是否存在 breaking change:无预期破坏性协议变更。新字段可选;旧主机没有 resetApplied 确认时不虚报恢复成功;Pi 原生模型与能力保持独立。

UI 变化

  • Desktop:输入框列表、模型设置列表和详情消费发布文案,详情增加可展开的配置来源;事实和编辑控件仍直接可见。
  • Mobile:模型列表及配置面板消费文案和来源,恢复默认仍等待主机确认。
  • 引用的设计规范:docs/design-rules/DESIGN.md §2 Color Palette & Roles 使用语义色及 Light/Dark token;§3 Typography Rules 使用现有字号;§4 Inputs & Forms / Dialog & Modal 复用现有控件;§5 Layout Principles 保持现有布局与点击目标;docs/design-rules/design-governance.md §13 的形状与点击目标约束。已更新生成的设计清单。
  • 未附 Desktop / Mobile 原生实机截图:当前只完成组件、状态和类型验证;两种模式的原生目检仍待联调,不能以服务端管理页截图替代。

怎么验证的

自动验证

已合入本次获取的最新 origin/main(4f03ea9a7);本地验证的 head 为 f12fc2718,包含功能提交和带 DCO 签名的合并提交。

pnpm test:unit:related
最新一轮因新 main 修改根测试入口自动退回全量 unit;所有要求的 workspace 通过。
PASS:test:runner 和全部要求执行的 workspace(含 Desktop、Mobile、maker-core、model-providers 及各协议适配包)

pnpm --filter desktop run --if-present typecheck
pnpm --filter mobile run --if-present typecheck
PASS

pnpm --filter @cindy/maker-core run --if-present typecheck
pnpm --filter @cindy/maker-shared run --if-present typecheck
pnpm --filter @cindy/model-providers run --if-present typecheck
无该脚本的 package 按 --if-present 跳过;另执行 model-providers build(tsc --noEmit)通过

pnpm --filter @cindy/model-providers build
pnpm check:i18n-glossary
pnpm check:dco
pnpm check:design-inventory
pnpm check:design-colors --worktree --base-ref origin/main
PASS;本分支真实提交及合并提交均有匹配的 Signed-off-by

node scripts/check-model-catalog-contract.mjs <server-worktree>
PASS:13 个共用契约文件逐字节一致;两仓独立运行合法 / 非法样例
  • 先合入 b8112ae5f、解决 4 个冲突文件;验证期间 main 新增 ci(design-system): DS-7 启用成熟范围的设计检查 #4215,继续合入 4f03ea9a7,按新版生成器重建 49 项设计清单。适配 main 的多账号供应商:公共默认值按品牌读取,凭证、模型快照与个人偏好按连接 ID 隔离;个人窗口和推理设置跨订阅桥保留。
  • 合并回归共 105 项通过;新增覆盖 OpenAI / Claude / Grok 多账号读取 V5 默认、连续发布保留账号显式设置与字段来源,以及退役模型和桥接 Fast 约束。
  • 一轮 Desktop 全量测试曾在 Node 工作线程退出的 V8 清理阶段发生 SIGSEGV,未计作通过;保留原有测试范围及并发设置重跑完整门禁通过。
  • 修正既有 Pi 回执压力测试的夹具寿命:子进程原默认 10 秒,小于此用例允许的 90 秒回执等待,负载下提前超时导致回执数不足。仅让该夹具沿用用例既有的 120 秒总时限;512 条上限、去重及防重放断言、90 秒等待和生产逻辑均保持原样。

手工验证

  • 在专用本机 PostgreSQL 16 与配套服务端运行跨仓验收:真实数据库发布 → 本地 HTTP → 独立客户端进程读取 → V1–V5 / 304 → 个人窗口覆盖 → 离线导出和读取 → 文案更新 → 回滚为新版本,通过。
  • 五语迁移工具从两仓已审阅配置生成初始数据,保留独立 Pi 数据和产品默认。未连接生产数据库。

未执行的验证

  • 未验证真实区域发布、实际旧版本应用二进制、Claude / Codex / Pi 模型请求及远程端到端。
  • 未启动本 worktree 的 Desktop / Mobile 原生应用,没有 Metro 归属或 __DEV__ build label 证据;原生 Light/Dark 目检待执行。

风险

风险分类

  • 无已知风险
  • SQLite / migration(N/A:客户端未修改 SQLite schema / 历史 migration)
  • system prompt(N/A)
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(N/A:未改插件基座)
  • 原生层 / fingerprint / OTA(N/A:未改原生配置或依赖)
  • 跨平台差异
  • 其他:真实区域、原生应用和引擎调用联调待完成,保持 Draft

影响与回滚

  • 影响范围:公共目录刷新、模板默认继承、输入框与设置展示、个人默认恢复和配置回执。公共资料不授予账号权限;凭证不进入配置或回执。
  • 回滚 / 降级方式:目录加载失败保留合法缓存与随包兜底;服务端回滚生成新版本,不能倒退时间戳。旧服务缺少回执不影响模型选择。客户端版本回滚不删除个人覆盖。
  • 配置回执仅表示客户端报告完成模型装配,不表示已有任务或引擎已经执行新参数。
  • 存量插件影响:无。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s)
  • UI 改动已在「UI 变化」注明引用的设计规范章节
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

…errides

Signed-off-by: xd-bobo <caojianbo@xd.com>
Signed-off-by: xd-bobo <caojianbo@xd.com>
@xd-bobo xd-bobo closed this Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant