Skip to content

对话 ​

一段对话就是与一个智能体的一次会话:底部是 composer,你在这里编写和发送;上方是对话记录,智能体的工作在这里流式出现。本页两者都讲——从发出第一条消息之前看到的界面,到一段长对话如何跟上你的节奏。

它周围的窗口——侧边栏、标签页与分屏、终端——见工作区;它右边的面板——会话详情、文件与 diff、你的 git 变更——见右侧面板。

欢迎界面 ​

在会话开始之前,对话窗格会询问"今天准备做些什么呢?",并在三个标签页中提供快捷操作——代码开发、日常办公和科学研究。每张卡片只需一键即可将一个现成的技能(对于办公和研究,还有一个提示词模板)放入 composer;任何尚未为你所选智能体启用的项目都会显示一个锁形图标,点击可跳转到启用它的位置。下方是智能体选择器和一条轮换显示的提示。

快捷操作下面那一排技能快捷方式会在两端停住,不再自己往前漂:两端各有一个箭头用来移动它,而每个箭头只在那个方向还有内容时才可点。

开启会话——composer ​

一切都从 composer 开始,它是对话底部的输入框。选择智能体及其设置,将它指向一个工作文件夹,输入提示词,然后发送。

  • 智能体。 从你已启用的智能体中选择。(智能体选择器会在你开启新对话时出现;从 0.35.2 起,在你选中的智能体还在连接时,它也依然可用:你最后选的那个,才是真正去连接的那个,而如果它启动失败,原因会显示在输入框的横幅里。对话一旦保存,它就会锁定。)这一行会按拿到的宽度自适应:能放下几个就显示几个,放不下的收进一个更多 Agent 按钮里——而当前选中的那个永远不会被收进去,因此写着你选择的那枚标签始终在屏幕上、始终读得清。
  • 智能体的设置,集中在一个按钮上。 从 0.37.0 起,模型、模式——计划优先模式、接受编辑模式等等——以及所连接智能体声明的其他会话选项,都集中在 + 旁边的一个智能体设置按钮上。它读起来像 Opus 5.5 / High / Plan:各项的当前值,模型在前,然后是推理强度,再往后是模式和其余各项,用「/」连起来。id 恰好是 default 的值会被略去——不过模型总会显示,而如果这样一来什么都不剩,第一项设置的值仍会照样显示(比如 Gemini 的 Default 模式)——开关只在打开时才写出它的名字;输入框非常窄时,就只剩下智能体的图标。点击它,一个面板就会打开,所有设置各就各位——短列表是一排按钮,模型是一个列表,超过八项的列表带搜索框,开关就是开关,智能体给出了推荐值的地方都会标出来。选中即刻生效,面板也保持打开,所以改三项设置只需打开一次。这些全都来自智能体本身,因此你看到的内容取决于你正在运行哪一个——而某个选项如果用的是这一版 Codeg 还看不懂的类型,它会被安静地略过,而不是被放进来把整个会话弄坏。从 0.34.0 起(适配器 0.86.0),一旦你定义了自定义子智能体——Claude Code 从你的用户目录、项目或插件里读取的那些 agents/*.md 文件——Claude Code 就会多出一个 Agent 选项;选中其中一个,会话就从你的下一条消息起以那个子智能体的身份运行。它和其他选项一样,会在这台设备上为 Claude Code 记住,所以你下一个 Claude Code 会话也会以那个子智能体开始,直到你重新选回默认那一项;已经不再定义的子智能体会被跳过。
  • 工作文件夹与分支。 输入框正下方的一行显示智能体将在何处工作:一个文件夹标签和一个分支标签。当对话还是草稿时,文件夹标签可以切换(它的列表会显示文件夹别名并支持按别名搜索,底部固定的聊天模式一行可无文件夹运行,便于快速对话);一旦对话绑定到某个文件夹,该标签就只作为标识显示。分支标签就是完整的 git 菜单——参见分支与 git 操作。
  • 上下文与连接。 在同一行的右侧,一个小圆环跟踪你已用掉多少模型上下文窗口——点击可查看 token 细分(输入、输出、缓存写入、缓存读取、总计,以及自 0.31.0 起位于总计下方、保留一位小数的缓存命中率;若该会话的智能体完全没有报告缓存计数,这一行会直接不显示,而不是给出一个笃定的 0.0%)——旁边的心形图标显示智能体的连接状态:已连接、连接中...、连接异常或未连接。那个心形是一个按钮——见下文。
  • + 菜单。 附加文件、插入已保存的快捷消息、在智能体工作时留下实时反馈、运行斜杠命令,或从专家、日常办公或科学研究技能包中加入一个技能。实时反馈会打开一个对话框,让你给正在运行的智能体写一张便条——和 composer 的中途发送走的是同一条通道,下文会详细说明。→ 设置 → 协作
  • 富文本输入。 输入 @ 可提及文件、智能体、助手、过往会话或提交——从 0.35.2 起,面板提供其中哪些标签页、按什么顺序排列,都可以在设置 → 常规 → 提及面板里由你决定。输入 / 使用斜杠命令——匹配是模糊的,因此 rvw 也能找到 review;而从 0.35.0 起,需要参数的命令会提示它后面该跟什么。你发出的长消息会带一个展开开关折叠起来,让对话记录保持易读。
  • 两个面板都像面板了。 @ 列表如今取用 composer 自己的宽度和边界并在其上方展开,和 / 完全一样,而不再是钉在光标旁边的一个窄框——多出来的空间给了描述,那部分从前是被截断的。它也会跟着它所属的那个 composer:切换到「待办任务」时留着没关的面板,不会再浮在新页面上。而且 / 在智能体还在连接时就能用:斜杠命令要等智能体起来才存在,所以从前提前敲 / 什么都不会发生;现在面板会带着一行加载状态打开,命令到齐时自动填上,不必重新敲一遍。
  • 中日韩文字之后的 @,以及手机上的 @。 提及面板从前只在一个 ASCII 空格之后才触发——而中文、日文、韩文并不写这个空格——并且在软键盘的输入法组合过程中拒绝打开。这两点都修好了,它也会避开屏幕键盘。
  • 发送、排队、停止。 Enter 发送,Shift+Enter 换行。当智能体正在工作时,发送按钮会变成红色的取消按钮 —— 而当你在一个有投递通道的会话上打了字之后,它旁边还会出现一个分体发送:按钮本身是加入队列,这也正是 Enter 在那里一直做的事;它的箭头里则放着唯一一个不必等待的动作。无论走哪条路,你都可以提前输入,消息会排队直到智能体准备好接收。→ 在智能体工作时插话

审批来自智能体

Codeg 没有全局的"自动批准一切"开关。智能体的行动自由度取决于你选择的模式,以及它在任务中途弹出的权限提示(见下文)——因此控制权始终掌握在智能体自身的安全模型手中。终端运行则可通过每次运行的 --permissions 策略回答智能体提出的请求。

让 Claude Code 建议下一条提示词 ​

从 0.37.0 起,只要适配器是 0.92.0 或更高版本,Claude Code 就会猜你接下来要问什么。两轮之间,空着的输入框会以灰色显示这个猜测——…(按 Tab 填入)——只按一下 Tab 就会把它填进去而不发送,于是你可以改一改,也可以原样发出。一开始打字它就会隐去,新的一轮开始它就作废;第一轮不会给出,回合运行期间不会,你在编辑一条排队消息时也不会。重新打开的对话,要等它的下一轮之后才会给出第一条建议。

这个猜测的代价是大多数回合之后多一次请求:Claude Code 会把对话再发给同一个模型一次,这次请求设计成大部分从提示词缓存中读取,但它仍然计入你的用量——而且由于它从不进入对话记录,Token 用量无法把它算进去。自动化、聊天频道机器人,以及自 0.38.0 起的 codeg-cli 运行,都不会请求它。Codeg 自己没有关闭它的开关;Claude Code 自己的 promptSuggestionEnabled: false 设置,或在它的环境变量里设置 CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false,都能让它停下。

跟随进展——对话 ​

当智能体工作时,它的对话记录会实时流入:以格式化 Markdown 呈现的回复(包含代码、数学公式和图表)、它的推理过程,以及针对多步骤任务的实时计划清单。长到足以淹没本回合其余内容的计划会限制高度,并提供展开 / 收起,与你发出的长消息早已具备的行为一致;计划一步步的进度,也能在右侧面板的计划任务里看到。

从 0.38.0 起,Markdown 表格和代码块使用单层边框,浅色模式中的代码高亮恢复正常,表格全屏时的控制按钮也会保持可见。代码块头部保留语言标签和复制/下载按钮。

  • 每一条回复都坐在一个头部之下。 智能体书写时它读作 正在工作中...,这一轮落定后读作 工作了 1 分钟 9 秒 —— 单轮耗时如今就住在这里,而不再放在页脚的统计行里。点击这个头部,折起来的是这条回复的中间过程 —— 它走过的那些工具调用和推理 —— 而最终答案留在屏幕上,因为那才是你回来要看的东西。你发出下一条消息时,上面的过程会自动折叠,这也是你回到一个对话时它打开的样子。没有东西可折的回复只是一个静态标签而不是按钮:停在某次工具调用上的、或者答案本身就是一张卡片的,都保持展开 —— 折起来只会在原本有内容的地方留下一个孤零零的头部。从 0.36.0 起,一个你连发好几条提示词期间始终开着的对话标签页,会显示每条回复完整的工作时长和 token 用量——以前,一条跑了一个小时的回复,在你重新打开对话之前可能只显示几秒。
  • 思考块在你打开它之前一直折叠着。 智能体的推理以一行折叠的形式出现——正在流式输出时是 思考中…,结束后是 思考——要不要展开由你决定。到 0.31.2 之前,它会在第一个 token 到达时自己展开、又在这一段结束一秒后自己收起:展开时把回复往下推出视野,收起时又把正在读的人眼前的文字抽走,那个计时器根本不管这个面板是不是你亲手打开的。现在你打开的会一直开着,而没人打开的那个在流式输出时根本不渲染任何内容。
  • 工具调用会显示为带状态标记的可折叠卡片——运行中、等待授权、已完成、已拒绝、错误 等。从 0.36.0 起,当你停下一轮 Claude Code 时,它留下的那些还开着的卡片——包括它的子智能体的——会显示它们实际是怎么结束的,而不再在你重新加载之前一直显示已完成。Shell 命令会实时流式输出——从 0.32.0 起 Codex 的也是,而不再在命令结束之前一直停在一个 [Terminal: …] 占位符上——重复的操作会折叠成一条摘要,例如"运行 3 个命令"。从 0.35.2 起,Claude Code 的卡片显示的是实际运行的内容:Bash 或 Grep 卡片读出的是 Claude Code 实际采用的描述和输出模式,即便模型把这两个参数的名字写错了也一样;而超出常规大小上限的 Read 会被标上超出大小限制。
  • 什么也没搜到不算失败。 rg 和 grep 在没有任何匹配时以 1 退出,这从前会把 rg --files src | rg foo 这样的命令标成红色,并在它所在的分组里记作一次错误。从 0.33.0 起,一条以 rg 或 grep 结尾、以 1 退出且没有任何输出的单一管道会显示为已完成,退出码仍然留在卡片上。其他任何情况——退出码 2、一行错误输出、一条 && 串联——仍然显示为失败。
  • 没有专属卡片的工具结果——比如某个 Codeg 从未见过的 MCP 工具——会渲染成一棵可折叠的树,而不是一坨 JSON:小的载荷完全展开,大的只显示轮廓,长字符串折成一行。查看原始 JSON 随时可以切回纯文本。
  • 智能体改动了什么会在每条回复末尾归纳出来,分为两组:新增文件(默认展开)和改动文件(默认收起,带有数量以及 +/− 合计)。点击卡片可在编辑器中打开该文件,或使用它的查看差异按钮只看这条回复对它做了什么——在桌面端,还可用在访达/资源管理器中显示在磁盘上定位它。被删除的文件也会列出,并标记为移除。
  • 文件名是活的。 智能体提到的文件——以及你用 @ 附加的任何文件——都会渲染成一个徽章,点击即可在文件窗格中打开。右键它可以获得与文件树菜单相同的操作:在访达 / 资源管理器 / 文件管理器中显示、复制相对路径或复制绝对路径。(在无法生效的地方——浏览器中,或连接到远程工作区的桌面窗口——显示选项会被隐藏;而当文件位于当前文件夹之外时,相对路径一项会置灰。)从 0.32.2 起,相对链接也能打开了——./index.html、../docs/a.md、a.ts:12、Dockerfile 相对当前活动的工作区文件夹解析,~/notes.md 则相对你的主目录——思考块和回复里都一样,而从前这里显示的是 [blocked]。仍在流式输出中的链接,在它闭合之前显示为纯文本。
  • /word 只有真是命令时才算命令。 从 0.35.0 起,在你发出的消息里,一个 /word——在 Codex 里是 $word——只有当智能体确实提供了同名的命令或技能时,才会显示为命令徽章,因此像 /tmp 这样的路径会保持为纯文本。在智能体重新连接之前,对话记录会以它上一次在这个文件夹里提供的那些命令为准。从 0.37.0 起,名字里带冒号的命令——比如 Qoder 的 /sites:sites-building——会作为一整个命令显示为徽章,并按原名一字不差地送到智能体那里。
  • 权限提示。 当智能体需要许可时——运行命令、应用编辑、执行计划——一张卡片会停靠在 composer 正上方:"Agent 请求继续当前轮次的权限。" 它的按钮是智能体自己的选项(允许、拒绝等)。另一张单独的卡片则处理智能体向你提出的多项选择问题;自 0.31.0 起,这一张可以一键收起为标题行,把消息列表的空间还给你,同时问题保持待答状态 —— 当智能体换了新一组问题、或你提交的回答失败时,它会自动重新展开。如果智能体一次问出好几个——Codex 就经常这样——它们会排队:一次显示一张卡片,旁边标着还有 n 项待审批,你答完一张下一张就到。于是一批审批读起来就是一批审批,而不是像卡死了。智能体撤回的卡片——比如属于某个被你停掉的 Claude Code 子智能体,或某个被中断的工具——会自行关闭,而不是留在那里无从作答,还挡住排在它后面的卡片。
  • 每个选项授予什么。 只要智能体把这件事告诉了 Codeg——Claude Code 和 Codex 都会——那些按钮上方就会有一块面板,写清每个选择实际会允许什么,并为每一条标上它的有效期:本次运行、本次会话、保存到用户设置、保存到项目设置、保存到本地项目设置,或永久保存。挥手放行一条命令,和把一条规则写进队友也会继承的文件里,两者的区别就在这里说清楚——在你按下任何按钮之前。从 0.30.1 起,Claude Code 自己的按钮上也带着这件事 —— 本次会话对上在这个项目里始终允许 —— 于是作用范围写在你点的那个东西上,而不只是在它上方的面板里。
  • 回复为空时会说明原因。 如果一个回合结束时里面什么都没有,提醒不会只叫你去检查配置——它会指明是三种情况中的哪一种:智能体确实没有产生任何回复、它产生的输出 Codeg 无法解析(通常意味着智能体与协议的版本不匹配),或者它本回合只发来了状态更新(计划、模式、用量)而没有回复。智能体自己的输出——它的错误流末尾,并已抹去一切看起来像凭据的内容——收在状态栏告警里一个折叠着的详情中,那是唯一放得下它的地方。从 0.37.0 起,恰好在一轮结束时才到达的回复会留在那一轮里,而不会偶尔丢失、让那一轮被报告为空。
  • 上下文压缩。 当智能体压缩自己的上下文时 —— 无论是因为空间不够,还是因为你让它这么做 —— Codeg 会在那个位置留下标记:一条横贯对话的分隔线,落在两轮之间,而不是折进它上面那条回复里,因为它本来就是一个边界,不是一次工具调用。智能体给出数据时,它会报出压缩前 → 压缩后的 token 数,悬停时会写明这次是手动触发还是自动触发,而且重新打开对话后它仍然在那里。这些你能拿到多少,取决于适配器:0.75.0 起的 Claude Code 会把整套都给出来,实时与历史都一样;Codex 不提供数量,所以它的分隔线上只写着上下文已压缩;DeepSeek 则是从它的日志里能凑出多少算多少。在 Claude Code 上,一次压缩还会把 composer 旁边的上下文圆环重置为压缩后剩下的量,那个圆环从前会继续按一个已经不存在的窗口来计算。
  • 压缩留下的摘要。 从 0.32.0 起,Claude Code 或 Codex 的分隔线上可以带一个摘要开关,展开的是模型从被丢弃的历史中保留下来的内容 —— 它一边写一边就流式显示出来。从 0.32.3 起,重新打开的对话也以同样的方式显示它,而不再让摘要单独冒出来成为一条消息,或者被接在上一条回复的末尾。同一轮里的两次 Codex 压缩会各有一条分隔线。
  • 压缩失败时会明说。 分隔线会变红并写着上下文压缩失败,悬停可看到原因 —— Codex 发来服务方自己的说明时显示的就是那段说明,而不是原始 JSON —— Grok 失败的压缩也以同样的方式呈现。被中断或取消的压缩会停止转圈,而不是一直停在「进行中」。
  • 目标。 在 Claude Code 和 Codex 上,/goal 会渲染成一张卡片,带着目标内容、状态,以及 token、预算、剩余和已用时长这几项计数——实时可见,之后重新打开对话时也还在。它的操作按钮只会是该智能体真正实现的那些,所以 Codex 提供暂停和清除,而 Claude Code 只提供清除。两者现在都真的会让工作停下来:它们以前要等智能体下一次空闲才生效,于是暂停了的目标还在跑,清除了的还在自我续跑。
  • 委派的工作。 当一个智能体交接给另一个时,每一次交接都是回复里的一张卡片,而右侧面板的消息导航会列出每条消息的子智能体——这正是多智能体协作的核心。从 0.37.0 起,一个正在等你的子智能体,可以直接在主智能体自己的状态行里作答。
  • 每个回合结束时都会显示其模型和令牌统计——时长已经移到回复自己的头部去了——你还可以将整个对话导出为图片、Markdown 或 HTML。而在回合进行中,composer 上方那一行还会在已用时长和文件数旁边显示它的每秒输出 token 数——一个涵盖正文与思考内容的估算值。它也会出现在对话标签页上,以及那些只读的记录里——一条待办任务的会话、一个子智能体的会话——也就是你在旁观并非自己发起的工作的时候。
  • 把一条消息变成任务。 在复制按钮旁边——你自己的消息和已完成的回复上都有——是一个清单图标:由此消息创建任务。它会把那段文本送到待办任务那边,并预先填好项目文件夹,用于那些你注意到了但此刻不想动手的后续事项。
  • 选中消息里的一段。 在对话记录中任意位置划选文字,选区上方会弹出一个小工具条,带三个操作:复制;引用——把它作为 Markdown 引用块追加到你的草稿里,于是回复一段长答复里的某一段,不必自己复制、粘贴再补上 >;以及提问。引用块现在会渲染出一条真正的引用竖线,composer 里和智能体回复里都是。这个气泡会跟着选区一起滚动和重排,上方放不下时翻到下方,并把整个框限制在面板之内,因此再窄的平铺列也不会把它切掉。只读的对话记录只有复制,因为那里没有可供引用的 composer。
  • 就一段话追问,而不打断当前这条线。 提问会把气泡上的按钮换成一个输入框;写好提交,Codeg 就新开一个对话,先带上引用的那段话,再跟上你的问题。新对话以当前这个对话的智能体开场,并留在同一个分屏组里,于是回答你的仍是写出这段话的那个智能体,而不是一个空白对话会默认选到的那个——而就某一段问一句「为什么用这个方案?」,也不必赔上你正在读的这条线。从文件夹对话发起时,新对话会落在同一个文件夹和工作目录上;从聊天模式发起时,它会作为一个全新的无文件夹聊天开始,因为聊天对话之间并不共用文件夹。
  • 把图片复制出去。 右键点击一张图片即可复制图片——在对话记录里、在放大预览里,以及从 0.28.2 起,也包括你已经放进 composer 但还没发出去的那一张。在桌面端,这件事对 JPEG、WebP 和 GIF 从前是直接失败的;现在三者都可用。
  • 智能体指向的图片会显示出来。 从 0.36.0 起,图片的 Read 卡片展开后会显示这张图——比如 Codex 在查看一张截图——即便文件位于你的工作区文件夹之外(例如 /tmp)也一样:点击可看原尺寸,右键可复制图片或下载图片。重新打开的 Codex 对话显示的也是同一张卡片,而不是一大段 base64。而从 0.37.0 起,回复里的 Markdown 图片即便文件位于对话所在文件夹之外也能显示——比如智能体存到 /tmp 里的一张登录二维码——从前那里只会是一个图片损坏的图标。它会在回复渲染时自行加载,单张最大 8 MB,读取自 Codeg 后端所在的那台机器;只限图片文件,网络共享上的也一概不读,除非你的工作区本身就在那里。从 0.38.0 起,未关联已知文件夹的对话也能显示绝对路径的图片;权限请求、计划审批和待办任务的结果摘要中也会显示本地 Markdown 图片,按对话或任务所在文件夹解析。→ 隐私与安全
  • 图表有了自己的查看器。 一个 mermaid 代码块——以及从 0.36.0 起的 plantuml 或 puml 代码块,回复、思考过程和文件预览里都一样——会渲染成带自己一套控件的图表:0.2× 到 8× 缩放、拖动平移、复位视图和全屏查看。放到多大都清晰,因为缩放是按真实尺寸重新排版这张图,而不是把它的一张位图拉大。配色跟随你的界面主题,切换主题时已经画出来的图也会跟着重绘。用复制源码把它带走,或下载成 SVG、PNG 或源码——.mmd 或 .puml。渲染失败的图会明说,并给出查看源码与重试,而不是在本该有图的地方留一块空白。PlantUML 是在你的机器上绘制的,用的是首次使用时才加载的 PlantUML 自家浏览器引擎,不经过任何 PlantUML 服务器——这也意味着 <C4/…> 这类标准库引用用不了;PlantUML 会在图里直接说明这一点,就像它处理自己的语法错误那样。
  • 系统消息会显示预览。 智能体写进对话记录里的摘要——Pi 的分支摘要、Qoder 的压缩摘要——从前是一个关着的折叠块,你得打开才知道里面有什么。现在它会限行渲染出来,只有在下面确实还有内容时才给一个展开开关。(Claude Code 和 Codex 的压缩摘要如今放在分隔线的摘要里。)
  • 后台工作有了一条可以盯着看的条带。 当智能体启动了会活过这一轮的工作时 —— Claude Code 的后台任务,以及从 0.30.3 起 Codex 挂到后台的长命令,它们在对话记录里会标上后台运行 —— 对话记录上方会钉住一条条带,正在跑或已暂停的任务一行一个:它最后跑的工具、已经花掉多少 token、一个停止按钮,以及一个把该任务日志在文件标签页里打开的输出链接 —— 这些都要等任务真的报上来才会出现,所以一行刚开始可能只比一个名字多不了多少。只列未结束的任务 —— 一个任务落定就立刻离开条带,因为它的结果属于对话记录,而一份已完成作业的常驻清单只会整个会话地涨下去。停止需要一个你拥有的活连接,而被拒绝的停止会明说 —— 成功的那次靠「这一行消失了」来宣告自己,沉默看起来会和「点了但什么也没发生」一模一样。0.32.3 起,Grok 的后台工作流也加入了这条条带,显示它们所处的阶段和当前正在干活的智能体,但没有自己的停止按钮;某个工作流结束后,Grok 写的那条回复会落进对话里。也有一项减法:从 Claude Code 的适配器 0.88.0(Codeg 0.35.0)起,正在运行的 Monitor 不再作为后台任务上报,所以它不会再出现在这条条带上,也没法从这里停止。从 0.36.0 起,一个 Claude Code 后台子智能体如果在它自己的后台工作仍在运行时停下,会显示后台任务:阶段性结果,而且在它真正结束之前不会发出「已结束」的通知。
  • 插入消息会把正在跑的东西转到后台 —— 在 Claude Code 2.1.286 及以上版本上。 从这个版本起,回合中途有消息到达时——也就是插入当前回合——正在运行的命令、MCP 调用或子智能体会被移到后台,而不是等它结束或把它打断,Codeg 也会像对其他后台命令一样给这样的命令标上后台运行;而一张仍然开着的提问卡片,在你插入时会和以前一样被丢弃。普通的发送仍会排队,直到这一回合结束。从 0.33.0 起,后台命令结束时,它的卡片不会再被内部标记文本覆盖。
  • 通知会弹出来,而不会打断回复。 Claude Code 和 Codex 就某个会话发出的通告 —— 模型回退、拦下了你提示词的 hook、配置或弃用警告 —— 从 0.32.0 起会以 toast 的形式弹出、标题是智能体的名字,而不再作为一行粗体字写进回复里;警告还会留在状态栏的告警里。从 0.32.3 起,这也包括加载失败的 Claude Code 插件:它会被点名,并附上 Claude Code 给出的原因,而不是让这个插件悄无声息地丢掉它的命令、技能、智能体或 MCP 服务器。
  • 智能体用 HTML 做出来的东西会出现在回复里。 从 0.32.3 起,Codex 的可视化 —— Claude Code 用同一个技能时做出的也算 —— 或者 Hermes 的预览,会在回复引用它的位置渲染成一张卡片,而不是一段原始标记。回复里提到的其他本地 .html 文件,会在回复结束后于其下方得到一行预览,每条回复最多四个,点开也是同样的卡片。卡片头部带有重新加载和打开文件,过高的卡片会折叠在展开全部后面。完整的页面一开始脚本是关闭的:启用脚本会运行它们,并允许这张卡片访问网络 —— 只对这一张卡片有效,也只持续到它消失为止,不会记住任何东西。Codex 可视化自己的片段从一开始就运行脚本,但运行在一个沙箱里:它只从少数几个公共 CDN 加载代码和字体,不抓取任何其他东西,也碰不到你的文件。路径相对于对话运行时所在的文件夹解析。
  • 卡片、表格和图表。 从 0.35.0 起,回复里可以带上直接画在对话中的交互组件——卡片、表格、标签页、徽章、进度条,以及自 0.35.1 起采用你主题配色的图表——它们会随回复的流式输出逐步成形。你为某个智能体启用界面渲染技能之后,它就会写出这些组件;请它把某样东西显示成表格或图表,或者以 /ui-render 开头即可。→ 回复里的卡片、表格和图表

从回复分叉 ​

已完成的回复会在它的统计行上给出分叉入口:新会话继承这个对话,原来的那个分毫未动,实时的和重新打开的都可以。从 0.30.2 起,这就是分叉的全部了 —— composer 里那个旧的 Fork & Send 快捷入口已经移除,它是通往同一件事的多余的第二道门,而且说不清自己是从哪条回复分出去的。这个入口出现在已连接、且其智能体声明了支持分叉的会话上 —— 这是从握手里读出来的,而不是一份写死的名单,所以随着适配器陆续支持,这个集合还会变大,如今也已经不止下面这几个。ZCode 是个例外:无论它的桥接器声明了什么,Codeg 目前都还不在那里提供分叉。真正值得知道的是它从哪里分叉,而这一部分确实是一份写死的名单:Claude Code、Codex 和 DeepSeek Harness 能指名某一条具体的回复,于是分叉就精确落在那里 —— DeepSeek 从 0.30.2 起,Claude 从 0.30.4 起,即便你选中的那条回复位于此前某次分叉遗弃的分支上也一样。其余的智能体,以及任何一条没有可供指名内容的回合,分叉会落在对话的末尾,而不是失败。从 0.33.0 起,只要智能体支持关闭会话,分叉一建好 Codeg 还会请智能体关闭原来的那个会话——于是 Claude Code 不再为每一次分叉都留着一个进程在跑,Codex 则会在大约一分钟内放开原会话。这个请求不会被等待确认,所以它是一次顺手的收拾,而不是保证。在 Codex 上分叉后立刻去打开原会话,它可能仍会提示这个会话正在别处打开——过一分钟再重新加载即可。

分叉不可用时,它会说明原因。 按钮会置灰并给出提示,而不是干脆消失:当前有回合正在进行,暂不可分叉,因为去指名一条智能体还在写的消息本来就不成立;以及这条回复暂时还不能作为分叉点,请稍后再试,指的是本次会话流式产出、但 Codeg 还没重新读完的那条回复 —— 从那里分叉会不声不响地落到对话末尾,而不是你指的地方。当你指向的是一条中途插话之前的那半段回复时,遇到的就是第二种。它通常一两秒后就随着重新解析拿到名字而解除;不过如果你恰好是在一轮的末尾插话,那条回复可能没有覆盖到线程的末尾,而那个名字永远不会到来,它就会一直保持置灰。

在智能体工作时插话 ​

眼看着智能体走偏、却只能等它写完才有机会开口,是这类工具里最古老的一种憋屈。从 0.30.3 起,任何有投递通道的会话都有了入口:在智能体工作时往 composer 里打字,分体发送的箭头里就多出一个动作,与那个寻常的加入队列并列。

通道有两条,Codeg 对它们的措辞是刻意区分开的,因为它们承诺的确实不是同一件事:

  • 插入当前回合 ⚡ —— 便条会进到已经在跑的那份工作里,智能体当场就能看到。这适用于 Claude Code,需要适配器 0.65.0 或更高——而从 0.35.0 起,也适用于运行同一个适配器的自定义智能体:认的是适配器在连接时报出的名字,而不是你安装它的方式。这个下限是一项策略判断,不只是版本钉住:Codeg 校验的是实际在跑的那个适配器,而不是它本该装上的那一个。
  • 发送留言,供下次检查时读取 🕐 —— 便条会被记下来等着。智能体下一次查看时才取走,而这正是对一个「需要智能体主动调用」的工具最诚实的描述。这适用于任何在启动时被交给了 check_user_feedback 工具的会话 —— Codex、Grok、Gemini、OpenCode 等等,前提是伴生服务在位,且实时反馈在那个智能体启动之前就已打开。中途再去打开这个开关,没法把这个工具补装到一个已经在跑的智能体上。因为这些智能体通常只有在被提醒时才会查看,所以在你最初那条消息里加上一句「定期查看我的实时反馈」,才是让这条通道真正靠谱的办法。

两者都没有的会话,保持它一直以来那个只有取消按钮的样子。

附件会一起过去。 带着图片或 @ 提及文件的草稿,会以与普通发送完全相同的块列表被送出去,不会有东西被悄悄剥掉 —— 而且图片当场就显示在正在进行的这一轮里,不用关掉会话再打开。在便条类会话上,后端不接受这些块,于是整条草稿连同附件一起排进队列。

发出去的同时可以接着打字。 插入当前回合需要片刻才会得到确认,从 0.34.0 起,你在这片刻里对 composer 做的修改都会保留:只有当输入框里仍然恰好是你发出的那段内容时,它才会被清空。保留的是整份草稿——你新加的一行会和已经送达的那部分文字一起留在框里,所以再次发送前请先把那部分删掉。0.34.0 之前,确认一到就会清空 composer,连同你的修改一起。

已经排进队列的消息也能插进去。 排队的消息以带编号的行等在输入框上方:拖住一行的把手可以调整顺序,编辑会把它放回 composer,删除则把它丢掉。从 0.30.10 起,当一个有投递通道的会话正在运行回合时,每一行还会带上那条通道的动作——⚡ 插入当前回合,或 🕐 作为留言,供下次检查时读取——这样一分钟前排进去的消息不用重打就能送到正在工作的智能体那里。有两种行不提供它:你正在编辑的那一行,因为它当前的文字在 composer 里而不在行里;以及在便条类会话上带着附件的行,它仍会随下一轮整条发出。同一时间只会有一次插入在进行——其余行的按钮会置灰,直到它有了结果——并且从 0.34.0 起,连点两下也不会再同时插进两条消息。

已发出的便条以行的形式显示在输入框上方 —— 在智能体读到它之前是等待中,读到后变为已收到。在推送通道上,便条同时也是一条真正的消息:它作为独立的一轮落在对话记录里,智能体针对它的回答也会另起一轮,不会和上一段答案粘在同一处连成一片;而一旦对话记录这样采纳了它,它那一行就会消失,因为两边都显示等于把同一件事印了两遍。在便条通道上则没有可供采纳的轮次 —— 那一行就是它的全部,直到智能体下一次查看把文字取走。从 0.35.0 起,你插入 Claude Code 回合里的内容也会留在它的历史记录里 —— 自定义智能体也一样,它的对话记录由 Codeg 自己写入 —— 所以重新打开的对话仍会在它当初落下的位置显示它。

它可能落空的两种方式,都会明说:

  • 还没插进去,那一轮就结束了。 草稿会改为排队,随下一轮发出 —— 它会告诉你,而不是不声不响地改道。从 0.34.0 起,你点过的那条排队消息会移到队列最前面,最先发出,而不是排在它前面那些消息的后头。
  • 智能体没读到就收尾了。 这些行不会随那一轮消失,而是留下来写明「智能体在读取你的反馈前已结束本轮。」,每一行都提供作为新消息发送或忽略。已经被读到的便条则随这一轮退场 —— 它们的活已经干完了 —— 而你的下一条消息会清掉其余的。

+ 菜单里的实时反馈会打开一个通往同一条通道的对话框,适合那些你不想直接写在 composer 里的便条。→ 实时反馈如何抵达正在运行的智能体

一个回合失败时,它会说清楚是哪一类失败 ​

一个中途夭折的回合,以前只会留给你一句笼统的报错和一堆猜测。Claude Code 和 Codex 会按类型上报失败——连接异常、访问受限、已达限制、请求被拒绝或服务异常,遇到 Codeg 认不出的类型则退回到一个笼统的会话异常——下面附上智能体自己的说明。

对话记录里也会写明。 从 0.35.0 起,失败的回合会在本该是回复的位置以一行灰色文字收尾——本轮失败:,后面跟着智能体自己的报错;智能体什么都没给时,则是 Codeg 对发生了什么的判断。无论哪个智能体,你都能在失败发生的当下看到它;Codex、Claude Code、Cline 和 Qoder 还会把它保存在自己的历史记录里,所以重新打开对话时它仍然在,导出时也会带上它。

从 0.32.2 起,会话的警告和错误都以同一种方式到达:一条通知。每一条会以 toast 的形式弹出一次,带着真正帮得上忙的那些按钮,并且留在状态栏的告警列表里,所以错过的 toast 并不会就此消失。有两类会留在它们该在的地方:智能体自行重试时显示在输入框下方(见下文),压缩失败则显示在对话记录里它的分隔线上。那些按钮是智能体给出的建议,而不是 Codeg 的猜测。目前认得三种:

  • 重试会重新发送那个失败回合正在处理的消息。(如果没有可重发的内容,它会直接说明,而不是按下去什么也不发生。)
  • 新建会话会开一段新对话。
  • 去登录会在一个单独的窗口里打开设置,停在该智能体的页面上,而你原来所在的工作区留在原处不动。从 0.32.3 起,凡是因为你需要重新登录而拒收消息的智能体都会给出它,而不只是 Claude Code 和 Codex。

重试和新建会话作用于刚刚失败的那一轮,所以它们只出现在 toast 上,并在你发出下一条消息后失效;去登录则在告警条目上也有。只读的查看器——一段待办任务的记录、一个子智能体的会话——会收到这些通知,但没有那些恢复按钮。

告警是状态栏最右边的入口:一个计数,只要其中有一条是错误就显示为红色,只有警告时则为琥珀色。条目按从新到旧排列,每一条带着它的消息、一行细节,以及——在智能体输出过内容的情况下——一个折叠的详情,里面装着那段输出,其错误流末尾已抹去一切看起来像凭据的内容。你可以逐条忽略,也可以一次全部清空。同一条消息再次出现时会替换它原来的条目,而不是叠加上去;这份列表只保留最近的 50 条,且只存在内存里。

留在 composer 下方的,只有仍在进行中的事。当智能体在自行重试时,一行琥珀色提示会写明第几次尝试和倒计时——正在重试 3/10,4.0 秒后重试——并且不带任何按钮,因为它自己在处理期间没有你要做的事。同时出现的多次重试会合并成一条,并标注另 N 条。一旦它恢复,留下的是一行灰色的已恢复,它会在十秒后自行消失,而不是一直通报一件早已过去的小插曲。

崩溃时会说明原因。 进程挂掉的智能体——无论是在启动时还是回复到一半——会连同它的退出状态一起报告出来,它写进错误输出的最后几行则收在详情后面;从前你能拿到的只有一句光秃秃的 Incoming transport closed。回复中途的崩溃还会关闭连接,而不是留下一个看起来仍已连接、却让每条消息都失败的会话。而一个向 Codeg 请求了它不处理之事的智能体,会被如实告知,然后继续这一轮,而不是永远等一个答复。

打开一个旧会话不会把这些重放一遍:上周掉的一张图、失败过的一次上下文压缩,都留在历史里,而不会冒出来变成一条实时提醒和一条桌面通知。

一条提示被拒,代价是这一轮,不是整个会话。 Codeg 驱动的每一个智能体都会拒绝某些提示,而它本身完全健康、完全可以继续对话——Qwen Code 对它 ACP 层没实现的 /mcp 回一句「Slash command not supported in ACP integration」,OpenCode 把供应商侧的限流也包成同一种错误。到 0.31.2 之前,这些都会把整条连接拆掉:一个终态错误,外加一个一直置灰到重建完成的输入框。现在智能体自己的那句话会以非终态错误呈现,这一轮就此落定,会话继续可用——下一条提示照发照用。只有三类仍然致命,因为之后的任何一条也活不下来:智能体根本没有 Codeg 刚才所提示的那个会话记录、它回话说自己的会话或进程已经没了,以及根本没等到回应——那意味着死掉的是传输层而不是这一轮。要求认证则和以前一样,只作用于这一轮。

当连接看起来不对劲时 ​

composer 下方的那个连接心形是一个按钮。点它就能看到 Codeg 对这个会话实际掌握的信息:智能体、它的真实状态——响应中...与静止的已连接会被区分开——工作目录、会话 id,以及任何错误。当一次连接尝试失败时,心形会变红——连接异常——它的提示和弹出面板都会说明原因,而从前它只会退回到一个暗淡的未连接。

底部是重新连接,它在每一种状态下都有效,包括那个你之所以点它正是因为它卡住了的「连接中...」。它会尝试恢复会话,所以你的历史会跟着一起回来;如果智能体无法加载会话,或者加载失败,就会在同一个对话上开启一个新的智能体会话——对话记录保留,但智能体之前的上下文不在了。

当一个会话确实加载不回来时,横幅会说明它属于哪一种已知原因,而不是笼统的「加载会话失败,正在新建」——而其中一种还附带解法。被你 codex archive 过的 Codex 会话会点出确切的 codex unarchive <id> 命令,id 已经填好,一点即可复制。在 0.29.0 之前,这种情况不在已识别的失败之列,于是一个只差一条命令就能回来的对话,被悄无声息地丢在了那里。

会话开着时登出 Claude,只会结束这一轮,不会波及别的。 从 0.30.3 起,那一轮会停下并写明「Claude Code 需要你重新登录后才能执行本轮回复」,会话本身留在原地 —— 去设置里登录,然后把消息再发一次即可。它从前会把整条连接一起拖垮,并让对话读起来像是已取消,而那对真正的原因只字未提。同样状态下的委派子智能体会报子智能体需登录,而不是一句看不懂的异常结束。

长会话打开更快 ​

一个持续了好几周的对话,不会让你等着它全部加载完。Codeg 只加载最近 120 个回合——起点还会往前挪到你自己的某条消息上,因此窗口不会从一次问答的中间切开——你向上滚动时再每次取进 120 个,而且视图不会在你脚下跳动:你正在读的位置保持不动,更早的回合追加在它上方。来自服务器或远程工作区的响应还会在传输时压缩。

这个窗口只是显示层面的事。导出仍然取完整记录,其他把对话当作一份文档来读的功能也一样。

消息导航则能越过这个窗口。从 0.37.0 起,它住在右侧面板的会话详情里,而不再是对话记录左上角的一枚胶囊:你发出的每一条消息,带着编号,连同那一轮涉及的子智能体和文件。它覆盖的是整个对话,而不只是已加载的部分:选一条更早的消息,Codeg 就会把历史一直加载到它那里,然后跳过去。跳过去之后视图也会停在那里——仍在流式输出的回复、从上方补进来的更早回合,都不会再把你拉回底部;从一条回复跳回引出它的那条消息时也是如此。

没看过的标签页,等你第一次看时才加载。 从 0.35.0 起,藏在别的标签页后面的对话标签页,会在你第一次切换过去时才拉取它的对话,而不是在启动时让每个标签页一起下载——所以开着几十个标签页的工作区也能很快打开,而这样的标签页在你第一次访问时会短暂显示一个加载状态。

会话加载失败时,你看得见的部分会被保留

如果加载一次对话时出错,失败提示现在会作为一条小提示停靠在输入框上方,带上重新加载和新建会话,而不是用整页报错顶掉一切。你已经拿到的那段记录会留在屏幕上,也依旧可读。从 0.35.0 起,它还会自行重试——分别在 1、2、4、8 和 16 秒后各试一次,之后只要这个视图还在屏幕上,就每 30 秒再试一次。

在手机上接着聊——远程控制 ​

从 0.37.0 起,在适配器为 0.93.0 时,Claude Code 的对话可以借助 Claude Code 自己的远程控制(Remote Control)在手机上接着进行。在对话里发送 /remote-control——后面可以再跟一个会话名称——Claude Code 就会把它连到 claude.ai。对话记录上方随即出现一条横条,写着远程控制已开启,上面有:

  • 这个会话的 claude.ai/code 链接——点击即可在浏览器中打开;
  • 二维码:显示一个二维码,用手机扫一扫,就能在 Claude App 或 claude.ai/code 上继续;它是在你的机器上绘制的,不会去抓取任何东西;
  • 复制链接;
  • 关闭:替你发送 /remote-control off。它在 Claude 完成当前工作后可用,回合运行期间会等着。

如果 Claude Code 打开了远程控制、却没有返回链接,横条会在原本放链接、二维码和复制链接的位置写着 Claude Code 没有返回本会话的链接。而一个只是在旁观另一个客户端所开会话的窗口,则没有关闭。

这条命令由 Claude Code 自己作答,不经过模型回合,这次往来也不会留在它的历史记录里——所以重新加载之后,告诉你它还开着的就是那条横条。再发一次 /remote-control,只会把链接再给你一遍。

它能持续多久。 远程控制活在这个对话背后的 Claude Code 进程里,所以那条连接在多久,它就在多久。一个没有任何地方在显示的会话,Codeg 通常会在它闲置几分钟后断开;远程控制开着时,这项清理会放过它,于是你关掉浏览器页面、或在 Codeg 里转去做别的事之后,这个会话仍然能从手机上访问。它会在以下时候结束:你把它关闭;连接结束——退出 Codeg、崩溃、重新连接;或者你分叉了这个对话。在 Claude 空闲时关掉这个对话自己的标签页,也算一次有意的关闭,同样会结束它。

它需要什么。 Claude Code 要用 claude.ai 订阅登录,并且直接与 api.anthropic.com 通信。经由网关或自定义的 ANTHROPIC_BASE_URL——自定义端点或 Claude Code 的模型提供商设置的正是它——Claude Code 会拒绝,并在对话里说明,横条也不会出现;这些 Codeg 自己一项都不检查。Claude Code 进程运行在 Codeg 后端所在的地方——你的桌面,或者浏览器会话、远程工作区窗口背后的那台服务器——连接 claude.ai 的,就是那台机器上的 Claude Code。→ 隐私与安全

后续步骤 ​

  • 右侧面板——会话的详情、智能体的计划与消息导航,以及对话旁边的文件和 diff。
  • 使用智能体——启用一个智能体,并让它为第一个会话做好准备。
  • 多智能体协作——直接在 composer 里把任务的一部分交给其他智能体,或者交给一个助手。
  • Git 与 Worktree——composer 下方的分支标签,以及其余的 git 工作流程。

基于 Apache-2.0 许可证发布。