交接单按归属约定(正文落文档库、工作区只放指针)归档至 归档/交接单-20260924-归档/,含逐件判定 README: - 16 件已被文档库正式版取代(T09–T21 + 覆盖网络-24/25/26) - 4 件主题已被覆盖网络线入口汇总 - 7 件历史接续包/规划件 CODEBUDDY §9:收口清本棒 tmp、tmp 保留期 7 天、禁「待清理」中间态、 工作区入库只放文档与文件、不保留脚本副本、>60 KB 单文件须逐个判。
4.7 KiB
4.7 KiB
接续包 · 共享模型按用户授权 + 品牌改名 + 跨机落地修复(2026-09-19)
本包是唯一细节来源。接续会话开工第一步:
state.py→ 重算本文件 md5 → 与 automation prompt 里的值比对, 不符即停并报告「口径已更新,需重新接续」。 ⚠️ 本棒已全部完成并入库,无在途任务;下一棒默认动作 = 核实完成状态后报告结束(⛔ 勿自行开工)。
1. 目标(全部达成)
| # | 用户需求(原话) | 状态 |
|---|---|---|
| ① | 「admin设置的共享模型,需要admin在用户列表中开启(新增选项,默认关闭),用户才能在会话中使用(以及在设置的模型设置页面展示)」 | ✅ 上线并两腿实测 |
| ② | 「把页面上的能力枢纽 改为能力网络」 | ✅ 上线并实测 |
| ③ | 「处理完毕后提交到仓库」 | ✅ 已提交并双推 |
2. 已完成(可核对的落点)
| 项 | 值 |
|---|---|
| commit | 9c2e797(主提交 c2b7c5e,30 文件;补提交 9c2e797,manifest) |
| 双推 | 原仓 work.alotbuy.com:maogeigei/dsh_shenxian.git + CNB cnb.cool/maogeigei/dsh-shenxian.git;三方裸 sha 全等 |
| 档案 | dsh-server-docs/04-调整方案/138-平台共享模型-管理员逐用户授权.md、139-品牌中文名改为能力网络.md;INDEX.md 已登记;137 顶部加"后续"指针(不改历史) |
| 迁移 | DB v11 users.shared_model_granted(DEFAULT 0)已应用 |
| 部署 | 47 /opt/dshs/lib 51 个产物、106 /opt/dshs-cluster/lib 12 个(对账 0 不一致);插件 business-plugins 0.3.24 已铺 admin+guest |
| 回滚点 | /opt/dsh/backups/seq138b-20260919-125345/{opt/dshs/lib,opt/dshs-cluster/lib}(lib/ 是 gitignore ⇒ 只能这样物化;另 seq138-web-20260919-125345/ = 4 个前端文件) |
| 零回归 | npm test 226 / 225 pass / 0 fail / 1 skip;verify-static、verify-inject、verify-platform-admin-section、verify-models-render 全绿 |
| 镜像 | /opt/dsh/docs 的 INDEX / 138 / 139 / 137 / docs-manifest 已同步,md5 一致 |
3. 在途 / 未完成
- 无代码在途。工作区仅剩三个历史临时目录(
_tmp_seq24/、_tmp_seq40/、_中间产物_待清理/,本次未动)。 - 全局执行锁:收口时已释放(若
state.py显示被占,是本棒之后的会话,⛔ 与本棒无关)。
4. 🔴 关键决定(后续别推翻)
- 门禁与用户偏好分两列:
shared_model_granted(admin,默认 0)∧shared_model_enabled(用户,默认 1) —— 生效 = 两者都为真。⛔ 别合并成一列(用户就能给自己授权)。 - 存量用户默认全部"未授权"(v11 的 DEFAULT 0 回填)。guest 已被显式开启(恢复其原有可用性); 若你要改,在 admin 用户列表点一下即可。
- 平台侧写用户 home 必须走
UserFs(readHomeFile/writeHomeFile,文件名白名单settings.yaml/.credentials.yaml)—— ⛔ 别再用join(home_dir, …)+ 本机 fs: 用户卷在 worker 上时那是静默空操作(读回空串、不报错)。 - 门禁类判据一律失败关闭;但"一次性交接认领"用的
sharedDeepseekKey()刻意不判门禁 (判在resolveApiKey的调用点)—— 否则被撤销授权的用户认不出自己那行、删不掉。 pg.ts有自己的一份USER_COLS(与repo.ts两份)⇒ 加列必须两处都改。
5. 下一步(都属"需要你"或"可选增量",⛔ 无必须开工项)
- UI 目视(只能你做):
https://ai1net.com/admin.html用户列表的新「共享模型」列; 用户实例「设置 → 模型设置」在未授权时那一块不出现。 - 可选增量:
shared_model_enabled目前的用户侧开关未加门禁(有意,见档案 138 §七-4); 若要"授权后用户不得自关",需另立需求。 - 在册旧账(与本次无关):D8 云安全组(唯一在册红,待你在云控制台落地)、档案 136 控制面并集(已立项未落地)。
6. 验证回放(想自己复核时照跑)
# 红/绿两腿(会停启 guest 实例,⛔ 别在生产高峰跑)
sh <本工作区>/_tmp_seq138/seq138-leg.sh false # 期望:106 上 guest 的 .credentials.yaml refs 变空
sh <本工作区>/_tmp_seq138/seq138-leg.sh true # 期望:DEEPSEEK_API_KEY 回来
# 语言偏好跨机
# POST /api/me/locale {locale:'en'} ⇒ 106 的 home/settings.yaml 出现 locale.preference
⚠️ 验证脚本用 mksess.cjs 造临时会话(TTL 10 分钟),必须一次跑完并清理
(DELETE FROM sessions WHERE user_agent='poc-curl2')。