> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wangenhui.top/llms.txt
> Use this file to discover all available pages before exploring further.

# 动手运行与验收

> 运行本教程的本地 Demo，区分离线机制验证、真实 API 接线和生产系统。

## 15. 动手运行：先验证机制，再接真实模型

所有配套文件在本教程同目录的 `demos/`。本地教学 demo 仅使用 Python 标准库和 Node 内置模块；Python 需要 3.11+，本次实际使用 3.14.7。

```bash theme={null}
cd demos/codex-harness
python3 demos/runtime_demo.py
python3 demos/context_memory_demo.py
node demos/ptc_demo.mjs
python3 demos/computer_loop_demo.py
python3 -m unittest discover -s demos -v
```

### 15.1 本次实测记录

| 项目                       | 本次结果                             | 结论边界                |
| ------------------------ | -------------------------------- | ------------------- |
| Python 机制与离线 API 契约测试    | 14 项全部通过（9 项运行时/存储 + 5 项 API 接线） | 不是 Codex 官方测试集      |
| Runtime demo             | 旧方案被拒绝，两个工具返回 stale 标记           | 独立工作是脚本模拟，不是真实 LLM  |
| Context / Memory demo    | 历史可召回、作用域隔离、来源撤回和过期标识正常          | 使用虚构结构化事实，没有模型抽取    |
| PTC 本地 demo              | 输出 partial，保留成功结果、失败和来源          | 静态可信代码，不是隔离 V8 宿主复刻 |
| 本机 App Server probe      | `initialize` 成功                  | 没有创建线程，没有请求模型       |
| Python/JavaScript 代码语法检查 | 通过                               | 不证明在线 API 权限与行为     |
| 模型 API demos             | 未实际调用                            | 需要 API Key、模型权限与预算  |
| 虚构 GUI 闭环                | 本地断言通过                           | 不涉及真实截图、视觉模型或桌面控制   |
| 真实 GUI / Benchmark / 后训练 | 未运行                              | 不能宣称对应效果已验证         |

App Server probe 首次在受限沙盒里提前退出，获准在沙盒外重试后初始化成功。探测进程已结束，不会留下后台 Agent 任务。

### 15.2 真实 App Server 探测

```bash theme={null}
python3 demos/app_server_client.py
```

它不会发送 `thread/start` 或 `turn/start`。若要做自己的客户端，应先生成当前版本协议：

```bash theme={null}
codex app-server generate-ts --out ./schemas
codex app-server generate-json-schema --out ./schemas-json
```

schema 文件只表示接口约束，还需要把审批、错误、通知和生命周期接完整。

### 15.3 真实模型 API 示例

先在本机私密环境变量中配置 `OPENAI_API_KEY`，不要写进教程或 Git。本文没有读取或使用你的 API Key。确认模型和账号支持后，可运行：

```bash theme={null}
python3 demos/live_api.py direct
python3 demos/live_api.py ptc
python3 demos/live_api.py async
python3 demos/live_api.py compact
```

WebSocket steering 示例需要 `ws`：

```bash theme={null}
npm install ws
node demos/steering_api.mjs
```

API 示例固定使用截图对应的 Astra 模型 ID `gpt-6-astra`，不悄悄降级换模型。每种模式单独运行，避免违反 async/PTC、steering/自动 compaction 等组合约束。在线示例均未实测；额度、网络、API 演进可能影响运行。出现不支持字段时先核对官方文档与模型权限，不要猜字段名。

### 15.4 Demo 与生产系统的差距

本地 Runtime 的 job 表在内存中，事件日志可持久化，但**没有实现崩溃后恢复正在运行的任务或跨进程幂等**；事件落库与任务派发也不是一个原子事务。生产设计可增加 outbox、持久 job ledger、租约与恢复时的执行状态对账。

取消只对 demo 的 asyncio 协程有效；ThreadPool 中运行的 Python 函数和真实 OS 子进程需要另外的终止设计。API 示例用于展示调用协议，没有完整的流式断线恢复、token 预算管理、分布式重试或生产可观测性。

### 15.5 一条适合面试准备的学习路线

| 练习                | 产物              | 验收                   |
| ----------------- | --------------- | -------------------- |
| 1：基础 loop 与分层     | 自己画架构图          | 解释模型、工具、执行状态在哪里      |
| 2：运行 runtime demo | 读事件日志           | 找出工具等待期间做了什么         |
| 3：改变需求            | 构造旧 revision 提交 | 必须被拒绝                |
| 4：历史换窗            | 让错误码离开当前窗口      | 仍可从归档找到原文            |
| 5：Memory 冲突       | 加入新事实、撤回来源      | 不跨项目读出，过期需复核         |
| 6：PTC 聚合          | 一个模块失败          | 最终结果标 partial，成功来源保留 |
| 7：真实 API          | 固定模型跑 10 个小任务   | 记录请求、工具结果、成本和失败原因    |
| 8：公平比较            | 同模型比较串行与并发      | 正确性不退化，再讨论延迟收益       |

<a id="sources" />
