向陈洁汇报「AI 助手运行方式」:提纲 v1(吸收四路评审后)
由 v0〈仓库引用;未随包提供〉 改出。吸收了四份评审(陈洁视角〈仓库引用;未随包提供〉、论证链〈仓库引用;未随包提供〉、原型实验可执行性〈仓库引用;未随包提供〉、Codex 综合〈仓库引用;未随包提供〉)里有增量的意见;哪条改了、哪条没采纳,见文末「评审处置表」。前提不变:假设 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. 从定位推出的四条要求(半页,改)
按「不依赖待验证数据 → 依赖」排序:
- 确认等待要持久化。每步等用户确认,可能几小时后才回来;让一个容器或协程挂着等,既贵又脆。这是「每会话一容器」与组织者形状最根本的不匹配,且不需要任何实测就成立。
- 能挂平台自己的工具、确认门与记录链,前端不绑任何一家的私有协议(技术方案 §3.3 三条禁令;§3.2 三条硬要求另引)。
- 第一个字要快。C 端对话,10 秒是注意力阈值(NN/g,体验参考不是定律);工程目标 ≤ 3 秒、10 秒红线,产品侧数字待定。
- 空闲驻留开销可控:成本随对话量走,不为空闲等待买单。小规模下两条路差几百元,成本不是换底座的理由,只是形状备注。
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) |