查看 Markdown

Developer命令行 aidc

交互界面

在终端里敲 aidc,进入交互界面,和智能体对话。界面管输入和显示,干活的是运行时。对话留在终端自己的滚动历史里,你可以用终端原生的滚动、选择和复制。

aidc
   │ 下一步:aidc app dev /home/demo/projects/fabric-check
 ● 应用骨架已经生成在 fabric-check/:

   ┌──────────────────────────────┬─────────────────────────────────────────────┐
   │ 文件                         │ 做什么                                      │
   ├──────────────────────────────┼─────────────────────────────────────────────┤
   │ plugin.json                  │ 应用清单:名字、版本、用到的 SDK            │
   │ index.html · app.js          │ 拍照界面:视觉 SDK 拍照,模型判断有没有污渍 │
   │ skills/fabric-check/SKILL.md │ 告诉智能体什么时候用、怎么用                │
   └──────────────────────────────┴─────────────────────────────────────────────┘

   下一步:

   1. 运行 aidc app dev fabric-check,用摄像头拍一张布面试试。
   2. 改好 SKILL.md 的 description,再运行 aidc app deploy fabric-check。
 计划 2/2
   ✓ 用 camera 模板生成应用
   ✓ 说明怎么预览和发布
   6.6s · 输入 9.2k · 输出 412

╭─────────────────────────────────────────────────────────────────────────────────────────╮
│ › 说点什么;/ 看命令,@ 引用文件                                                        │
╰─────────────────────────────────────────────────────────────────────────────────────────╯
 AIDH · DeepSeek V4.1 Flash · ~/projects · 上下文 12%                             ? 快捷键

这段录屏演示一轮对话:进入 aidc,输入一句话,智能体先列出计划。执行命令前,界面请你确认;确认后,智能体给出结果。

说明

前提:已安装 aidc,见 CLI 概览。没登录时,界面先请你登录。要让智能体在本机干活,需要装 AIDH、Codex 或 Pi 之一。三个都不能用时,界面用 Engine,只聊天,不动本机。

进入交互界面

在终端里敲 aidc 或 aidc chat。stdin 和 stdout 都是终端时,才会进界面。

aidc                                          # 进入交互界面
aidc chat "看看这个仓库的结构"                  # 进来先发这一句
aidc chat --runtime codex --model <模型>       # 指定运行时和模型
aidc chat --continue                          # 续上这个目录里最近一次的对话
aidc chat --resume [会话 id]                   # 续上指定的对话,不带 id 时打开列表
参数 说明
"开场的一句" 进入界面后先发这一句
--runtime <运行时> aidh、codex、pi、engine、agent 或 acp。没写就用上次用的
--profile <档案> AIDH 的档案
--model <模型> 这次启动用的模型。在界面里用 /model 换的模型才记进配置,下次沿用
--continue 续上这个目录里、这个运行时最近一次的对话。没有就开新对话
--resume [会话 id] 续上指定的对话。不带 id 时,运行时支持续会话、又有可续的对话,才打开列表;否则只说明原因
--cwd <目录> 工作目录,缺省是当前目录

不在终端里时,aidc 打印帮助。aidc chat 以退出码 2 结束,并提示改用不进界面:aidc chat -p。

首屏左边是 AIDC 标志,右边是这些信息:

 AIDC CLI 1.77.0

 账号    zhang.san · Demo Company(cell-demo) · developer
 运行时  AIDH
 目录    ~/old-portal

 / 命令 · @ 文件 · ↑ 历史 · esc 中断 · ? 快捷键

没登录时,账号一行写「未登录」,界面先显示登录面板。输入账号和密码,或按 ctrl+b 在浏览器里批准。登录之后,界面才连运行时。在账号和密码的表单里按 esc 退出,退出码是 3。在选组织、等浏览器批准的面板里按 esc,回到表单。

首屏下面是输入框。屏幕底部的活动区有这些部分:正在生成的回答、计划、状态行、输入框和状态栏。状态栏左边是运行时、模型、目录和上下文用量,右边是一句提示:

 Engine · deepseek-flash · ~/old-portal                      ? 快捷键

对话里的标记:

标记 意思
› 你的话 你发出的话
● 回答 智能体的回答
✓ 执行 ls -la · 0.2s 工具卡片:状态、动作、对象、用时。下面是输出的末尾几行或改动摘要
✓、✗、○ 工具完成、失败、还没开始
计划 1/3 智能体的计划。✓ 完成,▸ 进行中,○ 还没做
∴ 思考 · 2.1s 思考过程。缺省只留一行
// 生成中 · 3.2s · esc 中断 状态行:在做什么、用时、怎么中断。斜杠闪动说明还在进行
2.4s · 输入 1.2k · 输出 340 每轮结束后的一行:用时和 token 数

这次说过话时,退出界面会打印续上这次对话的命令:

续上这次对话:aidc chat --runtime aidh --resume <会话 id>

Engine 的对话只存在内存里,不能续上,所以 Engine 不打印这一行。ACP 智能体也不打印。

选运行时

运行时是真正干活的智能体,界面只管你怎么看、怎么说。/runtime 随时换,aidc runtimes 看本机能用哪些。

运行时 --runtime 是什么 需要
AIDH aidh 本机的 Harness 引擎,经 ACP 对话。能读写文件、跑命令,有风险的操作先问你 先用 aidc aidh install 装的引擎(或本机 Adis 装的那份),再找 aidh、hermes 命令。AIDC_AIDH_COMMAND 可以整体替换
Codex codex OpenAI Codex,经 codex app-server。在沙箱里干活,越界时先问你 本机有 codex,并运行过 codex login
Pi pi Pi coding agent,经 pi --mode rpc。不弹确认 本机有 pi,并配置了模型
Engine engine AIDC 模型(/api/v1/models)。只聊天,不动本机,用量记在登录的组织 登录
数字员工 agent 云端的数字员工(Agent API)。工具和会话都在云端 环境变量 AIDC_AGENT_KEY

ACP 是 Agent Client Protocol,智能体和客户端之间的协议。

没写 --runtime 时,界面用上次用的运行时。上次的不能用,就按 AIDH、Codex、Pi、Engine 的顺序取第一个能用的。

查看运行时
$ aidc runtimes
○ aidh    AIDH —— 本机 Harness 引擎 · ACP;本机没有 AIDH(aidh 命令)
● codex   Codex(缺省) —— OpenAI · app-server
○ pi      Pi —— Pi · RPC;本机没有 pi
● engine  Engine —— AIDC 模型 · 只聊天,不动本机
○ agent   数字员工 —— 云端智能体 · Agent API;需要 AIDC_AGENT_KEY

aidc runtimes 要先登录。● 表示能用,○ 表示不能用,行尾写缺什么。「(缺省)」标出现在默认的运行时。--json 输出 {"runtimes": […], "default": "…"}。

运行时起不来时,界面说明原因和下一步,并打开运行时列表让你换一个。用 --runtime acp 时不打开列表。装 Codex:npm install -g @openai/codex,然后运行 codex login。装 Pi:npm install -g @earendil-works/pi-coding-agent,再配置一个模型。

装 AIDH:照 Harness 页的一行命令把这台电脑接进组织。macOS 和 Linux 用 curl -fsSL https://ai-dc.ai/install.sh | bash -s -- --join <公司码> --name <姓名>,Windows 用 PowerShell 的 install.ps1。aidc 在 PATH 里找 aidh 命令。找不到时,用 AIDC_AIDH_COMMAND 指定完整路径。

用环境变量指定运行时的程序和凭证:

变量 作用
AIDC_AIDH_COMMAND 整体替换 AIDH 的启动命令
AIDC_CODEX_COMMAND Codex 程序的路径
AIDC_PI_COMMAND Pi 程序的路径
AIDC_AGENT_KEY Agent Key(aidc-sk-…)。在 Console 的智能体页或 Adis 里获取
AIDC_AGENT_API Agent API 地址,缺省 https://api.ai-dc.ai/v1

AIDH 的档案用 --profile <名字> 或 /profile 选。档案有两种:引擎自己的命名档案,和这台电脑上开出来的数字员工,名字形如 cell-demo/ops-agent。/profile default 用默认档案。

数字员工运行时里,/model 选的是数字员工:一把 Agent Key 可以对应几个。换一个就开新对话。

接入别的智能体:

aidc chat --runtime acp -- <命令…>

这条命令接任何实现了 ACP 的智能体,例如 gemini --experimental-acp。-- 之后是启动智能体的命令。aidc 不把本机文件和终端借给智能体。智能体用自己的工具干活,有风险的操作经 ACP 问你。ACP 智能体不出现在 /runtime 列表里。

输入

在输入框里写话,按 ⏎ 发送。

  • 换行:按 ⌥⏎、⇧⏎ 或 ctrl+j,或者在行尾写 \ 再按 ⏎。
  • 命令:输入 / 列出命令,边打边筛,最多列 8 条。
  • 文件:输入 @ 列出工作目录里的文件和目录,目录排在前面。发送的是路径文字,由智能体去读文件。
  • 粘贴:超过 8 行或 1,500 字的粘贴,折叠成 [粘贴 #1 · 120 行]。发送时展开成原文。折叠的占位整块移动、整块删除。
  • 排队:回答进行中,或界面还在连接运行时,你也能打字。发出的话排在这一轮之后,输入框上方显示「↳ 排队」。
  • 历史:在输入框的第一行按 ↑,翻出之前发过的话。按 ↓ 翻回来,回到最底下时还原你正在写的话。
  • 原样发送:以 // 开头的话不当命令,原样发给智能体。

@ 不列出 node_modules 和 .git。隐藏文件要先输入 .,才会出现。

快捷键

输入框为空时,按 ? 打开快捷键小面板,按任意键关闭。/help 把全部快捷键和命令打进对话记录。

键 作用
⏎ 发送
⌥⏎、⇧⏎、ctrl+j 换行。⇧⏎ 只在支持 kitty 键盘协议的终端里能和 ⏎ 区分
esc 回答进行中:中断。有补全或列表:关掉它。输入框有字:连按两次清空
ctrl+c 有输入时清空。没有输入、回答进行中时中断。空闲时,2 秒内连按两次退出
ctrl+d 输入为空时退出。有输入时删光标后的一个字
↑、↓ 多行输入里上下移动。到头时翻历史
tab 补全命令和文件
ctrl+a、ctrl+e 移到行首、行尾
ctrl+b、ctrl+f 左移、右移一个字
⌥←、⌥→、⌥b、⌥f 按词左移、右移
ctrl+w、⌥d 删前一个词、删后一个词
ctrl+u、ctrl+k、ctrl+y 删到行首、删到行尾、粘回刚删的
ctrl+_ 撤销
ctrl+l 清屏。对话仍在终端的滚动历史里
ctrl+z 挂起,用 fg 回来。Windows 不支持

斜杠命令

输入 / 出补全列表。用 ↑、↓ 选择命令。按 tab 补全。按 ⏎ 补全并执行。参数可选的命令,按 ⏎ 就执行。参数必填的命令只补全,等你写参数。

命令 做什么
/help、/? 命令和快捷键全表。打进对话记录,能滚动回看
/new 开一个新对话
/clear 清屏,并开一个新对话
/resume 续上之前的对话。运行时支持续会话、又有可续的对话时,打开对话列表
/runtime [运行时] 换运行时。不带参数打开列表
/model [模型] 换模型。不带参数打开列表
/profile [档案] 换 AIDH 的档案。/profile default 用默认档案
/status 账号、运行时、会话、目录、用量和版本
/copy 复制上一条回答
/thinking 展开或收起思考过程
/theme [模式] 模式是 auto、light 或 dark。不带参数在浅色和深色之间切换
/login 换账号或组织
/logout 退出登录
/exit、/quit、/q 退出

运行时自己的命令接在这些命令后面,/help 里标出运行时的名字。AIDH 在回答进行中支持 /steer(把话插进这一轮)和 /queue(排到下一轮)。

/runtime、/model、/profile、/resume 不带参数时,打开一个列表:

  • ↑、↓ 或 tab 移动,⏎ 确定,esc 取消。
  • ● 标出正在用的一项。
  • 长列表可以直接打字筛选。
  • 不能用的运行时是灰色的。选它时,界面说明缺什么。

回答进行中,不能换运行时和档案,也不能开新对话、续对话、登录或退出登录。界面提示「这一轮还没结束:先 esc 中断」。不认识的命令提示「没有 /xxx 这个命令」。

确认操作

智能体要执行命令、改文件、联网等有风险的操作时,输入框的位置换成确认面板,并响一声:

╭─ 需要你确认 ───────────────────────────────╮
│ AIDH 要执行命令                            │
│   npm test                                 │
│                                            │
│ › 1. 允许这一次                            │
│   2. 本会话都允许                          │
│   3. 拒绝                                  │
╰────────────────────────────────────────────╯
  ↑↓ 选择 · ⏎ 确认 · 数字直接选 · esc 拒绝

第一行写运行时和它要做的事。事有五种:执行命令、修改文件、删除文件、访问网络和用工具。下面是命令、路径或查询词。

  • 选择:按 1 到 9 直接选,或用 ↑、↓(tab 也行)移动,再按 ⏎。
  • 拒绝:按 esc 或 ctrl+c。
  • 选项:由运行时给出。界面把名字换成中文:允许这一次、本会话都允许、总是允许、拒绝、总是拒绝。
  • 排队:同时来几个确认,一个一个问,先来的先问。
  • 收尾:回答被中断或界面退出时,没回答的确认按拒绝处理。

重要

光标默认停在「允许这一次」。按 ⏎ 之前,先读清楚命令或路径。

AIDH 和 Codex 会请你确认。Pi 的设计是不弹确认,aidc 不另加。Engine 只聊天,数字员工的工具在云端跑,所以这两个运行时没有确认面板。

aidc chat -p 里没人可问:aidc 缺省拒绝,拒绝的操作记进结果的 denied。加 --yes 就自动选「允许这一次」。

警告

--yes 允许智能体做它要求的所有事。只在你信任这个目录和这个任务时使用。

不进界面:aidc chat -p

aidc chat -p 不进界面,跑一轮就退出。脚本和智能体用它。

-p 后面写提示。stdout 是终端时,回答边生成边打出来。每个新工具另起一行,以 · 开头,打到 stderr:

跑一轮看答案
$ aidc chat -p "总结一下 README.md 的安装步骤" --runtime codex
· sed -n 1,80p README.md
README.md 的安装步骤有三步:安装依赖、复制 .env.example、运行 npm run dev。

stdout 不是终端,或者加了 --json 时,aidc 在结束时输出一个 JSON 对象:

输出 JSON
$ aidc chat -p "用一句话说明 Action 是什么" --runtime engine --json
{
  "runtime": "engine",
  "model": "deepseek-flash",
  "sessionId": "5b1f0c1e-7d3a-4a52-9c43-1f0e2a8b6d90",
  "text": "Action 是 Semantic 里改数据的唯一方式:每次执行都带参数校验、权限检查和留痕。",
  "stopReason": "end_turn",
  "usage": {
    "inputTokens": 24,
    "outputTokens": 61
  },
  "tools": [],
  "denied": []
}

JSON 的字段:

字段 含义
runtime 用的运行时:aidh、codex、pi、engine、agent 或 acp
model 运行时报告的模型名。指定了 AIDH 档案时,前面带档案名
sessionId 会话 id。用 --resume <会话 id> 续上。Engine 不能续
text 完整的回答
stopReason end_turn、cancelled、max_tokens、refusal 或 error
error 只在 stopReason 是 error 时出现,写原因
usage 用量。有哪些字段,看运行时报告了什么
tools 这一轮用过的工具,每项有 title、kind、status、input
denied 被拒绝的操作,每项一行摘要。加了 --yes 时是空的

usage 可能有这些字段:inputTokens、outputTokens、reasoningTokens、cachedTokens、contextUsed、contextSize 和 costUsd。tools 里的 kind 是 read、edit、delete、move、search、execute、think、fetch 或 other。status 是 pending、running、done 或 failed。

规则:

  • -p 要先登录。没登录时,退出码是 3。
  • 续上对话:--continue 续上交互界面在这个目录、这个运行时保存的最近一次对话(-p 跑的对话不记进去)。--resume <会话 id> 续指定的对话。-p 里的 --resume 必须带 id。
  • 没人确认:缺省拒绝,见确认操作。
  • 退出码 0 不等于回答完整。检查 stopReason:max_tokens 表示被截断,refusal 表示模型拒绝回答。
  • 运行时出错时,stopReason 是 error,退出码是 8。回答被中断时,退出码是 130。
  • 运行时起不来(例如没装)时,退出码是 1,错误里带安装提示。
  • 没有提示文字,stdin 又是终端时,退出码是 2。

退出码的完整含义见 CLI 概览。

提示也可以从 stdin 传入。不写提示文字时,aidc 把 stdin 当作提示。写了提示文字,aidc 就不读 stdin。要给内容加上要求,先把两者拼在一起,再送进 stdin:

git diff | aidc chat -p                                                      # stdin 就是提示
(echo "帮我写提交说明:"; git diff) | aidc chat -p --json | jq -r .text         # 先写要求,再接内容

终端与外观

界面在终端里直接画,不切换到备用屏幕,也不抓鼠标。所以滚动、选择和复制都用终端自己的功能。

主题(浅色或深色)按这个顺序决定:

  1. /theme light 或 /theme dark:记进配置,优先级最高。/theme auto 取消固定。
  2. 环境变量 AIDC_THEME=light 或 AIDC_THEME=dark。
  3. 终端报告的背景色。
  4. 环境变量 COLORFGBG。
  5. 都没有时,macOS 自带终端用浅色,其他终端用深色。

其他设置:

设置 作用
NO_COLOR 设成任何非空值,关闭颜色
FORCE_COLOR 0 关闭,1 16 色,2 256 色,3 真彩色
AIDC_REDUCED_MOTION=1 关闭加载动效,斜杠不再闪动
AIDC_HYPERLINKS 1 强制开可点击链接,0 强制关
AIDC_CONFIG_DIR 换配置目录,缺省 ~/.aidc

没设 FORCE_COLOR 时,界面按 COLORTERM、TERM_PROGRAM 和 TERM 判断终端的颜色能力。可点击链接缺省只在已知支持的终端里开。这些终端是 iTerm2、WezTerm、VS Code、Ghostty、Windows Terminal 和 kitty。

中日韩文字和 emoji 占两格,组合符号占零格。输入框里放着真光标,所以中文输入法的候选框跟着输入框里的光标走。窗口大小变了,界面按新宽度重画。更早的内容留在终端的滚动历史里。

选择记在 ~/.aidc/config.json 的 tui 里。里面有运行时、AIDH 档案、每个运行时的模型、配色、思考过程是否展开和最近的对话。退出登录不清它。输入历史在 ~/.aidc/history,权限是 0600,启动时读最近 500 条。

下一步

本页由 developer/docs/cli-chat.md 生成 · Markdown 原文 · llms.txt