mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-18 06:15:51 +00:00
feat: 尝试深度拷贝数据以分离引用
This commit is contained in:
@@ -336,12 +336,31 @@ export type RecompactionInfo = {
|
||||
export function buildPostCompactMessages(result: CompactionResult): Message[] {
|
||||
return ([result.boundaryMarker] as Message[]).concat(
|
||||
result.summaryMessages,
|
||||
result.messagesToKeep ?? [],
|
||||
stripToolUseResults(result.messagesToKeep),
|
||||
result.attachments,
|
||||
result.hookResults,
|
||||
)
|
||||
}
|
||||
|
||||
/** Release large tool result payloads from kept messages after compaction.
|
||||
* toolUseResult is only used for UI rendering, not API calls. */
|
||||
function stripToolUseResults(messages: Message[] | undefined): Message[] {
|
||||
if (!messages) return []
|
||||
return messages.map(msg => {
|
||||
if (
|
||||
msg.type === 'user' &&
|
||||
'toolUseResult' in msg &&
|
||||
msg.toolUseResult !== undefined
|
||||
) {
|
||||
const { toolUseResult, ...rest } = msg as Message & {
|
||||
toolUseResult: unknown
|
||||
}
|
||||
return rest as Message
|
||||
}
|
||||
return msg
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Annotate a compact boundary with relink metadata for messagesToKeep.
|
||||
* Preserved messages keep their original parentUuids on disk (dedup-skipped);
|
||||
|
||||
Reference in New Issue
Block a user