工作区
工作区是你在 Codeg 中真正完成工作的地方。它把四样东西放在同一个屏幕上——智能体的对话、你项目的文件、它的 git 更改,以及一个终端——让提示、审阅、提交的整个闭环在同一处完成,无需在编辑器、diff 工具和 shell 之间来回切换标签页。


布局
桌面工作区是并排的四列,每一列都有自己的头部条,列与列之间由可拖动的细线分隔,细线从顶边一直贯穿到底部:
- 对话(最左)。 你打开过的每个文件夹中的每个会话——既是你的历史记录,也是你开启新会话的地方。它们按项目分组,每个都带有一个实时状态圆点:进行中、待审阅、已完成。顶部的条上有新建对话、全部折叠以及视图选项,其下则是导航行:自动化、待办任务和仓库面板。自动化和待办任务各自带有自己的徽标——前者是失败的运行,后者是等你处理的任务数量——因此无论你身在哪个界面,需要照看的队列都会主动说话。
- 对话(中间偏左)。 智能体的对话记录,composer 停靠在底部。它的标签页在顶部,下方一条纤细的详情头部显示文件夹面包屑和该对话的标题。
- 文件(中间偏右)。 你打开的文件的编辑器、diff 和实时预览——就在对话旁边,因此你可以在智能体做出更改时实时看到它们落地。它有自己的标签页条和一个文件路径详情头部。
- 辅助面板(最右)。 一个带标签页的面板——会话详情 · 文件 · 更改 · 提交——容纳会话信息、项目树、你工作树中的更改和提交历史。当面板变窄时,这四个标签会折叠成一个下拉菜单。
终端在两个中间列的下方展开,底部的状态栏显示你的对话数量、更新提示,以及命令启动器。当连接到远程工作区时,它的名称也会显示在那里。点击那个对话数量会打开 Token 用量——按天、文件夹、智能体和模型拆开看你的智能体到底花了多少。
状态栏的最左端——也就是窗口的左下角——是快捷操作,一个把所有「只能经由某个会消失的东西才能到达」的入口都收拢起来的菜单。四个分组:
| 分组 | 里面有什么 |
|---|---|
| 工作区 | 打开文件夹、克隆仓库、项目引导,以及远程工作区 |
| 会话 | 对话管理、导入本地会话 |
| 导航 | 自动化、待办任务、仓库面板——带着它们侧边栏同名行的那些徽标 |
| 更多 | 桌面宠物 |
重点不在于新增能力——每一个入口在别处都有自己的家。重点在于状态栏从不卸载,所以在侧边栏收起时,这里仍是一条进得去的路。远程工作区和宠物仅限桌面端;没有活动文件夹时对话管理是灰的。搜索被刻意排除在外,因为它自己的家同样不会消失——见下文。
当有更新的 Codeg 发布时,状态栏会主动告诉你,而不是等你到设置里去发现:一个 New v… 徽章会出现,点击后弹出一个浮层,其中包含版本号、完整的更新内容说明,以及可执行的按钮——与设置面板相同的下载 → 安装 → 重启流程,另加一个稍后用于暂时略过。忽略某个版本会在每个打开的窗口中一并静默它,并留下一个灰色图标让你随时还能回来;下一个版本会重新点亮徽章。→ 设置 → 系统
这里没有横贯整个宽度的标题栏——取而代之的是两个角落簇,它们在面板开合时保持原位:左上角切换侧边栏并打开搜索,右上角是终端、辅助面板和设置。搜索在 0.27 搬到这里,理由和快捷操作存在的理由完全一样:它原本是侧边栏里的一行,而侧边栏一收起就被卸载,于是 ⌘K 成了唯一入口。角落簇从不卸载,按钮上的提示还会显示你当前生效的 ⌘K 绑定。(移动端在它的标题栏里得到同一个按钮,那里本来就没有快捷键。)被它挤走的远程工作区选择器移到了侧边栏列表的右键菜单中,单独成组——它上面的每一行都作用于本机,只有这一行是去往另一台主机的。每个面板都可以通过拖动调整大小,当你需要空间时,侧边面板和终端可以折叠收起——⌘B(对话)、⌘E(辅助面板)、⌘J(终端)。在手机或狭窄的浏览器窗口中,侧边面板会变成滑入式抽屉。
待办任务、自动化、仓库面板和 Token 用量会接管整片区域,因此其中之一打开时,右上角那一簇会把此刻无从作用的终端与面板开关换成一个返回箭头,用于回到你的会话。当侧边栏已收起、屏幕上又没有对话可点时,它就是那条出路;而它不改变别的任何东西:你原先所在的标签页会原样回来。有自己控件的页面会把它们放进腾出来的那两个位置:待办任务把视图切换和设置按钮停在那里,仓库面板停的则是刷新和设置。
面板从你工作的旁边滑入
从 0.28 起,每一个滑入式面板——移动端侧边栏、辅助面板、终端、设置导航、技能详情、任务详情、仓库工作项详情——都是一个内嵌抽屉,而不再是对话框:它离窗口边缘略有内缩、自带一道边线,而且背后的一切既不变暗也不冻结。下面那一层保持活着,这正是重点——这些面板是你一边工作一边查看的,而不是要先关掉才能回到手头事情的模态框。Esc、关闭按钮和滑动手势依然能关掉它;移动端那四个导航抽屉还额外保留了「点一下它们留出的那条页面」就收起的行为,因为在手机上人们就是这么收起面板的。
会话查看器可以层叠。 被委派的子智能体的对话记录、待办任务的会话、Grok 的子运行——这三者都会互相嵌套,因为一份子智能体的记录里本身就带着它自己的委派卡片,每张卡片又各有一个「查看会话」。它们从前是居中的模态对话框,彼此之间没有层叠关系,于是第二个直接把第一个埋了。现在每一个都在开启它的那一个内部打开,宽度全部相同,所以下层不会有一侧支棱出来。
随之消失的还有两个你本会当成 bug 的现象:查看器不再因为开启它的那张卡片滚出视野而关闭,而一个留在整页路由或后台标签页背后的查看器,也不会再画到取代它的东西上面——它是被隐藏后再恢复的,所以切回来时它还在你离开时的位置。
文件夹与侧边栏
左侧边栏是你的大本营:你打开过的每个文件夹(即一个项目目录),其对话都分组显示在其下方。打开一个项目文件夹即可添加(⌘O)。右键点击文件夹的标题栏(或点击其 ⋯),即可看到你能对它执行的所有操作:
- 设为默认智能体。 选择某个文件夹应使用的智能体,之后你在该文件夹中开启的每个新对话都会预选它。选择无默认(使用全局)可回退到你的全局选择。它只设定智能体——一旦该智能体连接,模型和模式仍由它提供。
- 更改颜色。 为文件夹指定一种强调色,让它的分区在你同时处理多个项目时更醒目。该颜色会为侧边栏中的文件夹及其对话着色;但不会延续到标签页中。
- 设置别名。 给文件夹起一个更友好的显示名称,而不改动磁盘上的任何东西——它会在侧边栏和对话头部显示为 别名 [ 文件夹 ]。把输入框留空即可清除它,回到原始名称。
- 导入本地会话。 打开导入窗口,并预先选中本项目的过往会话,从而把你各个智能体自己的历史拉入工作区——这正是 Codeg 对话聚合的实际运作。→ 对话聚合 介绍了它扫描哪些内容以及如何匹配。
- 管理对话。 批量选择对话来更改其状态或删除它们。它是从某个文件夹打开的,但并不锁定在那个文件夹上:一个搜索框占满整行,下方是四个由粗到细的筛选器——文件夹、分支、智能体、状态——因此无论你从哪里打开它,都能横扫整个工作区。分支按共同前缀折叠,
task/49和task/50会收进同一个task/下并带上计数,而每一行都会显示对话当初是在哪条分支上开始的。 - 关联的文件夹。 把其他目录以子目录的形式带进这个工作区,让一个智能体能跨它们一起工作。→ 跨多个文件夹工作
- 在外部打开。 在 Finder / Explorer / 你的文件管理器中显示该文件夹,或在该处进入终端(仅桌面版)。
- 从工作区移除。 将文件夹移出 Codeg——它的标签页和终端会关闭,但磁盘上的任何内容都不会被改动。
文件夹的真实名称始终是它在磁盘上的目录名——这一点永远不变——但设置别名可以给它一个更友好的标签,而颜色和分组能帮你一眼区分各个项目。
导入本地会话并不只在文件夹菜单里。右键点击列表周围的空白处也能找到同一项;而在一个还什么都没有的工作区上,这个按钮就直接摆在空状态里——挨着打开文件夹和项目引导——因为把你已有的东西导进来,通常是让一个全新的 Codeg 迅速充实起来的最快方式。那个空白处菜单也正是远程工作区选择器所在的地方,位于本机相关的那几项之下,单独成组。
右键点击一行对话会给出添加到会话,把它作为一枚提及徽章放进 composer——和 @ 面板、文件树产出的是同一种徽章。它落在你的光标处,点两次也不会加两遍。想说「看看那个会话里发生了什么」时,这是最短的一条路,不必再走 @ 然后敲名字。
文件夹旁边的数字统计的是此刻正在其中运行的东西——正在工作的会话,worktree 也算在内——没有时它会消失。它是一个实时的负载指示,而不是总数,因此顺着侧边栏扫一眼,就知道你的智能体究竟都在哪儿。展开/折叠的箭头只在悬停时出现;文件夹图标本身已经说明了它是开是合。
三个分区,顺序由你定
侧边栏有三个顶层分区:
- 文件夹——你的项目,对话嵌套在各自之下。
- 聊天——不属于任何文件夹的对话,也就是你在聊天模式下开始的那些。
- 最近——把你此刻能够到的对话排成一张扁平列表,属于文件夹的和聊天的一并在内,顺序取决于排序方式。不嵌套、不分组;它回答的是「我刚才在干什么?」,而不需要展开任何东西。它遵循与侧边栏其余部分相同的显示选项——已收起文件夹里的对话、在显示已完成会话关闭时的已完成对话,以及已经在置顶里的对话,都不会出现在这里。它一次显示 15 行,底部的显示更多每点一次多显示一页,而分区自己的计数徽标报告的仍是全部总数。从 0.28.2 起,那一行也能把列表收回去:一旦你展开到第一页之外,同一行上就会出现一个复位入口——于是一个你为找某样东西才展开的列表,不会在接下来的整个会话里一直占着屏幕,把它下面的分区挤出可视区域。只有当确实多显示了不止一页时才会提供它。它的标题栏上带着新建对话按钮,和「聊天」一样。
这三个分区都可以在显示选项菜单里调整顺序——每个分区一行,带上移和下移(或在聚焦行上按 Alt+方向键)——而「最近」也可以整个关掉,如果你不想要它的话。
整理列表——显示选项
侧边栏顶部的三个按钮能让长长的历史保持可管理。定位当前会话会跳转到你所在的会话,并展开它被折叠在其后的任何层级。全部展开/折叠如今是它旁边一个独立的按钮,因为它作用于列表本身,而不是保存某个显示偏好——而且它折叠的是所有东西,包括扁平的聊天、最近和置顶这几个分区标题,而不只是它们里面的文件夹分组。全部折叠后剩下四行标题、下面空无一物;再展开时,下面的文件夹会原样恢复,因为分区折叠和单个文件夹的折叠是分开记住的。
第三个是一只眼睛——不是漏斗,因为菜单里没有任何一项是把列表筛成匹配项的——它打开显示选项,分为四个带标题的分组:
- 对话列表(子菜单)——显示已完成会话,默认关闭,因此已完成的工作不会挡道,列表中呈现的就是仍在进行的内容;显示工作树文件夹,默认开启;以及显示「最近」分组,默认开启。
- 导航项(子菜单)——见下文。
- 排序方式——按创建时间(默认)或按更新时间。
- 区域顺序——上文所述的那个可排序列表。
那两组清单被放进了悬停展开的子菜单里,好让「排序方式」和「区域顺序」——人们真正会反复回来改的那两项——不必待在一个十五行菜单的最底部。另外两项则留在外层:一对单选按钮和一个可排序列表,藏在多一层跳转之后读起来不对,而顺序那几行也需要菜单的完整宽度。拨动一个开关既不会关掉子菜单,也不会关掉菜单本身,因此改两项设置只需进去一次。
关于显示工作树文件夹:开启时,每个 worktree 都作为独立分组置于其仓库之下,带有自己的计数和颜色。它的标题栏也用项目标题栏那种别名 [ 名称 ] 的写法——task/49 [ codeg-task-49 ],前面是检出在那里的分支,后面是它所在的目录——因此同一个仓库的好几个 worktree 一眼就能分清。已有的 worktree 会在启动时被打上标签,而你自己起过的名字绝不会被覆盖。把它关闭即可把它们合并进父文件夹,成为单一列表。
选择你要看到哪些导航行
导航项子菜单可以逐个开关侧边栏那三行整页入口:自动化、待办任务和仓库面板。如果你不用 forge 集成,那一行不必一直杵在那里。
隐藏一行不会让你永久失去什么——每一条路由都仍可从状态栏的快捷操作到达,正因如此隐藏它们才是安全的。这个设置按设备保存,而一行你从未动过的入口是显示的,所以将来版本新增的路由到来时是可见的,而不会悄悄处于关闭状态。
跨多个文件夹工作
一个工作区不必只有一个目录。从 0.23.1 起,你可以把其他文件夹以子目录的形式关联进来——隔壁的服务、共用的库、旁边的文档仓库——智能体便能在同一段对话里跨它们读写。文件树会显示它们,工作区搜索会覆盖它们,@ 提及也能伸进去。
只需要一个动作:在侧边栏里右键该文件夹 → 关联的文件夹,然后添加文件夹,想选几个就选几个。(新打开一个文件夹时,在你选好主文件夹之后也会紧接着提供同一步,因此可以边创建边把工作区拼起来。)
它适合用来做什么
重点其实不在于"目录变多了",而在于:主文件夹不必再是那个项目本身,而成了你组装项目的地方——需要多久就摆多久,不需要了就拆掉。
- 分处两个仓库的前端与后端。 把
api关联到web旁边,一个回合就能同时改动接口和调用它的代码——契约的两侧都摆在智能体眼前,而不是一侧加上一次猜测。 - 本周的改动实际涉及的那几个微服务。 把牵涉到的两三个关联进来,做完,解除关联,下周换一组。工作区于是成了一个看待你那些服务的视角,而不是一份需要你维护的检出。
- 一个自己不装任何代码的空目录。 专门建一个用来组装的目录——比如
~/work/current-task——需要什么就关联什么进去。事后没有任何东西要清理,因为那里本来就什么都没有。 - 代码与它的文档。 把文档仓库关联到代码仓库里,一次改动和描述它的那一页就能落在同一个会话、同一次评审里。(这份文档正是这样与 Codeg 本体保持同步的。)
- 想从源头修好的那个库。 把共用的包关联进依赖它的应用,智能体就能在缺陷真正所在的地方修它,而不是在调用方绕过去。
- 你无意改动的参考资料。 一个设计系统仓库、一份接口规范、另一个团队的服务。智能体照着真实的接口工作,而不是靠推测。
- 旧仓库与它的替代品并排摆着,用于把代码搬过去的那段时间——这种场景下,同时打开两棵树本身就是全部工作。
- 有意不放进仓库的样本数据。 把一个装着测试夹具或真实输入文件的目录关联进来,智能体就能拿它们跑,而这些东西一份也不会被提交。
底层是怎么回事
这些关联在磁盘上是真正的文件系统链接,这是有意为之:智能体 CLI 是以工作区主文件夹为工作目录运行的,因此一个只存在于 Codeg 界面中的合并,对它们而言根本不可见。既然它是一个真实的目录项,其余的一切也就顺理成章——ls 找得到它,智能体自己的文件工具找得到它,你的终端也找得到它。
在 macOS 和 Linux 上,它是一个符号链接。在 Windows 上,只要系统允许,它同样是符号链接;但创建符号链接需要一项权限,普通进程只有在开启开发者模式时才具备——因此 Codeg 会退而使用目录联接(junction),它不需要任何权限,对 Codeg 所关联的本地绝对路径而言行为完全一致。若两者都失败,界面会提示你开启开发者模式,或以管理员身份运行 Codeg。
每个被关联的文件夹以它自己目录的名字出现,并在文件树中标记为关联的文件夹。如果该名字在主文件夹中已被占用,Codeg 会消歧为 api-2,而不是覆盖任何东西——而且是不区分大小写的,因为 macOS 和 Windows 把 API 和 api 视为同一个条目。
之后如何管理
在同一个菜单里重新打开关联的文件夹,每个关联都会显示它当前的状态:
| 状态 | 发生了什么 | 该怎么做 |
|---|---|---|
| 已关联 | 一切正常 | — |
| 链接已从该文件夹中消失 | 有东西删掉了这个符号链接 | 重建链接 |
| 该名称已被其它条目占用 | 一个真实的文件或文件夹占了这个名字 | 重命名,然后重建 |
| 被关联的文件夹已不存在 | 目标被移动或删除了 | 按它的新路径重新关联 |
重命名只改变它在工作区里显示的名字——它所指向的那个目录仍然叫它自己的名字。解除关联只删除符号链接,别的什么都不动;被关联的文件夹本身永远不会被触碰。
那个界面上还有一个默认开启的开关,不让关联目录污染 git 状态:它会把关联的名字写进仓库的 .git/info/exclude。那个文件只属于你这份克隆,从不会被提交,所以别人的检出不会知道你的关联习惯。
它在工作区文件夹是一个 git 仓库时生效,并且是尽力而为的:即便规则写不进去,代价也只是 git status 更吵一点,绝不会导致关联失败。有两处值得知道的空缺——工作区若不是仓库,这条规则就无处可放;而重命名一个关联并不会把它的规则一并带过去,因此在你自己补上排除项之前,新名字会以未跟踪文件的形式出现。
有些选择它会直接拒绝,并告诉你是哪一类:工作区文件夹自身、包含工作区的文件夹、已经在它内部的东西(不需要关联——它本来就够得着),以及已经关联过的东西。
只有你自己建立的关联才会被跟随
Codeg 把每一次文件操作都限制在工作区主文件夹之内,而这道防线并不会对符号链接一路放行——它会比对你所创建的那份关联清单。所以你克隆下来的某个仓库即便自带一条 secrets -> ~/.ssh,它在你关联任何东西之后,依然和之前一样读不到。→ 隐私与安全
关联并不会延伸的两件事
有两样东西仍然只跟随工作区主文件夹。一是文件实时监听——智能体在被关联文件夹内做出的修改不会自动刷新文件树,需要你重新打开或刷新它。二是更改与提交面板跟踪的是主文件夹的仓库,因此被关联仓库自身的工作树改动与历史不会显示在那里。当你想审阅并提交那个仓库的改动时,请把它作为独立的文件夹打开。
开启会话——composer
一切都从 composer 开始,它是对话底部的输入框。选择智能体、模型和模式,将它指向一个工作文件夹,输入提示词,然后发送。
- 智能体和模型。 从你已启用的智能体以及该智能体提供的模型中选择。(智能体选择器会在你开启新对话时出现。)这一行会按拿到的宽度自适应:能放下几个就显示几个,放不下的收进一个更多智能体按钮里——而当前选中的那个永远不会被收进去,因此写着你选择的那枚标签始终在屏幕上、始终读得清。
- 模式,以及智能体自己的选项。 下拉菜单列出所连接智能体提供的模式——计划优先模式、接受编辑模式等等。它旁边还有该智能体所声明的会话选项:给出一组取值时是一个选择器,给出一个开关时是一个开关标签(比如 Cline 的 auto approve)。这些全都来自智能体本身,因此你看到的内容取决于你正在运行哪一个——而某个选项如果用的是这一版 Codeg 还看不懂的类型,它会被安静地略过,而不是被放进来把整个会话弄坏。
- 工作文件夹与分支。 输入框正下方的一行显示智能体将在何处工作:一个文件夹标签和一个分支标签。当对话还是草稿时,文件夹标签可以切换(它的列表会显示文件夹别名并支持按别名搜索,底部固定的聊天模式一行可无文件夹运行,便于快速对话);一旦对话绑定到某个文件夹,该标签就只作为标识显示。分支标签就是完整的 git 菜单——参见分支与 git 操作。
- 上下文与连接。 在同一行的右侧,一个小圆环跟踪你已用掉多少模型上下文窗口——点击可查看 token 细分(输入、输出、缓存)——旁边的心形图标显示智能体的连接状态:已连接、正在连接、错误或已断开。那个心形是一个按钮——见下文。
- + 菜单。 附加文件、插入已保存的快捷消息、在智能体工作时留下实时反馈、运行斜杠命令,或从 Experts、办公工作或科学研究技能包中加入一个技能。在支持的智能体上——适配器 0.65.0 及以上的 Claude Code——实时反馈会显示为插入到当前回合,并直接落进正在运行的那一轮;其他情况下则会排队等智能体来取。→ 设置 → 通用
- 富文本输入。 输入 @ 可提及文件、智能体、过往会话或提交;输入 / 使用斜杠命令——匹配是模糊的,因此
rvw也能找到review。你发出的长消息会带一个展开开关折叠起来,让对话记录保持易读。 - 两个面板都像面板了。
@列表如今取用 composer 自己的宽度和边界并在其上方展开,和/完全一样,而不再是钉在光标旁边的一个窄框——多出来的空间给了描述,那部分从前是被截断的。它也会跟着它所属的那个 composer:切换到「待办任务」时留着没关的面板,不会再浮在新页面上。而且/在智能体还在连接时就能用:斜杠命令要等智能体起来才存在,所以从前提前敲/什么都不会发生;现在面板会带着一行加载状态打开,命令到齐时自动填上,不必重新敲一遍。 - 中日韩文字之后的
@,以及手机上的@。 提及面板从前只在一个 ASCII 空格之后才触发——而中文、日文、韩文并不写这个空格——并且在软键盘的输入法组合过程中拒绝打开。这两点都修好了,它也会避开屏幕键盘。 - 发送、复刻、停止。 Enter 发送(Shift+Enter 换行);Fork & Send 会为对话创建分支;当智能体运行时,发送按钮会变成红色的取消按钮。你可以提前输入,消息会排队,直到它准备好接收。
审批来自智能体
Codeg 没有全局的"自动批准一切"开关。智能体的行动自由度取决于你选择的模式,以及它在任务中途弹出的权限提示(见下文)——因此控制权始终掌握在智能体自身的安全模型手中。
跟随进展——对话
当智能体工作时,它的对话记录会实时流入:以格式化 Markdown 呈现的回复(包含代码、数学公式和图表)、它的推理过程,以及针对多步骤任务的实时计划清单。长到足以淹没本回合其余内容的计划会限制高度,并提供展开 / 收起,与你发出的长消息早已具备的行为一致。
- 工具调用会显示为带状态标记的可折叠卡片——等待审批、运行中、已完成、已拒绝。Shell 命令会实时流式输出;重复的操作会折叠成一条摘要,例如"已运行 3 条命令"。
- 没有专属卡片的工具结果——比如某个 Codeg 从未见过的 MCP 工具——会渲染成一棵可折叠的树,而不是一坨 JSON:小的载荷完全展开,大的只显示轮廓,长字符串折成一行。显示原始 JSON 随时可以切回纯文本。
- 智能体改动了什么会在每条回复末尾归纳出来,分为两组:新增文件(默认展开)和改动文件(默认收起,带有数量以及
+/−合计)。点击卡片可在编辑器中打开该文件,或使用它的查看差异按钮只看这条回复对它做了什么——在桌面端,还可用在访达/资源管理器中显示在磁盘上定位它。被删除的文件也会列出,并标记为移除。 - 文件名是活的。 智能体提到的文件——以及你用
@附加的任何文件——都会渲染成一个徽章,点击即可在文件窗格中打开。右键它可以获得与文件树菜单相同的操作:在访达 / 资源管理器 / 文件管理器中显示、复制相对路径或复制绝对路径。(在无法生效的地方——浏览器中,或连接到远程工作区的桌面窗口——显示选项会被隐藏;而当文件位于当前文件夹之外时,相对路径一项会置灰。) - 权限提示。 当智能体需要许可时——运行命令、应用编辑、执行计划——一张卡片会停靠在 composer 正上方:"智能体请求许可以继续本回合。" 它的按钮是智能体自己的选项(允许、拒绝等)。另一张单独的卡片则处理智能体向你提出的多项选择问题。如果智能体一次问出好几个——Codex 就经常这样——它们会排队:一次显示一张卡片,旁边标着还有 n 个在等待,你答完一张下一张就到。于是一批审批读起来就是一批审批,而不是像卡死了。
- 每个选项授予什么。 只要智能体把这件事告诉了 Codeg——Claude Code 和 Codex 都会——那些按钮上方就会有一块面板,写清每个选择实际会允许什么,并为每一条标上它的有效期:仅本次运行、本次会话、写入用户设置、写入项目设置、写入本地项目设置,或永久保存。挥手放行一条命令,和把一条规则写进队友也会继承的文件里,两者的区别就在这里说清楚——在你按下任何按钮之前。
- 回复为空时会说明原因。 如果一个回合结束时里面什么都没有,提醒不会只叫你去检查配置——它会指明是三种情况中的哪一种:智能体确实没有产生任何回复、它产生的输出 Codeg 无法解析(通常意味着智能体与协议的版本不匹配),或者它本回合只发来了状态更新(计划、模式、用量)而没有回复。智能体自己的输出——它的错误流末尾,并已抹去一切看起来像凭据的内容——收在状态栏「提醒」里一个默认折叠的展开项中,那是唯一放得下它的地方。
- 上下文压缩。 当智能体空间不够、开始压缩自己的上下文时,会有一张卡片说明正在进行;智能体给出数据时,它会报出压缩前 → 压缩后的 token 数。压缩失败时它会写明失败,而不是永远停在「进行中」。
- 目标。 在 Claude Code 和 Codex 上,
/goal会渲染成一张卡片,带着目标内容、状态,以及 token、预算、剩余和已用时长这几项计数——实时可见,之后重新打开对话时也还在。它的操作按钮只会是该智能体真正实现的那些,所以 Codex 提供暂停和清除,而 Claude Code 只提供清除。两者现在都真的会让工作停下来:它们以前要等智能体下一次空闲才生效,于是暂停了的目标还在跑,清除了的还在自我续跑。 - 委派的工作。 当一个智能体交接给另一个时,一个子智能体浮层会追踪被委派的会话——这正是多智能体协作的核心。
- 每个回合结束时都会显示其模型、令牌和时长统计,你还可以将整个对话导出为图片、Markdown 或 HTML。而在回合进行中,composer 上方那一行还会在已用时长和文件数旁边显示它的每秒输出 token 数——一个涵盖正文与思考内容的估算值。它也会出现在对话标签页上,以及那些只读的记录里——一条待办任务的会话、一个子智能体的会话——也就是你在旁观并非自己发起的工作的时候。
- 把一条消息变成任务。 在复制按钮旁边——你自己的消息和已完成的回复上都有——是一个清单图标:由此消息创建任务。它会把那段文本送到待办任务那边,并预先填好项目文件夹,用于那些你注意到了但此刻不想动手的后续事项。
- 选中消息里的一段。 在对话记录中任意位置划选文字,选区上方会弹出一个小工具条,带三个操作:复制;引用——把它作为 Markdown 引用块追加到你的草稿里,于是回复一段长答复里的某一段,不必自己复制、粘贴再补上
>;以及追问。引用块现在会渲染出一条真正的引用竖线,composer 里和智能体回复里都是。这个气泡会跟着选区一起滚动和重排,上方放不下时翻到下方,并把整个框限制在面板之内,因此再窄的平铺列也不会把它切掉。只读的对话记录只有复制,因为那里没有可供引用的 composer。 - 就一段话追问,而不打断当前这条线。 追问会把气泡上的按钮换成一个输入框;写好提交,Codeg 就新开一个对话,先带上引用的那段话,再跟上你的问题。新对话以当前这个对话的智能体开场,并留在同一个分屏组里,于是回答你的仍是写出这段话的那个智能体,而不是一个空白对话会默认选到的那个——而就某一段问一句「为什么用这个方案?」,也不必赔上你正在读的这条线。从文件夹对话发起时,新对话会落在同一个文件夹和工作目录上;从聊天模式发起时,它会作为一个全新的无文件夹聊天开始,因为聊天对话之间并不共用文件夹。
- 把图片复制出去。 右键点击一张图片即可复制图片——在对话记录里、在放大预览里,以及从 0.28.2 起,也包括你已经放进 composer 但还没发出去的那一张。在桌面端,这件事对 JPEG、WebP 和 GIF 从前是直接失败的;现在三者都可用。
- Mermaid 图表有了自己的查看器。 一个
mermaid代码块会渲染成带自己一套控件的图表:0.2× 到 8× 缩放、拖动平移、重置视图和全屏。放到多大都清晰,因为缩放是按真实尺寸重新排版这张图,而不是把它的一张位图拉大。配色跟随你的界面主题,切换主题时已经画出来的图也会跟着重绘。用复制源码把它带走,或下载成 SVG、PNG 或.mmd。渲染失败的图会明说,并给出查看源码与重试,而不是在本该有图的地方留一块空白。 - 系统消息会显示预览。 Claude Code 在
/compact之后的那段摘要,从前是一个关着的折叠块,你得打开才知道里面有什么。现在它会限行渲染出来,只有在下面确实还有内容时才给一个展开开关。
一个回合失败时,它会说清楚是哪一类失败
一个中途夭折的回合,以前只会留给你一句笼统的报错和一堆猜测。Claude Code 和 Codex 现在会按类型上报失败,Codeg 把每一条都作为一根提示条停靠在 composer 下方,写明出了什么问题——连接异常、访问异常、额度用尽、请求被拒还是服务异常,遇到它认不出的类型则退回到一个笼统的会话异常——下面附上智能体自己的说明。
那些按钮是智能体给出的建议,而不是 Codeg 的猜测,所以提示条上只会有真正帮得上忙的那些。目前认得三种:
- 重试会重新发送那个失败回合正在处理的消息。(如果没有可重发的内容,它会直接说明,而不是按下去什么也不发生。)
- 登录会把你带到该智能体的设置页。
- 新建会话会开一段新对话。
这里最要紧的区分,是失败与颠簸之间的区别。当智能体正在自行重试时,提示条是琥珀色的,且不带任何按钮——它自己在处理,此刻没有你要做的事——而且只要智能体重新有输出它就会清除,不必等到整个回合干净地结束。留下的是一行灰色的已恢复,它会在十秒后自行消失,而不是挂在聊天上方,直到会话结束都还在通报一件早已过去的小插曲。
它们不会堆叠。一个较长的回合若中途重连了三次,从前会在输入框上方永久留下三行琥珀色提示;现在同时出现的多条会合并成一条,并标注「另 N 条」,而且每一条提示条——包括那行「已恢复」——都带上了关闭按钮。你发出下一条消息时提示条同样会清除;而一个卷土重来的问题会重新亮起自己,而不是复用那条已经落定的旧记录。在只读的查看器里——一段待办任务的记录、一个子智能体的会话——你看得到提示条,但没有按钮。
当连接看起来不对劲时
composer 下方的那个连接心形是一个按钮。点它就能看到 Codeg 对这个会话实际掌握的信息:智能体、它的真实状态——正在响应…与静止的已连接会被区分开——工作目录、会话 id,以及任何错误。
底部是重新连接,它在每一种状态下都有效,包括那个你之所以点它正是因为它卡住了的「正在连接」。它是恢复会话,而不是新开一个,所以你的历史会跟着一起回来。
长会话打开更快
一个持续了好几周的对话,不会让你等着它全部加载完。Codeg 只加载最近 120 个回合——起点还会往前挪到你自己的某条消息上,因此窗口不会从一次问答的中间切开——你向上滚动时再每次取进 120 个,而且视图不会在你脚下跳动:你正在读的位置保持不动,更早的回合追加在它上方。来自服务器或远程工作区的响应还会在传输时压缩。
这个窗口只是显示层面的事。导出仍然取完整记录,其他把对话当作一份文档来读的功能也一样。
会话加载失败时,你看得见的部分会被保留
如果加载一次对话时出错,失败提示现在会作为一条小提示停靠在输入框上方,带上重新加载和新建会话,而不是用整页报错顶掉一切。你已经拿到的那段记录会留在屏幕上,也依旧可读。
处理文件——编辑器、diff 与预览
右侧面板中的文件标签页是你的项目树,以工作区为根;点击任意文件即可在中间的文件窗格中打开它。拖动某个条目可以重排项目或投喂智能体:把一个文件或文件夹拖放到另一个文件夹(或工作区根目录)上可在磁盘上移动它,或把它拖入 composer 可将它附加为下一条消息的文件引用——由拖放的目标决定是哪一种,无需任何修饰键。这棵树也支持键盘操作:↑/↓ 移动,→ 展开文件夹或进入其中,← 收起它或跳到父级,Home/End 跳到首尾,Enter 打开文件或展开/收起文件夹。
- 编辑。 文件会在完整的编辑器中打开。这里没有保存按钮——Codeg 会在你按下 ⌘/Ctrl+S、编辑器失去焦点时,以及你停止输入几秒后自动保存;未保存的文件会在其标签页中显示一个
*。用 ⌘L 可将一个文件或仅选中的内容发送给智能体。 - Diff。 智能体的编辑会以只读 diff 的形式打开——并排(HEAD ↔ 工作树)或作为内联的统一 diff,一次一个文件,带有更改计数和上一处/下一处导航。Diff 用于审阅;你通过 git 面板(见下文)提交,而不是逐行接受更改。
- 那些小的 diff 卡片也能并排看了。 那些紧凑的预览——回复里的 diff、权限询问在你批准一次编辑前给你看的那份、待办任务的变更文件,以及作为独立标签页打开的查看差异——在 0.28.2 里,右上角多了一个内联 ⇄ 并排开关。默认仍是内联,而这个选择会被记住并共享:在一处设好,其余每一份预览都跟着走。纯粹是新增的文件保持单栏,因为它没有旧的一侧可展示。
- 实时预览在同一个窗格中打开:Office 文档(
.docx、.xlsx、.pptx)会随着智能体编辑而渲染并刷新;Markdown 和 HTML 提供预览 ⇄ 编辑源码切换(HTML 仅在你选择启用时才运行脚本);图片可缩放和平移。→ Office 文档
合并冲突拥有专属的编辑器
解决冲突会打开一个三栏合并编辑器——本地、结果、远程——在这里你可以逐块接受更改。这是唯一提供逐块控制的地方;在其他任何地方,diff 都保持只读。
会话详情
辅助面板默认打开在会话详情上——它是你所在对话的一览:标题和各种 id、正在运行它的智能体和模型、状态和当前 git 分支,以及实时的令牌用量(输入、输出、缓存和上下文窗口总量)连同耗时与时间戳。每个字段都有一个复制按钮;当没有聚焦任何内容时,它只显示暂无活动会话。它是一份只读一览,而非控制面板——同样的内容也可以从对话头部的 ⋮ 菜单打开。
分支与 git 操作
composer 下方的分支标签首先是一个分支选择器,而且每个对话各有一个,因此平铺的会话会各自显示自己的分支。点击它会打开一个可搜索的菜单,分为两部分:
- 顶部的操作——只有作用于你当前所在分支的那一小组:更新代码、提取远程分支、提交代码...、推送...、新建分支...,以及新建工作树...
- 下方的你的分支:本地分支和远程分支,共同前缀(
feature/…)会折叠成默认收起的分组,当前检出的那个标记为当前。点击其他任意分支即可看到它的操作——切换到此分支、将它合并到当前分支、把当前分支变基到它上面、删除分支,或者不检出就对它执行拉取代码 / 推送。被某个 worktree 检出的分支还会提供删除工作树和删除工作树及分支。
长尾的那些操作不在这里:储藏与恢复储藏和其余工作树操作一起位于辅助面板的更改标签页,管理远程仓库位于它的提交标签页。
顶部的一个搜索框会同时过滤这两部分,因此输入 push 能找到该操作,输入分支名的一部分则能找到分支。在聊天模式下完全不会出现这个标签;在不是 git 仓库的文件夹中,它显示为无分支并提供初始化 Git 仓库。
→ Git 与 Worktree 介绍了完整的工作流程。
运行已保存的命令
状态栏带有一个启动器,用于你反复运行的那些命令——开发服务器、测试监听。Codeg 会从你项目的 package.json 脚本中为该列表播种,因此你第一次查看时通常就已经有内容了;在那之前它显示为添加命令。从菜单中选一个,▶ 按钮就会在终端中运行它,并变成 ■ 用于停止。管理命令...可以添加、编辑、重新排序和删除它们,而你的选择会按文件夹被记住。
审阅与提交
右侧面板的两个标签页让版本控制触手可及:
- 更改列出你工作树中的编辑——已跟踪和未跟踪的,附带每个文件的行数统计。你可以从这里打开某个文件的 diff、放弃某项编辑(回滚),或开始一次提交。
- 提交是你的完整历史记录,呈现为一条会随滚动加载更多内容的时间线。两个筛选胶囊可以缩小范围——分支(默认为全部分支)和作者——而且 Codeg 会按项目记住这两者。点击某个提交即可展开:完整的提交信息、它改动的文件及其
+/−计数(点击某个文件可查看它的 diff),以及包含它的分支。右键可使用查看差异、新建分支...、重置到此处或推送...
分支胶囊在分支列表之上还有一项 HEAD——跟随当前分支——当你在分支之间频繁切换时,就该选它。指定一个分支名会把视图钉在那个分支上;而 HEAD 会在每次查询时重新解析,因此历史会随着你的每一次检出跟着走,即便处于分离 HEAD 状态也照常可用。
更改标签页本身就能提交:在它的工具栏里写一条消息按回车,即可对已跟踪的改动做一次快速提交;也可以打开完整的提交窗口,精确勾选你想要的文件,写一条消息,然后选择提交或提交并推送。它的菜单里还有拉取、获取、推送、储藏与恢复储藏。切换分支、合并和 worktree 则是分支标签的活。
使用 worktree 的并行开发、远程账户以及完整的 git 工作流程都有各自的页面。→ Git 与 Worktree
终端
按 ⌘J 可在你的工作文件夹中打开一个集成终端——一个真实的 shell,而非沙箱。你可以在标签页中打开任意多个。它专为那些你更愿意自己运行的命令而存在:启动开发服务器、检查输出、在智能体旁边运行一次性脚本。
标签页与多任务处理
中间区域采用标签页形式,因此可以同时打开多个会话:
- 对话标签页可通过拖动重新排序,双击可固定。⌘T 打开新对话,⌘W 关闭标签页,⌘Tab 在它们之间循环切换。
- 文件标签页追踪你在文件窗格中打开的文件、diff 和预览。
- 未发送的草稿能在重启后保留。 你开启却从未发送的对话会回到原处——连你在 composer 里敲过的文字也一并回来。每个草稿都保留各自的文本,因此并排的两个草稿不会再互相覆盖。
把对话视图拆分为分组
一条标签页条并不总是够用。右键点击任意对话标签页,你就可以把对话区域拆分成标签分组——与编辑器的分屏是同一个思路,而且数量没有固定上限:
- 向右拆分 / 向下拆分——把当前分组一分为二。新分组会打开一个空白草稿,因为同一段对话不能同时出现在两个分组里。
- 拆分并向右移动 / 拆分并向下移动——同样的拆分,只是这个标签页会移入新分组。
每个分组都是一套完整的工作区:自己的标签页条、下方自己的对话头部,以及自己的新建对话按钮(沿用该分组的文件夹)。同一时刻只有一段对话是活动的——即 composer 和快捷键作用的那个——因此拆分之后你也不会搞不清按键落在了哪里。
拆分之后,同一个右键菜单还负责管理布局:
- 移动到对面分组,或在分组较多时使用移动到分组 n(每一项都会标注它正显示的对话)。
- 更改分隔方向——把左右并排的一对翻转成上下堆叠,或反过来。
- 取消拆分会把当前分组并入相邻分组;全部取消拆分则把一切收回成一个。
你也可以直接把标签页拖过去——拖到另一个分组的标签条上,或它窗格中的任意位置——一个浮动小片会跟随光标,同时会有落点指示告诉你它将落在哪里。拖动两个分组之间的分隔条可以改变空间的分配。拆分可以自由组合:先向右拆,再把其中一半向下拆,你就得到了一个网格。
你的布局会按工作区记住,草稿也包含在内——重新打开 Codeg,拆分会回来,同样的对话仍在同样的分组里。
有两条小规则让这一切保持可预期。草稿会留在生成它的分组里(它在服务端还没有可移动的东西),因此它的移动菜单项和跨分组拖动会被撤下——在自己分组内重新排序仍然可用。而在分组之间移动标签页不会打断它:会话会保持连接、继续流式输出,只是换了个家。
将多个会话并排平铺
拆分是每个分组显示一段对话,平铺显示则正相反——它把一个分组所有的标签页同时显示出来。右键点击一个对话标签页并选择它,即可把该分组的对话并排铺开:不是固定的两栏分屏,而是每个打开的标签页对应一个窗格,并排排列,当它们放不下时可横向滚动。这就是你同时运行一支智能体舰队的方式:在一个里开启一项任务,在另一个里开启另一项任务,无需切换标签页就能看到每份对话记录并行流动。
- 窗格就是你的标签页。 打开另一个对话(⌘T 或侧边栏)可添加一个窗格;关闭一个标签页可移除一个。平铺至少需要该分组中有两个对话才能生效。
- 自由混合项目。 平铺的窗格不局限于单个文件夹——可以把来自不同项目的会话并排放在一起。
- 只有一个窗格是活动的。 活动窗格——即 composer 和快捷键作用的那个——会以流动的渐变边框勾勒出来。点击任意其他窗格即可聚焦它。
- 它是按分组生效的。 平铺与拆分可以组合:把一个分组平铺成一整面对话记录墙,同时让旁边的分组只显示一段对话。
- 随时退出。 右键 → 退出平铺会把该分组带回单标签页视图。
平铺是多智能体协作的绝佳搭档:将主导会话与它启动的子智能体会话并排平铺,观看整个团队协同工作。
欢迎界面
在会话开始之前,对话窗格会询问"你今天想做什么?",并在三个标签页中提供快捷操作——代码开发、办公工作和科学研究。每张卡片只需一键即可将一个现成的技能(对于办公和研究,还有一个提示词模板)放入 composer;任何尚未为你所选智能体启用的项目都会显示一个锁形图标,点击可跳转到启用它的位置。下方是智能体选择器和一条轮换显示的提示。
快捷操作下面那一排技能快捷方式会在两端停住,不再自己往前漂:两端各有一个箭头用来移动它,而每个箭头只在那个方向还有内容时才可点。
桌面版与浏览器版
无论你运行桌面应用还是在浏览器中打开 codeg-server,工作区都是一样的。有几处不同:
- 文件。 桌面应用使用原生文件对话框,并且可以在 Finder / Explorer / 终端中打开;在浏览器中,你则改为上传文件或在服务器上选择文件。
- 窗口与附加功能。 自定义窗口控件和桌面宠物仅限桌面版;浏览器则增加了登录(你的访问令牌),以及连接断开时的重新连接提示。
- 远程工作区。 桌面应用可以连接到远程服务器,此时它的文件操作会表现得像浏览器一样。
键盘快捷键
| 快捷键 | 操作 |
|---|---|
⌘/Ctrl B | 切换对话面板 |
⌘/Ctrl E | 切换右侧(会话详情 / 文件 / 更改 / 提交)面板 |
⌘/Ctrl J | 切换终端 |
⌘/Ctrl T | 新建对话 |
⌘/Ctrl K | 搜索对话和文件 |
⌘/Ctrl W | 关闭当前标签页 |
⌘/Ctrl Tab | 在标签页间循环切换 |
Enter / Shift+Enter | 发送 / 换行 |
⌘/Ctrl L | 将当前文件或选中内容添加到对话 |
⌘/Ctrl S | 保存当前文件 |
以上是默认设置;其中一些可以更改。
后续步骤
- 使用智能体——启用一个智能体,并在工作区中运行你的第一个会话。
- 对话聚合——来自每个智能体的过往会话如何进入对话列表。
- Git 与 Worktree——完整的版本控制工作流程,包括并行开发。
- Token 用量——状态栏里那个对话计数点开之后是什么。
- 多智能体协作——将任务的一部分委派给其他智能体。