外观
交互界面与快捷键
直接运行 dcl 进入交互模式。普通对话显示在终端中;滚轮或翻页键可打开历史视图,输入框保持在底部。跨轮对话和调整窗口尺寸前的记录都可以回看。
和 Claude Code 一样,dcl 接管鼠标点击:点击折叠的工具结果(… +N lines)或修改摘要(Updated path (+7 -0))会在原位置展开,再点一次收起,见工具调用。双击工具标题复制完整指令,双击结果正文复制该工具的完整结果;双击用户消息复制消息内容。拖选文字后松开鼠标即可复制;按住 Shift 拖动则使用终端自身的选择功能。
启动时先显示三行标题:版本、当前模型、工作目录(家目录缩写为 ~)。会话 ID 用 /status 查看。
这三行也称为欢迎区。首次发送消息时,欢迎区保持原位,输入框继续固定在底部。
普通视图和 Alt+M Compact 视图中,相邻内容块之间保留一行空行。已发送的用户消息上下各有一条横线,横线外侧各留一行空行;运行中队列送达、历史恢复和点击展开采用相同格式。调整终端宽度后,横线与正文重新排版。尚未送达的队列预览保持独立显示。
运行中按住鼠标拖到内容区域上、下边缘会自动滚动,可以跨屏选择;按住鼠标时滚动滚轮也会延伸选区。松开鼠标后复制所选文字,选区高亮保持;轻微移动鼠标不会取消选中。选区保留期间暂缓显示后续输出,后台请求继续执行,主动点击、输入或滚动后恢复显示。
启动时的确认
和 Claude Code 一样,第一次在某个目录交互启动时,dcl 先问你是否信任这个目录(Is this a project you created or one you trust?),选 Yes, I trust this folder 才会加载项目设置和 hooks 并开始会话,选 No, exit 直接退出。信任一个目录也包括它的子目录。第一次以 bypass 权限模式启动时,还会要求确认一次 Bypass Permissions 的警告(--full-access 有自己单独的警告)。两个回答都保存在数据目录的 startup-prompts.json 中;-p、管道输入和 SDK 不会询问。
输入框
text
──────────────────────────────────────────────
❯ 修复登录页的样式问题
──────────────────────────────────────────────
? for shortcuts- 输入框上下各有一条分隔线。
- 下面一行和 Claude Code 一样:默认的 ask 模式显示
? for shortcuts,其他权限模式显示带颜色的标签,例如⏵⏵ accept edits on (shift+tab to cycle)、⏸ plan mode on (shift+tab to cycle)、⏵⏵ bypass permissions on (shift+tab to cycle)(红色)。右侧显示当前模型和 effort,例如deepseek-flash · ● high。 - 在空输入框里按
?,和 Claude Code 一样在输入框下方分三列显示快捷键,代替提示行;再按?或按其他键关闭。 - 提交后,提示词连同上下两条分隔线一起保留在对话记录里,方便回看自己问过什么。
- 输入
/会在输入框上方弹出斜杠命令列表,下方仍显示模式提示行:按名称字母顺序,一次显示 5 条,每条一行(过长的说明以…截断);继续输入时和 Claude Code 一样排序:名称以输入开头的在前(名称短的优先,例如/co依次是/copy、/color、/config),然后是名称中某个单词以输入开头的(/mo匹配/auto-mode-setup)、名称包含输入的、按顺序包含这些字母的,最后是说明包含输入的;都不匹配时显示No commands match "/xx"。↑↓选择,Tab补全。 - 长输入在单词之间换行,续行缩进两格。提交后的长指令显示前两行及展开提示;点击进入可滚动的完整记录,再点击该消息可收起。顶部固定的最新用户问题也可点击查看全文;普通视图、Alt+M Compact 和向上滚动历史时都保留,恢复会话后从该会话记录中还原。历史视图会为固定栏预留一行,
Ctrl+Home仍能看到最早的消息。 - 已发送的用户消息使用终端默认前景色和背景色,跟随终端的深浅配色与水墨屏高对比设置;普通视图、Compact、历史展开和重绘保持一致,不固定为浅色文字。
- 历史视图中用滚轮或
PageUp/PageDown浏览。翻页键每次移动消息可视高度的 4/5,保留约 1/5 上下文;终端按整行取整,至少移动一行,调整窗口后重新计算。普通视图、执行中、紧凑视图、子代理记录与工具详情使用相同规则。Ctrl+Home回到开头,Ctrl+End或Esc返回输入。展开的长指令可以滚动到最后一行。 - 一轮结束后,输入框里可能出现灰色的建议补全,按
Tab接受。
运行中
模型工作时,底部是这样的:
text
✢ Simmering… (8s · ↓ 1.3k tokens · thinking)
⎿ Tip: /status shows the session, model, permission mode and servers in use
──────────────────────────────────────────────
❯
──────────────────────────────────────────────
esc to interrupt deepseek-flash · ● high · ~/code/app状态行:
- 开头的符号是动画;后面是本轮随机选的动词,运行工具时显示
Working…,调用本身以● #1 Bash(npm test)的形式显示在工作区,见工具调用。 - 括号里依次是:已用时间、本轮输出的 token 数(
↓),以及模型是否正在思考。
提示行:轮换显示的小技巧,见运行提示。
窗口标题:和 Claude Code 一样,启动后终端窗口标题为 ✳ DeepSeek Code;发送第一条提示词后,dcl 在后台让模型用几个词概括话题,下一次出现输入框时标题改为 ✳ 话题;退出时清空。这会多发一次很短的模型请求。
底部:运行中在模式标签后面追加 · esc to interrupt;ask 模式只显示 esc to interrupt。右侧是模型、effort 和会话的工作目录;终端较窄时只显示目录名,再窄只显示模型。输入框和底部始终固定在屏幕最下面几行,输出还很少时也是如此;从运行中回到等待输入时输入框原地不动,记录、结束行和输入框之间的间距与等待输入时完全一致。
运行中仍然可以输入:
- 直接输入并回车:和 Claude Code 一样,这条消息先显示在工作区下方(
❯ 你的消息),输入框提示Press up to edit queued messages。模型下一次拿到工具结果时就会读到它,并在这一轮里照着调整;记录里它出现在读到的位置,之后的对话也会带上。这一轮没有再调用工具就结束时,它作为下一条提示词执行。 - 运行中的输入框和空闲时一样可以输入多行,真正分行显示;多行内容中用
↑、↓在行间移动光标。 - 输入框为空时按
↑,把还没被模型读到的消息全部取回输入框,可以修改后重发,也可以清空来撤回。Enter发送和Tab排队的消息都能取回。 - 以
/、!、#开头的输入不会插进这一轮,等这一轮结束后执行。 - 运行中输入
/,弹出的列表只包含运行中就能执行的命令:/agents、/btw、/background、/copy-session-id、/goal、/list-agents、/status、/subagents、/tasks。
运行中的命令菜单支持 ↑、↓ 跨过当前五条可见项继续选择,也可用 PageUp、PageDown 移动五项;选中项始终保持可见。/copy-session-id 将完整会话 ID 复制到系统剪贴板。
空闲时输入 /tasks 打开后台任务列表:每个任务一行,最新的在前。↑/↓ 选择,Enter 看详情,x 直接停止,Esc 关闭。
运行中输入 /tasks 或 /tasks list 打开独立任务页,按任务名称和状态查看后台命令与 Agent;列表不展示当前主请求的长提示词。用 /tasks show ID 读取最新输出,按 Esc 返回对话,再次查询可刷新。查询时当前请求继续执行。/status 同样打开独立状态页,包括附着到 Worker 的运行状态。Ctrl+T 显示的是待办列表。
/background 分离的是当前请求的终端视图,同一会话仍由原 worker 执行。分离后可用 /tasks attach ID 返回;需要独立对话时用 /clear 创建新会话。
/btw 问题:问一个旁支问题,不打断主任务。/background:把当前任务转到后台,释放终端。
长时间运行的命令:Bash 命令运行超过 3 秒时,命令下方提示 Ctrl+B to run in background · click to show output,单击命令可以展开或收起它的最新输出。这时按 Ctrl+B,命令转到后台继续运行,记录里显示 Running in the background (↓ to manage),模型接着工作;没有命令在运行时,Ctrl+B 仍然是把整个会话转到后台。排队的消息下方提示 ctrl+x ctrl+s to send now:按下后正在运行的命令转到后台,模型马上读到这条消息。
后台命令:有后台命令在运行时,一轮结束的那一行末尾显示 · 1 shell still running,输入框下方显示 1 shell · ↓ to manage。在空输入框、已经是最新一条历史时按 ↓,或输入 /tasks,打开任务视图:只有一个任务时直接显示它的详情(状态、运行时间、命令、最新输出),按 x 停止;有多个时先列出,选中后查看。
工具记录中的 Running in background 称为后台任务状态区。点击状态区会原位展开该命令当前的 stdout、stderr 和状态,再点一次收起;重新展开时读取最新输出。模型运行中、返回输入框后以及紧凑模式中都可使用,查看输出不会停止任务。任务结束后仍能展开最终输出,读取到结束状态后,折叠行也会显示完成、失败或取消状态。
后台命令结束时:和 Claude Code 一样显示一行 ● Background command "npm test" completed (exit code 0)(停止的显示 was stopped),并通知模型。模型正在工作时,它在下一个工具结果之后读到;空闲时会自动开始新的一轮,让模型查看结果、继续下一步。正在输入时会等你发送或清空输入后再开始。这类通知不会出现在 ↑ 的历史提示词里。
/mcp 和 /hooks:/mcp 列出 MCP 服务及其状态(已连接及工具数、失败原因、已停用),选中一个可以查看工具、重新连接、停用或启用。/hooks 是只读菜单:先显示一共配置了多少个 hook,然后列出全部事件及说明,选中事件查看它的 matcher、执行内容和超时。和 Claude Code 一样,/mcp 不列出 dcl 自带、未启用也未修改过的预设服务(会注明隐藏了几个);没有其他服务时显示 No MCP servers configured。带参数的 /mcp list、/hooks list 仍然输出 JSON。
后台子代理:和 Claude Code 一样,模型可以让子代理在后台运行(Agent 工具的 run_in_background),调用立即返回,记录里显示 Backgrounded agent (↓ to manage · ctrl+o to expand)。子代理在独立的会话里运行,沿用当前的提供商、模型和权限模式。运行期间:
- 主回合结束时显示后台 Agent 数量与
ready for input; completion will notify,可以立即继续输入; - 输入框下方列出
● main和每个运行中的子代理(类型、说明、已用时间、输出 token 数),提示↓ to manage; - 子代理面板与
/agents根据当前执行状态展示活跃项;后台任务心跳失联后退出活跃列表,完成、失败或取消后也不再累计计时。失联记录仍可在/tasks查看,时长停在最后心跳并标注结果未知;心跳恢复后重新显示为活跃任务。 - 耗时不足一分钟显示
8s,不足一小时显示2m 8s,一小时及以上显示1h 2m 8s,主任务状态行、子代理行与任务详情使用同一格式。 - 运行期间或等待输入时双击 Agent 行,在右侧查看该子代理的执行记录,内容定期刷新;侧栏保留最近 20 条消息及每条消息最近 30 次工具调用,长正文取末尾片段,便于快速查看最近进展;按
Esc关闭,方向键可滚动。 - 前台子代理执行时,状态行显示
Waiting for foreground agent;后台子代理允许主任务继续。面板累计子代理各次请求的输出 token,实时记录与已保存记录按请求 ID 去重。前台流式输出尚未收到精确统计时显示带~的估算值,精确统计到达后替换;没有输出与统计时显示pending。子代理统计独立于主会话。 - 页脚显示
← for agents:在空输入框按←,提示Press ← again to open agents,再按一次打开任务视图,可以查看或停止(x)子代理。
子代理结束时显示 ● Agent "说明" completed,它的报告写入会话记录,输入框空闲时自动开始新的一轮,让模型查看结果。
恢复会话后会先等待输入:上述后台通知保留在队列里,不自动启动模型。发送 /continue 或新的任务消息后恢复正常执行;等待期间也暂停定时任务、异步 Hook 的自动模型唤醒和提示词建议请求。详见恢复会话。
/memory 和 /agents:/memory 列出用户、项目、本地三份说明文件(位置和大小),选中后打开编辑,也可以查看当前加载的项目说明。/agents 显示当前会话家族中正在执行的 Agent(包含父级、同级和子级),逐项列出会话 ID、运行状态、任务及可用的当前工具信息;等待审批时给出提示。空闲和模型执行期间均可使用,不会启动模型。仅有保存记录或打开终端的空闲会话不算活跃;没有活跃项时明确显示空状态。/agents definitions 查看可委派的代理类型,原有 /list-agents definitions 也可使用。
需要你回答时:工具审批在输入框的位置显示选项菜单,用 ↑/↓ 和 Enter 或数字键选择,见审批提示。计划审批等需要输入文字的问题,提示行会高亮显示"↑ Answer the question above",输入框前缀变成 Answer ›。
快捷键
| 按键 | 作用 |
|---|---|
Enter | 发送;运行中交给这一轮在下一个工具结果之后读取 |
Ctrl+J | 换行,空闲和运行中都可用;也可以用 Alt+Enter、Shift+Enter(终端能区分时),或在行尾输入 \ 再按 Enter |
Esc / Ctrl+C | 中断当前这一轮,已有的对话保留 |
Shift+Tab | 切换权限模式:ask → accept-edits → plan → bypass → auto(已配置才有),见权限模式 |
Ctrl+O | 打开整个会话的详细记录,见工具调用 |
Ctrl+T | 显示或隐藏待办列表(☒ 已完成,☐ 未完成,进行中的加粗),运行中也可用 |
Alt+P | 打开模型选择(同 /model),←/→ 调整 effort |
↑ / ↓ | 历史提示词 |
Ctrl+R | 搜索历史提示词 |
Tab / → | 接受建议补全(输入框为空时) |
Ctrl+U / Ctrl+K | 删除光标前 / 后的内容;之后下方提示 Ctrl+Y to paste deleted text |
Ctrl+Y | 粘贴最近一次删除的内容 |
Ctrl+_ | 撤销输入框里的上一次修改 |
Ctrl+G | 用 $VISUAL、$EDITOR 或 vi 编辑当前输入;多行输入时下方会提示 |
Ctrl+S | 暂存当前输入(提示 › stashed),发送下一条提示词后自动恢复(提示 Draft restored);输入框为空时再按一次直接取回 |
Ctrl+Z | 挂起到 shell,fg 回来(Windows 不支持) |
Ctrl+L | 清理底部界面 |
Ctrl+D | 输入框为空时退出;退出后提示 Resume this session with: dcl --resume 会话ID |
Esc Esc | 输入框有内容时:清空(第一次按下提示 Esc again to clear);为空时:回退 |
? | 输入框为空时:显示或关闭快捷键面板 |
@ | 补全项目文件,见@ 引用文件 |
Ctrl+V | 粘贴剪贴板中的图片,没有图片时粘贴文字;Alt+V 同样粘贴图片,见图片 |
输入框的特殊前缀:
| 前缀 | 作用 |
|---|---|
! | 直接运行 Shell 命令,见! 命令模式 |
# | 写入项目说明,见# 写入项目说明 |
/ | 斜杠命令 |
/vim 可以切换到 vim 风格的编辑,见vim 模式。
快捷键可以在数据目录的 keybindings.json 中自定义。
常用斜杠命令
| 命令 | 作用 |
|---|---|
/help | 命令说明 |
/status | 当前会话和服务状态,见状态查看 |
/provider、/model、/test | 提供商和模型,见模型与提供商 |
/plan 任务 | 进入计划模式 |
/lsp | 语言服务器 |
/loop | 定时重复一条提示词,或让模型自定节奏,见定时任务与循环 |
/workflows | 查看和停止工作流 |
/deep-research 问题 | 联网深度研究 |
/compact | 压缩上下文,完整记录仍保留在存档里,见上下文用量与费用 |
/usage、/cost | 本次会话的 token 用量和费用 |
/copy | 复制模型最近一条回答,/copy 2 复制倒数第 2 条。和 Claude Code 一样,同时写入系统临时目录下的 deepseek-code/response.md;没有系统剪贴板工具时通过终端(OSC 52)复制 |
/export | 导出整个对话:选择复制到剪贴板或保存为文件;/export 文件名 直接保存 |
/rewind | 回退代码或对话;别名 /checkpoint |
/ide | 选择要连接的编辑器(列出打开了当前项目的编辑器,最后一项 None 断开);没有可连接的编辑器时只提示一行。/ide status 显示详细状态 |
/terminal-setup | 说明如何在提示词里换行:任何终端都可以用 Ctrl+J、\ + Enter 或 Alt+Enter;终端能区分时 Shift+Enter 也可以 |
/code-review、/security-review | 代码审查与安全审查 |
/vim | 切换 vim 模式 |
/rename 名称 | 给会话命名 |
/clear | 开始新的对话;别名 /new、/reset |
/restart | 重启 dcl:替换当前进程并在当前对话里继续,启动参数保留,改过的 config.json 和更新后的二进制会重新加载 |
/config | 设置对话框;别名 /settings |
/exit | 退出,并提示用 dcl --resume 会话ID 恢复 |
/resume [ID] 恢复历史并等待输入;/continue 显式继续当前会话。任务还在后台运行时,/continue 直接接回这个任务,不会重新执行。
思考等级、状态与粘贴
Alt+> 增加思考等级,Alt+< 减少思考等级。部分终端也可使用 Alt+.、Alt+,。等级按 default、low、medium、high、xhigh、max 调整,到边界后保持不变。空闲和运行中均可使用;快捷键原地更新底部等级,保留草稿、光标和粘贴内容,不追加通知行。设置用于下一轮模型请求,具体等级支持取决于模型。
回答按 Markdown 块解析,支持跨行强调、不同长度的反引号、Setext 标题和围栏代码。流式输出中的未完成块会继续更新,完成后进入历史;命令中的空格和代码中的空行保留。终端样式只影响显示,原始回答仍保存在会话记录中。
运行中输入 /status 可查看状态而不等待工具完成。其中 Token usage 是本会话已保存的累计输入和输出,加上当前轮已返回的请求统计(按请求 ID 去重);Context window 独立显示模型容量,例如 GPT-6-Astra 的 256K tokens;Context usage 按最近一次请求的输入量与窗口计算剩余百分比,不是累计 Token 总数。没有供应商统计时使用完整的请求估算;输入量无法完整估算时,保留同一模型的上次已报告值并明确标注;还没有统计时显示等待状态,已知窗口容量仍然显示。空闲时与运行中使用相同的可滚动状态页。当前正在生成的内容以供应商已返回、已保存的数据为准。
长粘贴仅折叠新粘贴的部分,保留之前输入的文字及后面的文字。移动光标可以展开编辑,提交仍发送完整原文。
工具调用统一显示 #编号,包括读取、搜索、修改、命令和 MCP 工具;恢复会话和打开详细记录时按保存的调用顺序恢复编号。
本地命令输出与屏幕历史
/tools、/lsp list、状态文本和配置等本地命令输出会同步保留在屏幕历史中,点击、拖选和滚动时可还原对应内容。状态、配置等临时面板关闭后恢复原视图,不重复插入输出。
屏幕历史是当前 CLI 进程的显示缓存,与发给模型的会话消息分开,不会自动增加模型上下文或 token 用量。手动发送的文字、模型调用工具获得的结果仍按正常会话流程进入上下文。
收到 Agent 消息时,对话直接显示发送者、消息 ID、投递状态和正文。等待输入时收到的消息也保留在屏幕历史中,切换 Compact 视图或调整窗口大小后可继续回看。queued 表示已排队,内容在模型的下一个安全边界进入上下文,不能把通知当成模型已处理。运行中或等待输入时都可用 /list-agents inbox、/list-agents sent 回查;/list-agents 默认只显示本会话的父级、同级和子级 Agent,不混入同项目的其他历史会话。
后台 Agent 与输入
后台 Agent 运行时,主会话可以继续处理独立工作。主回合结束后显示后台 Agent 数量并恢复输入;完成通知会唤醒后续处理,不需要持续调用 TaskOutput 等待。只有明确采用前台 Agent、或后续步骤依赖它的结果时才等待。单个顺序任务通常可以由主 Agent 直接执行,减少重复上下文和额外进程。
切换子代理消息视图
输入 /subagents 打开当前会话树的代理选择列表。列表显示 Main、子代理名称、类型与会话 ID,(current) 标识当前输入所属会话;已经完成的子代理也可查看。独立历史会话不会混入列表。
主回合结束且仍有后台代理运行时,屏幕显示 Use /subagents to switch between this session's subagents,可立即进入查看。
↑、↓选择,Enter查看代理自己的最近用户消息、助手回复和工具记录;选择当前会话返回主对话。Alt+←、Alt+→切换上一个或下一个代理,也可直接在主对话使用,输入草稿会保留。- 查看消息时用方向键、PageUp/PageDown 或鼠标滚轮滚动;
Esc返回列表,再按Esc返回主对话。
空闲、运行中以及 Compact 视图都可使用。查看期间主任务继续运行,消息视图定时刷新,显示最近 20 条消息及每条消息最近 30 个工具调用,过长正文显示末尾片段;独立后台 Worker 运行期间还读取最近 256 KiB 输出中的最多 120 条完整事件,及时显示尚未写入最终消息表的工具进度。这是查看操作,不会恢复、重跑或接管子代理任务。双击原有代理行仍可打开右侧执行详情,并与此视图读取同一份消息记录。无交互终端时,/subagents 输出普通列表。
子代理消息视图使用主会话相同的 Markdown、用户标记、助手标记和编号工具块,正文与工具块之间保留空行。点击工具结果可展开,Alt+M 可切换 Compact 摘要视图。后台任务完成通知显示可读摘要,不显示内部 task-notification 标签。主回合结束后,只要仍有后台子代理执行,窗口标题继续显示执行状态。