Files
dsh_shenxian/dsh-server-docs/INDEX.md
T
admin e6207aa691
build / build-and-scan (push) Waiting to run
chore(仓库对齐): 文档库结构治理 + IM/插件线落地
文档库:目录改为编号制(01-规范/02-架构设计/03-数据库/04-调整方案/
05-交接单/06-ops/07-scripts/08-skills/09-archive),顶层散文件归入 01-规范/;
INDEX.md 与 docs-manifest.json 重刷(档案 146 篇);旧目录名引用全量对齐。

IM 线:src/im/**(SDK / hub / store / presence / ws / gateway-token)、
src/web/routes/im.ts、src/db/plugin-data/**、src/supervisor/plugin-assembly.ts
及对应 test/**。

插件线:poc/{im-agent-bridge,im-connection-gateway,im-conversation-tabs,
business-plugins-im,carbon-mcp-probe}、src/web/routes/{sessions,overlay-device}.ts、
src/net/relay/{device-grant,instance-credential}.ts。

仓库卫生:清出 40 个历史误入库 / 已改名文件(34 个交接单归档 + 6 个旧结构,
本地均有副本);dsh-server-docs/.gitignore 补 tmp/;交接单不入库(政策)。
2026-09-24 07:25:16 +08:00

285 lines
44 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 平台文档导航(INDEX)
> **首读 `BRIEF.md`(现状卡)**:30 秒对齐现行事实;本文件只管"定位篇目 + 状态"。
> **双端模型**:本机 `D:\github\dsh_shenxian\dsh-server-docs\`(**工作树**,git 仓库 `dsh_shenxian_doc`)↔ 服务器 `/opt/dsh/docs`(**部署镜像**,root 600,**无 .git**,靠 scp)。
> **对账**:`bash 07-scripts/docs-sync-check.sh`(退出码 0 = 全绿)。
> **最后核对**:2026-09-12 — **篇数与规模不在此写死**:本库由多会话并行改动,绝对值数十分钟即失效(同日实测 83 → 85 → 87,3 次作废);**一律以 `python3 07-scripts/docs-manifest.py` 复跑结果为准**。代码 HEAD 看服务器:`git -C /opt/dshs log -1`(最后核对值 `ebe8075`)。域名 `ai1net.com`(旧域 `alotbuy.com` 自 2026-09-19 仅作 301 过渡装置)。
---
## 一、按场景快速定位
| 我要做什么 | 先读 |
|---|---|
| **访问入口(当前域名)** | 门户 `https://ai1net.com`;用户实例 `https://<用户名>.ai1net.com` | `04-22`(迁移+回滚) |
| **重建 / 交接部署** | **`DEPLOY-本部署.md`**(拓扑·目录·env·依赖·脚本族·构建/部署/回滚) | 档案 19 §C9 |
| 理解架构 / 多租户隔离 | `01-规范/01-规划与架构.md`(一~五、九、十三) | `09-archive/` 全文 |
| 日常运维(重启/备份/token/KEY/排障) | `01-规范/02-运维手册.md` | `01-规范/03-路线图与待办.md` |
| **做一次平台改造(完整流程)** | **`08-skills/dsh-change-workflow/SKILL.md`**:六阶段 + **红线 R1-R11** + 档案模板 + 并行调度协议 + **详情已拆到 `references/`(9 档)** |
| **开源导出 / 发新版本** | **`08-skills/dsh-opensource-release/SKILL.md`**:硬规则 R-O1–R-O14(源仓库只读 / 探针 0 命中 / 去插件 / 不带文档与 skill / **双轨授权:AGPL-3.0 原样 + 商业轨独立文件**)+ 脱敏映射表 + **迭代 SOP** + 验证七件套 · 多远端推送(GitHub + CNB)+ **详情已拆到 `references/`(5 档)**;工作根在本机 `E:\ProgramData\AI技能\dsh-ai1net-github\` |
| **排查业务插件故障(没 UI / 装不上 / 改了没生效)** | **`08-skills/dsh-plugin-diagnose/SKILL.md`**:三层归属 + 三把尺子(inject 差集 / glibc 直测 / 产物插探针)|
| **换电脑 / 改了工作区路径,规则会不会丢** | **`08-skills/dsh-env-bootstrap/SKILL.md`**:常驻规则快照 + `--check` 校验 / `--inject` 注入 / `--env-check` 环境自检(默认只报不改)|
| **跑跨会话长任务(自动接力)** | **`08-skills/dsh-auto-handoff-chain/SKILL.md`**:六件套 prompt 骨架 + 登记门禁 + 六条实测防护 + **排期两条铁律**(首个/唯一接续棒 = 收口 + 5~8 分钟 · 同一时刻只挂一个接续棒) + **§3.5 域锁四个「假绿」坑**(两侧域键须一致 · 非 ASCII 会话名须加 `cksum` · 二次抢锁须合并不重建 · `trap` 单槽位) + **§0.6 工作区归属五律**(含 🔴 `cwds` 只写反斜杠+大写盘符 ⇒ 否则同一工作区裂成两个同名分组) + **§0.7 活库改动铁律**(`workbuddy.db` 属 WAL 三件套,⛔ 禁文件级 `cp`/`mv`) + 复跑脚本 `07-scripts/chain_report.py` |
| **任何工作区开工的通用规矩(该不该问 / 怎么排版 / 归属 / 锁 / 接力 / 去 AI 味)** | **`08-skills/agent-operating-rules/SKILL.md`**:上抛唯一判据 + 排版十条 + **去 AI 味** + **工作区归属三律** + 一把锁 + 提交·批量边界 + 交付门禁 + 多棒接力(`references/` 4 篇细则)|
| **排查线上运行问题 / 事后溯源(跨机日志)** | `07-scripts/dshlog.mjs`(代码仓):`collect` 拉取归档 → `q` 查询 / `timeline` 时间线 / `watch` 巡检;用法与实测基线见 **`04-调整方案/129-日志采集与巡检-方案C实现.md`** |
| 看还有什么没做完 | `01-规范/03-路线图与待办.md` §二 | **`05-交接单/README.md` §一**(已规划待执行) |
| **改前端页面(强制基线)** | **`01-规范/06-工作台UI规范.md`** |
| **改实例 UI 分区(设置面板)** | **`01-规范/07-实例UI分区登记表.md`**(哪个包提供 / 源码在哪 / 能不能改)+ `01-规范/06-工作台UI规范.md` |
| **写一个业务插件(自研 / 第三方 / 交付前自检)** | **`01-规范/08-插件开发与对接规范.md`**:开工四问 + 包形态 + 数据面声明(唯一入口 `dsh.data.schema`;**零数据面⛔ 不要写空声明**)+ 文件落点 D4(⛔ 禁 `homedir()`)+ 投放链路 + **错误码表** + 提包前自测清单;数据面细节仍以 `03-数据库/DB-03` 为准 |
| **插件作者的 SDK / 扩展点契约(能力面)** | **`01-规范/09-IM插件SDK与扩展点契约.md`**:七点 / 三条保护 / 两档 / 数据面 / 示例 / 怎么验(原 `docs/` 单文件目录,2026-09-23 归并为根级编号件)|
| 红线与硬约束 | `README.md` §红线(含 **R7 禁批量全仓写入**、**R8 中断用户须先知会**)| `04-07` |
| **插件兼容性预检(导入/上传即判定)** | **`04-71`**(判据 + PoC + 三层防线)|**`05-交接单/T05`**(执行单)|`07-scripts/plugin-compat-check.mjs`(可在服务器直接跑) |
| **实例崩溃循环 / 插件不兼容** | `04-70`(anysearch 与 dsh-llm `assertNever` 不兼容;判据「重启后错误是否变化」)|`04-20`(自愈熔断)|`04-25`(崩溃循环前例)|`02 §C.4` |
| **锁机制(防并行冲突)** | **`04-73`(强制钩子)|`04-69`(三把锁建立)**|`05-交接单/README.md` §一·§三·§六|`07-scripts/{handoff-guard.sh,op-lock.sh,lock-guard-hook.py}` |
| **多会话并行 / 冲突治理** | **`04-69`**(两级文档锁 + 服务器侧操作锁 + commit 常态化)|`05-交接单/README.md`(占用锁 / 写者归属 / §六 服务器侧锁)|`07-scripts/handoff-guard.sh`、`07-scripts/op-lock.sh` |
| 插件管理面 | `04-16`(三层归属)| `04-31`(门户双 Tab)| `04-57`/`04-60`(设置面板分区) |
| **搜索 provider / 联网搜索** | `04-64`(接入 AnySearch)|`04-65`(启停与 web provider 联动)|`04-66`(P0 误报与 admin 显式信任) |
| **「能力管理」section UI** | `04-67`(按 UI 规范重做)|`04-36`/`04-38b`(分区铺开 / 术语统一)|`04-68`(启停属主污染根治)|**`04-100`(「我的技能」分组 · 09-15)**|**`04-101`(改名「能力管理」+ tab 分页 + 卡片三行 + DeepSeek 改名 · 09-15)** |
| 安全 / 暴露面 | `04-14`(出网护栏)|`04-39`(可见面收窄·封 loopback)|`04-41`(上传加固) |
| 技能共享层 / 管理面 | `04-10`(bundledSkillDir)|`04-11`(API+页面)|`04-40`(挂载修复) |
| 会话/登录跳转 · 断连恢复 | `04-13`(冷启动 404)|`04-24`(实例侧 401)|`04-49`(回收后反馈)|`04-51`(401 透明重放)|**`04-72`(回收/关闭后回到页面自动唤醒)** |
| 实例易用性 | `04-45`(老会话档位提示)|`04-56`(实例助手)|`04-59`(启动动画) |
| 实例资源 / 配额 | `04-58`(内存口径 + 配额 384M)|`04-38a`(边界:无磁盘配额) |
| VoxEMW | `04-12`(摘要)| `(2026-09-24 已清出项目:未采纳草案)` 两份全文 |
| 历史全量时间线 | `(2026-09-24 已清出项目:旧全量计划,结论已在 04-调整方案/)` |
---
## 二、全量清单
> **状态摘要**(**机器生成,勿手改**):档案 **123** 份(`04-*`),另含根级编号 5 条(01/02/03/06/07),另有非编号行 14 条(README / INDEX / 技能 / poc 等)—— ✅ 22 | 🔄 5 | 🔍 1 | 📋 23 | 🟡 1 | 未标记 76。复跑 `python3 07-scripts/docs-index-stats.py` 取数,`--write` 就地刷新本行。
> **分层与机读明细**(路径 / 日期 / 字符数 / 被引次数 / tier,可 `jq` 先筛后读):**`docs-manifest.json`**;复跑 `07-scripts/docs-manifest.py` 即刷新。
> 图例:✅已落地 | 🔄维护中 | 🧪PoC | 📝待开发 | 🔍核查完成 | 📋评估 | 🟡保留兜底 | 🗄归档|🔧修复|🔴|🚧|❓|PoC 实证完成(插件 v0|已上线|生效|已实施|已实施 + API 全链路验|已冻结|已落地 + 验证通过|审计已完成 → 加固项待用户|已上线,页面全部 200|已封板,实施中|核查完成 → 收敛项 H1-|✅ 已实施并在 admin/|🔄 批次 1 因改走 bun|方案 A + handoff|根因已定位并修复(nginx|修复已编译(CI ✅),待重|已实施并上线|已修复并上线(服务已重启|清单建立|✅ 已实施并端到端验证|✅ 已实施并 live 验证|✅ 已实施并视觉验证|🔍 核查完成,P0 待决策|✅ 已实施(commit 见|✅ 已实施(commit `|✅ 已修复(commit `|🔍 取证完成|🔍 核查完成|✅ 已实施(`99de8c5|✅ 已落地|✅ 已修复|已落地并实测验证|已落地并端到端验证|🔄 第一批已修复|✅ 已实施(两批):第一批|✅ 已实施并端到端验证(co|✅ 已实施并验证(服务器已生|admin 侧已实施|✅ 已部署并生效(服务器 `|✅ 已实现、已验证、已部署|✅ 已完成并部署|✅ 全部完成并验证|✅ 已完成(2026-09-|✅ 已止损|✅ 已落地并部署(2026-|✅ 已完成并部署(2026-|✅ 已实现并单点验证|✅ 已落地并实测验证(配置|📋 标准已立|✅ 代码改造 + 组件级验证|✅ 已落地并验证(服务器 `|✅ 已部署并验证(2026-|✅ 已修复并部署|📋 评估中|🚧 执行中(R0 已完成|🚧 代码完成、产物已出|✅ 已完成并上线验证|✅ 已上线并端到端验证(后端|✅ 已修复并验证(源仓 `c|🔄 进行中(L2 机制级已验
| 号 | 状态 | 一句话 |
|---|---|---|
| README | 🔄 | 文档库总说明、模块一览、红线、使用约定(**档案清单唯一来源**)|
| INDEX | 🔄 | 本文件:场景速查 + 状态总览 |
| 01 | ✅ | 背景/架构/目录布局/dsh 分层/归属矩阵/安全边界 |
| 02 | ✅ | 迁移、备份恢复、域名接入、uid 排障、命令速查(**正文为历史,现行以附录 C 为准**)|
| 03 | 🔄 | OQ 结论、已完成清单、进行中/待办、历史决策 |
| 04-01 | ✅ | 登录直达 URL 自动带 launch token |
| 04-02 | ✅ | 权限边界收紧 + DB 加固 |
| 04-03 | ✅ | API KEY 收归管理员统一管控 |
| 04-04 | ✅ | 注册/审核/删除用户闭环 |
| 04-05 | PoC 实证完成(插件 v0 | 插件化可行性 + PoC(**PoC-2 三项已复核**:①不做 ②已实现 ③作废) |
| 04-06 | 已上线 | 登录直达会话窗口 v1+v2 |
| 04-07 | 生效 | 升级红线(禁自动取最新版)与独立升级流程 |
| 04-08 | ✅ | last-wins 单活跃会话 + idle-reap 常驻上限 |
| 04-09 | 已落地 | 角色化 profile patch 裁剪 client 插件 |
| 04-10 | 已实施 | 共享只读技能目录(bundledSkillDir)env 注入 |
| 04-11 | 已实施 + API 全链路验 | 技能管理面 API + 页面(zip-only 两阶段替换) |
| 04-12 | 已冻结 | VoxEMW 全云 API 化调研 + M1 落地 |
| 04-13 | 已落地 + 验证通过 | 登录直达冷启动竞态 404 修复 |
| 04-14 | 审计已完成 → 加固项待用户 | 会话敏感信息暴露面审计 + nftables 出网护栏 |
| 04-15 | 已上线,页面全部 200 | 三页 401 守卫跳登录 + 核心插件开关收归 admin |
| 04-16 | 已封板,实施中 | 页面导航定稿 + 插件三层归属模型(folder_plugins 废弃) |
| 04-17 | 核查完成 → 收敛项 H1- | 工作区选择器暴露面核查(P1/P2 边界判定) |
| 04-18 | ✅ 已实施并在 admin/ | 目录选择器收敛为仅见自有目录(v3 定稿实测,含 admin) |
| 04-19 | 🔄 批次 1 因改走 bun | 方案与代码全面审查(代码 10 项 + 文档 8 项) |
| 04-20 | 方案 A + handoff | 崩溃自愈:指数退避 + 熔断 + 观测(含 live 实测) |
| 04-21 | 根因已定位并修复(nginx | guest「卡顿」排查(根因=nginx proxy_buffering 已修) |
| 04-22 | 已上线 | 域名迁移到 alotbuy.com(含 4 个踩坑与回滚) |
| 04-23 | 修复已编译(CI ✅),待重 | 实例内 AI 能力与权限限制核查(合成根补 /bin 修复) |
| 04-24 | 已实施并上线 | 实例侧 401 自动恢复(freshAuthUrl 302 带新 token) |
| 04-25 | 已修复并上线(服务已重启 | 实例崩溃循环修复 + not_running 兜底 |
| 04-26 | 清单建立 | dsh 升级耦合点与回归清单(官方包零改动) |
| 04-27 | ❓ | MCN 工作台插件平台化评估(3 处 P0 必改) |
| 04-28 | ✅ | 用户数据清理三件套(ws-cleanup / session-gc / purge-trash) |
| 04-29 | ✅ 已实施并端到端验证 | 官方白名单插件来源(awesome-dsh-plugin,仅预构建可导入) |
| 04-30 | ✅ 已实施并 live 验证 | 编排器孤儿实例清理(spawn 前清 stale scope) |
| 04-31 | ✅ 已实施并视觉验证 | 插件管理页双 Tab + 说明为主视觉 |
| 04-32 | 🔍 核查完成,P0 待决策 | mcntimo 会话取证与沙箱 P0 核查 |
| 04-33 | ✅ 已实施(commit 见 | 实例权限默认档位改为完全权限(env 开关) |
| 04-34 | ✅ 已实施(commit ` | 功能插件启用探活 + 逐插件隔离 |
| 04-35 | ✅ 已修复(commit ` | ws-cleanup 误删平台 bundle 包修复 |
| 04-36 | ✅ 已实施(commit ` | 「功能插件」分区铺给普通用户 + 新用户自动铺 |
| 04-37a | 🔍 取证完成 | guest 会话取证与平台缺陷清单(P0-1 档位/P0-2 零技能) |
| 04-37b | ✅ 已实施(commit ` | 功能插件分区 v0.2:官方 token + i18n + 交互升级 |
| 04-38a | 🔍 核查完成 | 实例软件安装共享 / 网络与安全边界核查(S1-S3 缺口) |
| 04-38b | ✅ 已实施(`99de8c5 | 术语统一「业务插件」→「功能插件」 |
| 04-39 | ✅ 已落地 | 实例可见面收窄(/etc 白名单)+ 封宿主访问(H5) |
| 04-40 | ✅ | 共享技能层挂载修复(补 bwrap --ro-bind) |
| 04-41 | ✅ | 技能上传安全加固(symlink/zip bomb)+ 用户技能启停 |
| 04-42 | ✅ 已修复 | 实例共享 Python 运行时 + 会话取证复核(修 /etc/alternatives) |
| 04-43 | ✅ | root 污染用户工作区 → 属主自愈 |
| 04-44 | ✅ | 基础运行时版本冻结(PYTHONNOUSERSITE + USERBASE) |
| 04-45 | ✅ | 存量会话「新开会话」提示(选提示不选迁移) |
| 04-46 | ✅ | 实例共享工具 jq / ripgrep / ffmpeg |
| 04-47 | ✅ | admin「运行环境」管理页(含版本漂移告警) |
| — | ⚠️ | **编号 48 未使用**(跳号;不影响检索,勿补占)|
| 04-49 | ✅ 已落地 | 实例回收后首次访问的反馈与自愈(wake.html 过渡页) |
| 04-50 | ❓ | 会话过期自愈注入脚本(**已被 04-51 在传输层取代**,保留兜底) |
| 04-51 | 已落地并实测验证 | 实例侧 401 透明重放(含 SSE 自动重连) |
| 04-52 | 已落地并端到端验证 | 新用户实例无法启动(picker 三处连锁缺陷) |
| 04-53 | 🔄 第一批已修复 | 文档质量审查与精简(含 37/38 编号冲突立项) |
| 04-54 | ✅ 已实施(两批):第一批 | 文档信息架构优化(BRIEF 现状卡 + 机读清单) |
| 04-55 | 🔍 取证完成 | guest 最新会话取证与优化项(档位会话级播种) |
| 04-56 | ✅ 已实施并端到端验证(co | 实例助手:我的文件 / 能力清单 / 档位提示 + 文件下载端点 |
| 04-57 | ✅ 已实施并验证(服务器已生 | 设置面板「用户管理」入口 + 全员安装 |
| 04-58 | ✅ 已实施并验证(服务器已生 | 实例内存优化与配额下调(512M→384M + 编译缓存) |
| 04-59 | ✅ 已实施并验证(服务器已生 | 重连反馈:实例启动中的加载动画 |
| 04-60 | ✅ 已实施并验证(服务器已生 | 设置面板分区改名:功能插件 → 功能管理 |
| 04-61 | ✅ 已实施并验证(服务器已生 | 插件管理页:官方插件列表加高 + 页面底部留白 200px |
| 04-62 | ✅ 已实施并验证(服务器已生 | 插件目录:缓存状态可见化 + 「重新拉取目录」按钮 |
| — | ⚠️ | **编号 63 未使用**(跳号;该号只出现在当日工作日志的「事故 63」里,**无档案**,勿补占)|
| 04-64 | admin 侧已实施 | 接入 AnySearch 搜索 provider(admin 侧已实施;**待端到端确认 → 铺普通用户**) |
| 04-65 | ✅ 已部署并生效(服务器 ` | 功能插件启停与 web provider 配置联动(**已部署生效**:服务器 `lib/` 00:13 构建 → **00:15:23 重启即载入**,08:02 再载入;§7.3 第 3 条「anysearch 覆写 |
| 04-66 | ✅ 已实现、已验证、已部署 | 业务插件 P0 误报 → admin 显式信任(fail-closed + 逐条回显 + 留痕) |
| 04-67 | ✅ 已完成并部署 | 「功能管理」section 按 UI 规范重做 v0.2.4 |
| 04-68 | ✅ 全部完成并验证 | 候选池启停的 root 属主污染根治(setpriv 降权 + 属主自愈 + 清存量) |
| 04-69 | ✅ 已完成(2026-09- | 并发治理落地(文档库 commit 常态化 + 服务器侧操作锁 + 权限统一 + 代码库留路标) |
| 04-70 | ✅ 已止损 | **anysearch 插件与 dsh 0.1.2-rc.1 不兼容 → 实例崩溃循环**(已止损;**待决:能力保留/下架**) |
| 04-71 | ✅ 已落地并部署(2026- | **插件兼容性预检**:导入/上传即判定(判据 A semver 依赖范围 + 判据 B 运行时导出符号;已部署 `8d19e89`) |
| 04-72 | ✅ 已完成并部署(2026- | **实例被回收/关闭后,回到页面自动唤醒并重建连接**(不再需要手动刷新;`b23e386`) |
| 04-73 | ✅ 已实现并单点验证 | **让锁真正拦得住人**:措辞修正(guard/交接单)+ **PreToolUse 强制钩子**(无锁拒写;⚠️ 待 `/hooks` 审核启用) |
| 04-74 | ✅ 已落地并实测验证(配置 | **实例内存治理**:V8 老生代上限 **256→160 MiB**(走平台预留的 `DSH_INSTANCE_NODE_OPTIONS`,**零代码改动**)+ 采样脚本加**阈值告警**(85% × 连续 3 次 |
| 04-75 | 📋 标准已立 | **插件评估新增两维度**(接档案 71):**托管友好性** H1–H4(**向浏览器交付绝对 URL = 阻断**;硬编码 loopback / 自建监听 = 警告)+ **资源成本**(加载 `rss` 增量,>3 |
| 04-76 | ✅ 代码改造 + 组件级验证 | **dsh-univer-office 平台适配改造**(**档案 75 首个落地样本**):gateway 加 **unix socket** 传输(`UNIVER_DSH_GATEWAY_SOCKET`,**不设则完 |
| 04-77 | ✅ 已落地并验证(服务器 ` | **回到页面自检 + 就地恢复(恢复过程可见化)**:判据从「进程在不在跑」改为「**页面能不能连上实例**」(新增实例侧探针 `GET /`,2.5 秒超时;`404/405` → 降级回旧判据,**绝不误报**)+ |
| 04-78 | ✅ 已部署并验证(2026- | **崩溃熔断:冷却期 + 告警**(修档案 77 §八 遗留 1):熔断态改为**跨轮存活**(不再被 `resetCrashState()` 清空)+**指数冷却**(10 min × 2^(n-1),封顶 6 h), |
| 04-79 | ✅ 已修复并部署 | **插件启停的两处平台缺陷**(2026-09-13 发现,**P0 未修**):① 隔离定位循环 `uninstall` **缺 `await`** → unhandled rejection **把整个 orches |
| 04-80 | 📋 评估中 | **架构与功能优化评估(保留功能前提下的重构方向)+ 去平台痕迹**:**不推倒重来** —— 平台本体就是要保留的功能;**今天几次事故根因全是「层层补丁叠加」**(模板转义把注入脚本写崩 ×2、配额与插件集合脱钩致 |
| 04-81 | 🚧 执行中(R0 已完成 | ① 定下**一套命名**:对外叫「**工作台**」、内部统一前缀 **`dshs`**(替换 `dshs`); |
| 04-82 | 🚧 代码完成、产物已出 | ① R2 的 **R5 权限影响评估**已在档案 81 §9.2 出齐并获批(扩大点=实例内出现可操作的管理入口 ⇒ **仅 admin 可见** + **只读** + 写操作回跳)。⚠️ **本档内部 16 份重复(1 |
| 04-83 | ✅ 已完成并上线验证 | ① 查实:登录页用的是 `design.css` —— 一套**深色 OS-desktop 体系**,与 `06-工作台UI规范`(**强制基线**、冲突时以它为准)**全面冲突**; |
| 04-84 | ❓ | 实例内存配额口径统一(消灭「388 MiB」误报) |
| 04-85 | ✅ 已上线并端到端验证(后端 | ① 原先平台是「**统一 KEY**」——`resolveApiKey()` **显式忽略入参 userId**,不管谁 spawn 都注入 admin 那一把;② 本轮改为**两层**:**用户自己的 key 优先,没 |
| 04-86 | ✅ 已上线并端到端验证(后端 | ① 平台**所有**服务/文件 API 都是 `request.user.id` 语义(`desktop.ts` 头注释原文 "one user can never address another user's file |
| 04-87 | ✅ 已上线并端到端验证(后端 | **平台自建「模型设置」**(官方「设置 → 模型」页在平台环境**必然报错** ⇒ 弃用它):① 官方「模型」分区对**全角色(含 admin)**隐藏 —— 判据是**浏览器页面**的 loopback 判定(真实域 |
| 04-88 | ✅ 已修复并验证(源仓 `c | **内置 dsh 安装路径按序探测(修 P1 静默失效)**:平台**三处**把内置 dsh 目录写死成 `/usr/local/lib/node_modules/@deepseek-ai/dsh` —— 而 `npm |
| — | 🔍 | **档案 82–86 尚未登记进本表**(本轮发现;属别人 lane 故未代加):82 R2 管理面就地化|83 登录注册页对齐|84 内存配额口径统一|85 模型密钥开放给用户自配|86 admin 跨用户实例管理 + 两处改名。**待收口会话补** |
| — | 🧪 | `04-调整方案/poc/portal-entry/`:portal-entry 插件源码(v0.5.1)|
| 06 | 🔄 | **前端 UI 强制基线**:Token/布局/组件/交互/9 条已知坑 |
| 07 | ✅ | **实例 UI 分区登记表**:settings.section 的 id/order/label → 提供者 → 源码 → 可改性 + 定位套路(含"中文文案要同时搜 UTF-8 与 \uXXXX") |
| 04-89 | 🔄 进行中(L2 机制级已验 | **对话内文件预览**:采纳官方推荐库现成插件 `@softspark/dsh-file-preview`(65 KB,包住官方 `openWorkspacePath` 接管"点文件"手势;兼容预检 ok、已启用、L5 |
| 04-90 | 🔄 进行中(阶段 1 通过 | > 目标版本 = **`0.1.5-rc.1`**(npm `latest`;用户材料里插件 peer 也是 `^0.1.5-rc.1`,三方自洽)。 |
| 04-91 | ✅ 已上线(`busines | **「模型设置」页复刻官方交互**:换行根因是 **4 列表格 auto 列宽** ⇒ 改官方**卡片行**(两侧 nowrap)+「新增」改**两步式**(两个虚线按钮 → 卡片主字段只剩「API 密钥」);顺修「由 |
| 04-92 | ✅ 已上线 | **官方推荐插件列表按 dsh 版本过滤**:官方目录**不带** dsh 版本字段 ⇒ 平台侧逐包查 npm 声明与**平台真实版本**比;默认隐藏「仅兼容更旧版本」,「需更高版本」橙色标注。⚠️ 两处静默降级已钉住: |
| 04-93 | ✅ 已上线(平台后端已构建重 | **兼容判定收口**:① 「单测长期红」真相 = **服务器源码落后于 git**(本机 48/0 全绿)⇒ 同步即修;② 伞包 `@deepseek-ai/dsh` 收口到 `dsh-install.platformP |
| 04-94 | ✅ 已上线(平台后端已 `n | **实例内存口径定案**(用户裁定 base 448 / max 1024):两侧常量(编排器 `instanceMemMb()` ↔ 插件客户端 `MEM_*`)收成一份事实 = **BASE 448 / MIN 44 |
| 04-95 | ✅ 已上线 | **HTML 外壳缓存治理 —— 修「Failed to load plugins」根因 + 流程违规自审**:页面报 `client-modules: bundle script …&rev=… failed to l |
| 04-96 | ✅ 已上线(平台后端已重建重 | **实例内存与插件开关解耦 → 「基础 MIN、最多浮动到 MAX」**(用户两段原话:先「不要受插件开关影响,只受 min 和 max 值影响」,再「改成基础 min 最大可以浮动到 max」):平台侧 = cgrou |
| 04-97 | ✅ 已上线 | **`/plugins/` 合并脚本补 ETag + 304 短路**(承 96 之后查出的真缺陷,与当日故障无关):官方 `dsh-client-modules` 把全部客户端插件拼成**一条 11 MB 脚本**(` |
| 04-98 | ✅ 已上线 | **治本:陈旧 `dsh-auth-*` cookie 回写清理**:dsh 每次实例(重)启动都换 `dsh-auth-<随机>` 的 cookie 名,平台此前只在转发时丢弃旧的、**从不回写浏览器** ⇒ jar |
| 04-99 | 🔄 已落地待生效(钩子已装 | > 1. **根因 = 拦截点错位**(不是"AI 不听话"):既有「提问闸门」hook 的 matcher 是 `^AskUserQuestion$`,只能拦**工具调用**;实测本工作区宿主日志 `tool=AskU |
| 04-100 | ✅ 已实施并投放(`busi | **结论**:在**既有「功能管理」section 内新增「我的技能」分组**(**不新开 section**),用户在同一页看完并管理「功能插件 + 我的技能」两类功能;技能行支持 上传 / 启用 / 停用 / 删除, |
| 04-101 | ✅ 已实施并投放 | **结论**:分区改名「**能力管理**」(label 级),页内改为 **tab 分页**(功能插件 / 我的技能,各自独立操作),插件卡片的**中文用途描述从 1 行放宽到 3 行**(`.bp-plugDesc`) |
| 04-102 | ✅ 已实施并投放 | **结论**:语言切换搬进 **`@dsh-local/portal-entry` 的「用户设置」分区**(id `user-settings`,order 103), |
| 04-103 | 📋 规划态 / 未实施(本轮 | **客户端安装 + 覆盖网络互联 · 可行性评估**(规划态 · 未实施):判定 ✅ 可行,且现有架构已给出约 80% 形状(`soft` 档实例=裸子进程 ⇒ 无需 root;Worker 拨出式反向隧道 ⇒ **节点 |
| 04-104 | 📋 规划态 / 未实施(架构 | **覆盖网络 · 全球架构复盘**(规划态 · 未实施):五层架构(控制面 / 会合 / 骨干·中继 / 数据面 / 观测)+ 12 条必须内建特性 + **10 类风暴类型学** + 流量组织五原则 + 流量预算表 + |
| 04-105 | 📋 规划态 / 未实施(设计 | **覆盖网络 · 骨干层方案**(规划态 · 未实施):多中心骨干(≤10–20 成员、全互联;每节点只连 1–2 个骨干)+ 选择性加入。三条硬约束:**接入 / 成员 / 可见三分离** · **骨干资格只能控制面签 |
| 04-106 | 📋 规划态 | **覆盖网络 · 百台规模推演 v2**(规划态 · 纯文字推演):⚠️ 含**前提级纠错**(v1 作废)—— 用户纠正「**单机用也要互联**」;错因 = **把「租户维度收窄」误当成「网络维度收窄」**。100 台 |
| 04-107 | 📋 规划态(文字推演 | **覆盖网络 · 千台全场景推演**(规划态 · 纯文字推演):1000 台异构 × 11 场景 + **流量预算总表** + 瓶颈排序。🔥 **第一瓶颈 = presence**(1000 人大房 ≈ **16,700 |
| 04-108 | 📋 规划态 / 未实施 | **覆盖网络 · 游戏专项(MMORPG 2D/2.5D · MUD · 传奇类)**(规划态 · 未实施):⚠️ 判定**由「不合适」修正为「最匹配」**(该类游戏天生服务端权威 + tick 驱动 + **AOI 九 |
| 04-109 | 📋 规划态(全网调研稿 | **覆盖网络 · 调研:游戏网络特征与单房间群聊上限**(规划态 · 全网调研稿,数值均标来源):游戏侧每玩家 **2–20 KB/s**、同步 5–20 Hz、**jitter > 20 ms 即 desync**;群 |
| 04-110 | 📋 规划态(技术答疑稿 | **覆盖网络 · 答疑(群聊+agent / 备份 / 迁移提速 / 传输保密)**(规划态 · 未实施):① 群聊=**应用层**的事(覆盖网络只给「可达」);**agent 四条硬约束**(⛔ 禁止 agent 直接 |
| 04-111 | 📋 规划态(补遗复盘稿 | **覆盖网络 · 补遗与参考方案**(规划态 · 未实施):互联游戏 ✅ 但**由游戏形态决定**(锁步/回合/异步最友好;FPS/MOBA 64+ ❌ 不合适,P2P 无法反作弊);补遗 **24 条**(身份与账户 |
| 04-112 | 📋 规划态 / 未实施 | **覆盖网络 · 九大瓶颈落地方案**(规划态 · 未实施):把 107 的九大瓶颈逐个给成**可执行做法 + 验收判据**(含 Slack / SCCM·BranchCache·Delivery Optimizatio |
| 04-113 | ❓ | **覆盖网络 · 传输方案取舍(开放端口 vs 自研 relay)**(决策稿):逐条对比 5 种传输形态,定下**自研 relay + 回环监听 + 中继切流**路线;⛔ P4(SSH 版中继 / 32023)判**不 |
| 04-114 | ❓ | **覆盖网络 · 应用场景推演完成度 & 方案待完善清单**(检查稿):逐场景打勾哪些已推演、哪些仍缺;作为后续补遗的取数底稿 |
| 04-115 | ❓ | **覆盖网络 · 「插件 vs 改内核」架构判断**:结论 = **走插件层**(不改官方 dsh 内核,红线 R2);给出插件化边界与代价清单 |
| 04-116 | ❓ | **覆盖网络方案 · 问题逐条推演与解决方案**:把散落疑问逐条编号推演并给解法,是 103–112 之前的**问题总账** |
| 04-117 | 🔄 | **覆盖网络 · 参数表与观测口径(唯一一张)**:所有可调参数的**单一来源**(含「⛔ 不改」清单:`RELAY_FAILOVER_DEADLINE_MS` / `HB_SEC` / `COOLDOWN_MS=0` |
| 04-118 | 已完成使命 · 仅存档(20 | **会合 / 中继从 Manager 拆分 · 取证与改造方案**(**进行中**):S0–S4 分步 + 每步验收 / 回滚;起因 = 重启会收掉实例 scope 而无 reconciler |
| 04-119 | ❓ | **集群化改造方案 · Manager / Worker 模式**:D1–D5 已定(⏳ 仅 D6 未做)+ **数据分层判据**(归属/租约只 Manager 写 · 跟用户走放实例 home · 本机运维放 Work |
| 04-120 | ❓ | **跨节点迁移 & 节点自举 · 完整流程方案**:用户实例在节点间搬迁的完整流程与自举条件 |
| 04-121 | ❓ | **项目代码 · 分层范式与迭代风险评估**:代码分层 P0 已立;给出各层边界与「层层补丁叠加」的返工风险 |
| 04-122 | 规划稿 | **guest 迁移(w-47 → w-106)与共享重建方案**:存量 guest 落 106 的搬运步骤 + 共享面重建判据 |
| 04-123 | ❓ | **方案规划方法 —— 从覆盖网络线提炼**:把本线的规划手法沉淀成**可复用方法论**(判据优先 / 单一来源 / 假绿识别) |
| 04-124 | ❓ | **文档无效信息审计报告**:对文档库做「无效信息」体检,输出应删/应改/应合并清单(**报告,未执行**) |
| 04-125 | ❓ | **会话接续机制 · 问题复盘与修复**:复盘「接续为何断链/为何空转」,产出修复项(**排期两条铁律** = ① 首个/唯一接续棒 = 收口 + **5~8 分钟**〔原记 2~5,2026-09-18 用户更正〕② |
| 04-126 | 🔄 | **会话接续规范:token 超限后如何无损继续**:接续六件套 prompt 骨架与登记门禁的规范文本 |
| 04-127 | ❓ | **DSH 平台客户端化部署方案 —— 单机自用**:B 档(单机自用)形态下的客户端化部署路径;⚠️ 真正硬阻塞 = 平台调用层(Windows 裸名 `spawn` ENOENT) |
| 04-128 | ⏳ 待评审 | **DSH 桌面客户端开发方案 —— 基于官方 Electron 壳迭代**(待评审 · 只做规划不含代码):复用官方壳 vs 自建的取舍与分发/版本矩阵 |
| 04-129 | ✅ 已实现 · 本机实测通过 | **日志采集 · 实时巡检 · 事后溯源(方案 C 实现)**:不装新日志服务(否 Amber / 否 Loki+Alloy),用 `07-scripts/dshlog.mjs` 把 47/106 journald 拉回 |
| 04-133 | 📐 规划完成 · 待执行(第 | 🔴 **序㊺ 实测判「D 本轮不实现」**(真实首屏包 **23 块 0 个低熵块**、60 份真实独立内容 **0 份低熵** ⇒ `D-1` 无对象可稀释、`D-2` 前提不成立)⇒ 剩 **C 域分离 + 判据重裁 |
| 04-134 | ✅ | **注册页人机验证与邮箱验证码**(2026-09-19 落地 · 线上实测通过):注册 = 用户名 + 密码 + **邮箱验证码** + **Cloudflare Turnstile**(✅ **密钥已配、已启用**; |
| 04-135 | ✅ | **旧域 `alotbuy.com` 从项目移除**(2026-09-19 落地):代码 / 服务端 / 文档技能三层收敛为 `ai1net.com` 单域;旧域站点**降级为 301 过渡装置**(保留 ACME + |
| 04-136 | 🔄 待执行(已立项,未开工 | **控制面按两台中继取并集 —— 立项交接单**(2026-09-19 立项 · **未落地**):平台 web 层只取 47 中继 ⇒ 106 中继不被使用;根因链 7 行(取址路径 `src/web/server.t |
| 04-137 | ✅ | **品牌标识改造 —— 去 DeepSeek 图形 → 平台自有标识**(2026-09-19 上线):**四页 + favicon 一并替换** —— `login` / `register` / `admin` 页头 |
| 04-138 | ✅ 已上线并端到端验证(控制 | **平台共享模型 —— 管理员逐用户授权(默认关闭)**(2026-09-19 上线):新增列 `users.shared_model_granted`(v11,**默认 0**),**生效 = `granted ∧ e |
| 04-139 | ✅ 已上线(静态资源直覆,无 | **品牌中文名:能力枢纽 → 能力网络**(2026-09-19 上线):其他语言仍 `CapabilityNet`(en 词条即回退);落点四处 = i18n 中文词条 / `admin.html` 顶栏 / **`f |
| 04-140 | ✅ | **涉密内容外置到配置目录**(2026-09-19 落地):把散落在代码里的**真实部署值**(域名 / IP / 主机号 / 内网路径 / Worker 令牌 / PG 口令)统一收进 `config/`,代码改为* |
| 04-141 | ❓ | 实例子域冷启动窗口内代理裸断连接致 502(2026-09-19 修复) |
| 04-142 | 📋 规划态(需求已拍板 | **IM 群组对话(需求基线与方案)**(2026-09-20 规划态):用户拍板 **B 方案**(人 + Agent 一次做齐);两条决定形态的语义 = **群聊消息作为 agent 上下文** · **agent |
| 数据库专区 | ✅ | **数据库专区**(新目录 `03-数据库/`):DB-00 入口 / DB-01 接入指南(**七种情形**:内核表·**插件库(一插件一库)**·**用户数据入库**·Worker 本地库·大对象桶·**实例本地仅缓存/临时**·缓存队列)/ DB-02 表结构台账与迭代机制(v1–v13 + 评审门禁)/ DB-03 插件数据面规范(**一插件一库 · 归属列强制 · 按库备份迁移**)| 🔴 架构定稿 = `02-架构设计/数据-分库与权威存储架构.md` |
| 04-143 | ✅ 已落地,真机浏览器实测通 | **MCN工作台入口失效 + 用户设置语言切换「没反应」**(2026-09-20 落地 · 真机浏览器实测通过):两条同源 —— **dsh 0.1.5-rc.1 改了插件依赖的老契约**:① 对话区槽位名 `conv |
| 04-144 | 方案(待拍板选档)。本轮只落 | **插件规模化投放与版本一致性(几百~上千用户)**(2026-09-20 方案 · **待拍板选档**):今天这条 bug 的真实瓶颈**不是耗时**(单用户 `pnpm add` 秒级 ⇒ 1000 用户串行 1 小 |
| 04-145 | 🟡 部分执行 | **覆盖网络·序47 单账号多设备多会话并存(S0–S4 前半 · 2026-09-20 落地)**:`POST /api/auth/login` **取消无条件驱逐**(原 `deleteUserSessions(us |
| 04-146 | ✅ 已落地并验收(47 已加 | **实例子域 503:中继 per-port 额度被「客户端断开不中止上游」泄漏占满**(2026-09-21 落地 · 已验收):guest 实例被报「一直重启 + 全站 503」,实测**实例健康、连续运行 20.8 |
| 04-147 | 📋 方案(规划态 · 未实施 | **多节点形态下的插件投放与数据面(把「插件规模化」放回整张网里)**(2026-09-21 方案 · 规划态 · 零改动):用户指出 144 §八 的「2~3 天」口径**默认了"所有用户都在 47 本机"** ⇒ 整 |
| 04-148 | 📋 方案(规划态 · 未实施 | **多 Manager / 多区域联邦形态(把「一张网」改成「网的网」)**(2026-09-21 方案 · 规划态 · 零改动):用户指出 144/145/147 **共同默认了「一个控制面」**,实际形态是「**几百 |
| 04-149 | 📋 方案(规划态 · 未实施 | **覆盖网络顶层架构全貌(去中心化形态 · 信任图与数据图分离)**(2026-09-21 方案 · 规划态 · 零改动):用户两次纠正范式 —— 先指出图「**不是网状结构还是树形的**」,再追问「**是不是 没有RO |
| — | 🗄 | `(2026-09-24 已清出项目:旧全量计划,结论已在 04-调整方案/)`:拆分前 19 章 |
| — | ✅ | `08-skills/dsh-change-workflow/SKILL.md`:六阶段 + **红线 R1-R11** + **详情已拆到 `references/`(9 档)**(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-decision-method/SKILL.md`:**改造决策方法论**(用户有效决策 U1-U12 / AI 有效决策 A1-A13 / 反例 X1-X8 + 确认最优解十问 + 交互 UI 专项清单)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-feature-first/SKILL.md`:**功能优先协作协议**(用户只提功能卡 4 问 · AI 自主决策 9 类白名单 · 只上抛功能语义分叉与红线门禁 · 报障闭环前置 · 交付回执格式)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-opensource-release/SKILL.md`:**开源导出与版本迭代**(硬规则 R-O1–R-O14 · 脱敏映射表唯一口径 · 双轨授权与其 MIT 法律前提 · 迭代发布 SOP · 多远端推送 · 验证七件套 · 21 条实测坑(已拆到 `references/`)· v1.7.8)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-plugin-diagnose/SKILL.md`:**业务插件故障诊断**(三层归属 host / client / 网关·原生绑定 · 三把尺子 inject 差集 / glibc 直测 / 产物插探针 · 8 条实测坑)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-env-bootstrap/SKILL.md`:**环境引导 / 迁移**(常驻规则快照 `references/常驻规则-快照.md` + `07-scripts/resident-rules.py` 的 `--check / --inject / --env-check / --snapshot`;**权威方向单向**:CODEBUDDY.md 为权威、快照为副本)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/dsh-auto-handoff-chain/SKILL.md`:**多棒自动接力编排法**(规划棒 ↔ 执行棒交替 · 一次性 automation 链条 · 六件套 prompt 骨架 · 登记门禁 · **排期两条铁律 §3.1.1**〔首个/唯一接续棒 = 收口 + 5~8 分钟 · 同一时刻只挂一个接续棒〕· 六条实测防护 · 断链 / 双开 / once 不转完成态 / 预登记队列 等 · `07-scripts/chain_report.py` 复跑)(工作副本在本机 `.workbuddy/08-skills/`)|
| — | ✅ | `08-skills/agent-operating-rules/SKILL.md`:**AI 会话作业总规矩(通用 · 跨工作区)**(上抛唯一判据 + 自决白名单 + 取舍筛〔只有优点/缺点 ⇒ 自决〕+ 结论骨架 + 可扫读排版十条 + **去 AI 味 24 类模式** + **工作区归属三律**〔治会话落错家〕+ 抢锁校验退出码 + 提交·批量边界 + 多棒接力 + 4 篇 `references/` 细则)(工作副本在本机 `.workbuddy/08-skills/`)|
> **待办与优先级不在本文件维护**(单一来源):**未规划**的见 `01-规范/03-路线图与待办.md` §二;**已规划待执行**的见 `05-交接单/README.md` §一。
---
## 三、变化与更新状态:怎么追
| 手段 | 怎么做 |
|---|---|
| **双端对账** | `bash 07-scripts/docs-sync-check.sh`(一致/不一致/仅本地/仅服务器 + 退出码 0=全绿)|
| **机读清单** | `python3 07-scripts/docs-manifest.py` → `docs-manifest.json`(状态/日期/tier/引用数)|
| **质量审计** | `python3 07-scripts/docs-audit.py`(9 类判定;编号冲突与悬空引用会返回非 0)|
| **代码侧变更** | `git -C /opt/dshs log --oneline`(平台代码是 git 仓库,比文档更细)|
| **文档侧变更** | 本目录是 git 仓库:`git log --oneline`;服务器镜像无 .git,靠 scp 单向推送 |
| 时间线溯源 | `03-路线图 §已完成` + 各档案 commit 列 + `09-archive/` 全文 |
---
## 四、归档与工作区残留
| 文件 | 位置 | 状态 |
|---|---|---|
| **已完成的交接单**(规划/执行分离的单子)| `05-交接单/` | **T02**(文档库收尾:37/38 编号消歧 + INDEX 瘦身 28,809→7,468)|**T03**(7 插件整合投放:`dsh-plugin-mcn-suite` 上传候选池 + **guest 启用成功**,实例重启探活通过)|**T04**(并发治理:commit 常态化 + 服务器侧操作锁 `/opt/dsh/state/.op-lock` + 权限 700/600 + 代码库 `ebe8075`→`06e63ac`)|**T05**(插件兼容性预检:`04-71` 落地 + 档案 66 源码回填)— 均 2026-09-12 完成|**T06**(平台自建「模型设置」:`04-87` 落地 + 插件 0.3.11 铺发 + 迁移 V6 + 官方模型分区全角色隐藏;验收四件事全绿,顺手修角色补丁整文件覆盖与陈旧断言两颗雷)— 2026-09-13 完成|**T07**(内置 dsh 安装路径按序探测:`04-88` 落地;**三处**写死路径(第 3 处是提出方漏的)改为按序探测 + 降级留痕;测试服 `test106` 三种姿势验证通过)— 2026-09-14 完成 |
|**T09–T21**(2026-09-17 从工作区根批量入仓:覆盖网络线 13 份交接单 —— 含「落地执行 / 网抽象与地址规划 R6 / relay R2-R4 / 443 兜底 / 中继失败切流 / 切流冷却语义 / presence 在线态 / 一机一钥与信任根 / 参数表与观测 / 检测时延与 deadline / 最小形态真机批次 / 观测口径与在册缺陷 / 在册收尾」;⚠️ 均为**已完成单的归档副本**,若其中仍有未完成项需在 `05-交接单/` 另开新单)
| 三份工作区草案(插件管理面 / VoxEMW×2)| `(2026-09-24 已清出项目:未采纳草案)` | 已归档防丢;插件草案 v5 被档案 16 取代 |
| `07-scripts/docs-{sync-check.sh,audit.py,manifest.py}` | 本库 `07-scripts/` | 随库分发,**在用** |
| `.workbuddy/memory/YYYY-MM-DD.md` | 工作区 `.workbuddy/` | 过程日志,不入库 |
| `*.bak*` | 各处 | 已纳入 `.gitignore`;**服务器侧勿生成结尾带点号的备份名**(Windows 落不了地)|
---
## 五、仓库与同步拓扑
| 资产 | 路径 | 仓库 / 状态 |
|---|---|---|
| **平台代码** | 服务器 `/opt/dshs`(git,上游 fork,**浅克隆**)| `git@work.alotbuy.com:maogeigei/dsh_shenxian.git` — `master @ ebe8075` ✅ 已推送 |
| **改造文档** | 本机 `dsh-server-docs/`(**本目录即工作树**)↔ 服务器 `/opt/dsh/docs`(镜像,root 600)| `git@work.alotbuy.com:maogeigei/dsh_shenxian_doc.git` — `main @ 43e4ae9` ✅ 已推送 |
| 上游基线 | `上游骨架仓库(已按要求不再具名)`(123 提交,HEAD `04bc832`)| 本机 remote 名 `upstream` |
| 本机代码副本 | `D:\github\dsh_shenxian` | 上述代码仓库的 clone |
**约定**
1. **推送只能从本机执行**:服务器无 Gitea 凭据 → 服务器改码后 `git bundle`(区间)→ 本机 fetch/merge → push。
2. **同步链路(文档)**:编辑本目录 → `docs-sync-check.sh` 对账 → scp 到 `/opt/dsh/docs`(`chmod 600`,README 保持 644)→ 复跑脚本确认全绿。
3. **权限**:服务器 docs 树 root 600(README 644);`/opt/dsh` 为 `drwx------ root`(用户 uid 读不到,需先暂存到用户 home 再安装)。
4. **行尾**:本机 git 的 system 级 `core.autocrlf=true` 会把工作树写成 CRLF,而仓库 blob 是 **LF** → **scp 单文件前看 `file` 输出**;脚本类必须 LF(否则 shebang 带 `\r` 执行失败)。
---
## 六、新增文档的落位规则(约定)
1. **功能类改造** → `04-调整方案/` 新建档案,**编号递增**(**复跑取号,勿写死**:`ls 04-调整方案/ | sort -n | tail -1`;**63 为空号,勿补占**);模板:目标 → 改动 → 验证 → 红线遵守 → 回滚。
2. **规范 / 基线类**(跨页面长期生效)→ 根级编号文档(`01`~`06`),不入 `04-调整方案/`;入库时登记 §一 场景表 + §二 清单。
3. **排障记录** → 追加 `01-规范/02-运维手册.md` 排障小节。
4. **状态 / 待办变化** → 更新 `01-规范/03-路线图与待办.md` 与本文件 §二。
5. **保留原章节编号**,便于与 `09-archive/` 完整版对查。
6. **同步**:见 §五.2(对账 → scp → chmod → 复跑)。
7. **UI 规范优先**:涉及前端改动**先读 `01-规范/06-工作台UI规范.md`**;沉淀了新"为什么"要回写源侧并回拷 `06`。
8. **规划/执行分离的任务单** → `05-交接单/`(约定见其 `README.md`):规划会话产出单子,执行会话按单开工(**不读规划会话上下文**);完成后 `git mv` 入 `05-交接单/` 并在 §四 加行。