跳转到内容
Crystal CodeDocs
简简体中文

交互会话

stdout 是 TTY 时,crystal 打开备用屏幕:记录、可选覆盖层、可选固定待办、可选进度行、状态栏和多行输入框。重定向的输出保持顺序。

OpenAI Chat Completions、DeepSeek、Responses 或 Anthropic 模型设置了 imageInput: true 时,运行 /attach <workspace-image-path>,或按 Ctrl+V。audioInput 和 videoInput 不附加音频或视频。

平台 剪贴板读取器 格式
Windows PowerShell 原始 PNG,然后是位图
macOS osascript PNG、JPEG、GIF
Linux wl-paste 或 xclip 声明的 PNG、JPEG、GIF 和 WebP

读取器缺失与剪贴板里没有图像是两条不同的报告。同一批按键里,Ctrl+V 在随后的 Enter 之前处理。输入框和记录显示 [Image #N]。粘贴的标记颜色不同,并且是一个编辑单元。键入相同文本不会附加图像。原始字节不进入渲染文本。每张图像最多 20 MiB。接受 PNG、JPEG、GIF 和 WebP。

多模态插件工具可以返回 Crystal ImageContent,它会在下一轮发给模型。设置了 imageModel 时,Plan 和 Work 包含 describe_image,请该视觉模型描述文件。问题来自 image.system.md 和 image.user.md。接受图像的模型还会得到 view_image,它返回文件本身。截图、设备控制和坐标协议属于外部插件,不属于 Crystal Code。

状态栏显示审批、模型支持时的思考、已设置时的 Tier <token> 和 Speed <token>、所选预算(Context 272K)、模型、工作区、上下文百分比(CTX)、IN / OUT、有空间时的 Title Case 合计、工具数和已用时间。命名标签是 Title Case。短缩写是大写。Plan 或 Work 在输入框提示上,不在状态栏重复。

回合进行时,进度行在状态栏上方:Awaiting Approval · 5s、Running Command · 2m18s、Thinking · 1m16s · ~1.2k Tokens、Retrying In 8s (Attempt 1)、Compacting。前缀是盲文旋转指示,与状态栏圆点分开。输出是 UTF-8,Windows 不会把这些帧换成 ?。~N Tokens 估计只在 estimatedTokens 打开时出现。有后续请求等待时显示排队计数。

会话有待办时,固定的 Todos 栏在进度行上方,显示前四项。/todos 打印完整列表。会话启动和 /cd 在操作者工具集加载时于该行显示 Loading Tools。

助手文本在流式输出时和提交后都渲染为 markdown。用户、思考、工具、结果和压缩摘要是圆角面板。界面里的工具名是 Title Case。edit 和 write 的审批卡片显示短的 + / - 预览。

成功面板用三个开关。verboseResults 是父开关。verboseTools 和 verboseCommands 只在父开关打开时生效。它们都不隐藏失败、审批卡片、思考面板、询问覆盖层或 Tool 卡片。Tool 卡片是调用本身(Read、Grep、Edit、Bash、Apply Patch),画在结果之前。

命令 效果
/verbose calls 显示或隐藏 Tool 卡片。除非 verboseCalls 为 false,否则打开。隐藏调用仍可以留下 Edited … 行。crystal run 不读这个设置
/verbose results 打开或关闭父开关。省略 on 和 off 时切换。除非 verboseResults 为 false,否则打开
/verbose tools、Ctrl+O 在空输入框上切换工具细节
/verbose commands、Ctrl+G 切换命令细节
/verbose 打印这些开关

verboseResults 关闭时,每个成功结果都被省略:read、search、skill、edit、write 和 bash 工具。其他开关仍保存,在 /verbose results on 之前不再绘制结果。此时 Ctrl+G 不展开输出,因为面板是被省略,不是折叠。本会话已有的卡片跟随开关。

父开关打开时:

verboseTools verboseCommands 成功结果
开 开 全文
关 开 省略 read、search 和 skill。Edit、write 和命令输出保留
开 关 命令输出折叠为隐藏行提示和最后一行。其他结果保留
关 关 上面两个关闭行同时生效

crystal run 不读 verboseResults。它的纯文本日志仍会自行缩短长命令输出。

键 动作
Enter 空闲时提交。回合进行时把后续请求入队
已有后续请求时的空 Enter 中断回合,或在压缩仍在进行时中断压缩,并立即发送队列
队列为空时的空 Enter 什么都不做
Ctrl+J,或 \ 然后 Enter 插入换行
Backspace 删除一个字符
Ctrl+W、Alt/Option+Backspace 删除一个词。Windows 上是 Ctrl+Backspace
Tab 切换 Plan/Work,或补全 / 命令及其参数
Shift+Tab 切换 Plan/Work
空输入框上的 ? 显示快捷键和命令
Up / Down 在输入框中移动。在第一行或最后一行浏览提示历史。选择器打开时移动选择。以 / 开头的已召回提示在你编辑它之前留在历史中
Escape 清空输入框
滚轮、PageUp / PageDown、Ctrl+Up/Down 滚动记录
模型显示文本、推理、工具调用或重试之前的 Ctrl+C,输入框和队列都为空 取消回合,并把该消息放回
回合中更晚的 Ctrl+C 取消。消息保留
空闲时的 Ctrl+C 清空输入框
空输入框上按两次 Ctrl+C 退出

crystal run 不把消息放回去。会话不再持有的受信任图像标记留在记录中,该 Ctrl+C 只取消。排队的后续请求也会保留消息。

备用屏幕启用括号粘贴和鼠标报告(1000,SGR 1006),关闭备用滚动,并在会话打开期间重复这些模式。这段时间 Windows 的快速编辑关闭,滚轮到达记录。会话关闭时恢复先前的控制台模式。滚轮从不变成 Up/Down。鼠标报告打开时,按住 Shift 选择文本(某些 macOS 终端是 Option 或 Fn)。你向回滚动时到达的行不移动画面。粘贴文本丢掉控制字符、不可见字符和双向格式字符。调整大小时画面重绘。不是粘贴包裹的转义序列不当作粘贴。审批和问题覆盖层使用同一输入循环,因此滚动和调整大小仍然有效。

问题提示可以有一个或多个带标签的问题、带描述的选项、单选或多选,以及自定义答案。自定义输入默认打开。单个单选答案立即提交。多个问题或多选使用 Confirm 标签。

键 动作
Up/Down、J/K 移动
Enter 选择。编辑自定义答案时保存它
Space 切换一个多选项
Left/Right、Tab 在问题之间移动
Escape 驳回。编辑自定义答案时回到选项,不改变答案

编辑自定义答案时,文本和光标在面板内。面板高于屏幕时,滚轮、PageUp、PageDown 和 Ctrl+Up/Down 滚动其中的行。标题和边框保持。移动高亮或光标会把该行带回视野。手动滚动保持到高亮或光标移动。滚过任一端,或面板已经放得下时用这些键,会滚动记录。

回合进行时输入框保持打开。带文本的 Enter 把后续请求入队(FIFO)。排队项留在 Queued 面板中。当前工具批次结束,或回合结束时发送队列。已有后续请求时的空 Enter 中断回合,或在压缩仍在进行时中断压缩。中断不丢弃已排队的文本。

/quit、/clear、/resume 和 /fork 在运行前停止忙碌的回合。/clear、/resume 和 /fork 留在队列中,按键入顺序运行。这三者各自丢掉仍在等待的后续请求文本。压缩期间它们被拒绝,消息与回合进行时的 /cd 同类。其他改变会话、工作区或模型的命令因同一原因被拒绝。/status、/help、/todos 以及其他只报告状态或调整显示的命令立即运行。/quit 仍然退出。

  1. 快照记录和当前工具定义。
  2. 流式发送一次聊天请求。增量到达时渲染。
  3. 模型没有正常结束时,在工具之前停止。截断输出和内容过滤保留文本并结束回合。其他异常结束原因使回合失败。这些停止不运行工具,也不压缩。
  4. 候选含有工具调用时,整批通过执行器运行。先审批。
  5. 追加精确的工具结果。
  6. 重复,直到没有工具调用、某个上限停止回合,或你取消。估计或上一轮超预算时,宿主可以在模型轮次前压缩。压缩无法再缩减时,回合停止。
  7. 完成的回合之后再考虑一次压缩。/compact 立即总结较早的上下文并打印摘要。