cc 收尾解析补不过脱敏的失败诊断
Project CI / AI game creator shell Rust crates (push) Successful in 1m48s
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled

- claude_code_cli:parse 之后写 claude-parse-done chars=N / claude-parse-error 分段 trace,失败时再往 stderr 打一行 [agc-cc-direct] parse failed: <原因>
- 起因:2026-10-02 18:19 那轮模型已回复(33/103 tokens,149 秒)却在 claude-parse-start 之后被丢弃收成 host_dropped,AppData 日志因文本含 turnToken= 被整体脱敏,看不到原因
This commit is contained in:
kdletters
2026-10-02 18:47:13 +08:00
parent 4b02bcc7b0
commit a5c2ddb917
@@ -831,7 +831,17 @@ pub(crate) async fn direct_game_creator_claude_code_chat_at(
.collect::<Vec<_>>();
stream.push(String::new());
direct_turn_trace("claude-parse-start");
parse_direct_stream_result(stream.join("\n").as_bytes(), observer)
let parsed = parse_direct_stream_result(stream.join("\n").as_bytes(), observer);
match &parsed {
Ok(text) => direct_turn_trace(&format!("claude-parse-done chars={}", text.chars().count())),
Err(error) => {
// 这一段必须走 stderr:AppData 日志的脱敏会把含 turnToken= 的整行替换掉,
// 收尾失败时看不到任何原因(真实案例:2026-10-02 18:19 模型已回复但回合被丢弃)。
eprintln!("[agc-cc-direct] parse failed: {error}");
direct_turn_trace("claude-parse-error");
}
}
parsed
}
fn parse_direct_stream_result(