Skip to content

[功能请求] 支持 headless(无头/非交互)模式,用于自动化与 CI/CD #139

@ATMxsp01

Description

@ATMxsp01

Deep Code 团队你们好,感谢打造了这么棒的工具——TUI 体验非常好,deepseek-v4 的深度思考和推理强度控制也特别好用。

我想请求为 Deep Code CLI 添加 headless(无头/非交互)模式 的支持。

目前的 cli.tsx:73 强制要求 TTY:

if (!process.stdin.isTTY) {
  process.stderr.write("deepcode requires an interactive terminal...");
  process.exit(1);
}

这导致 Deep Code 无法在脚本、cron 定时任务或 CI/CD 流水线中使用。

为什么需要这个功能

场景 能做什么
CI/CD 集成 在 GitHub Actions 中让 Deep Code 做 PR review、生成 changelog、运行提交前检查
定时任务 每日自动搜集行业新闻、检查依赖更新、仓库健康巡检——通过 cron 执行
多 Agent 协同 一个"调度者"Agent 可以启动多个 Deep Code 子 Agent 并行工作
编辑器/IDE 集成 Neovim、VSCode 插件通过程序化接口调用 Deep Code(与 #36 相关)
批量处理 对多个项目自动执行同一个 prompt

其他工具的做法

  • Claude Code-p 在非 TTY 下自动执行并退出,支持 --json 结构化输出。文档
  • Aider:支持 --message / --no-auto-commits,可脚本化调用
  • Codex CLI也有开发者提了同样的 issue

建议的实现方式

最小可用改动:

  1. 当 stdin 不是 TTY 时,-p/--prompt 变为执行模式(而非仅预填充)
  2. 非 TTY 模式下自动批准权限(因为没有用户可询问)
  3. 执行完毕后退出,并返回结构化结果

可选增强:

  • --json 输出结构化结果(模型、tokens、修改的文件等)
  • --max-turns N 限制最大轮次
  • --auto-approve 作为显式开关(即使在 TTY 模式下也可用)

目前的替代方案及其局限

目前唯一的变通方案是"伪调度"——在每次打开 Deep Code 时检查条件(比如"距上次新闻搜集是否已过 3 天")。这能覆盖个人使用场景,但无法用于 CI 或多 Agent 协同。


English TL;DR: Requesting headless/non-interactive mode so Deep Code can run in scripts, cron, and CI/CD. Claude Code and Aider already support this. Minimum change: make -p executable in non-TTY mode with auto-approved permissions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions