BigPizzaV3/CodexPlusPlus · error · anyhow::Error
会话文件超过导入大小限制
Error message
会话文件超过导入大小限制
What it means
Thrown by import_rollout_file (via import_rollout) when the session file being imported from disk exceeds MAX_ROLLOUT_BYTES (16 MiB). This is the import-side twin of the export size cap; the offending input is the size of the local rollout file the user picked, checked before its content is read into the import pipeline.
Source
Thrown at crates/codex-plus-core/src/session_share.rs:149
let key = base64::engine::general_purpose::URL_SAFE_NO_PAD
.decode(key_value)
.context("分享链接解密密钥无效")?;
let iv = decode("iv")?;
let ciphertext = decode("ciphertext")?;
if key.len() != 32 || iv.len() != 12 || ciphertext.len() > MAX_ROLLOUT_BYTES + 16 {
bail!("分享数据大小或格式无效");
}
let cipher = Aes256Gcm::new_from_slice(&key).context("创建会话解密器失败")?;
cipher
.decrypt(Nonce::from_slice(&iv), ciphertext.as_ref())
.map_err(|_| anyhow::anyhow!("分享会话解密失败"))
}
pub fn import_rollout_file(home: &Path, source_path: &Path) -> anyhow::Result<Value> {
let bytes = fs::read(source_path)
.with_context(|| format!("读取会话文件失败:{}", source_path.display()))?;
if bytes.len() > MAX_ROLLOUT_BYTES {
bail!("会话文件超过导入大小限制");
}
let content = String::from_utf8(bytes).context("会话文件不是有效的 UTF-8")?;
if let Ok(payload) = serde_json::from_str::<Value>(&content)
&& payload.get("kind").and_then(Value::as_str) == Some("codex-rollout")
{
return import_rollout(home, &payload);
}
let session_id = find_session_id(&content)
.or_else(|| {
source_path
.file_stem()
.and_then(|value| value.to_str())
.and_then(find_uuid)
})
.ok_or_else(|| anyhow::anyhow!("无法从会话文件识别会话 ID"))?;
let title = source_path
.file_stem()
.and_then(|value| value.to_str())View on GitHub (pinned to f2074595a2)
Solutions
- 精简会话文件后重试
- 拆分或截断(如去掉大附件输出)后再导入
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/codex-plus-core/src/session_share.rs:149 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23).
Data as JSON: /api/errors/28feadae88b777b7.
Report an issue: GitHub.