SuperAPI AI 工具集

cmux-artifact

编程与开发

查看项目

更新于 10-15 17:45

技能介绍

cmux Artifact 是 cmux 技能集中的一项技能,用于在用户请求 HTML 产物、走查、证据页面、演示页面、产物预览,或希望获得有助于 dogfood、验证或理解某项变更的工作区布局时使用。其目标是产出一个可长期保存、可检查的产物,并在 cmux 工作区中打开非干扰性的标签页来呈现重要证据。

用途 该技能面向需要把验证过程、演示或证据整理成可查看页面的场景。它强调使用真实证据,包括真实命令输出、日志、截图、追踪和耗时数据,明确要求不得虚构证据。最终面向用户的产物不应只留在 /tmp 中。

主要能力

  • 收集最小但真实的证据集合:命令记录或终端输出、相关日志、截图/帧/视频/浏览器快照、带精确时长的耗时表、代码引用或 PR 链接、清理状态与遗留阻塞项。
  • 编写独立的 index.html,可从文件系统直接打开,包含:被测或变更内容的通俗摘要、简短时间线或步骤表、关键耗时、指向本地已复制日志/媒体的相对路径链接、观察到的失败及直接下一步操作、外部资源创建后的清理状态。界面要求简洁密集,适合工程评审,避免营销区块、巨型首屏、装饰性渐变或隐藏证据。
  • 对于交互式产物,可以创建小型 React 网站而非单一静态文档,保持在同一持久 ASSET_ROOT 下,优先使用无需安装的现有仓库依赖或浏览器 ESM 导入。若安装了 bun 且托管有助于用户试用 UI,可在可见的 cmux 辅助终端中前台运行 Bun 服务器,然后在浏览器界面打开确切的本地 URL;不使用隐藏的 tmux、nohup、分离的后台服务器或通用 localhost 页面。若 Bun 不可用或托管无价值,则回退到文件系统 index.html。
  • 打开有帮助的标签页:将最终 index.html 作为浏览器界面导航到其 file:// URL,且不改变焦点。默认目标是调用方工作区的右侧辅助窗格,但根据前置条件也可能是专用或新工作区。不使用 cmux open 打开 HTML 产物,因为那会创建文件预览而非在浏览器中实际运行产物;原始证据(日志、Markdown 记录、截图、视频)则在浏览器产物处理完后用 cmux open 打开。
  • 处理已打开的同一产物:若同一 index.html 已在目标工作区或辅助窗格中作为浏览器界面打开,保留该界面,必要时导航到产物 URL,并在更新 index.html 后始终重新加载(reload --snapshot-after)再交接,因为浏览器界面可能保留过期的文件内容。若已打开的是文件预览或其他不可重新加载的界面,则关闭该过期界面,再在同一辅助窗格打开一个浏览器界面。若存在重复界面,保留一个浏览器界面,关闭过期重复项,并导航或重新加载保留的浏览器。不留下多个同一产物的 index.html 标签,以免当前版本不明确。
  • 将产物放在独立窗格中,与工作并排显示,使证据在终端旁边可见而非隐藏在终端后面。若调用方工作区已有合适的右侧辅助窗格则复用;若工作区是单窗格(仅活动终端),不要将产物作为该窗格中的另一个界面添加(new-surface --pane <active-pane> 会使其成为堆叠在终端后面的后台标签,用户看不到变化),而应创建右侧分屏,使用 new-pane --direction right 直接在新右侧窗格打开浏览器,或将已在活动窗格中创建的界面 split-off 出来。
  • 对于托管的 React 产物,在同一目标工作区/窗格中创建或复用辅助终端,在其中运行服务器,验证其可见运行,然后打开所服务的 URL。

使用方式 产物位置:将最终产物放在按分支划分的持久目录树下: BRANCH="$(git -C <worktree-or-repo> branch --show-current 2>/dev/null || echo task)" ASSET_ROOT="/cmux-assets/${BRANCH:-task}/<artifact-slug>" mkdir -p "$ASSET_ROOT" 若 /cmux-assets 无法创建或写入,则在当前仓库检出下使用 cmux-assets/<branch>/<artifact-slug> 并说明该回退方案。/tmp 仅作临时用途。在打开或报告前,将已接受的日志、截图、帧、视频和记录复制到持久目录树中。

工作流分为四步:

  1. 收集证据:收集能解释任务的最小真实产物集合,使用简洁名称如 run-transcript.md、server.log、failure.log、screenshot.png、index.html。
  2. 编写 index.html:创建可从文件系统工作的独立 HTML 文档,包含上述内容。
  3. 打开有帮助的标签页:将最终 index.html 作为浏览器界面导航到其 file:// URL,不改变焦点。先检查同一产物是否已在目标工作区或辅助窗格中打开。使用 new-pane --direction right 或 new-surface --pane pane:<right-helper> 等命令,配合 --focus false。若产物意外落在活动终端窗格的后台标签中,用 cmux split-off --surface surface:<artifact-browser> right --focus false 将其分屏到右侧。原始证据用 cmux open 打开。托管 React 产物则创建或复用辅助终端运行服务器,验证后打开所服务 URL。
  4. 验证:在报告完成前,用 test -f 和 ls -la 检查文件;托管产物还需 curl 健康检查并读取辅助终端屏幕;若在 cmux 中打开,用 cmux list-pane-surfaces 验证标签已创建;确认目标辅助窗格中同一 index.html 只有一个可见界面,若仍有重复则关闭过期重复项;确认产物落在独立窗格中与工作并排,而非活动终端窗格的后台标签;若产物此前已打开,确认保留的浏览器界面在最终写入后已重新加载。

适用场景

  • cmux dogfood 与验证:把验证过程、失败日志、证据页面放在工作终端旁边。
  • 演示与产物预览:生成可长期保存、可检查的 HTML 走查页面。
  • 独立持久产物:如设计文档、报告或用户会回访的参考页面,可放在专用或新工作区。
  • 交互式产物:需要用户试用 UI 时,可创建小型 React 网站并托管。

限制与规则

  • 不得将最终产物只留在 /tmp。
  • 除非链接的记录显示运行通过,否则不得声称运行通过。
  • 不得将机密粘贴到产物中;复制日志前需脱敏 API 密钥、令牌、Cookie 和 Authorization 头。
  • 不得抢占焦点;使用显式工作区和窗格引用以及 --no-focus 或 --focus false。
  • 调用方工作区是默认目标而非硬性要求;独立持久产物可在专用或新工作区打开,以增量方式创建,仅在用户要求立即查看时才切换。
  • 当存在特定产物路径或深层链接时,不得打开顶层仓库或通用 localhost 页面。
  • 最终聊天回答应简短,包含持久产物路径和具体下一步操作。

前置条件 调用方 cmux 工作区是默认目标,而非要求。在打开窗格、标签、浏览器、日志、截图、视频或生成文档时,需阅读 cmux-workspace 技能。对于与任务绑定的证据(dogfood 证明、失败日志、验证页面),默认放在调用方工作区的右侧辅助窗格,紧邻用户触发的工作。当产物是独立且持久的(用户会回访的设计文档、报告或参考页面),或拆分调用方工作区会挤占活动终端,或用户要求在别处打开时,优先使用专用或新工作区,用 cmux new-workspace 增量创建;仅在用户要求现在查看产物(明确的“打开它”也算)时才切换到该工作区。绝不推测性地调用 select-workspace/focus-pane。若不确定哪种合适,可询问,或选择干扰最小的选项并说明放置位置以便用户调整。

关于具体命令、代码和安装步骤,资料中提供了完整的 shell 命令示例,包括产物路径设置、浏览器界面导航与重载、窗格与界面创建、托管服务器运行与健康检查、以及验证命令等,均需按原文保留,不在此改动。