CLI 与 TUI
Cline CLI:交互 TUI 与无头模式、全部命令与全局标志、JSON 输出、命令权限、配置文件布局、定时任务(cron)和连接器(Telegram/Slack/Discord 等)。
Cline CLI 既能做交互式终端会话,也能做自动化的无头工作流。前提:安装了 CLI(npm i -g cline),并已认证提供商(cline auth,可用 Cline 提供商、ClinePass 或你自己的提供商密钥)。下文的标志、命令和默认值来自官方文档核实时的状态,以 cline --help 为准。
# 交互会话
cline
# 立即运行一个任务
cline "refactor this module to use async/await"
# 给脚本用的结构化输出
cline --json "list TODO comments"TUI
TUI 是 Cline 的交互式终端界面,为在终端里对话式地工作设计:提问、评审计划、批准动作并快速迭代。默认交互启动是 cline,显式 TUI 模式是 cline -i。核心 TUI 操作:
Tab切换 Plan/ActShift+Tab切换对所有动作自动批准Ctrl+C中止正在运行的一轮,再按一次退出Ctrl+D在提示为空且空闲时退出Ctrl+L清除聊天视图或当前对话- 斜杠命令:
/settings、/model、/account、/mcp、/compact、/undo、/clear、/history、/help、/quit @file提及,为工作区提供上下文
状态区显示当前模型、上下文用量、成本、工作区/分支、git diff 统计、Plan/Act 状态,以及是否开启了全部自动批准。想要协作和批准时用 TUI;要自动化时用无头模式(--json、管道 stdin/stdout、CI 脚本)。
无头模式
用无头模式做脚本/自动化和可处理的输出。使用 --json 这样的标志、stdin 被管道输入或输出被重定向时,会触发无头模式:
| 调用 | 原因 |
|---|---|
cline --json "task" | JSON 输出模式 |
cat file | cline "task" | stdin 被管道输入 |
cline "task" > output.txt | stdout 被重定向 |
# CI/脚本风格的执行
git diff | cline "review these changes"
# 用 JSON 解析
cline --json "summarize this changelog" | jq -r '.text'自主执行:完全无人值守的运行用自动批准:cline --auto-approve true "run tests and fix failures"。模式选择在无头运行里同样有效:cline -p "design migration plan" 先规划,cline "apply migration" 直接行动(默认)。注意:自主执行可以不再提示就修改文件和运行命令,用干净的分支并评审结果。
自动化模式:
# 把上下文管道输入
cat README.md | cline "summarize key setup steps"
git diff | cline "review for potential regressions"
# 串联任务
git diff | cline "explain these changes" | cline "write a commit message"
# 限制命令执行
export CLINE_COMMAND_PERMISSIONS='{"allow": ["npm *", "git *"], "deny": ["rm -rf *", "sudo *"]}'
# 在任务里包含图片
cline "fix the UI shown in @./design-mockup.png"
# 设置执行超时
cline --timeout 600 "run full test suite"命令与全局标志
Usage: cline [options] [command] [prompt]| 选项 | 说明 |
|---|---|
-V, --version | 输出版本号 |
-p, --plan | 在 Plan 模式下运行 |
--json | 以 JSON 而不是带样式的文本输出消息 |
--auto-approve <boolean> | 为所有工具设置自动批准(默认 true;在 ACP 模式下默认 false) |
-t, --timeout <seconds> | 可选的超时秒数(默认 0 表示无超时) |
-m, --model <model-id> | 在所选提供商下为本会话使用的模型 |
-v, --verbose | 显示详细输出 |
-c, --cwd <path> | 工作目录 |
--config <path> | 配置目录(默认 ~/.cline/data/settings) |
--data-dir <path> | 在该目录路径使用隔离的本地状态(默认 ~/.cline) |
--thinking <level> | 设置推理强度:none|low|medium|high|xhigh(默认 medium) |
--retries <count> | 停止之前允许的最大连续错误(重试)次数 |
--hooks-dir <path> | 用于运行时 hook 注入的额外 hooks 目录(默认 ~/.cline/hooks) |
--acp | 以 Agent Client Protocol(ACP)模式运行,用于编辑器集成 |
-i, --tui | 打开交互会话的终端用户界面(TUI) |
--id <session-id> | 按 ID 恢复已有会话 |
-k, --key <api-key> | 为本次运行覆盖 API key |
-P, --provider <id> | 提供商 id(默认 cline) |
-s, --system <system-prompt> | 覆盖默认系统提示 |
-z, --zen | 启动在后台 hub 里运行的会话 |
-h, --help | 显示命令的帮助 |
命令:
| 命令 | 作用 |
|---|---|
cline(默认) | 启动任务或进入交互模式,如 cline "Run tests and fix failures"、echo "prompt" | cline |
auth [options] [provider] | 认证提供商并配置所用的模型 |
config [options] | 显示或打开交互式的当前配置视图 |
connect [options] [adapter] | 连接到消息平台(见下面「连接器」)或编辑器/IDE 适配器 |
mcp | 管理 MCP 服务器 |
dev | 开发者工具和实用程序(如 cline dev log 查看 CLI 日志) |
doctor | 诊断并修复配置问题 |
history|h [options] | 列出会话历史或管理已保存的会话 |
hook | 从 stdin 处理 hook 负载(如 cat payload.json | cline hook) |
plugin | 管理 Cline 插件:cline plugin install <source>(别名 i),可选 --npm、--git、--force、--json、--cwd <path>(安装到 <path>/.cline/plugins 而不是全局目录) |
schedule | 管理定时的智能体(见下面「定时」) |
hub | 管理本地 hub 守护进程 |
update [options] | 检查更新并在有可用更新时安装 |
version | 显示 Cline CLI 版本号(也可用 cline -V) |
kanban | 启动 Kanban 应用并退出 |
环境变量:
| 变量 | 说明 |
|---|---|
CLINE_DATA_DIR | 自定义配置目录(替代 ~/.cline/data/) |
CLINE_HUB_ADDRESS | 覆盖 hub 地址(默认 127.0.0.1:25463) |
CLINE_SESSION_BACKEND_MODE | 强制后端模式(local、hub、remote、auto) |
CLINE_SANDBOX_DATA_DIR | 沙盒会话存储目录 |
CLINE_SANDBOX | 启用沙盒模式 |
CLINE_HOOKS_DIR | 额外的 hooks 目录 |
CLINE_BUILD_ENV | 设为 development 启用调试功能 |
CLINE_DEBUG_PORT_BASE | Node.js inspector 的基础端口 |
CLINE_COMMAND_PERMISSIONS | 限制 shell 命令的 JSON 策略 |
CLINE_COMMAND_PERMISSIONS 限制智能体能执行哪些 shell 命令:allow(字符串数组,允许命令的 glob 模式;设置后只允许匹配的命令)、deny(拒绝命令的 glob 模式,拒绝规则总是优先)、allowRedirects(布尔,是否允许 shell 重定向 >、>>、<,默认 false)。
JSON 输出格式:使用 --json 时,每条消息是单独一行上的 JSON 对象,例如 {"type": "say", "text": "I'll create the file now.", "ts": 1760501486669, "say": "text"},字段:type("ask" 或 "say",消息类别)、text(消息内容)、ts(毫秒 Unix 时间戳)、say(type 为 "say" 时的子类型)、ask(type 为 "ask" 时的子类型)、reasoning(模型推理,可选)、partial(流式期间为 true)。
配置文件布局:~/.cline/data/settings/providers.json(API key 和提供商配置)、rules/(全局规则)、skills/(全局技能),~/.cline/data/teams/(团队状态)、sessions/(会话数据库,SQLite)、logs/hub-daemon.log(hub 日志),~/.cline/plugins/(全局插件,_installed/ 由 cline plugin install 管理);项目根目录的 .cline/ 含 rules/、skills/、hooks/、plugins/、mcp.json(MCP 服务器配置)和 agents.yaml(智能体定义)。
定时(Scheduling)
注意:这个功能目前只适用于 Cline SDK、CLI 和 Kanban,不适用于 VS Code 和 JetBrains 扩展。CLI 通过 hub 支持按 cron 计划运行智能体;定时的智能体跨进程重启持久,并独立于任何终端会话运行。
运行 cline schedule 打开交互菜单,用于创建和管理计划、浏览执行历史和查看性能统计:创建新计划(用 cron 时间和提示设置重复任务)、列出计划(状态和下次运行时间)、即将运行(预览接下来 10 次)、活动执行、立即触发、暂停/恢复、执行历史(状态、时长、token 和成本)、统计(成功率、平均时长、上次失败)、删除。
用标志创建:
cline schedule create "PR summary" \
--cron "0 9 * * MON-FRI" \
--prompt "List all open PRs and their review status" \
--workspace /path/to/repo \
--model anthropic/claude-sonnet-4-6管理:cline schedule list、trigger <schedule-id>、pause <schedule-id>、resume <schedule-id>、delete <schedule-id>、executions <schedule-id>。
| cron 表达式 | 计划 |
|---|---|
*/5 * * * * | 每 5 分钟 |
*/15 * * * * | 每 15 分钟 |
0 * * * * | 每小时 |
0 */6 * * * | 每 6 小时 |
0 0 * * * | 每天午夜 |
0 9 * * * | 每天 9 点 |
0 9 * * 1-5 | 每个工作日 9 点 |
0 9 * * 1 | 每周一 9 点 |
0 0 1 * * | 每月 1 日 |
例子:每日站会总结(--cron "0 8 * * MON-FRI",提示总结昨天合并的 PR、当前评审中的 PR 和分配给团队成员的开放 issue);每周依赖检查(--cron "0 10 * * MON",检查过时的 npm 依赖,对有安全漏洞的创建更新分支并开 PR);代码库健康报告(--cron "0 6 * * MON",分析没有测试覆盖的文件、超过 30 天的 TODO/FIXME 和超过 100 行的函数)。结合连接器,可以把结果路由到消息平台:先 cline connect telegram -k $BOT_TOKEN,再创建计划(如每天 8 点「Summarize overnight activity in the repo」的 Morning briefing)。定时需要 hub,创建计划时它自动启动。
连接器(Connectors)
注意:这个功能目前只适用于 Cline CLI。连接器让你从消息平台与智能体聊天:每条收到的消息创建或继续一个智能体会话,智能体的回复被发回对话。运行 cline connect 打开交互式向导,引导你完成平台选择、凭据输入、安全配置和高级选项(提供商、模型、系统提示、智能体模式)。
| 平台 | 直接命令 | 所需凭据 |
|---|---|---|
| Telegram | cline connect telegram | bot 令牌 |
| Slack | cline connect slack | bot 令牌,加 webhook 签名密钥/基础 URL 或 socket 应用令牌 |
| Discord | cline connect discord | 应用 ID、bot 令牌、公钥、基础 URL |
| Google Chat | cline connect gchat | 服务账号凭据 JSON、基础 URL |
cline connect whatsapp | 电话号码 ID、访问令牌、应用密钥、验证令牌、基础 URL | |
| Linear | cline connect linear | API key、webhook 签名密钥、基础 URL |
Telegram:在 Telegram 里与 @BotFather 聊天,发送 /newbot,输入显示名和以 bot 结尾的用户名(在 Telegram 全局唯一),BotFather 回复你的 bot 令牌;然后运行 cline connect telegram -k <BOT-TOKEN>(连接器从令牌发现 bot 用户名,只有需要覆盖时才用 --bot-username),在 Telegram 里搜索你 bot 的用户名并发消息,智能体处理后在聊天里回复。安全:默认任何找到你 bot 的人都能给它发消息,而它会在你的机器上执行任务;cline connect 向导会询问是否限制 Telegram 访问。先给 @userinfobot 发消息获取你的数字用户 ID,然后用向导(选 Telegram、输入 bot 令牌、对访问限制回答 yes、输入你的用户 ID),或手动传标志:cline connect telegram -k <BOT-TOKEN> --allowed-user-id 12345。只有在需要自定义访问逻辑时才用 --hook-command:hook 通过 stdin 收到每条进入的消息及发送者信息,你的脚本返回 {"action": "allow"} 或 {"action": "deny", "message": "reason"}。没有 --allowed-user-id 或 --hook-command 时,一切都被自动批准,所以要限制能到达运行中 Cline 实例的 Telegram bot。
Slack:支持 webhook 模式和 socket 模式;每个 Slack 线程对应一个智能体会话,所以智能体在线程内保持对话上下文。Webhook 模式需要 bot 令牌、签名密钥和公共基础 URL:cline connect slack --bot-token <BOT-TOKEN> --signing-secret <SECRET> --base-url <URL>,并把 Slack 应用的事件订阅和交互请求 URL 配置为 <URL>/api/webhooks/slack。Socket 模式需要 bot 令牌和带 connections:write 范围的应用级令牌:cline connect slack --bot-token <BOT-TOKEN> --app-token <APP-LEVEL-TOKEN>,要在 Slack 应用里启用 Socket Mode;它不需要公共请求 URL,且只限单工作区。
Discord:需要 Discord 应用 ID、bot 令牌、公钥和公共基础 URL。连接器在 /api/webhooks/discord 监听 Discord 交互,并启动 Discord 网关监听器处理提及、回复、反应和私信。步骤:在 Discord Developer Portal 创建应用,在 General Information 复制 Application ID 和 Public Key,在 Bot 创建 bot 并重置、复制令牌,想让普通消息、回复和私信包含文本内容就启用 Message Content Intent;暴露公共基础 URL(本地开发用 ngrok 这类隧道,如 ngrok http 8788,复制 HTTPS 转发 URL);启动连接器:
cline connect discord \
--application-id <ID> \
--bot-token <TOKEN> \
--public-key <KEY> \
--base-url <URL> \
--port 8788 \
--cwd /path/to/repo \
--enable-tools(--app-id 是 --application-id 的别名,--token 是 --bot-token 的别名;--enable-tools 允许智能体从 Discord 检查文件、运行命令、编辑代码和准备 PR,如果 bot 只用于聊天就省略它。)在 Developer Portal 把 Interactions Endpoint URL 设为 <base-url>/api/webhooks/discord,可以用 curl <base-url>/health 验证连接器可达;在 OAuth2 > URL Generator 选 bot 和 applications.commands 范围,授予发送消息和读取消息历史的权限,打开生成的 URL 把 bot 装进测试服务器;在服务器频道里提及 bot、在 bot 创建的线程里回复或私信 bot,每个 Discord 对话保持自己的智能体会话和上下文。在 Discord 里可发这些命令:/help 或 /start(显示连接器帮助)、/new 或 /clear(为这个 Discord 对话开始全新会话)、/whereami(显示线程、频道、私信状态、cwd、workspaceRoot、工具和 yolo 状态)、/tools [on|off|toggle](查看或更改是否允许仓库/文件/shell 工具)、/yolo [on|off|toggle](查看或更改自动工具批准)、/cwd [path](查看或更改这个对话的工作目录)、/schedule create/list/trigger/delete(管理以这个对话为目标的定时工作流)、/abort(停止当前任务)、/exit(停止连接器)。普通消息被当作智能体任务;任务已在运行时,普通消息会引导当前任务。Discord 安全:默认任何能触及 bot 的人都能让它运行任务,用 --hook-command 限制访问,hook 以 discord:user:123456789 这样的参与者键收到 Discord 用户。
其他平台:Google Chat 需要服务账号凭据 JSON 文件和公共基础 URL:cline connect gchat --credentials <JSON> --base-url <URL>;WhatsApp 需要电话号码 ID、访问令牌、应用密钥、webhook 验证令牌和公共基础 URL:cline connect whatsapp --phone-id <ID> --token <TOKEN> --app-secret <SECRET> --base-url <URL>;Linear 需要 API key、webhook 签名密钥和公共基础 URL:cline connect linear --api-key <KEY> --signing-secret <SECRET> --base-url <URL>。
管理连接器:cline connect --stop 停止所有连接器,cline connect telegram --stop 停止指定的一个。Hook 命令协议:--hook-command 模式适用于所有连接器,脚本通过 stdin 收到 JSON 负载:{"payload": {"actor": {"participantKey": "telegram:id:12345", "displayName": "User Name"}, "message": "The incoming message text"}},返回 {"action": "allow"} 或 {"action": "deny", "message": "reason"}。运行多个连接器:多个连接器可以同时运行,它们共享同一个 hub(如一个终端里 cline connect telegram -k $TELEGRAM_TOKEN,另一个里 cline connect slack --bot-token $SLACK_TOKEN --signing-secret $SECRET --base-url $URL);连接器需要 hub,没有自动启动时用 cline hub start。