52 lines
3.4 KiB
Markdown
52 lines
3.4 KiB
Markdown
# 45-存量会话「新开会话」提示(P0-1 的最小代价处置)(2026-09-11 落地)
|
||||
|
|
|
|||
|
|
## 背景
|
|||
|
|
|
|||
|
|
档案 37a 的 **P0-1**:权限档位是**会话级播种**(建会话时写 `permission/preset` + `sandbox/mode` +
|
|||
|
|
`approval/policy`,**resume 不重播**),所以档案 33 的 `DSH_PERMISSION_MODE=danger-full-access`
|
|||
|
|
**只惠及新会话**;存量会话仍是 `workspace-write` + `ask` → 会话里每次 `bash` 都撞
|
|||
|
|
`no sandbox backend is usable on this host` → 只能逐条审批升级(一次性,不持久)。
|
|||
|
|
|
|||
|
|
guest 最新会话(`session-b83ae69b`)把它暴露到极致:**5 次逐条审批**、子代理因
|
|||
|
|
`approval:"never"` 无法提权而**永久无 shell**、用户最后直接问「没办法执行 bash命令了吗」。
|
|||
|
|
|
|||
|
|
**全会话扫描(10 个主会话,含 admin)**:`workspace-write` 10 / `danger-full-access` 0 —— 全部受害。
|
|||
|
|
|
|||
|
|
## 决策:做提示(B),不做会话迁移(A)
|
|||
|
|
|
|||
|
|
| 方案 | 内容 | 判定 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **A 存量会话迁移** | 改写各会话 `session.jsonl.zstd` 里的三条种子事件为 `danger-full-access` + `never` | **属 R5「扩大」**(放松沙箱 + 取消审批,且影响全部现有租户);且种子在多帧 zstd、append-only 的会话日志里,改写=重写日志+重压缩,风险与收益不成比例 → **不做** |
|
|||
|
|
| **B 提示(采用)** | 告知用户「**新开一个会话**即可使用完全权限」 | 只是文案,**不属扩大** → 可直接做 |
|
|||
|
|
|
|||
|
|
依据:新会话(env = `danger-full-access`)**及其子代理**天然是 `danger-full-access` + `never`
|
|||
|
|
(`mode = env ?? 'workspace-write'`;子代理 `mode` 继承会话、`policy` 被强制 `never`,
|
|||
|
|
种子带 `"source":"delegation"`)→ **bash 直接可用、无需审批**。所以存量会话只是"残留",
|
|||
|
|
**提示一次即可解决**,无需动任何权限。
|
|||
|
|
|
|||
|
|
## 实现
|
|||
|
|
|
|||
|
|
`web/login.html` 登录按钮下方插入一行常驻提示:
|
|||
|
|
|
|||
|
|
> 提示:若会话中 shell 频繁要求审批,**新开一个会话**即可使用完全权限(无需逐条确认)。
|
|||
|
|
|
|||
|
|
**为什么选 login.html**:登录直达链路是 `/` →(未登录)→ `login.html` → enter → 实例子域,
|
|||
|
|
所以它是**用户必经且会停留**的页面;且属平台自有页面,零风险、不打断直达体验。
|
|||
|
|
(其他候选:实例 UI 注入需改官方前端,触 R2;门户 `portal.html` 仅 admin 可见。)
|
|||
|
|
|
|||
|
|
## 验证记录
|
|||
|
|
|
|||
|
|
| 检查 | 结果 |
|
|||
|
|
|---|---|
|
|||
|
|
| 文件落位 | `/opt/dshs/web/login.html` 第 29 行含提示 ✅ |
|
|||
|
|
| 生效副本唯一性 | 全盘 `find` 只有这一份是生效副本(另两份在 `/opt/dsh/backups/repo-bak-*` 备份里,不参与服务) |
|
|||
|
|
| 静态服务 | **直连 `127.0.0.1:3080/login.html` 命中 1** ✅(重启门户后) |
|
|||
|
|
| 域访问 | ⚠️ 测试时先用了 `dsh.alotbuy.com`,该域是**旧域名、301 跳转**到 `alotbuy.com`(故首次 grep 得 0);正确域为 **`alotbuy.com`** |
|
|||
|
|
|
|||
|
|
## 注意 / 后续
|
|||
|
|
|
|||
|
|
- 本提示是**常驻文案**(不区分会话新旧),因为客户端无法判定"当前会话是老会话";
|
|||
|
|
文案本身对任何会话都成立(新会话本来就不弹审批,看到也无害)。
|
|||
|
|
- **根治仍是新开会话**;若将来要做 A(存量迁移),需先按 R5 出「权限影响评估」并取得确认。
|
|||
|
|
- 用户的**下一个真实痛点**已不是本条:技能、插件、Python 都已就绪,缺的是**把 MCN 技能投放进去**
|
|||
|
|
(`bundled-skills` 目录至今为空)。
|