Class InlineRenderer
- All Implemented Interfaces:
Renderer,AutoCloseable
不进 alternate screen,主屏直接输出;输入期状态区紧跟当前 prompt 渲染。
工具调用块、行内 diff、HITL 单字符提示、palette 等高级特性在 Day 3 / Day 4 落地,
现阶段对应方法委托给 PlainRenderer 兜底。
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid用户输入结束后。inline renderer 用它恢复输入周边状态。voidappendDiff(String filePath, String before, String after) 渲染一个文件 diff 块。voidappendThinking(String delta) 追加模型 reasoning delta 到思考面板。voidappendToolCalls(List<LlmClient.ToolCall> toolCalls) 渲染一组工具调用的标签和关键参数。void进入用户输入前。inline renderer 用它刷新输入周边状态。voidbeginActivity(String label, String detail) 开始显示通用临时活动面板,用于非 Agent 思考的阻塞操作。voidbeginThinking(String label) 开始显示模型思考面板。plain renderer 保持 no-op,继续用正文流式输出。void开始一次用户任务输出。默认 no-op;inline renderer 用它重置本轮可重绘 transcript。voidbindLineReader(org.jline.reader.LineReader lineReader) 绑定当前交互循环使用的 JLine LineReader。Main.java 用:把 Ctrl+O 绑定到 toggleLast。voidclearAcceptedInput(String input) 清掉 JLine accept 后留在屏幕上的编辑态输入行。voidclose()void结束并清理通用临时活动面板。void结束并清理模型思考面板。boolean测试可见:当前实例是否启动了 status bar。当前渲染器希望 LineReader 使用的左侧输入提示。当前渲染器希望 LineReader 使用的右侧提示;返回 null 表示不显示。voidinstallStartupScreen(List<String> lines) 在 LineReader 第一次进入 readLine 时打印首屏。intopenPalette(String title, List<String> items) 显示一个临时浮起的选择列表,等待用户选定一项或取消。voidprintSubmittedPrompt(String input) promptApproval(ApprovalRequest request) 同步阻塞地展示 HITL 审批请求并收集决策。voidstart()启动渲染器(例如设置滚动区域、启动 GUI 主循环)。Main 必须先调用一次。stream()流式输出的目标 PrintStream。boolean当前渲染器是否支持通用临时活动面板。boolean当前渲染器是否支持独立的模型思考面板。org.jline.terminal.Terminalterminal()测试 / Main.java 可见:拿到 terminal 用于其它 inline 组件。int当前输出区域可用列数。Markdown 表格等宽布局按这个值做收缩和换行。booleanMain.java 用:Ctrl+O 触发内存态切换,然后重绘本轮 transcript。voidupdateStatus(StatusInfo status) 更新底部状态栏 / StatusPane。允许频繁调用,渲染器内部自行节流。Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.yapcli.render.Renderer
appendAssistantContentDelta, finishAssistantContent, rendersReasoning
-
Constructor Details
-
InlineRenderer
public InlineRenderer(org.jline.terminal.Terminal terminal)
-
-
Method Details
-
beginTurn
public void beginTurn()Description copied from interface:Renderer开始一次用户任务输出。默认 no-op;inline renderer 用它重置本轮可重绘 transcript。 -
start
public void start()Description copied from interface:Renderer启动渲染器(例如设置滚动区域、启动 GUI 主循环)。Main 必须先调用一次。 -
beforeInput
public void beforeInput()Description copied from interface:Renderer进入用户输入前。inline renderer 用它刷新输入周边状态。- Specified by:
beforeInputin interfaceRenderer
-
afterInput
public void afterInput()Description copied from interface:Renderer用户输入结束后。inline renderer 用它恢复输入周边状态。- Specified by:
afterInputin interfaceRenderer
-
inputPrompt
Description copied from interface:Renderer当前渲染器希望 LineReader 使用的左侧输入提示。- Specified by:
inputPromptin interfaceRenderer
-
inputRightPrompt
Description copied from interface:Renderer当前渲染器希望 LineReader 使用的右侧提示;返回 null 表示不显示。- Specified by:
inputRightPromptin interfaceRenderer
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceRenderer
-
stream
Description copied from interface:Renderer流式输出的目标 PrintStream。Agent.StreamRenderer / PlanExecuteAgent.TaskStreamRenderer / SubAgent.SubAgentStreamRenderer 把流式 reasoning / content 写到这里。
对 InlineRenderer / PlainRenderer 而言这就是
System.out; LanternaRenderer 返回一个把字节写入 CenterPane 的 PrintStream。 -
terminalColumns
public int terminalColumns()Description copied from interface:Renderer当前输出区域可用列数。Markdown 表格等宽布局按这个值做收缩和换行。- Specified by:
terminalColumnsin interfaceRenderer
-
supportsThinkingPanel
public boolean supportsThinkingPanel()Description copied from interface:Renderer当前渲染器是否支持独立的模型思考面板。- Specified by:
supportsThinkingPanelin interfaceRenderer
-
beginThinking
Description copied from interface:Renderer开始显示模型思考面板。plain renderer 保持 no-op,继续用正文流式输出。- Specified by:
beginThinkingin interfaceRenderer
-
appendThinking
Description copied from interface:Renderer追加模型 reasoning delta 到思考面板。- Specified by:
appendThinkingin interfaceRenderer
-
endThinking
public void endThinking()Description copied from interface:Renderer结束并清理模型思考面板。- Specified by:
endThinkingin interfaceRenderer
-
supportsActivityPanel
public boolean supportsActivityPanel()Description copied from interface:Renderer当前渲染器是否支持通用临时活动面板。- Specified by:
supportsActivityPanelin interfaceRenderer
-
beginActivity
Description copied from interface:Renderer开始显示通用临时活动面板,用于非 Agent 思考的阻塞操作。- Specified by:
beginActivityin interfaceRenderer
-
endActivity
public void endActivity()Description copied from interface:Renderer结束并清理通用临时活动面板。- Specified by:
endActivityin interfaceRenderer
-
bindLineReader
public void bindLineReader(org.jline.reader.LineReader lineReader) 绑定当前交互循环使用的 JLine LineReader。绑定后,用户正在输入时的异步输出会优先通过
LineReader.printAbove(String)显示在输入行上方;非读取态和 测试/降级路径继续使用构造时注入的PrintStream。 -
installStartupScreen
在 LineReader 第一次进入 readLine 时打印首屏。首屏不能在 readLine 之前用普通 stdout 打印:底部 Status 初始化后,LineReader 第一次重绘会重新接管输入区,提前打印的 banner 容易被滚动或覆盖。挂到
LineReader.CALLBACK_INIT后,JLine 会把首屏、输入行和底部 dock 放在同一个 显示生命周期里处理。 -
clearAcceptedInput
清掉 JLine accept 后留在屏幕上的编辑态输入行。普通任务会随后以
> prompt的 transcript 块写回;这里清理的是编辑态* prompt,避免同一条输入在屏幕上出现两次。 -
printSubmittedPrompt
-
appendToolCalls
Description copied from interface:Renderer渲染一组工具调用的标签和关键参数。InlineRenderer 把每条调用包装成可折叠块(Day 3); LanternaRenderer 写入 CenterPane.appendToolCall; PlainRenderer 直接 println 当前 Agent 内已有的标签格式。
- Specified by:
appendToolCallsin interfaceRenderer
-
appendDiff
Description copied from interface:Renderer渲染一个文件 diff 块。- Specified by:
appendDiffin interfaceRenderer- Parameters:
filePath- 文件路径before- 修改前内容(null 表示新建)after- 修改后内容(null 表示删除)
-
updateStatus
Description copied from interface:Renderer更新底部状态栏 / StatusPane。允许频繁调用,渲染器内部自行节流。- Specified by:
updateStatusin interfaceRenderer
-
promptApproval
Description copied from interface:Renderer同步阻塞地展示 HITL 审批请求并收集决策。实现需要保证在 GUI 线程之外调用时不死锁;如果实现是 Lanterna, 内部用 CountDownLatch 把 GUI 线程结果回写主线程。
- Specified by:
promptApprovalin interfaceRenderer
-
openPalette
Description copied from interface:Renderer显示一个临时浮起的选择列表,等待用户选定一项或取消。- Specified by:
openPalettein interfaceRenderer- Returns:
- 选中项的下标;用户取消(Esc)返回 -1
-
hasStatusBar
public boolean hasStatusBar()测试可见:当前实例是否启动了 status bar。 -
terminal
public org.jline.terminal.Terminal terminal()测试 / Main.java 可见:拿到 terminal 用于其它 inline 组件。 -
blockRegistry
Main.java 用:把 Ctrl+O 绑定到 toggleLast。 -
toggleLastBlock
public boolean toggleLastBlock()Main.java 用:Ctrl+O 触发内存态切换,然后重绘本轮 transcript。
-