# 向陈洁汇报「AI 助手运行方式」：提纲 v1（吸收四路评审后）

> 由 [v0](汇报提纲-v0.md) 改出。吸收了四份评审（[陈洁视角](评审-提纲v0-陈洁视角.md)、[论证链](评审-提纲v0-论证链.md)、[原型实验可执行性](评审-提纲v0-原型实验可执行性.md)、[Codex 综合](评审-提纲v0-Codex综合.md)）里有增量的意见；哪条改了、哪条没采纳，见文末「评审处置表」。前提不变：假设 Claude Code 引擎路径与 OpenClaw 路径同量级，事后求证。读者是陈洁（技术出身），术语可用，正文只到「是什么、为什么」。

## 一、汇报稿的形

- 正文 3 页：第一页半讲议题边界与定位，一页半讲选项与比较，最后一页讲选择、代价与要的决定。附录 A、B、C、E 附上；**附录 D 是内部评审记录，不附给陈洁**，其问答页只白晨自用。
- 正文两张表（定位对比、选项对比）＋一张图（架构与信任边界图，不是时序赛跑图）。
- **数字纪律（改）**：正文只放三类数字——首响（标清「OpenClaw 引擎 2026-08 历史记录；Claude Code 引擎本轮按同量级假设，待核」）、一次 5 分钟对话在 30 分钟回收配置下计费约 36 分钟、原型实测的平台层开销。**不出现**「人均几元」「1 万元是固定设施摊的」「标签页不关永不计费」——前两条等于替陈洁说「那不贵」并评价他部门的账单结构（仓库无账单，全是反推）；第三条是二手源码推断未抓帧，Router 是他团队写的。这三条留附录 A 并标待验证。
- **责任归属的说法（改）**：「运行环境复用 ndclaw」这个前提是白晨自己 0904 定的，不是陈洁定的（0903 录音里说「接自家人快」的是白晨本人，议题还是能力供给不是助手运行时）。汇报里揽回来说：「0902 的调研本来就建议团团自建，0904 我把运行环境写成复用 ndclaw、没把首响和确认等待当条件；这次是我自己补上这两条重评。」

## 二、正文结构（六节）

### 0. 议题与边界（半页，不先下结论）

- 本次只决定一件事：**团团（平台 AI 助手）的对话循环跑在哪**。
- 三条不动：AI 员工的生产能力继续经 A2A 接 ndclaw；0912 定的个人工作台两条路线（路线 A 用 ndclaw 跑 Skill 生成页面）不动；资产通道代跑外部技能的环境首选 ndclaw 运行时——ndclaw 在平台里的位置是「能力与代跑环境」，不是被抛弃。
- 团团的范围来自 0916 正式设计稿《工作台策划说明》第三节（统一意图入口、五类意图、每步复述并等确认），让陈洁不是在这个汇报里第一次知道团团要选底座。

### 1. 平台 AI 助手是什么（1 页）

定位原话两句（技术方案「组织者，自己不产出内容」；设计稿「交给团团」）。对比表**左列改用 ndclaw 自己的设计语言**，不替人家定义产品：

| | ndclaw 运行时（每会话一容器）的设计目标 | 平台 AI 助手（团团） |
|---|---|---|
| 为谁设计 | 一个用户 × 一个会话 × 一个独立工作环境：EFS 按会话隔离、STS 作用域凭据、POSIX uid 隔离、单用户配置（daemon README 自述） | 理解需求、拆任务、找到该用哪个 AI 员工、发起并等确认 |
| 一次对话的形状 | 长会话、多步执行、有中间产物、执行期间会话必须活着 | 短轮次、判断为主；**每一步停下等用户，用户可能几小时后才回来** |
| 需要什么 | 独立进程或容器、文件系统、技能加载 | 平台业务接口、确认门、记录链、**确认等待可持久化**；首期工具白名单下不配每会话通用执行沙箱 |
| 谁产内容 | 助手本身 | AI 员工（在 ndclaw 等能力方运行，异步任务） |

收尾两句：真正要跑代码、产文件的活在技术方案 §4.1 已切给资产通道，与助手不共用会话；「不需要沙箱」的准确说法是「首期工具白名单（无代码执行、浏览器、任意上传件解析）下不配每会话通用执行沙箱」，身份、凭据、配额、工具权限、故障隔离一条不少。

### 2. 从定位推出的四条要求（半页，改）

按「不依赖待验证数据 → 依赖」排序：

1. **确认等待要持久化**。每步等用户确认，可能几小时后才回来；让一个容器或协程挂着等，既贵又脆。这是「每会话一容器」与组织者形状最根本的不匹配，且不需要任何实测就成立。
2. **能挂平台自己的工具、确认门与记录链，前端不绑任何一家的私有协议**（技术方案 §3.3 三条禁令；§3.2 三条硬要求另引）。
3. **第一个字要快**。C 端对话，10 秒是注意力阈值（NN/g，体验参考不是定律）；工程目标 ≤ 3 秒、10 秒红线，产品侧数字待定。
4. **空闲驻留开销可控**：成本随对话量走，不为空闲等待买单。小规模下两条路差几百元，**成本不是换底座的理由**，只是形状备注。

### 3. 选项与比较（1 页，改为两层决策）

**第一层：运行环境放哪。** 三个选项＋一个要正面回答的「第四选项」：

| 选项 | 是什么 | 优点 | 缺点（只放事实级，推断标注） | 什么情况下该选它 |
|---|---|---|---|---|
| **一、托管在 ndclaw 运行时** | 每会话一容器跑 ndclaw 的引擎 | 现成；有隔离机制与维护团队；技能与模型目录现成；首期运行保障建设少 | 会话驻留开销（30 分钟回收配置下 5 分钟对话计费约 36 分钟）；确认等待期间容器必须活着；首响 OpenClaw 历史记录 25～60 s（ndclaw 自评池内预跑可压到约 5 s＋6 s 建会话，仍贴 10 s 线；Claude Code 路径待核）；前端要接 OpenClaw 原生 WS 协议（可用平台事件翻译器保护，代价待核）；三类改法里只有「多用户共享容器」能得到按请求计费与秒级首响，而它改变 daemon 的安全模型 | 助手要替用户跑代码、操作浏览器、解析上传件时——即资产通道；或在现有支持范围内能达体验与隔离目标且交付更早 |
| **二、平台常驻 Python 运行层（推荐）** | 平台自己的常驻服务里跑对话循环；工具＝平台业务接口；确认门本地挂、待批项落库；部署边界按凭据裁决（同 FastAPI 进程，或无业务凭据的引擎服务＋受控工具服务） | 免去逐会话启动与专属空闲容器；确认等待落库不占进程；与平台同栈；端到端首响以原型实测为准 | 平台新增一个长期维护的运行组件：断流、重启、过期确认、越权、预算耗尽的恢复语义自担（维护人与备份人待定）；若同进程需安全边界评审，若独立服务多一跳；steering／断线续传任何库都不给；技术方案 §3.1／§3.4／§8.1「每会话独立进程或容器」要同步修订 | 助手是判断型组织者、工具是平台自己的接口时——即现在 |
| **三、由 ndclaw 侧新增共享常驻的轻量引擎模式** | 让 ndclaw 团队做一个多会话共享的引擎服务 | 归属不变 | 做出来就是选项二，只是归属换到 ndclaw；工具、确认门、记录链仍在平台侧，等于让 ndclaw 维护一段只为平台服务的循环 | ndclaw 团队主动要做时 |
| **四、AI Hub（Dify 派生）上建 Agent 应用，平台经 API 调** | 公司已有、进程内、SSE | 现成、无每会话容器 | 三类确认门停点与审批留痕 Dify 不替平台做；工具是 Dify 插件不是平台函数；记录链落 Dify 侧；发版是跨部门依赖【AI Hub 是否归陈洁，待白晨确认】 | 助手只需问答、不需业务写操作时 |

**第二层：常驻内部用什么。** 只在选项二下比：pydantic-ai（4.45）起步、自建薄（4.33，借 Pi 设计）作出口、Pi Node sidecar 注脚（附录 B）。附录 B 的矩阵只服务这一层，**不能反过来当第一层的理由**。选项二的库缺点写全：pydantic-ai 30 天 16 版，「minor 不 breaking」是承诺不是保证（v2.33 已被上游波及），下一个 major 最快本季；`Model`／`Agent`／`DeferredToolRequests` 是私有抽象，换底座时 loop 周边胶水重写、业务工具与历史 JSON 不动；`ZaiModelProfile` 配公司网关能否直接用待实测。

**一张图（改）**：画两条路径**共有**的平台界面、公司网关、受控工具、审批与记录库，突出运行单元在哪、凭据在哪、A2A 分支在哪；启动开销只作标注并分「历史／实测／假设」三种角标，右侧秒数在原型实测前画虚线。完整分段时序进附录 E。图上明写「助手首个有效文本」与「AI 员工任务完成（A2A 专家冷启动约 200 s，异步）」是两个指标。

**与旧结论的关系（改）**：一句话交代三段——0902 的 36 页已否掉「团团托管 ndclaw」（理由正是私有协议、每会话一容器、30 分钟回收对实时对话的影响）；0904 我把运行环境写成复用、没把首响与确认等待当条件；0911 与陈洁定的工作台路线 A 是「跑一个 Skill 生成页面」的生产型任务，正是该在 ndclaw 跑的那类，与团团不冲突。

### 4. 选择、代价与分工（半页）

- 按当前假设与明确的业务／隔离边界，**选项二起步**，内部用 pydantic-ai；把工具接口、对话历史 JSON、确认门协议三样写成平台自持边界，换成自建时业务面不动（迁移量级见附录 B）。
- **分工表改为四列**：已有可复用（ndclaw：AI 员工运行、技能、沙箱；公司 AI Gateway：模型网关与模型目录，两边共用——**待核实 ndclaw 实际是否走自己的 LLM Proxy＋Ark**）／三路共同必建（业务授权、审批持久化、断流恢复、记录链、上线运维）／各路新增（选项二：对话循环＋运行保障；选项一：协议翻译器＋驻留成本）／维护责任（对话循环归平台，维护人与备份人 ×××）。
- **平台向 ndclaw 要的三件事**（36 页 §5）：A2A 长任务保活、产出物回传通道、服务账号预批——改造量级中／小～中／小～中；写明「助手对话同步、AI 员工任务异步，200 s 不在对话首响里」。
- **要陈洁的决定**：同意团团按选项二建；接受运行形态从「每会话独立进程或容器」改为「多会话共用常驻进程＋凭据与会话逻辑隔离」，批准后同步修订技术方案 §3.1／§3.3／§3.4／§8.1 及降级措辞（替代隔离与验收由平台承担）；分工按表。

### 5. 风险、预留与回改条件（半页）

- 沙箱回来的触发表（附录 D §二.3）：用户脚本代跑、浏览器、不可信大文件解析、重型计算、租户隔离要求——进资产通道，助手只发请求。
- 凭据边界按裁决落，原型不证明它。
- **条件性决定**：若后续证据显示选项一在可接受支持与维护代价下同时达四条要求，重新比较交付与总增量成本，不预设改选；若选项二原型或安全边界不达标，撤回对应收益承诺。触发条件、责任人、复核时点列附录 E。

### 6. 附录

A ndclaw 运行时成本与延迟考古（正文引用段落先做一致性清单：池内预跑可降首轮 vs「前四类不改 18 s 下限」两处要标适用边界）· B 候选库对照 · C 业界做法与首响研究（只证明运行形态可选、执行环境可拆，不证明容器必慢）· E（新）架构图、原型实测数据、回改触发表。D 不附。

## 三、汇报前清单（改）

| # | 事 | 谁 | 时长 | 阻塞？ |
|---|---|---|---|---|
| 0 | **前置条件**：~~批 `pydantic-ai-slim` 进 `.claude/approved-packages.txt`~~（0921 白晨已批、已写入）；拿到公司 AI Gateway（`https://new-ai-gateway.aiae.ndhy.com/v1`）的 key——先试 venture-os 的 BTS 应用能否签 `POST /v1/key`，不行就找 ai-hub 侧要或按 daemon README 从 dev 的 Secrets Manager 取；key 有 30 天轮换，会前一天核有效期 | 白晨 15 分钟 | 前一晚 | **阻塞一切** |
| 1 | **原型＋三臂首响实测**：`apps/api/experiments/assistant_probe/` 独立 uv 项目（不进 `app/`，避开 100% 覆盖与契约门禁）；pydantic-ai＋两个工具（查能力目录；发起任务请求 `requires_approval`）；FastAPI 两个 SSE 端点（消息流、审批续跑），历史真走一次 JSON 往返；三臂各 ≥20 次交替：裸 httpx 直连网关基线／进程内／经 SSE 到客户端；首响＝第一个业务事件（文本增量或工具调用事件，`reasoning_content` 不算），思考开／关各一组；判据「SSE 臂与基线中位差 < 200 ms」即平台层开销可忽略，绝对值分开报；最小链补「取消零写入、重复确认至多一次业务写入」；产物：代码、JSONL、统计表、30 秒演示页＋录屏 | 代理 8 小时 | 一天 | 阻塞 |
| 2 | 架构与信任边界图（时序进附录 E，右侧秒数等 1 出数） | 代理半小时，排在 1 之后 | — | 阻塞 |
| 3 | **已定（0921 白晨）**：工具接口＝平台函数、契约不省（Pydantic 入参、说明、错误响应齐全，直接注册给对话循环；要暴露成开放协议时再包一层）；凭据边界＝无凭据的常驻引擎服务＋受控工具服务（引擎进程不持有业务数据库凭据，工具调用回到平台服务执行；技术方案 §3.2 条文不改）。选项二的「是什么」与图按此写 | 白晨 | 已办 | 已解除 |
| 4 | 向 ndclaw 运维要一次 claude-code 路径的首响记录、当前 `spare`、池内初始化是否已改造（一条消息，不等完整实验） | 白晨 | 半小时 | 升为阻塞：这是陈洁唯一能用自家知识当场反驳的数字 |
| 5 | **已核（0921 代理查 daemon 只读检出）**：两条路都有。claude-code 引擎经公司 AI Gateway（`cdk.json:18-22`，凭据记录 `claude-code{env}/services/ai-gateway-keys/<service_code>`，容器以 `ANTHROPIC_AUTH_TOKEN` 消费）；OpenClaw 引擎历史上走 daemon 自己的 LLM Proxy 栈到火山 Ark（`app.py:153-184`、README `ark.cn-beijing.volces.com`）。分工表写「团团与 ndclaw 的 claude-code 引擎共用公司 AI Gateway」 | 代理 | 已办 | 已解除 |
| 6 | 确认 AI Hub（Dify）是否归陈洁、选项四要不要正面写 | 白晨 | 一句话 | 阻塞（决定第 3 节有几行） |
| 7 | 产品侧确认「AI 执行优先在会话中直接完成」的含义——判据改为「会话内要不要执行代码、操作浏览器、解析上传件」，用具体用户脚本问，不诱导答案 | 白晨→吴梦赢 | 等回 | **降为不阻塞**：先按「文本类回答」写并标确认中 |
| 8 | 附录 A 正文引用段落一致性清单；附录 D 压成一页问答（白晨自用，三格「待补」如实标） | 代理 1 小时 | — | 不阻塞 |
| 9 | 账单拆分 | 会后 | — | 不做（正文不讲金额） |

不做：daemon 路径配对对照实测（白晨主动放弃并承担：图左侧只能标「历史记录（OpenClaw 引擎、Ark 模型）」，措辞是「历史记录对实测」不是「实测对比」）；候选库横向压测；把附录 C 当「容器必慢」的背书。

## 四、推进顺序

前一晚：白晨办 0、3、5、6，发 4 与 7 的消息 → 次日：代理做 1（8 小时）→ 2 → 8 → 按本提纲写正文 → 白晨审 → 汇报。

## 五、评审处置表（哪条采了、哪条没采）

| 来源 | 意见 | 处置 |
|---|---|---|
| 陈洁视角 1、7 | 责任揽回；左列用 daemon 自己的话 | 采（§一、§1） |
| 陈洁视角 2；论证链 7b | 0912 工作台路线 A 不动、切开 | 采（§0、§3） |
| 陈洁视角 3、4、5；论证链 5、12；Codex 4、6 | 首响标引擎与来源；图不做秒数赛跑；不做 daemon 对照要写明是主动放弃 | 采，图改为架构与信任边界图；对照实测仍不做（白晨已定） |
| 陈洁视角 6、8、9；论证链 8、10b | 模型网关待核；平台向 ndclaw 要三件事；200 s 异步说明；资产通道首选 ndclaw | 采（§0、§4，清单 5） |
| 陈洁视角 11、12；论证链 6 | 正文不讲金额与账单结构、不讲标签页永不空闲；成本降备注 | 采（§一数字纪律、§2 第 4 条） |
| 陈洁视角 13、14；论证链 4；Codex 7 | 选项二缺点写全、库风险并列、迁移成本给量级、共同必建工作不记在库头上 | 采（§3 第二层、§4 四列表） |
| 陈洁视角 16；论证链 12 | 附录 D 不附／直接附 | 采「不附」：标题就是「扮演陈洁质询」，观感风险大于增量 |
| 陈洁视角 17 | 团团范围引 0916 设计稿 | 采（§0） |
| 论证链 1、2 | 要求 3 改引 §3.3；新增「确认等待持久化」并排第一；「预热池帮不上」改口 | 采（§2、§3） |
| 论证链 3；Codex 2 | 补 AI Hub／Dify 与「ndclaw 侧新增共享模式」两个选项；两层决策；附录 B 不倒推第一层 | 采（§3） |
| 论证链 9、11；Codex 8 | 选项三触发条件措辞；产品确认判据改为执行风险、不诱导 | 采（§3 表、清单 7） |
| Codex 1 | 第 0 节不先下结论 | 采一半：第 0 节只给议题与边界，结论在 §4——但保留白晨要求的「定位→选项→优缺点→选择」顺序 |
| Codex 3 | 选项一别写成备胎；区分三类改法 | 采（§3 表） |
| Codex 5 | 收益不写满、「用户不说话不花钱」删 | 采（§2、§3） |
| Codex 9、13 | 原型判据可失败；条件性决定与回改触发 | 采（清单 1、§5） |
| Codex 10、11 | 分工表四列；批准范围含技术方案修订 | 采（§4） |
| 原型可执行性 1～4、二、三 | 三臂拆平台开销与模型 TTFT；原型放 experiments；前置条件 key 与白名单；坑清单 | 采（清单 0、1） |
| 原型可执行性 四 | 图排在实验后；产品确认降为不阻塞；问答页三格待补 | 采（清单 2、7、8） |
