refactor: cleanup unused imports, add conversation summary tracking

- Remove unused MarkdownRenderer import and field from ClaudeCodeComponent
- Add onFirstUserInput callback for conversation summary tracking
- Wire conversation summary in JinkReplSession

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
pull/1/head
abel533 1 month ago
parent 601a1c9ea9
commit 199ad6259b
  1. 17
      src/main/java/com/claudecode/tui/ClaudeCodeComponent.java
  2. 5
      src/main/java/com/claudecode/tui/JinkReplSession.java

@ -3,7 +3,6 @@ package com.claudecode.tui;
import com.claudecode.command.CommandContext;
import com.claudecode.command.CommandRegistry;
import com.claudecode.console.BannerPrinter;
import com.claudecode.console.MarkdownRenderer;
import com.claudecode.core.AgentLoop;
import com.claudecode.core.TokenTracker;
import com.claudecode.tui.UIMessage.*;
@ -64,7 +63,6 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
private final int toolCount;
private final int cmdCount;
private final TokenTracker tokenTracker;
private final MarkdownRenderer markdownRenderer;
private final Runnable onExit;
// --- 内部状态 ---
@ -76,8 +74,8 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
/** 权限确认回调(由权限请求设置,用户输入后调用) */
private volatile Consumer<String> permissionCallback;
/** 流式 Markdown 渲染状态 */
private MarkdownRenderer.StreamState streamMdState = new MarkdownRenderer.StreamState();
/** 首次用户输入回调(用于 conversation summary) */
private Consumer<String> onFirstUserInput;
public ClaudeCodeComponent(AgentLoop agentLoop,
CommandRegistry commandRegistry,
@ -94,7 +92,6 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
this.toolCount = toolCount;
this.cmdCount = cmdCount;
this.tokenTracker = tokenTracker;
this.markdownRenderer = new MarkdownRenderer(null); // 不直接打印,用 renderLine()
this.onExit = onExit;
}
@ -515,6 +512,10 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
}
// Agent 调用
if (onFirstUserInput != null) {
onFirstUserInput.accept(text);
onFirstUserInput = null; // 只触发一次
}
addMessage(new UserMsg(text));
setState(new TuiState("", getState().messages, 0, true, ""));
runAgent(text);
@ -523,7 +524,6 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
/** 在后台线程运行 Agent 循环 */
private void runAgent(String userInput) {
agentRunning.set(true);
streamMdState = new MarkdownRenderer.StreamState();
Thread.startVirtualThread(() -> {
long startTime = System.currentTimeMillis();
@ -617,6 +617,11 @@ public class ClaudeCodeComponent extends Component<ClaudeCodeComponent.TuiState>
setState(new TuiState(s.inputText, s.messages, s.scrollOffset, thinking, text));
}
/** 设置首次用户输入回调 */
public void setOnFirstUserInput(Consumer<String> callback) {
this.onFirstUserInput = callback;
}
// ==================== 历史导航 ====================
private void browseHistoryUp(TuiState s) {

@ -87,6 +87,11 @@ public class JinkReplSession {
setupAgentCallbacks();
setupToolContextCallbacks();
// 注册首次用户输入回调(用于对话摘要)
component.setOnFirstUserInput(text -> {
conversationSummary = text.length() > 40 ? text.substring(0, 40) : text;
});
// 启动 jink 渲染
inkApp = Ink.render(component);

Loading…
Cancel
Save