contd:让 AI Agent 驾驭交互式 CLI 的异步包装器

> 来源: https://v2ex.com/t/1196465

> GitHub: https://github.com/werifu/contd

> 作者: werifu

> 许可: Apache-2.0

> 日期: 2026-03-07

📌 问题:Agent 遇到交互式 CLI 就"吊死"

当前 AI Agent(Claude Code、Cursor 等)的命令行能力大多停留在跑命令 → 等结果 → 问 LLM 的循环。一旦遇到需要用户键入的交互式 CLI(如 gdb 调试、安装向导的 yes/no 选择、REPL 环境),Agent 就会卡死——因为它不知道程序在等输入,也无法在合适的时机发送输入。

作者指出,在他已知范围内,只有 Codex 原生支持了交互式 CLI。

🔧 解决方案:contd

contd 是一个用 Rust 编写的 CLI 包装器,核心思路是将交互式命令行程序变成异步可恢复的会话

工作原理


Agent 调用 contd run → 启动后台进程管理交互式命令
                     → 在合适时机(超时/等待输入)返回中间结果
Agent 调用 contd attach → 重新连接会话,发送输入,获取输出
                       → 再次在合适时机返回

类似于异步函数的 await/resume 模式,但应用在 CLI 进程上。

核心命令

命令功能
`contd run -- `启动一个受管理的交互式会话
`contd attach --input "cmd\n"`连接已有会话并发送输入
`contd list`列出所有活跃会话
`contd kill `终止指定会话
`contd clean`清理所有会话

返回事件类型

平台支持

平台支持输入等待检测
Linuxproc syscall/fd 检查(精确)
macOS启发式检测 + 屏幕稳定性检查(略有偏差)

JSON 模式

支持 --json 标志,输出结构化 JSON,便于 Agent 程序化解析:


{"event":"session_waiting_input","session_id":"...","output":"..."}

🎬 演示案例

作者用一个视频展示了在 Cursor(不支持交互式命令的 Agent)中,通过 contd + gdb 交互式调试来解决 CS:APP 的 Bomb Lab——一个经典的逆向工程/二进制分析练习,需要逆向一个二进制文件、设断点、单步执行来找到多个密码。

这个场景非常有说服力:没有 contd,Agent 根本无法驱动 gdb 进行多步骤的交互式调试。

💡 分析与评价

为什么这个工具有价值

1. 填补关键空白:交互式 CLI 是 Agent 能力的一个明确盲区,contd 用最小的侵入性解决了这个问题

2. 设计优雅:不修改 Agent 也不修改 CLI 程序,只在中间加一层薄薄的包装器

3. 实用场景广泛

- 调试器(gdb/lldb)

- REPL(Python、Node.js、数据库 CLI)

- 安装向导(需要 yes/no 确认的)

- 任何长时间运行的交互式进程

4. 技术实现扎实:Rust 编写,Linux 上使用 proc 系统调用检测精确识别 stdin 等待状态

与现有方案的对比

方案交互式支持实现方式
原生 Agent(大多数)只支持 run-until-exit
Codex内置支持
contd外部包装器,任何 Agent 可用

contd 的优势在于通用性——不依赖特定 Agent 的内置支持,任何能调用命令行的 Agent 都可以用。

局限性

评分

维度评分(/10)
技术实现8.5
实用价值8
创新性8
文档质量7.5
**综合****8.0**

🔗 与我们的关联

1. Agent 工具链增强:如果我们使用 Claude Code 或其他 Agent 进行开发,contd 可以解锁调试器、REPL 等交互式工具的使用

2. SKILL 生态:作者提供了 contd-skill,可以直接安装让 Agent 学会使用

3. 架构参考:contd 的 broker 模型(后台进程管理 + 异步 attach)是一种值得学习的设计模式

安装


# 安装 CLI
curl -fsSL https://raw.githubusercontent.com/werifu/contd/main/install.sh | bash

# 安装 Agent Skill(全局)
npx -y skills@latest add werifu/contd-skill --skill contd --yes --global

报告由深度研究助手自动生成 | 2026-03-07