Files
dsh_ai1net_server/.workbuddy/memory/MEMORY-设计口径-20261001.md
T
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

6.6 KiB
Raw Blame History

DSH 平台 — 记忆 · 设计口径(详)

2026-10-01 从 MEMORY.md 拆出:这四条是长期设计口径(不常变),原文逐字搬到这里; MEMORY.md 只留一行指针,以腾出「会变的状态」的空间。 ⚠️ 冲突时:本文件的这些条目仍是权威(⛔ 别以为搬走=作废)。


1. 承载两分(09-26 立 · 治「服务节点」歧义)

「服务节点」=两件事(区 Manager 权威 + Worker 承载),⛔ 别合成一个词。公共承载(服务别人:须常开/可达/有特权/不占主用机/受平台管辖)⇒ ⛔ 只有服务器能当;主权承载(只服务自己的租户)⇒ 桌面机 ✅;桌面当公共承载=把信任根从平台搬进私人设备。⚠️ P6 修正=推荐「B 与 A 并存」(47 维持自研不动+106 试点 K8S)。🔴 连"所有节点和设备"须先 F1.5(G1 未修|G6 无机制⇒规模越大越撤不回去)。📂 交付物/AI1NET-三类节点结构调整可行性-20260926.md

2. 形态元假设(09-21 立 · 最易犯)

⛔ 默认「一个控制面」=错 ⇒ 正确=控制面联邦(各区 Manager 各带 Worker/节点/设备)。全文 ⇒ 定稿 02-架构设计/覆盖网络-顶层架构全貌.md(唯一权威) ⇒ ⛔ 别凭本行做设计。🔴 必背三句:① 两张图分离=分水岭在根是否处于数据路径 ② 跟用户走/全局唯一/区域内唯一 三分 ③ 根密钥只管授权撤回签名者。🔴 多根=any-of-N(任一沦陷=全网沦陷;Manager 可升格 ⇒ N 台=N 根)。🔴 F1.5(G1 序号+G6 撤根)=一切前置。

3. 插件数据落点(硬标准)

🔴 一插件一库 dshs_pl_<pluginId> ⇒ ⛔ 不得拿实例本地 SQLite/文件当权威(只可缓存);内归属列 user_id/room_id 强制。⛔ homedir() 必错(实例 HOME=ws)。🔴 47 代码根=/opt/dshs、106=/opt/dshs-cluster(106 无 /opt/dshs)|/opt/dsh=平台数据根,三台同名|取 DSHS_DB_URL 只从 drop-in cluster.conf grep。🔴 装配协议=link: ⇒ 待落地 4 处;软链目标须两机同路径。🔴 列级 maxBytes 平台无强制点 ⇒ 唯一把关人=插件侧 COLUMN_MAX_BYTES;⚠️ 改声明后必回读 yaml 实际值。🔴 插件跑在「用户实例内」· IM 内核在「平台进程」⇒ 跨进程:用户自配模型只有实例内可用 ⇒ 插件必须在实例内。📂 详见 2026-09-23.md

4. 其他线 / 基线 / 品牌

其他线 ⇒ BRIEF.md。🔴 D4(09-18)跨云=目标形态,⛔ 作废「须同云」。🔑 基线/档案号 ⛔ 不写死 ⇒ 现查 state.py+INDEX.md;分叉走 git ls-remote 裸 sha + merge-base --is-ancestor。🔴 品牌=「能力网络」/CapabilityNet|favicon ⇒ PLAYBOOK-品牌与标识资产.md。🔴 共享模型=管理员逐用户授权(users.shared_model_granted v11 默认 0)|🔴 用户卷在 worker 上时,写 home 必须走 UserFs(直写 fs = 静默空操作)⇒ ⛔ 不得 cp/mv/直写 fs 动 home。🔴 数据库 ⇒ 数据库/DB-00…03。

5. 手机接入类功能 ⛔ 不得影响 WorkBuddy 本身的运行(2026-09-29 用户明令)

原话:「做这些功能都不能影响 workbuddy 本身的运行,要禁止这种锁死,技术实现上要严格遵循」⇒ 总则=单向依赖,fail-safe 方向=关掉自己(崩/被杀/超时 ⇒ 只许"功能不可用",⛔ 不许"WorkBuddy 异常")。七条技术条款 + 禁止清单 + V7 验收 ⇒ 定稿 交付物/手机App经覆盖网络操作WorkBuddy-架构定稿v3-20260929.md §0.5。⚠️ 已犯过的反例:把长跑服务放进会话后台任务 ⇒ 每轮输出唤醒宿主 ⇒ 永不空闲=用户看到"卡死"(09-29 我违反 6 次);⛔ 也不得对宿主正在跑的会话做 load/接管、⛔ 不抢 writer_occupied、⛔ 不改其配置/进程、⛔ 无超时等待上游。

6. 配置外置线(140)

单一秘密副本=config/platform.env(不入库·600);优先级=系统 env > 文件 > 代码默认。🔴 drop-in 必留 DSH_PLATFORM_DIR=/opt/dsh(删 ⇒ 目录静默搬家)|改后必须重生成服务器 platform.env|涉密复扫须 0。

7. 覆盖网络线

入口=工作区根 接续入口_覆盖网络线_20260916.md(§0 最新行+§2 首行=唯一依据);⛔ 勿重做已完成棒。🔴 判据五条+坑清单全在该入口+参数表_覆盖网络_20260917.md ⇒ ⛔ 别凭记忆做。🔴 域名唯一=ai1net.com;relay 候选 3 条(⛔ 别加伪多样性)|改候选链须「删 directory.json+二次重启控制面」才生效。🔴🔴 中继走 443 ⇒ 功能全可用、⛔ 不用开任何端口(relay-direct=443 兜底中继入口,⛔ 不是 P2P);UDP 21100-21115 只服务 P2P ⇒ 可选优化。

8. 会话类别与看板(10-01 用户口径 · 从 MEMORY.md 外置)

四类会话(同工作区,靠标题两级前缀区分,⛔ 不按 cwd):

类别 前缀形态 职责
① 主会话 无前缀 只管目标/方向(不干具体活)
② 协作会话 无前缀(role==='协作会话') 每类别一条,干活
③ 唤醒会话 [唤醒]-<类别>-… 推(没人推=断)
④ 队列上报的跟进会话 [跟进]-<类别>-… 收(没人收=断)
  • 🔴 「接续会话」=形态,⛔ 非类别 —— 撞阈值时才产生,继承被接续那条的角色。
  • 🔴🔴 开工第 0 步 = 建齐三类(唤醒/协作/跟进,每类别一条);少一类即断: 没人推/没人干/没人收。⛔ 别等"需要了再建"。
  • ④ 跟进会话默认「长期活着」(10-02 口径);投递按类别投跟进会话。

看板读数(⛔ 别读错源):

  • 主会话左边那一列 = 唤醒会话(随需求确定时创建 ⇒ 靠位置区分;「还没建」=正常态, 圆角矩形+外圈虚线)。
  • 主会话下方那一排 = 只有协作会话(判据 role==='协作会话')。
  • 🔴 读数一律取 sessions 表(唤醒会话前缀识别),⛔ 不读 automations。
  • 🔴 判「都空闲」必排除它自己(SELF_SID + 前缀 两道判断)。
  • 🔴 自动化只能开新会话(⛔ 不能往里发消息)。

📂 完整规范与实现 ⇒ 技能 session-mechanism §2.3.0b~2.3.0e。