用途:为 @copilotkit/aimock 编写 AI 应用测试夹具。aimock 是零依赖的 mock 基础设施,跨进程在真实端口运行 HTTP 服务,支持 OpenAI、Anthropic、Gemini、AWS Bedrock、Azure OpenAI、Vertex AI、Ollama、Cohere、OpenRouter 等提供商,并提供 MCP、A2A、AG-UI 与向量库 mock,以及对 OpenAI Responses/Realtime、Gemini Live 的 WebSocket 支持。
核心模型:夹具 = 匹配条件 + 响应,先匹配者胜,所有提供商共用一个夹具池,start() 后仍可动态修改,可用 sequenceIndex 实现顺序响应。匹配字段包括 userMessage(字符串或正则)、systemMessage、inputText、toolName、toolCallId、toolResultContains、model、responseFormat、endpoint,以及自定义 predicate;所有指定字段为 AND 关系,空 match 为兜底。多轮场景建议用无状态匹配:turnIndex、hasToolResult、toolResultContains;sequenceIndex 仅适合单客户端隔离测试。
响应类型:文本 content、工具调用 toolCalls(arguments 可为对象或字符串)、有序 blocks(可工具先于文本)、embedding、image/images、audio(TTS)、transcription、video、error 与 status;还支持流式时序 streamingProfile、截断/断开模拟、chaos 概率故障注入和 nextRequestError 单次错误。
用法:可用代码注册 mock.onMessage、mock.addFixture、mock.onEmbedding、mock.onJsonOutput、prependFixture,或用 JSON 夹具文件经 loadFixtureFile / loadFixtureDir 加载;JSON 中不支持 RegExp 和 predicate。测试间用 resetMatchCounts() 重置计数,reset() 会清空夹具池。建议始终添加兜底夹具,工具结果分支用 predicate 而非 userMessage 以避免死循环。
限制:JSON 夹具文件无法使用正则与 predicate;sequenceIndex 为服务端计数,共享部署下并发会出错;blocks 顺序并非所有提供商都可观测。具体安装命令与版本信息资料未提供。