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

首次运行

从代理应当编辑的工作区开始。除非设置了 --workspace,否则当前目录就是工作区。

终端窗口
dotnet run --project CrystalCode -- --provider deepseek --model deepseek-flash

CLI 选项:

选项 含义
-p, --provider <name> 提供商名称(deepseek、openai、gemini、ollama,或你添加到 providers.json 的名称)
-m, --model <id> 该提供商下列出的模型 id
-w, --workspace <path> 工作区根目录(默认:当前目录)
--home <path> 数据目录(默认:CRYSTAL_HOME,然后是 ~/.crystal)
-r, --resume [id] 选择一个已保存的会话。省略值则列出此工作区。id 会加载该文件并留在此处。目录会列出该工作区并进入它。all 列出每个工作区,并进入所选会话的目录
--approval <mode> 此进程使用 default、edit、review、audit 或 full
--approval-model <on|off> 使用已保存的审批模型,或为此进程关闭它
--approval-provider <provider> 此进程的审批模型提供商。会打开该开关
--approval-model-id <model> 此进程的审批模型 id。会打开该开关
--approval-thinking <effort> 此进程的审查者思考档位。不修改磁盘上的 approvalModel.thinkingEffort
--compaction-model <on|off> 使用已保存的压缩模型,或为此进程关闭它
--compaction-provider <provider> 此进程的压缩模型提供商。会打开该开关
--compaction-model-id <model> 此进程的压缩模型 id。会打开该开关
--compaction-thinking <effort> 此进程的摘要者思考档位。不修改磁盘上的 compactionModel.thinkingEffort
--plan / --work 以 Plan 或 Work 启动。两者都省略则保持 Work,或恢复会话上保存的模式
--thinking <effort> 取值与 /thinking 相同
--context <budget> 所选模型声明了多个预算时,为此进程选择本地上下文预算。文本与 /context 相同(272k、1m,或精确 token 数)。只有一个预算的模型,或未声明的预算,会被拒绝。不写入 contextSelections
--tier <token> 所选模型列出的服务层级 token。不写入 tierSelections
--speed <token>、--fast <token> 所选模型列出的速度 token。不写入 speedSelections
--prompt-set <name> 为此进程强制使用一个主目录提示集,即使其 prompt.json 中 enabled 为 false。default 强制使用内置文本。拒绝 /promptset 切换,且不写入该文件。列出和导出仍然可用
--prompt-attachments <on|off> on 遵循每个附件的 enabled 标志和 order。off 不附加任何内容,并拒绝 enable、disable、up 和 down。列出仍然可用
--prompt-attachment <name> 可重复。在此进程中,把该附件追加到已启用集合之后,即使其文件中 enabled 为 false。不写入该文件。不能与 --prompt-attachments off 一起使用
--skills、--external-tools、--plugins 此进程为 on 或 off
--rules <value> 两侧规则文件都为 on 或 off,或 global=on|off 与 project=on|off。不影响 instructions.md 或 .crystal.md
--model-calls <count> 每个回合的模型轮次。unlimited 取消该上限
--tool-calls <count> 每个回合的工具调用次数。0 表示不允许。unlimited 取消该上限
--duration <seconds> 每个回合的墙上时钟上限。unlimited 取消该上限
--bash-timeout <seconds> 前台每条 bash 命令的上限。unlimited 关闭该计时器
--disable-tool <name> 可重复。为此进程省略该内置工具。未知名称会拒绝启动。不写入文件,也不释放该名称

这些标志只作用于本次进程。启动时不写入 config.json 或 prompt.json。之后保存偏好的斜杠命令会写入该偏好;传入了 --provider 和 --model 时也会写入它们。其他标志不写入。--plan 和 --work 不能同时使用。crystal space 接受相同的标志,但不接受 --workspace。

--help 打印相同的选项。

首次运行创建 ~/.crystal(或 --home / CRYSTAL_HOME),并在缺少 config.json 时写入起步配置。默认:提供商 deepseek,模型 deepseek-flash,审批 default,压缩为所选模型 contextWindow 的 80%。

workspaceTrust 打开时(默认如此),目录里的第一次交互启动会询问是否信任它。

回答 结果
Yes 写入 ~/.crystal/trusted.json。在 git 仓库内,问题点名仓库根,之后在该仓库中的启动都被信任。仓库外只信任该目录。
No 退出且不写文件。下次启动再问。

重定向的终端无法询问,并以错误退出。/trust off 跳过之后的提示。/cd 进入未信任的根会再问。No 留在当前工作区。

提供商有多个模型,且 config.json 和 --model 都没选定时,进程退出并要求 --model。

crystal space 在 ~/.crystal/space 缺失时创建它,并在那里打开终端。--home 选择数据目录,因此空间是 {home}/space。它接受与 crystal 相同的会话标志,但不接受 --workspace。

该目录无需提示、也无需 trusted.json 条目即被信任。/space 缺失时创建它并切换过去。重新加载路径与 /cd 相同,且不会询问。

信任不会升到父级 git 仓库。/trust forget 不会移除它。子目录遵循普通信任规则。如果 space 本身是 git 仓库,其子目录共享该信任根。会话按绝对路径保存,与其他工作区相同。

crystal run --space 在目录缺失时创建它,并在那里运行一项任务。它不写信任条目。--space 不能与 --workspace 一起用。