Skip to main content

目标与前置条件

composition 接受公共 model override 和显式命名的扩展工厂。ObservedFakeProvider 保持调用接口,计数实际请求,并断言每个请求都包含选中的项目 context,随后委托给网页可见的确定性 provider。 项目 contributor 工厂返回 StaticContextContributor,注册名与 context.contributors 一致。不从 YAML 中任意导入代码,执行哪些扩展由应用程序明确决定。 这是完整的 provider 替换和 context 集成示例,不是新的传输客户端。真实 provider 使用配置章节中的配置与显式 credential resolver。替换 store、sink、sandbox 前阅读扩展索引:只有相同 Python 方法签名不能保证持久化和安全契约不变。 需要 Python 基础;声明支持 Python ≥3.10,本轮本地验证使用 Python 3.12.7。每章可独立运行;继续已有项目时可复用环境和同名文件。以下命令为 macOS/Linux shell。

准备项目

将下方完整文件保存到当前目录。无需 clone 仓库、安装 editable 包或复制 tests。

运行并验证

预期出现以下输出片段(随机 ID 不固定)。每次运行都检查工具结果或持久化断言,成功退出码为 0。

行为与支持边界

不存在对所有 provider 的通用兼容保证。codec、continuation、tool schema 与 loss policy 必须匹配。检查 typed failure,不能关闭 loss 检查接受不兼容响应。

练习与参考答案

同时修改 config 与 extensions 中 contributor 名称;只改一边应产生配置或扩展失败。

常见错误与清理

ModuleNotFoundError:确认已激活安装指定 wheel/源码版本的环境,并保存本页所有文件。root 已存在:换一个新 --root,不要覆盖需要保留的证据。断言失败:检查第一个失败的工具或 typed error;不要只依赖最终文字。退出所有进程、停止 board 后,可自行删除本章新建且不再需要的运行目录;保留要调试的 SQLite、journal 和报告。

完整文件:复制到项目根目录

notes.py
agent.yaml
provider_extension.py

下一步与 API

API Reference · Configuration · Learning path · Next Source file (可选;全部所需代码已在本页)