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

63 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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。