| 组合 \ 臂 | 直传 naive 原样搬运 payload |
剥离 strip 删掉全部思考与凭证 |
中立 neutral 凭证丢弃 + 明文重铸 |
|---|---|---|---|
| kimi → gemini kimi-k3 → gemini-3.5-flash |
3 次调用处切换
切换失败 400
|
3 次调用处切换
切换失败 400
|
3 次调用处切换
接管完成 200
|
| gemini → kimi gemini-3.5-flash → kimi-k3 |
2 次调用后切换
接管完成 200
|
2 次调用后切换
接管完成 200
|
2 次调用后切换
接管完成 200
|
// gemini-to-kimi 之外的 kimi-to-gemini-naive.json → exchanges[1].error_body { "error": { "code": 400, "message": "Function call is missing a thought_signature in functionCall parts. This is required for tools to work correctly, and missing thought_signature may lead to degraded model performance. Additional data, function call `default_api:get_flight_price` , position 2. Please refer to https://ai.google.dev/gemini-api/docs/thought-signatures for more details.", "status": "INVALID_ARGUMENT" } }
thoughtSignature 挂在工具调用上,不在思考里。kimi 本身不签发任何凭证,所以直传臂和剥离臂交出去的 functionCall 长得一模一样——两条臂报同一个错,不是巧合。
exact_two_call_switch 因此为 false,这是记录事实而非实现缺陷。
| 单元 | 臂 | 交接请求体积 | 思考字符数 | 凭证处理 | 结果 |
|---|---|---|---|---|---|
| gemini → kimi | naive | 4,814 B | 5,925 | 原样搬运(thoughtSignature 随 functionCall 走) | 200 |
| gemini → kimi | neutral | 2,709 B | 2,301 | 丢弃,摘要作为普通文本 | 200 |
| gemini → kimi | strip | 762 B | 2,660 | 全部删除 | 200 |
| kimi → gemini | naive | 1,038 B | 224 | 无凭证可带(kimi 不签发) | 400 |
| kimi → gemini | strip | 814 B | 461 | 无凭证可带(kimi 不签发) | 400 |
| kimi → gemini | neutral | 750 B | 2,004 | 重铸 functionCall,明文加前缀 | 200 |
thoughtSignature 这一格在不在,不检查是谁签的;而反过来,gemini 签出来的轨迹到了缺凭证的接收端就直接 400。校验强度的不对称,比格式差异更容易让人踩坑。missing a thought_signature,交出去的 functionCall 结构完全一致。这不是重复实验,是「无凭证可搬」这个事实的直接后果。[接手前由 kimi 留下的思考记录] 前缀),工具调用 id 按目标厂商重铸,遇到强制要求凭证的接收端再单独补发。| 实验 | 5-1(跨厂商轨迹接管) |
| run_id | exp5-1-handoff-20261001T142610Z-record |
| 起止(UTC) | 14:26:10.816 → 14:29:11.356 |
| 环境 | Python 3.12.12 · macOS-15.6-arm64 · requests 2.33.1 |
| 模型 | kimi-k3 · gemini-3.5-flash claude-haiku-4-5-20251001(未参与) |
| 范围 | 2 providers, 2 directed pairs, 3 arms, 6 cells |
| 缺席原因 | ANTHROPIC_API_KEY in local .env is a placeholder |
| 离线测试 | 28 passed in 0.15s(exit 0,无外部 API) |
| runner_status | finished |
| 文件 | 臂 | 状态 | sha256 |
|---|---|---|---|
| kimi-to-gemini-naive.json | naive | 400 | 83bcb93d45e5 |
| kimi-to-gemini-strip.json | strip | 400 | 67cf2398d590 |
| kimi-to-gemini-neutral.json | neutral | 200 | 0fde7abc6b92 |
| gemini-to-kimi-naive.json | naive | 200 | e00f34326fbd |
| gemini-to-kimi-strip.json | strip | 200 | 46b2bd6c58b8 |
| gemini-to-kimi-neutral.json | neutral | 200 | 862af410072c |