Files
dsh_ai1net_server/docs/交接单/接续包_IM与插件接入_20260924.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

98 lines
7.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.
# 接续包 · IM 线 + 插件接入(2026-09-24 21:4x)
> **工作区**:`E:/ProgramData/AIProject/ai1net-dsh-server`
> **性质**:本会话(即席问答型,非单一任务线)的**收口包**。⚠️ 本包**不自述 md5**(自述即自指)⇒ 校验值放 automation prompt。
> **本包地位**:本会话的**唯一接续依据**;两条线的长期依据仍是各自入口(见 §4)。
> **建包原因**:上下文 **311k** 触发强制收口。
---
## §0 一页速览
| 项 | 内容 |
|---|---|
| **用户问** | 「IM 的任务和插件接入的任务都完成了吗」 |
| **答** | ⛔ **都没完成** —— IM 线剩**第 17 棒**(整棒未跑);插件接入剩 **3 项**(见 §3) |
| **本会话性质** | 即席问答 + **5 处落档**;**代码零改动** |
| **下一棒** | §4 第 1 条(按用户当轮口令选 IM / 投放线) |
| **🔴 硬前置** | **切流必须等用户启用 E 单插件之后**(顺序铁律,不可抢跑) |
---
## §1 本会话已完成(5 项 · 均有校验)
1. **106 共享层补包** —— `_dsh-local_im-conversation-tabs` 由 47 → 本机 → 106 同步(21,529 B tgz 中转),**两机文件指纹逐字一致 `cebe3a57b5a0828a`**;106 现包 3 个与 47 对齐 ⇒ **E 单启用不再受"实例在哪台机"限制**。投放线入口 §5-5 那条「106 缺包」注记已就地改为「已闭合」。
2. **「待拍板内容格式」固化为规则(3 处载体)** —— 用户令「**形成规则,生成待拍板内容时必须遵循**」⇒ 作用域由「上抛」扩为「**一切要用户拿主意的输出**」(含末尾清单 / 候选 / 表格盘点,**换形态不豁免**)。落点:用户级 `~/.workbuddy/MEMORY.md`(提问条结束于字符 **3,548** < 4,000)+ 本工作区 `CODEBUDDY.md §1`(**7,957 / 8,000,余量仅 43**)+ 技能 `agent-operating-rules §1.7`(**三处 md5 `84d61abb93146b09dfe8ddde583b80d3` 一致**)。⚠️ **需完全重启才生效**。
3. **跨区可见性默认 → 已拍板** —— 用户原话「**用户连接了哪些区就能看到哪些区的用户**」⇒ 定案 = **可见性跟随「用户 × 区」成员关系**(第三案;原「倾向互不可见」及 A / B 候选**作废**)。落档:`02-架构设计/覆盖网络-顶层架构全貌.md` **§8.3 整节重写** + 同文件 §8 **F6 行** + `接续入口_IM线_20260922.md` **§4-6** + **§0 追加行**。
4. **插件「可见面」定性推翻(代码级)** —— 见 **§5-1**(含我两次措辞更正的教训)。
5. **carbon 对接文档复审(只读)** —— 见 **§5-2**。
---
## §2 本会话未做(故意)
- ⛔ **未改任何平台代码**(`src/**` 零改动)
- ⛔ **未 commit / push**(工作区 + 文档库均有未提交改动)
- ⛔ 未开新任务线
---
## §3 在途 / 未完成(4 项 —— 用户所问的答案)
| # | 项 | 归属 | 卡在哪 |
|---|---|---|---|
| 1 | **IM 线第 17 棒**(重打包 + 重投放 + 边缘接 vhost + **切流** + 档位复测 `2000`/`10`/`30 s`) | IM 线 | 🔴 **automation `19904b63` 已丢**(既不在库、也无对应 memory 目录)⇒ **需重登**;⚠️ **切流须等用户启用 E 单插件之后** |
| 2 | **插件可见性收口(A 案)** | 插件投放与分库线 | 方案已定、**未开工**(须 改码 → build → 部署两机 → 重启 → 验收) |
| 3 | **carbon 凭据投递通路**(用户点开通 ⇒ 凭据自动就位) | 平台侧立项 | ⛔ **需用户拍板**(属新增能力)⇒ 按纪律 **不登记** |
| 4 | **跨机可见性状态回流** + **跨节点内容分发** | 插件投放与分库线 | 形态均已拍板、**未开工**(可排棒) |
---
## §4 下一步(写死第 1 条)
**第 1 条**:按**用户当轮口令**决定先做 §3-1(IM)还是 §3-2(插件可见性收口)。
两条**冲突域不重叠**(IM 线 = `src/im` / `poc/im-*`;投放线 = `src/web/routes/business-plugins.ts` / `web/portal.html` / `src/db/**`)⇒ 理论可真并行,但**每线只挂一个棒**。
**长期依据(⛔ 本包不复制其正文)**:
- IM 线 → `接续入口_IM线_20260922.md`(**§0 最新行** + §2「⏭️ 第 17 棒」)
- 插件投放与分库线 → `接续入口_插件投放与分库线_20260922.md`(**§0 最新行** + §5-1 / §5-2 / §5-3 / §5-6)
---
## §5 关键决定(本会话新增 · ⛔ 别推翻)
### 5-1 插件「可见面」的真相(我做过两次措辞更正 · **最终版以此为准**)
- 🔴 **三层清单**:① **上游官方目录** ≈ **3,400** 条 ⇒ **仅 admin**(`src/web/routes/whitelist.ts` 三条路由全 `requireAdmin`)② **候选池**(admin 从目录导入的,实测 ≈ **5** 条)⇒ 🔴 **任何登录用户可见**(`/api/plugins/mine`,`src/db/repo.ts:682` 零 WHERE;**用户侧实例面板确实在调它** = `poc/business-plugins/lib/client.js:1221`)③ **共享层已发布** **3** 个 ⇒ 受开关控制。
- ⇒ **「可见面开关要不要开」这个提问的前提不成立**(用户早拍 D1/P4「全员可见、自己开通」);真实缺陷 = **可见性分层未统一:门禁只装在新增的(更严格的)那条上,老那条全量开放**。定性 = **实现层缺陷,⛔ 非待拍板项**。
- **修法(自决 · 可推翻)**:**A 案** = `/mine` 收窄为「已发布 + 我的状态」+ 撤掉 `/shared/catalog` 与其开关(须在交接单写明**推翻** S6-1「⛔ 不要顺手加过滤」的理由)。
- ⚠️ **教训**:取证须把「**接口返回什么**」与「**用户实际能看到什么**」**分开陈述** —— 我首次把 API 事实直接写成用户可见事实,被用户当场否掉。
### 5-2 carbon 接入现状(只读复审)
- 文档 = `E:/ProgramData/AIProject/dsh-plugin-carbon/对接文档_carbon插件-平台侧两处阻塞_20260922.md`(500 行 · **四方往来**),**停在 carbon 线**(等 `J1` / `J3`)。
- 平台侧**唯一欠项** = 「用户点开通 ⇒ 凭据自动就位」通路**未立项**(`grep -rn "\.dsh/plugins" src/` **零命中**)⇒ 建议**并进 worker 装配同一条腿**(零新增入站口)。
- 🔴 **本机有两份 carbon 包(⛔ 别拿错)**:正式版 `dsh-ai1net-capability/dsh-plugin-carbon` = `@dsh-local/dsh-plugin-carbon` **v0.1.7**(无 `data` 声明 ✅);旧副本 `AIProject/dsh-plugin-carbon` = `@dsh-local/carbon` **v0.1.0**。✅ §L-1 的目录名裁定(`dsh_plugin_carbon`)**正确**。
---
## §6 回滚点
| 对象 | 回滚方式 |
|---|---|
| 规则三载体 | 工作区 `CODEBUDDY.md` 改回「上抛必须自包含」原句;用户级 `MEMORY.md` 加回被压掉的长括号说明;技能相应回退 |
| 跨区可见性 §8.3 | 定稿改回「倾向**默认互不可见**」一句(原文本已在本包 + 今日日志留档) |
| 106 共享层 | 多余包 `rm -rf /var/lib/dshs/bundled-plugins/_dsh-local_im-conversation-tabs`(不影响 47) |
| 投放线入口 §5-3 / §5-6 | 原句「可见面开关的开启决策(红线门禁 · 待拍板)」见今日日志 20:4x 段 |
---
## §7 ⛔ 不要重做
- ⛔ **不要再同步 106 共享层**(已补、指纹已验 `cebe3a57b5a0828a`)
- ⛔ **不要重新固化提问规则**(三处已一致)
- ⛔ **不要重判跨区可见性**(已拍板,权威 = 定稿 §8.3)
- ⛔ **不要再把「可见面开关」当待拍板项问用户**(定性已推翻)
- ⛔ **不要重搜 carbon 现状**(本包 §5-2 已核)
- ⛔ **不要用 `automation list` 的 `status` 判某棒是否已跑**(实测:跑完仍 `ACTIVE`;正解 = 看 `automations/<id>/memory.md` 是否存在)