目录:痛点 · 职责矩阵 · 落地步骤 · 最小权限工具 · JSON Schema · 超时熔断 · 日志字段 · 检查表
编排面可与《CrewAI 多 Agent 网关路由》、《Semantic Kernel 插件白名单》对照;结构化输出与 Instructor 侧契约见《Instructor 与网关 Schema》;别名与预算参考《LiteLLM Proxy 路由》。购买页与定价页为公开入口、免登录即可选型。
痛点:类型提示≠全网一致
工具面逃逸。仅靠 Agent 进程内注册时,模型仍可能产出未授权工具调用名,绕过你在代码里以为的边界。契约漂移。网关与 Python 各维护一份 schema 时,枚举与附加属性默认值极易分叉,线上悄悄吃进畸形对象。尾延迟与重试放大。没有硬截止与熔断时,长生成占满队列,失败重试会把统一内存与网关线程池一起拖垮。
职责矩阵:谁守哪道门
| 层 | 职责 | 旋钮示例 |
|---|---|---|
| PydanticAI | 开发者体验、本地类型校验、业务编排。 | 工具函数装饰器、结果模型、低温结构化任务。 |
| OpenClaw 网关 | 鉴权、工具名白名单、入参与输出 JSON Schema 强校验。 | 路由级允许列表、inputSchema、Bearer 令牌文件权限六百。 |
| 超时熔断 | 墙钟上限、排队等待、连续失败开路冷却。 | 网关执行秒数、客户端总超时、半开探针配额。 |
| 失败摘要 | 把不可公开细节留在日志,给上游可机读短信封。 | 阶段、错误码、单行提示、关联号、工具名。 |
落地七步(可照抄顺序)
1 远程 Mac 建虚拟环境。执行 python3 -m venv .venv、source .venv/bin/activate、升级 pip 后安装 pydantic-ai 与 pydantic,把版本钉入 requirements.txt,记录解释器绝对路径给 launchd。
2 安装 Node 22 LTS 与 OpenClaw。配置目录放 ~/.openclaw,日志与临时盘指向 SSD;openclaw doctor --json 全绿再接 SSH 隧道。
3 仅回环监听。网关绑定 127.0.0.1:${PORT},令牌文件 chmod 600;开发机用 ssh -R 反代,勿裸奔公网。
4 PydanticAI 指向网关。导出 OPENAI_API_KEY 与 OPENAI_BASE_URL=http://127.0.0.1:${PORT}/v1,确保 Agent 侧注册的工具名集合是网关允许列表的子集。
5 单一 schema 源。由仓库内一份定义生成工具参数与最终答复的 JSON Schema,同步到网关路由;非法请求在转发模型前早返回并带 JSON Pointer。
6 超时与熔断分层。网关墙钟上限略小于客户端总超时(建议差五秒以上);连续数次校验或上游失败打开熔断并冷却数十秒,避免双端重试风暴。
7 失败摘要与落盘。映射超时、校验错误与上游状态码到信封字段,写 JSONL 轮转;默认不回传用户原文与密钥片段。
# 环境变量占位(按 doctor 输出替换端口;密钥勿入库)
export OPENAI_API_KEY="${OPENAI_API_KEY}"
export OPENAI_BASE_URL="http://127.0.0.1:8742/v1"
export OPENCLAW_CONNECT_TIMEOUT_S=8
export OPENCLAW_REQUEST_TIMEOUT_S=55
export OPENCLAW_SDK_TOTAL_TIMEOUT_S=62
export OPENCLAW_BREAKER_THRESHOLD=4
export OPENCLAW_BREAKER_COOLDOWN_S=45
export AGENT_TOOL_ALLOWLIST="search_repo,write_patch,run_tests"
export STRUCTURED_LOG_PATH="$HOME/openclaw-scratch/logs/pydanticai.jsonl"最小权限工具列表
在网关维护按环境分桶的允许工具名表:开发桶可含读仓库与单测,预发桶收紧写文件范围,生产桶只保留最少闭环。Agent 侧装饰器注册的名称必须与表内字符串逐字一致,大小写敏感;任何未登记名在网关直接拒绝并记审计事件,避免模型幻觉出新出口。与 JSON Schema 工具调用与重试一文同读,可把重试策略与指针修复串起来。
JSON Schema 校验
对每次 tool_calls 的 arguments 与最终结构化输出同时使用二零一九年九月草案校验:枚举顺序、additionalProperties 与 oneOf 分支要与 model_json_schema() 视图一致。失败体返回 pointer 与 keyword,便于下一轮自修复;不要把整段模型原文打回客户端,只给运维可读的一行 hint。
超时熔断
建议连接超时个位数秒、网关执行上限数十秒、客户端总超时比网关多半开窗口,这样能在挂起前拿到结构化错误。熔断计数纳入连续校验失败与读超时;健康成功流量不计入。冷却结束用半开探针放行少量请求验证恢复,再全量闭合。Apple Silicon 上同时为 tokenizer 与并行校验预留约两成统一内存余量更稳。
日志字段
每条请求建议固定写入:timestamp、correlation_id、route、model、tool_name、latency_ms、schema_version、breaker_state、outcome。错误再加 stage(鉴权、校验、上游、客户端)、code、pointer、单行 hint。日志落盘路径放可写沙箱分区,单文件接近两百兆即压缩轮转,满足合规留存而不把敏感原文塞进索引。
上线检查表
- □ 网关允许工具名表与 Agent 注册集已做子集校验diff。
- □ 单一 schema 源生成的网关 JSON 与 Pydantic 视图哈希一致或 CI 快照通过。
- □ 连接、网关执行、客户端总超时分层且文档化到运维手册。
- □ 熔断阈值、冷却秒数、半开探针配额在准生产签核。
- □ 失败信封不含用户提示原文、模型全文、供应商密钥片段。
- □ JSONL 路径、权限、轮转与磁盘水位告警已接入。
- □ SSH 隧道 keepalive 与
ControlMaster已开,避免长跑断连。
延伸阅读
需要同一网关语义下的可观测矩阵时,可读《OpenTelemetry 与 GenAI 可观测矩阵》;检索类工具与信封字段命名可对照《Haystack 2.x 远程 Mac 网关》。