Skip to content

非交互模式与自动化 ​

-p(--print)让 dcl 执行一轮完整的工具循环后退出,适合脚本、CI,或由其他编码代理调用。

基本用法 ​

bash
dcl -m deepseek-flash --api-format anthropic -p "总结 README 的安装步骤" < /dev/null

常用参数:

参数作用
-C, --path <dir>项目目录,默认当前目录
--output-format text|json|stream-json输出格式;stream-json 每行一个事件
--verbose输出更多事件(配合 stream-json 记录完整过程)
--max-turns <n>限制工具循环轮数;默认不限,模型一直工作到完成任务
--json-schema <schema>要求最终回复是符合该 JSON Schema 的 JSON,结果在 json 输出的 structured_output 字段;见结构化输出
--permission-mode <mode>权限模式,见权限模式与工具审批
--allowed-tools <规则>本次启动无需确认即可使用的工具
--dangerously-skip-permissions跳过交互式确认;显式 deny 规则仍生效。只在隔离环境中使用

标准输入 ​

stdin 不是终端时,dcl 会读取 stdin 并追加到提示词之后:

bash
git diff | dcl -p "审查这段改动"

如果父进程保持 stdin 管道打开却一直不写入(常见于代理工具、CI runner、IDE 任务),dcl 最多等待 3 秒首个字节,超时后在 stderr 输出

Warning: no stdin data received in 3s, proceeding without it; redirect stdin from /dev/null to skip this wait

并只使用命令行提示词继续。一旦收到首个字节,就会一直读到 EOF,不设超时。确定没有输入时,使用 < /dev/null 可以跳过这 3 秒等待。

权限 ​

非交互模式没有人可以回答审批请求。默认的 ask 模式下,如果模型调用了需要审批的工具(例如修改文件的 Edit、运行非只读命令的 Bash、访问新网站的 WebFetch),这次调用会被拒绝,模型收到

Permission to use <tool> was not granted: no approval host is available in this session. Grant it with --allowed-tools or a permission mode.

并继续完成本轮回答,退出码为 0。需要让工具真正执行时,用 --allowed-tools <工具> 单独放行,或选择合适的 --permission-mode。

读写长期记忆(memory_search、memory_ingest)、待办和任务列表这类只影响 dcl 自身状态的工具和 Claude Code 一样不需要审批,-p 模式下也会直接执行。

压缩会话 ​

/compact 在 -p 模式下也能用,和 Claude Code 一样直接压缩会话,不发给模型:

bash
dcl -c -p "/compact 保留接口设计的讨论" < /dev/null
  • 通常配合 -c(继续最近的会话)或 --resume <ID> 使用;后面的文字是可选的压缩要求。
  • 文本输出显示压缩了多少条消息;json、stream-json 输出一个成功的 result。之后继续这个会话时,已调用的技能内容仍然保留。

记录完整过程 ​

bash
dcl -m deepseek-flash --api-format anthropic \
  --output-format stream-json --verbose --max-turns 60 \
  -p "$(cat task.md)" < /dev/null > run.jsonl 2> run.err

run.jsonl 中常用事件:

type含义
tool_start工具调用开始,含 name 和 input
tool_result工具结果,含 is_error 和 output
error请求或引擎错误
result最终结果,含 is_error、result、session_id 和用量

stream-json 同时输出参考协议的 system、assistant、user、result 消息,SDK 和多轮会话的用法见 SDK 与 stream-json 协议。

run.err 包含引擎日志(INFO/ERROR),排查接口错误时先看这里。

独立文档站 · Desktop(Tauri 2)与 CLI(Rust)