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

无头运行

crystal run 运行一项任务后退出。它不打开备用屏幕。把任务放在引号里,或省略任务并从 stdin 管道传入。任务参数优先于 stdin。斜杠命令会被拒绝。

终端窗口
crystal run --workspace . --approval review --duration 600 "Fix the failing test."
echo "Summarize the repository." | crystal run --model-calls 8 --tool-calls 32

--format default 打印可读跟踪:先是助手回复,然后每个工具紧挨自己的结果。

工具 跟踪保留什么
read、list、glob、grep,以及其他成功 短的开头摘录,以及省略了多少行
edit、write 结果
bash 命令、退出状态和短的结尾。命令失败时结尾更长
其他失败 结果文本

标签用方括号,退出状态用圆括号,省略行标记用尖括号。宿主文本与工具输出分开。

--format json 每行一个 JSON 对象,并保留完整工具输出。除非设置 --show-thinking,否则省略思考。设置后,思考在 [Thinking] 下,回复在 [Assistant] 下。已保存的会话 id 印在末尾。用 crystal --resume <id> 恢复。

标志只覆盖本次进程的已保存配置,不写入 config.json。不要把秘密放在命令行上。省略的标志保留已保存的值;已保存的值也未设置时,用产品默认值。--workspace-trust 不是这样:省略它会检查目录。unlimited 取消那一项上限。

选项 含义
-p, --provider / -m, --model 此进程的提供商和模型
-w, --workspace / --home 工作区根目录和数据目录
--space 把操作空间 {home}/space 用作工作区。缺失时创建。不能与 --workspace 组合
--approval <mode> default、edit、review、audit 或 full
--approval-model <on|off> 使用已保存的审批模型,或为此进程关闭它
--approval-provider <provider> 此进程的审批模型提供商。会打开该开关
--approval-model-id <model> 此进程的审批模型 id。会打开该开关
--approval-thinking <effort> 此进程的审查者思考档位。取值与 /approval thinking 相同;不支持的档位回退到提供商默认值并打印一条说明,不是 effort token 的值以状态 1 退出。不写入文件
--compaction-model <on|off> 使用已保存的压缩模型,或为此进程关闭它。on 需要已保存的选择,或同一条命令上的 --compaction-provider 和 --compaction-model-id。不写入文件
--compaction-provider <provider> 此进程的压缩模型提供商。会打开该开关
--compaction-model-id <model> 此进程的压缩模型 id。会打开该开关
--compaction-thinking <effort> 此进程的摘要者思考档位。取值与 /compact thinking 相同。不支持的档位回退到提供商默认值并打印一条说明。不写入文件
--plan / --work 以 Plan 或 Work 启动。默认是 Work
--thinking <effort> 取值与 /thinking 相同。不支持的档位被忽略,打印一条说明,请求使用提供商默认值。不是 effort token 的值以状态 1 退出
--context <budget> 所选模型声明了多个预算时的本地上下文预算。文本与 /context 相同。只有一个预算的模型,或未声明的预算,以状态 1 退出。不写入 contextSelections
--tier <token> 所选模型列出的服务层级 token。模型未列出它时以状态 1 退出。不写入 tierSelections
--speed <token>、--fast <token> 所选模型列出的速度 token。模型未列出它时以状态 1 退出。不写入 speedSelections
--prompt-set <name> 为此进程强制使用一个主目录提示集,即使其 prompt.json 中 enabled 为 false。default 强制使用内置文本。不写入文件
--prompt-attachments <on|off> on 遵循每个附件的 enabled 标志和 order。off 不附加任何内容。省略表示 on。不写入文件
--prompt-attachment <name> 可重复。把该附件追加到已启用集合之后,即使 enabled 为 false。缺失的名称以状态 1 退出。不能与 --prompt-attachments off 组合。不写入文件
--skills、--external-tools、--plugins 此进程为 on 或 off
--rules <value> 两侧规则文件都为 on 或 off,或逗号分隔的 global=on|off 与 project=on|off。赋值会把另一侧保留为已保存的值。不写入文件,也不影响 instructions.md 或 .crystal.md
--workspace-trust <on|off> 仅此进程的目录信任。省略和 on 会拒绝未信任的目录。off 跳过检查且不记录信任。这不跟随 workspaceTrust
--model-calls <count> 此回合的模型轮次。默认 1024
--tool-calls <count> 此回合的工具调用次数。默认 8192。0 表示不允许
--duration <seconds> 此回合的墙上时钟上限。默认 7 天。在 CI 中传入较短的值
--bash-timeout <seconds> 前台每条 bash 命令的上限。默认 600。unlimited 关闭该计时器
--disable-tool <name> 可重复。为此进程省略该内置工具。未知名称会拒绝启动。不写入文件,也不释放该名称
--show-thinking 为此次运行打印推理文本,并把每条回复标为 [Assistant]。独立于 verboseThinking
--format default 为纯文本,json 为每行一个 JSON 对象

--approval-model off 不能与 --approval-provider 或 --approval-model-id 一起用。--approval-model on 需要已保存的审批模型或 --approval-model-id。--approval-thinking 只为此进程设置档位。/approval model 保留已保存的档位。/approval thinking 才是写入档位的命令。开关关闭时,进程档位被忽略。

--workspace-trust 不继承已保存的设置。即使 workspaceTrust 为 false,省略它也会检查目录。未信任的目录在会话开始前以状态 4 退出。从交互终端信任它,或传入 --workspace-trust off。crystal run --space 使用已经信任的操作空间。

没有操作者。在 Review 和 Audit 中,审查模型仍然判断需要审查的调用。允许则运行工具。拒绝则把审查者的理由返回给模型。除非审批模型开关打开,否则该模型就是会话模型。任何会询问操作者的内容,包括 Default、Edit 和 Full 提示,都被拒绝。question 工具被驳回。Plan 不提供 write、edit 或 bash。凭据路径仍然禁止。

审查者拒绝是工具错误。模型随后完成时,进程以 0 退出。被拒绝的操作者提示或被驳回的问题则不会。调用 Plan 不提供的工具会使回合失败。

退出码 含义
0 回合完成,且没有操作者提示被拒绝或驳回
1 命令、配置、凭据、工作区或提示集无效
2 模型请求失败,或模型因内容过滤而停止
3 达到模型调用、工具调用或时长预算,上下文溢出,或模型输出被截断
4 回合在操作者提示被拒绝或问题被驳回之后结束
5 运行被中断

失败、预算停止或中断会按自身报告,而不是按拒绝报告。纯文本 stdout 随后包含 [Stopped] 和会话 id。

每行 JSON 都有 type、UTC timestamp 和 sessionID。

type 额外字段
tool_use name、callId、arguments、status(success 或 failure)、output
step_finish reason、modelCalls、toolCalls
reasoning 只在设置了 --show-thinking 时出现
stopped 只在进程将以非零状态退出时出现
session text 与纯文本格式打印的恢复提示相同

其他类型是 step_start、text、error、note 和 retry。无效命令和缺失凭据仍然是 stderr 上的纯文本。