舰队控制台
独立回回回网络控制台,用于观测活输出流和Console自有代理和终端会话.
它会做什么
Fleet Console核心拥有HTTP,代理执行,Chat,Global Shell,PTYs,门票,WebSocket运输,以及AI Gateway组成. 插件会消耗明显的控制台能力;它们不依赖于终端插件 .
- 控制台拥有的终端会话,并在可通航的铁路上观察到工作.
- 工作空间中枢会话通过一个内置目录浏览器创建——没有OS-native对话框.
- 轴承喷出物剂 CLI PTY 有在过程观察.
- 代码/ Fleet 维基浏览器在共享控制台 GNB 下
/console/codex。 。 。 . - Codex Cowork 允许您在焦点 AI 编辑会话中打开一个 Wiki 条目: 将其不可改变的当前版本与活的草稿进行比较,给助手选择的文本或说明作为上下文,并在准备好时应用一次. 您的草稿和谈话在刷新或重新启动中存活下来, 而直到最终应用前, 知识保持不变; Cowork没有终端或 PTY 访问, 并且将提供者的细节、 工作空间路径和证书保存出浏览器 .
- 浏览器观察者快照和SSE流由控制台拥有的全局观测到的ID支持.
- 浏览器终端通过WebSocket上的短寿命票访问.
代理是耐用控制台的操作(pluginId: null, (中文(简体) ), type: "agent") (中文(简体) ). 壳体是一个全球不可再生地表,拥有Console自有寿命. 终端和聊天是代理执行适配器,而不是插件.
运行时频道
| 频道 | 目的 | 键入边界 |
|---|---|---|
/observer/* | 浏览器快照和SSE观察者表面. | 仅循环; 没有浏览器无记名符号 . |
POST /api/v1/theaters/folder-listings | 返回目录列表( E){ path, parentPath, roots, entries, truncated? }用于给定路径,或服务器主目录,当 path 无效。 只有目录,不重复,封顶有500个条目. | 需要终端 Origin 边界(isTerminalAuthorized);没有管理员Token. |
POST /api/v1/theaters/folder-grants | 验证客户端提供的绝对路径 validateAbsoluteDirectory 返回一个使用 { folderGrantId }。 。 。 . | 需要终端 Origin 边界; 没有管理员. |
/api/v1/shell/* | 壳牌发布会及全球壳牌的售票路线. | Shell cwd是从所选的剧场中解析出服务器侧;浏览器只接收一用终端票. |
/api/v1/agent/* | 代理发布,会话,罚单,工作,活动,租户,以及代理业务的州道. | 需要终端 Origin 边界; MCP/会话令牌仍然只使用服务器 . |
/api/v1/terminal/ws | Console PTY和Chat WebSocket运输机. | 短生一用车票和"起源"授权. |
/console/ | 静态反应客户端服务于此软件包 dist/client。 。 。 . | 直接从回转控制台 URL 服务 . |
/console/codex/* | Console-owned Codex/Fleet Wiki web,工作空间API,并迁移出海事Codex客户端. | 管理工作空间注册使用锁无记名符;浏览器读取在允许的本地源上保持无记名符. |
/observer/tenants 可能包括 terminalSessionId 用于插件拥有的终端会话。 贝壳和特工的路线在下面 /api/v1/{shell,agent}/*; WebSocket 运至 /api/v1/terminal/ws。 。 。 .
会话具有约束力
当Console创建终端会话时,它会生成会话id并解决每个代理CLI,包括AI Gateway操作,通过共享的舰队-航空运行时间. 它通过通用控制台操作和事件能力,保留选定的绝对cwd服务器侧并记录非秘密会话元数据用于观察者水合.
文件夹选择完全在浏览器 UI 中处理: React 目录浏览器模式调用控制台所有 POST /theaters/folders/list 浏览服务器本地文件系统的路由,然后调用 POST /theaters/folders/grants 一旦操作员确认目录。 由此产生的一次性使用补助金由剧院注册使用;壳牌和代理发射从剧院服务器侧解决了cwd. 不参与OS- 本地对话或儿童进程 。 浏览器模式在远程和无头浏览器会话中工作,没有任何OS级对话框支持.
文件夹赠与为一用和内存. 浏览器- 侧取消保留到模式中, 不调用服务器授权端点 .
使用观测输出
computer_apps({ query, includeWindowState: true }) 不检查窗口状态
启动或捕获最多20个匹配装置。 报告截取情况;
使用精确的应用路径来缩小读取. no_window 表示一个成功的 AX Windows
读取返回的空列表; unknown 保留权限和搜索失败.
单是运行的过程并不能证明窗口是开放的.
computer_open({ app, reason, activate: false }) 明确发射/重新发射
绝对 .app 通过 macOS 背景打开请求安装(open -g) (中文(简体) ).
activate 默认为虚假; 应用程序仍然可以激活自己, 所以焦点保存
没有保证或恢复。 使用 activate: true 仅用于授权的前景
打开 背景准备状态是指存在一个非最小化的 AX 窗口; 它没有
承诺能见度或背景捕捉。 一会儿 computer_state 与
allowActivation: true 可能会集中精神。 只在打开应用程序时使用
在用户任务范围内。 它不需要快照, 无效以前的快照,以及
共享本地控制、选入、取消和会话所有权门。 没错
不抓取、类型、开关装置、力平分或重试. requestDispatched
表示请求进程已经开始,而不是窗口打开。 检查 windowReady, (中文(简体) ),
然后请求 computer_state 为了新的观察。 Apps 可以忽略重开或显示
a 选择者;未准备好的结果需要用户指导而不是重放输入.
关闭窗口不同于最小化窗口:即使有 allowActivation: true, (中文(简体) ),
已确认的空窗口列表拒绝抓取/输入
computer_use_no_action_window。未知窗口状态不会被猜测为空.
已确认的隐藏应用程序拒绝抓取/输入 computer_use_app_hidden: 本国
AX读取可以成功,而单独的桌面活预览是空白的. 显示时
应用程序被授权, 请求重新打开背景, 验证 hidden: false,并读
新状态 窗口准备状态要求应用程序未隐藏,并不一定
前观相. 桌面在验证预览源时也拒绝隐藏的应用程序.
土著 -10005 不是允许诊断:保留其信息并区分
从超时抓取失败 .
fleet-computer-use 使用已安装的 Codex 本地后端. computer_state 财务报告和审定财务报表
computer_action 财务报告和审定财务报表 computer_paste 默认为 observation: "text":本土捕捉没有改变,
但在模型输出中省略了截图块,
包括错误反应。 使用 observation: "text_and_image" 当任务需要时
视觉校验或先于坐标单击、滚动或拖动。 在行动中,这个
选项控制其 结果,而不是其输入快照的有效性.
imageAvailable 报告本地图像的可用性; imageDelivered 报告是否
目前的反应包括: 协调行动需要新的快照
imageDelivered: true。请求视觉状态生成一个新的 snapshotId 财务报告和审定财务报表
取消上一个。 要素动作仍然可用文本模式.
一个动作只返回自己的本土观察 。 舰队一分不发
读取,包括抓取错误或不完整的Chrome观察后:读取可以
激活应用程序或取消最小化 。 可用原生AX观测(被包装状态或
动作的平面 App/ Window 树)产生新的
快照; 没有它的确认 observation: "unavailable" 财务报告和审定财务报表
snapshotId: null。从不重复获取快照的动作。 请求另一个
computer_state 只在必要的时候才明确。 详细的动作计划仍然保存在版本中,可以
再次请求使用 includeActionSchemas: true 后上下文收缩.
使用 computer_state({ app, fullTree: true }) 在失去之前的 AX 上下文之后.
这需要独立的 App/Window 树, 而不是 diff: 当前本地的 MCP
返回无完整树 disableDiff 参数。 舰队验证反应
返回时 computer_use_full_tree_unavailable 无法时没有快照
认识一棵完整的树。 它使一个人阅读, 从来没有重放缓存树或复刻.
这并不能保证一个应用程序通过AX来暴露其所有内容.
computer_paste({ app, snapshotId, text, format, reason }) 在已插入时
已校验可编辑焦点/ 选择 . format 明确 text, (中文(简体) ), md,或 html· ;
Markdown被渲染为HTML,以原始源为正文倒置.
格式化和粘贴支持取决于应用程序. 它使用本地命令+ 曾经,
没有 type_text 或全外地 set_value,并返回动作的观察
下一张快照就不用读了 检查之前产生的内容
提交; 已完成的关键动作不是应用程序接受粘贴的证明.
粘贴帮助器将上一个剪贴板项目/类型保存在进程内存中, 而不是
临时文件或日志. clipboardRestoration 报告 restored, (中文(简体) ),
preserved_newer_contents (另一个作者更改了剪贴板),或 failed。 。 。 .
拒绝的电话可以报告 not_touched; 准备失败可报告 unverified。 。 。 .
它在检测到更新剪贴板更改时跳过恢复; 此检查是
最好的,而不是原子跨应用程序。 修复是最佳的
本地故障和父母退出,在强制终止或操作系统关闭后得不到保障
错误。 超过64 MiB的剪贴板备份在被替换前被拒绝.
所有三个工具默认为 allowActivation: false。只读 macOS 机前飞行拒绝
本地发送,除非目标运行,活动,并有焦点,
未最小化窗口。 这是一个最好的警卫, 没有背景执行数字 :
本地后端没有激活选项,桌面状态可以比对
检查. allowActivation: true 仅用于该呼叫的许可前景,包括:
发射/激活/恢复;仅在任务授权产生这种效果时使用,
不是自动错误倒置。 窗口地址和交叉应用快照再利用
仍然不支持; 本地元素识别寿命不是在应用程序中设定的.
粘贴将呼叫的明确激活权限带入经纪人( 默认)
虚假)。 它在剪贴板准备前检查准备状态, 检查前景
在替换剪贴板内容之前再次应用, 并重新检查准备状态
在发送命令+V之前。 逾期拒绝发送不粘贴密钥并尝试剪贴板
恢复; 它返回 actionOutcome: "not_started" 与 snapshotId: null。 。 。 .
这些检查不是原生发送的原子,也不将快照绑在
特定窗口。 不要把它们当作是防止每一次相同的应用窗口变化.
使用诊断日志区分 scope: "native_output" (缩小后端)
答复) scope: "model_output" (预测后的最后服务响应和
页:1 它们只记录文字字符数,图像数/解码字节数,
时间、结果和粘贴的有效激活权限——不是屏幕文本,
图像数据,输入文本或原因. 这些是
有效载荷测量,而非计费符;分别比较供应商的使用情况.
安全说明
HTTP表面只回放. 浏览器观察路线可直接通过回回路获得,终端路线保留其起源地边界(isTerminalAuthorized). MCP会话令牌,靴子令牌,以及所选的绝对路径不会通过浏览器有效载荷,URL查询字符串,SSE帧,终端门票,日志,或静态资产被曝光.
POST /theaters/folders/list 财务报告和审定财务报表 POST /theaters/folders/grants 两者都要求 validateHost 财务报告和审定财务报表 isTerminalAuthorized。文件夹的端点不使用管理员或无记名认证。 选定的绝对路径仅出现在列表中,并给予API响应;这些路径不包含在会话,剧场,观察者或SSE有效载荷中. 当剧院注册时,解析的cwd会被存储在持久的当地状态中(~/.fleet/console/state.json, (中文(简体) ), sensitivity: "sensitive")完全如前;这是一个敏感的本地文件,不会被传送到浏览器上.
Codex/Fleet Wiki 路由保存已迁移的维基安全边界:主机许可列表 写出路由的出处检查 回回回写出门 路径封装 DOMPurify markdown sanitization 严格美人鱼渲染,以及用于工作空间注册的锁定文件无记名认证.
使用量
fleet console
fleet console status
fleet console restart
fleet console stop
# transitional alias
fleet-console
偏爱 fleet console过渡 fleet-console bin还行。 发射器确保本地控制台服务器运行并打印其 /console/ 地址——没有浏览器符号碎片——供您打开自己;它从不代表您发射浏览器.
AI Gateway 配置自同一发射装置, 相对相同 ai-gateway.json 控制台屏幕编辑 :
fleet gateway # interactive configuration
fleet gateway status # configuration and credential state
fleet gateway models --json # what the gateway currently exposes
fleet gateway auth login # OpenCode Go / TypeSafe API keys
fleet gateway set xai-endpoint direct # one policy axis, no prompts
fleet gateway serve # a standalone loopback gateway
CLI 直接写入设置文件, 因此它与停止的 Console 工作; 一个打开的 Console 标签显示重装后的变化 . fleet gateway serve 绑定 127. 0.0.1 且没有认证: 客户端集 ANTHROPIC_BASE_URL 到打印的 URL 和任何 ANTHROPIC_API_KEY 从开始 sk-ant-,其价值 网关从未读取.
桌面共存
Fleet Console桌面是围绕这一服务而设的一薄电子外壳,而不是第二个Console执行. 被打包的外壳既不嵌入此软件包, 也不嵌入节点: 它获取一个检查和校验的节点运行时间, 并安装此软件包 ~/.fleet/desktop/runtime/,然后监督此包的 dist/cli.mjs serve 作为电路外的侧车过程 并满载精确 http://127.0.0.1:<verified-port>/console/. 该服务仍然是HTTP/REST/SSE/WebSocket,PTY,提供商政策,插件运行时间,耐用JSON状态,以及反应UI的拥有者.
发布了稳定的CLI/浏览器和桌面监督的Console共享一个Cononical稳定锁和 ~/.fleet/console 持久状态命名空间( 除非 FLEET_CONSOLE_DATA_DIR 超常 – 先前 FLEET_CONSOLE_DIR,仍然被接受——是故意设定的). 拥有者元数据仍然是出处/生命周期相容数据;它不会改变Console通道,健康,更新,或CLI控制行为. 桌面只采用它自己启动的控制台; 当另一个控制台, 如一个启动时 fleet console,已经握住锁了,桌面请您停止,不碰它就退出.
更新仅通过 npm- global 工作者适用于普通的全球软件包。 用于桌面管理 console/latest 运行时间, POST /api/v1/updates/apply 永不突变 运行时间: 它回答 delegated 并且将请求交给监督桌面,桌面重新启动,使其硬化的入流安装器安装了新版本。 这个 /api/v1/pairing-identity 结束点只是发现,从不认证.
发展
来源在 core/host/ 用于节点CLI/后端和 core/client/ 用于Vite React SPA. Agent, Terminal, 以及 AI Gateway 运行时间执行在下面 core/host/;他们的UI生活在 core/client/src/私人 @fleet-console/sdk 软件包下 sdk/ 是核心和内置插件的共享插件合同表面.
pnpm --filter @dotobokuri/fleet-console dev
pnpm --filter @dotobokuri/fleet-console test
pnpm --filter @dotobokuri/fleet-console typecheck
pnpm --filter @dotobokuri/fleet-console build
build 发射 dist/fleet.mjs, (中文(简体) ), dist/cli.mjs, (中文(简体) ), dist/client/,其余内置插件捆绑。 没有外部嵌入步骤.
见 CLAUDE.md 拥有权, 象征性的边界, 和流出的变化.