无头运行
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 上的纯文本。