Codex代ç åºä¸çé置详解 | AIçæåç¿»è¯
ç°å¨ææäºæ¸ æ°ç徿¯ã以䏿¯ Codex 代ç åºä¸ âresetâ çå«ä¹ï¼
å¨ codex-rs ä¸ï¼æå 个ä¸åç âresetâ æ¦å¿µï¼
1. /clear ææ å½ä»¤ï¼UI éç½® + æ°è天ï¼
/clear å½ä»¤æ§è¡ä¸¤ä»¶äºï¼
- æ¸ é¤ç»ç«¯ UIï¼transcript åå æ ¼ãè¦çå±ãå»¶è¿åå²è¡ãåæº¯ç¶æï¼
- å¼å§ä¸æ¬¡å ¨æ°çè天ä¼è¯
æ¥èª event_dispatch.rs:32ï¼
AppEvent::ClearUi => {
self.clear_terminal_ui(tui, /*redraw_header*/ false)?;
self.reset_app_ui_state_after_clear();
self.start_fresh_session_with_summary_hint(
tui, app_server, Some(ThreadStartSource::Clear),
/*initial_user_message*/ None,
).await;
}
reset_app_ui_state_after_clear() æ¹æ³æ¸
é¤ï¼
- transcript åå æ ¼
- è¦çå±
- å»¶è¿åå²è¡
- åæº¯ç¶æï¼primedãoverlay_preview_activeãpending_rollbackï¼
ä½å
³é®çæ¯ï¼å®ä¿çäºè天 widget çä¼è¯ç¶æï¼thread_idãmodelãcomposer text çï¼ââæ£å¦æµè¯ clear_only_ui_reset_preserves_chat_session_state æç¡®è®¤ç飿 ·ã
2. /new ææ å½ä»¤ï¼æ°è天ï¼ä¸æ¸
é¤ UIï¼
æ´ç®åââä» å¯å¨ä¸ä¸ªæ°ä¼è¯ï¼ä¸æ¸ é¤ç»ç«¯ï¼
AppEvent::NewSession => {
self.start_fresh_session_with_summary_hint(
tui, app_server, /*session_start_source*/ None,
/*initial_user_message*/ None,
).await;
}
3. WebSocket ä¼è¯éç½®ï¼ä¼ è¾å±ï¼
å¨ core/src/client.rs:958 ä¸ï¼reset_websocket_session() 丢å¼å½åç WebSocket è¿æ¥ç¶æï¼
fn reset_websocket_session(&mut self) {
self.websocket_session.connection = None;
self.websocket_session.last_request = None;
self.websocket_session.last_response_rx = None;
...
}
è¿æ¯ä¸ä¸ªä¼ è¾å±é¢çå ³æ³¨ç¹ââå½éè¦éæ°å»ºç« WebSocket æ¶ï¼å®ä¼æ¸ é¤è¿æ¶çè¿æ¥ç¶æã
4. è®°å¿éç½®ï¼memory/reset APIï¼
ä¸ä¸ªå®éªæ§ APIï¼memory/resetï¼ï¼ç¨äºé置记å¿å·¥ä½ç©ºé´åºçº¿ãå®å¨è®°å¿æ ¹ç®å½ä¸è¿è¡ reset_git_repository()ï¼ä»èææå°æ¤éæªæäº¤çè®°å¿åæ´ãè¿æ¯è®°å¿åç³»ç»çä¸é¨åï¼memories/write/src/workspace.rsï¼ã
5. 轮次åå²éç½®
å¨ app-server/src/thread_state.rs ä¸ï¼current_turn_history.reset() æ¸
é¤å½å轮次累积çå·¥å
·è°ç¨åå²ââè¿æ¯ä¸ç§æ¯è½®æ¬¡çè®°è´¦éç½®ã
æ»ç»ï¼ 大夿°äººå¨ Codex ä¸è¯´ âresetâ æ¶ï¼æçæ¯ /clearââæ¸
é¤ UI å¹¶å¼å§ä¸æ¬¡å
¨æ°çè天ä¼è¯ï¼åæ¶ä¿çä¼è¯é
ç½®ï¼æ¨¡åãæéçï¼ãå
¶ä»ç reset æ¯å
鍿ºå¶ï¼WebSocket è¿æ¥ãè®°å¿åºçº¿ã轮次åå²ç¼å²åºï¼ã
