mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-22 08:15:53 +00:00
fix: 修复内存溢出问题,compact 时清理持久增长数据结构
- compact 时清理 contentReplacementState(seenIds/replacements) - logError() 使用 shortErrorStack 替代完整 err.stack,减少 GC 压力 - permissionDenials 每次 submitMessage 清空,防止无限增长 - SSE 缓冲区添加 1MB 上限,防止畸形数据无限累积 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -305,8 +305,9 @@ import {
|
||||
import { deserializeMessages } from '../utils/conversationRecovery.js';
|
||||
import { extractReadFilesFromMessages, extractBashToolsFromMessages } from '../utils/queryHelpers.js';
|
||||
import { resetMicrocompactState } from '../services/compact/microCompact.js';
|
||||
import { runPostCompactCleanup } from '../services/compact/postCompactCleanup.js';
|
||||
import { runPostCompactCleanup, registerCompactCleanup } from '../services/compact/postCompactCleanup.js';
|
||||
import {
|
||||
createContentReplacementState,
|
||||
provisionContentReplacementState,
|
||||
reconstructContentReplacementState,
|
||||
type ContentReplacementRecord,
|
||||
@@ -1778,6 +1779,9 @@ export function REPL({
|
||||
const [contentReplacementStateRef] = useState(() => ({
|
||||
current: provisionContentReplacementState(initialMessages, initialContentReplacements),
|
||||
}));
|
||||
registerCompactCleanup(() => {
|
||||
contentReplacementStateRef.current = createContentReplacementState();
|
||||
});
|
||||
|
||||
const [haveShownCostDialog, setHaveShownCostDialog] = useState(getGlobalConfig().hasAcknowledgedCostThreshold);
|
||||
const [vimMode, setVimMode] = useState<VimMode>('INSERT');
|
||||
|
||||
Reference in New Issue
Block a user