命令行选项
命令行选项用于控制 IaC Code 的启动方式。它们可以在进入交互式 REPL 前使用,也可以与 --prompt 组合用于一次性自动化任务。
| 选项 | 用途 |
|---|---|
-h, --help | 显示 CLI 帮助并退出。用它查看当前安装版本支持的选项。 |
-v, -V, --version | 输出已安装的 IaC Code 版本并退出。 |
-m <model>, --model <model> | 使用指定的 LLM 模型启动。本次运行会覆盖已保存的模型设置。 |
-p <prompt>, --prompt <prompt> | 执行单条提示词并退出。这会进入非交互模式。使用 --prompt - 可以从标准输入读取提示词。 |
--output-format <format> | 设置一次性调用或 process 自动化的输出格式。支持 text、json 和 stream-json,默认值为 text。 |
--input-format <format> | 设置输入格式。支持 text 和 stream-json。stream-json 会启动 SDK process 模式,必须与 --output-format stream-json 一起使用,且不能与 --prompt 组合。 |
--max-turns <number> | 限制非交互模式中的最大代理轮次,默认值为 100。 |
--thinking-enabled, --no-thinking-enabled | 控制一次性非交互请求是否显式启用 thinking。默认值为 --thinking-enabled;使用 --no-thinking-enabled 会在本次运行中发送 thinking_enabled=false,但不会改写 settings.yml。 |
-d, --debug | 为本次运行启用调试日志。交互模式启动后,可以使用 /debug 查看或调整调试日志。 |
--verbose | 在标准错误输出上显示 headless(非交互)模式的进度。 |
-r <session-id-or-name>, --resume <session-id-or-name> | 按精确会话 ID、唯一 ID 前缀或唯一会话名称恢复历史会话。解析到跨项目会话时,会打印 cd ... && iac-code --resume <id> 命令,而不是直接热切换当前项目。 |
-c, --continue | 恢复最近一次会话。不能与 --resume 同时使用。 |
--allowed-tools <patterns> | 逗号分隔的工具权限允许模式,例如 'bash(git *),write_file'。 |
--disallowed-tools <patterns> | 逗号分隔的工具权限拒绝模式,例如 'bash(rm *)'。 |
--permission-mode <mode> | 权限模式:default、accept_edits、bypass_permissions、dont_ask。 |
权限模式
--permission-mode 参数控制代理处理工具权限检查的方式:
| 模式 | 行为 |
|---|---|
default | 当工具操作需要确认时,代理会弹出提示让用户选择。 |
accept_edits | 自动批准被视为编辑操作的文件系统命令(如 mkdir、cp),其他操作仍需确认。 |
bypass_permissions | 自动批准工具操作(安全检查除外)。任何需要审计记录的允许决策在审计持久化失败时都会 fail closed。适用于可信的自动化场景。 |
dont_ask | 静默拒绝所有需要确认的操作。适用于严格的只读运行。 |
通过 aliyun_api 发起的阿里云写 API 调用有单独保护:裸的 aliyun_api 允许规则不会一概批准这些调用,并且在 bypass_permissions 之外,写入允许规则必须精确匹配规范化后的 product:action。bypass_permissions 会自动批准它们,但与其他被审计的允许决策一样,如果权限审计记录无法持久化,该操作会被拒绝。需要在可信自动化中只允许某个具体写 API 时,请使用 aliyun_api(ros:CreateStack) 这样的精确规则。
常用启动命令
使用已保存的模型进入交互式 REPL:
iac-code
为本次运行指定模型:
iac-code --model qwen3.7-max
执行一次性提示词:
iac-code --prompt "创建一个 OSS Bucket"
执行一次性提示词,并只在本次请求中关闭 thinking:
iac-code --prompt "创建一个 OSS Bucket" --no-thinking-enabled
从标准输入读取提示词:
echo "创建一个 VPC 和两台 ECS 实例" | iac-code --prompt -
恢复最近一次会话:
iac-code --continue
仅允许 git 和只读 bash 命令:
iac-code --allowed-tools 'bash(git *)'
仅允许一个具体的阿里云写 API:
iac-code --allowed-tools 'aliyun_api(ros:CreateStack)'
在自动化中运行,无需交互确认:
iac-code --prompt "创建一个 VPC" --permission-mode bypass_permissions
为长期运行的子进程客户端启动 SDK process 模式:
iac-code --input-format stream-json --output-format stream-json
在 process 模式下,调用方向 stdin 写入一行一个 JSON frame,并从 stdout 读取一行一个 JSON frame。发送用户消息前需要先发送 initialize control request。该模式支持 interrupt、set_model、end_session、close、keep_alive 和 update_environment_variables 等控制流程。当 IAC_CODE_MODE=pipeline 时,同一个 process 入口会运行 Pipeline 模式,并在 stream 和 result frame 中返回 pipeline 状态。