steamharness CLI
steamharness 是 @steamharness/cli 暴露的统一命令。本地命令加载 workflow 项目、安装全局 runtime API 并在当前设备执行;连接服务器的命令位于 workspace 分组。
调用方式
Studio 使用的 CLI 项目模板会在 package.json.steamHarness.projectCard 中保存项目类型图标和随机配色。图标色与背景色对比度至少为 4.5:1;静态项目检查会把该头像元数据传给 Studio。
CLI Web 的回答标题在时长左侧显示项目头像,点击打开项目资料;用户消息右侧显示当前账号头像,点击打开账号面板。嵌入 Studio 时使用 Studio 账号入口。项目工具栏同样显示可点击的项目头像。
查看最新消息时,对话区域会跟随新增内容滚动到底部,包括同时出现的多张资源卡片、预览加载和输入区高度变化。手动上翻后保留当前阅读位置;点击“回到最新消息”按钮或滚回底部后恢复跟随。
项目应同时安装 Core SDK 和 CLI。两个包独立版本化,建议固定到经过验证的精确版本:
pnpm add -D steamharness @steamharness/cli
发布项目必须在 devDependencies.steamharness 写精确 SemVer,不能使用 ^、~、0.2.x、workspace:* 或本地路径。精确声明用于记录开发基线;项目安装的 Core 要满足 CLI 声明的兼容范围,运行时再校验 Core 的 major.minor 兼容线。@steamharness/cli 也保持精确版本,但与 Core 独立发版。
内置项目在源码开发中可以直接引用本地 harness;位于 build-in/ 下的内置项目使用 link:../../harness。CLI 按目录层级读取开源源码根中的 harness 清单,并拒绝越出该根目录的引用。main、alpha 和 tag 的发布模式仍要求精确的已发布版本。
CLI 开发构建使用固定的 Core 基线,运行项目时加载该项目安装的 Core。peerDependencies.steamharness 声明可接受的版本范围,例如当前 0.2.4 系列使用 >=0.2.4-20260929001 <0.2.5-0,不要求项目 Core 与 CLI 构建基线完全一致。run、json、structure、resolve-params 和 mcp 会在加载项目模块前校验实际安装的 Core、CLI 构建基线和项目 Core 声明;structure 还会校验完整 steamHarness.projectInfo 合同。help 不加载项目,因此不执行这些检查。
| 场景 | 命令 |
|---|---|
| 项目脚本 | pnpm run dev |
| 已安装 bin | pnpm exec steamharness <command> |
| CLI 源码仓库开发 | pnpm build && node dist/index.js <command> |
命令格式
steamharness <command> [workflow-dir] [options] [--] [...args]
| 部分 | 说明 |
|---|---|
<command> | run、json、structure、resolve-params、mcp、web 或 help。不传命令时显示帮助。 |
[workflow-dir] | workflow 项目目录。不传时使用当前目录。 |
[--] [...args] | executor createInput 可读取的 CLI 风格参数。-- 用于停止解析 CLI 自身选项,后续参数会原样传给 workflow。 |
全局选项
| 选项 | 说明 |
|---|---|
--help / -h | 显示帮助。必须作为第一个参数使用。 |
--json | 在 run 命令中切换为 JSON 报告输出;json 命令默认开启。 |
--run-id <id> | 指定本次执行 ID。主要用于恢复 waiting_for_input run。 |
--entrypoint <id> | 为 Workflow 选择入口;省略时使用默认入口。适用于 run、json 和 resolve-params,Conversation 不接受非空值。 |
--conversation-id <id> | 指定会话 ID。run 和 json 都可使用。 |
--file-store-dir <dir> | 指定本地文件 store 目录。run 和 json 都可使用。 |
--related-project <alias>=<绝对项目目录> | 为 run 或 json 绑定一个双方已确认的关联项目;可重复指定。目录必须是绝对路径,且 alias、UUID、双方 package 声明都必须匹配。本地运行时,目标项目由本进程按它自己的目录、自己的存储跑起来,因此关联访问除 KV 外还包括它的知识库与入口调用(由目标项目的 grantToRelatedProject 授权)。 |
--resolved-user-inputs-json <json> | 注入已提交的用户输入或工具审批答案数组。 |
--tool-permissions-json <json> | 宿主传入工具权限覆盖策略;普通手动 CLI 调试通常不需要传。 |
命令列表
| 命令 | 说明 |
|---|---|
steamharness run | 本地执行 workflow,普通模式输出 output node 内容。 |
steamharness json | 本地执行 workflow,并输出完整 JSON 执行报告。 |
steamharness structure | 分析 workflow 结构并输出 JSON。 |
steamharness resolve-params | 从 stdin 读取 composer 状态并执行 executor 参数联动回调。 |
steamharness mcp | 将 Workflow entrypoint 作为标准 stdio MCP tools 提供给 AI 客户端。 |
steamharness help | 输出帮助信息。 |
本地 Web 界面
Conversation 输入区支持拖入文件和文件夹,也可通过左下角按钮选择“选择文件”或“选择文件夹”,两种入口使用相同导入逻辑,无需声明附件类型。Studio 的选择器保留原路径,也可从 VS Code 资源管理器、编辑器标签、桌面或其他目录拖入,以图标和名称组成的紧凑标签横向排列,空间不足时自动换行;长名称省略显示,悬停可查看完整路径,发送前可移除。发送时将路径作为消息上下文交给 Core Agent,沿用当前工具权限;引用不改变工作区或权限设置,草稿、队列编辑、重试和历史消息保留标签,已发送标签显示在用户消息气泡的正文上方。
Studio 中的文件标签复用资源管理器当前启用的文件图标主题,使用同一套图标字体、文件名和扩展名映射,包括代码、Office 文档、媒体、压缩包与具名文件夹;切换图标主题或明暗主题后自动刷新。拖放、选择文件、草稿和历史消息显示一致,独立浏览器使用通用文件与文件夹图标。Studio 中点击标签可在编辑器或文档预览中打开文件;点击文件夹会打开系统文件管理器(macOS 为访达)。输入区和历史消息使用相同行为,名称仍可选择复制,删除按钮只移除引用。文件已移动或删除时显示打开失败原因。普通浏览器打开路径时会提示使用 Studio。
普通浏览器无法读取所选或拖入文件的原始绝对路径,因此将文件或文件夹复制到本地 CLI 的会话存储,并发送复制后的可读路径;文件夹保留层级。支持完整目录读取的浏览器会保留空目录,文件夹选择器的兼容模式只保留包含文件的目录。每次导入最多 1,000 个文件和文件夹、总计 50 MiB,每条消息最多 32 个路径引用。普通浏览器在项目支持图片附件且仅导入图片时沿用缩略图上传;Studio 选择或拖入图片时保留原路径。
运行 pnpm exec steamharness web . --no-open 可启动当前项目的本地 Web 界面。Workflow 展示入口和独立运行历史;Conversation 展示对话历史。对话回复下方的“轨迹”入口包含执行事件、工具调用和日志。嵌入 Studio 时,该入口定位到底部的轨迹面板;在普通浏览器中打开执行详情。Workflow 运行标题栏也提供轨迹入口。
重新打开 Conversation 项目时恢复上次选中的对话,各个已打开的窗口保留自己的选择。旧历史首次打开时按最近活动时间选择对话,之后保存新的选择;切换对话不会重新执行模型或工具。
宽屏下,当对话至少有三条用户消息且内容需要滚动时,左侧显示浅色消息索引和消息总数;悬停或键盘聚焦可预览对应的用户消息,点击可跳转。页面宽度不超过 680px 时隐藏索引和预览,不占用左侧空间;重新变宽后自动恢复。Studio 嵌入页面按自身宽度判断。页面缩放或分栏产生小数像素宽度时,也按同一断点保持显隐和留白一致。
对话和工作流历史列表使用图标展示状态,运行中显示旋转圆圈,悬停可查看具体状态。页面顶部标题区域右侧显示当前项目正在运行的对话或工作流数量;侧栏收起或在窄屏隐藏时仍可查看,没有运行时隐藏,不受搜索、分页或窄屏列表截取影响。Durable 常驻进程空闲时不计入运行数量。
标题栏右上角的“工具权限”按文件、执行命令、Agent、知识库、数据存储、Studio 等常见类型分区,其余工具按名称中的服务或自定义前缀归类,无前缀的工具放入“其他工具”。分区显示工具数量,默认折叠,当前页面保留展开状态。可搜索工具名称、显示名和说明,匹配的分区自动展开,清空搜索后恢复原折叠状态;每个工具仍可单独设置启用和自动批准。
展开分区后,每个工具的名称下方直接展示注册的用途说明,保留多行内容。Skills 中的 List and read skill guides(skill)用于列出和读取技能指南,调用参数与示例见 createSkillTools。
Agent 的网络重试记录显示在对应回答的中断位置,详情可原位展开,续写内容接在其后。宿主恢复、输出上限续写和工具调用补全静默进行,不显示 Retry 或临时中断红字,回答保持运行状态;相关记录保留在 Trace 和导出中。最终失败仍显示具体原因。运行结束和重新打开历史保留网络重试的位置,不会在完整回答末尾再追加 Retry。
Workflow 的必填参数校验等请求错误只提示当前操作。新建运行、切换入口或运行记录、再次运行时清除旧提示,之前请求的迟到错误不会重新显示;已保存运行的失败详情仍可从历史记录查看。
项目执行没有固定的总时长限制;Conversation、Workflow 和 Studio 小助手可以持续运行,直到完成、失败或手动停止。普通 Workflow 关闭 Studio 项目运行页会取消执行;启用 conversation.recovery: { enabled: true } 的 Conversation(包括小助手)关闭宿主后保留检查点,再次打开时保持运行状态并继续原运行。
恢复沿用原参数、消息与审批决定。worker 意外退出最多自动恢复 3 次,耗尽后使用现有重试按钮继续原运行;显式“停止”会持久取消未完成任务,重开不会自动恢复。恢复只重做明确标记安全的未知结果工具,写文件、编辑和命令不会自动重放。此恢复调度适用于 CLI Web / Studio,本地数据目录与工作目录均须保留。
运行时或输出投影异常会保留失败原因,并取消同一执行 owner 下未完成的任务、独立 fork 和排队输入;Studio Trace 使用持久记录中的最终状态。此类已报告的失败不会在关闭重开后自动执行,已完成的主回答也不会把运行报告中的失败覆盖为成功。正常关闭后重新打开仍会继续未结束的运行。
保存结束状态失败时仍释放运行资源;保存停止意图失败时仍停止并等待 worker、取消审批等待任务,同时报告保存错误。取消清理失败时保留取消标记,重新打开后优先补取消。
Conversation 网页与项目服务的连接中断时,提示与“重试”显示在对应回答中。临时故障会持续退避重连,最长间隔 30 秒;握手或首个完整状态超过 10 秒、事件流超过 45 秒没有状态或心跳,都会取消旧连接并重试。收到完整状态后才标记连接恢复。“重试”立即重新连接并读取最新状态,不会重新执行仍在后台运行的任务。断线期间仍可切换已加载的会话、新建会话和编辑草稿;恢复连接后同步草稿并保留当前选择。若提示项目连接已过期,需要使用当前项目的运行 URL 重新打开。已失败或停止的回答可使用回答下方的重试按钮重新执行。
点击发送后,正文立即显示消息、附件和发送状态,输入框随即清空并可继续编辑;忙碌时发送的内容立即显示在队列中。新会话保存、参数解析和任务启动在后台完成,确认结果不会清空新草稿。发送失败会保留原消息和错误,使用该消息的重试按钮按原请求身份重新确认或发送,避免重复执行。重新打开页面后,已确认的发送以后台记录为准;尚未确认的发送保留为可重试状态,不自动再次提交。
回答底部的 Trace、复制、重试、导出和分叉操作仅在该条回答结束后显示;发送中、运行中、等待确认或停止处理中隐藏。后续回答运行时,已结束的历史回答仍保留操作栏。
排队消息保存期间保留立即发送和撤回按钮的位置,加载图标持续旋转。点击立即发送或撤回后,该条消息马上显示对应状态并禁用重复操作,其他消息仍可独立操作。立即发送请求确认后结束加载,显示“已请求发送”,尚未消费时仍可撤回。刚提交的消息也可以点击撤回,确认保存后执行取消;切换对话不改变撤回目标。操作失败会在原消息旁显示错误和重试入口,连接恢复后可按原请求身份重试。
本地 Web 界面支持英文和简体中文;嵌入 Studio 时跟随 VS Code 当前显示语言。项目声明了多语言名称时按当前语言展示,语言键不区分大小写,用户输入、执行结果和日志保留原文。
使用服务器存储的本地看板、工作流和会话项目,在未登录、云端项目不存在或不可访问、权限不足或项目设置不完整时,会显示当前服务器地址、项目 ID 和对应操作步骤。仅在 Studio 中导入本地文件夹不会创建云端项目;需要用户上传同 UUID 项目、切换到已有项目的服务器,或申请访问权限。“账号 / 服务器”打开当前宿主的账号页;支持上传的 Studio 编辑器还提供“上传项目…”入口,只打开已有上传对话框,由用户确认后上传。完成操作后点击“重新检查”。这些错误暂停自动重连,临时网络故障仍自动重试,界面不会自动创建项目或回退到本地存储。工作流和会话项目会在运行、发送及恢复前检查项目是否可用;历史、草稿和停止操作继续保留,重新检查不会自动重新运行或发送消息。本地 Web 中声明 local 或 both 的项目继续使用本地执行路径,不会因为服务器没有同名项目而被阻止。若项目已存在但服务器接口或设置不兼容,请检查服务器版本和项目设置,无需重复创建项目。
conversation.collapseIntermediate 可显式设为 true 或 false,控制已结束回合是否默认收起中间过程。成功时保留最终回复、计划与资源卡片;失败时收起全部输出,只保留红色失败原因。每轮模型名称与当轮用量后面的按钮可独立展开或收起过程,不另占一行。自动收起由项目代码中的配置控制。运行中、停止、待输入或没有最终结果/失败原因时继续显示过程。Core Agent 标准输出默认开启;普通 Conversation 默认关闭。此设置只影响显示,完整历史、复制和导出内容仍保留。
Core Agent 通过标准输出项的 display: { type: "ring", placement: "composer-right" } 声明上下文用量。输入栏右侧通过圆环表示当前会话最近报告的占用比例,悬停或键盘聚焦时用浅灰提示框显示百分比与精确 token 数。等待确认、切换会话或重新打开历史记录时,沿用对应会话的输出;自定义 Conversation 也可使用同一展示协议固定数值输出,详见 输出 item 协议。
回答顶部的“本轮用量”累计该轮各次模型调用的消耗,悬停可查看调用次数、输入、输出及缓存明细;它与输入框圆环的当前上下文占用不同。例如一轮多次工具调用可以累计消耗 6 万 tokens,而最后一次请求的上下文只有 1 万。Durable 会话按每条回答、每个 fork 分别统计,后续 fork 的消耗不回写原回答;圆环跟随当前打开会话的最新快照,在后续输入、压缩和重置后更新。非零占用不足 1% 时明确显示“已用不足 1%”。
回答顶部同时展示当轮所选模型的名称。配置列表中的内部 ID 仍用于模型选择;发送预览、持久会话后续轮次及重新打开历史记录均保留各轮名称,之后重命名或切换配置不会改写已保存的名称。旧记录有当时的参数选项时,可从中恢复显示名称。
圆环的局部流式更新保留已有上限和单位;正文圆环更新时保留键盘焦点与打开的详情。多个圆环共存时,只显示当前查看的提示框。
Quick 参数入口显示图标和当前选择;空间不足时从右到左收起文字,恢复宽度后展开,悬停提示保留完整选择。小助手的 AI 和权限分别使用 sparkle、shield 图标,不重复显示 Permission 组名或上箭头;Context 参数菜单已移除,上下文窗口取模型自身配置。
Quick 组只有一个可见参数时,点击直接展示选项,单选后关闭菜单;多个可见参数仍先展示参数列表。小助手点击权限入口即可选择 Read only、Workspace 或 Auto approve,无需二级菜单。
Conversation 始终使用标准主输入框,支持粘贴文字;不支持关闭或自定义主输入字段。项目声明 conversation.attachments.images: true 后,还可粘贴图片,或在普通浏览器中拖入、选择纯图片,发送前显示缩略图;点击缩略图在页面内放大查看,发送后和重新打开历史对话时仍可查看图片。剪贴板同时含有文字和图片时,两者都会保留。嵌入 Studio 的页面支持系统粘贴快捷键和编辑菜单的粘贴命令。
等待用户回答问题或确认计划时,默认暂时隐藏底部输入区;当前回答底部的 Trace、复制、分叉、重试和导出操作栏也会隐藏,提交期间保持隐藏。答案被运行时确认或请求被停止后恢复,保留草稿、附件和参数。提交失败时继续展示问题,切换会话按各自的等待状态显示。项目可通过 conversation.userInput.hideComposer: false 保留输入区,并用 conversation.userInput.effects 声明答案触发的参数更新。小助手使用该通用接口,在选择“按计划执行”后关闭 /plan,移除底部 Plan 模式提示;“修改计划”继续保留 Plan 模式。
计划原文、每次修改后的计划、审批答案和执行结果按发生顺序保留在对话正文中。执行计划不会覆盖之前的计划;重新打开持久历史时,从已有快照恢复完整正文,无需再次调用模型或执行工具。
Conversation 可通过 kind: "slash" 声明参数命令,通过 conversation.commands 声明执行命令。单独输入 / 显示全部命令,继续输入筛选;菜单外层圆角、项目紧凑且无左侧对号,支持方向键、Enter/Tab、Escape 及鼠标选择。选择时移除命令并保留其他正文与附件:单选和 boolean 更新参数,执行命令运行项目声明的操作。conversation.footer 在输入框外下方展示纯文字。小助手默认 Build,单个 /plan 切换开关并控制“Plan 模式”提示;/export 导出当前会话全部记录且在正文显示结果;/compact 立即总结实际上下文,展示执行中、完成或失败状态并保存摘要。配置见 Slash 菜单与底部文字。
动态命令重名时,参数刷新或发送会报错并保留有效状态;省略的选项补丁不会丢失已有动态选项,替换或恢复列表会清理旧选项状态。导出数量包含本次命令及执行结果,与文件实际消息数一致。总结失败、截断或取消时保留原始上下文。
成功的 KV、知识库和项目工具调用直接展示为整行资源卡片;调用参数和原始结果可在卡片的详情中展开。点击名称打开对应资源,卡片还提供对话内预览、独立窗口和打开目标项目的入口。嵌入 Studio 时,KV 和知识库名称定位到底部资源面板,项目入口打开对应项目。
资源可以属于其他项目。本地资源需要先打开或导入目标项目,服务器资源使用当前账号的访问权限;没有权限或资源已删除时显示具体错误。卡片预览和跨项目资源面板为只读,即使目标项目已经在当前工作区打开;切换到该项目的编辑器或从其自己的卡片进入时,恢复正常资源操作。看板预览保留引用的配置 ID,并应用卡片中的临时参数,不覆盖保存的配置。
退出、切换账号或导入项目目录变更后,已打开的卡片预览清除旧内容,从原对话或运行记录中的卡片重新校验访问权限并尝试恢复,未完成的旧读取结果不会重新显示。点击预览右上角的刷新按钮可重新加载最新内容,预览 ID 失效后也可重试;刷新期间显示加载图标并禁用重复点击。目标项目已移除、卡片已删除或访问被拒绝时显示具体错误。重新验证同一账号不会使远程看板资源失效。Conversation、Workflow 和看板的资源卡片均使用项目声明的存储位置。
Studio 打开的项目与小助手统一使用 Studio 的账号。Studio 未登录或退出后,项目不会恢复独立 CLI 的登录缓存,也不会使用环境变量中的服务器凭据。项目内的账号入口打开 Studio 账号页,登录、退出和切换账号会同步到已打开的项目。独立运行 steamharness web 时继续使用 CLI 登录配置。
Studio 要求项目 CLI 的启动 JSON 声明 accountProtocolVersion: 1。提示协议不兼容时,更新项目的 @steamharness/cli 后重新打开。
Studio 将已导入的关联项目目录传给 CLI,并在导入后同步到已打开的项目,下次运行即可使用。关联项目仍须满足 UUID 匹配和双方 package.json 声明,并遵守目标项目的授权与存储位置;服务器数据使用 Studio 当前账号,本地数据使用目标项目自己的 Web 存储目录。存在已导入关系时,项目 CLI 还须声明 relatedProjectsProtocolVersion: 1;旧 CLI 需要更新,不能忽略关联绑定继续运行。
底部轨迹面板支持按项目、对话或运行选择记录,以时长、轮次或调用查看执行内容,并搜索和展开参数、输出、错误及日志。运行期间实时更新,历史轨迹沿用 CLI 保存的数据,查看历史不会切换编辑区当前的 Workflow 运行。
web --json 的启动 JSON 增加 traceProtocolVersion: 1,供嵌入宿主识别轨迹能力。未声明该能力的旧 CLI 仍使用原有的浏览器执行详情。
持久 Agent 与 Studio Trace
同一会话在其它窗口已打开或运行时,重复窗口显示只读提示,可查看输出或新建不同会话并行运行。关闭原窗口会释放页面占用;常驻 Agent 和后台任务仍由原执行进程持有,进程退出后可恢复。重连只恢复任务与控制通道,不重新发送历史输入;工作流启动失败时显示原始错误原因。
实时同步保留正文、工具结果、用量和 Trace 时间线,省略已合并到输出中的原始流式增量和重复报告。完整原始事件仍保存在本地,可通过 Trace 详情或导出读取;慢连接和繁忙的历史写入只保留最新等待快照。Studio 的输出日志会记录项目服务退出码、终止信号和脱敏后的诊断,便于区分连接中断与服务退出。
长会话保存复用未变化的历史,多个窗口各自保存可写会话并合并其它会话的更新。持久 Agent 的网页进度快照按秒合并保存,发送、确认和停止仍立即保存,Agent 自身的持久记录继续由运行时维护。Trace 合并连续更新;隐藏面板暂停发布,重新展开时展示最新内容,任务等其它页签不重复刷新隐藏的轨迹列表。
扩展任务的详情还显示定义版本、检查点和唤醒时间,Code Mode 显示脚本与嵌套任务树。选中工具可查看提交参数,活动工具和完成历史均保留,嵌套调用逐层查看。记录页展示扩展、工具目录连接/加载状态、Code Mode、存储和本地/远端执行目标;不会新增数据库配置表单。小助手的 Studio Control 在首次工具搜索时连接,禁用的工具不进入目录。小助手的项目配置不再提供 Code Mode 参数。Code Mode 默认关闭;需要此能力的项目宿主通过 SDK 的 session.codeMode 显式启用,脚本中的工具仍受原权限约束。
声明 conversation.durable: { enabled: true } 并启用 Agent session 的项目,将完整任务能力集中在 Studio 底部 Trace 面板。CLI Web 不再提供任务侧栏或任务图标,保留正文、输入、队列和分叉。Studio Trace 提供轨迹、任务、计划、记录、用量五个页签;原有时长、轮次、调用、搜索、跟随和工作流历史继续在轨迹页使用。面板尺寸通过 Studio 原生分隔线调整,颜色、Codicons、焦点和边框沿用 VS Code 风格。
Trace 顶部可选择项目和会话,默认跟随当前打开的对话。选择历史会话只切换 Trace 数据;点击对话行、任务详情的会话图标或分叉来源才在编辑器中打开该对话,并保留草稿。眼睛按钮恢复跟随。各项操作绑定 Trace 选择的会话与执行 owner,错误在 Trace 展示;断线时保留内容并禁用操作。账户、草稿和未提交参数不传入 Trace。
- 任务:活动任务树、阻塞原因、完成历史、工具 replay 策略、当前尝试次数和详情;可打开子会话,停止指定任务、当前前台或所属会话全部工作。
- 计划:展示当前对话的最新计划原文及待确认、提交中、待修改或已批准状态;修改计划后更新为新版本,执行及重新打开后仍保留对应计划。模型通过
update_plan保存的执行步骤单独展示,复选框提交带版本的更新;并发修改返回冲突,刷新状态后再操作。没有步骤记录时仍可查看计划原文,已批准不代表所有步骤已完成;审批操作保留在对话正文中。 - 记录:上下文世代、配置版本、模型/effort、提示摘要与命令记录。reset 可附 handoff,旧正文保留并显示世代分隔线。
- 用量:按主/子会话和模型/工具展示 token 与费用;已返回的 usage 可恢复,重放不重复累加,未知上游消耗仍需供应商对账。
任务视图上半区展示对话列表与活动任务,下半区展示已结束任务,各占一半高度并独立滚动;刷新和页签切换保留各自的滚动位置、展开项和焦点。背景标识 Trace 选择的会话,左侧标记和眼睛图标标识编辑器实际打开的对话。已结束任务是模型请求、工具及后台任务的执行历史,包含成功、失败、停止和不可用结果;历史列表展示全部已加载记录。点击任务在该行下展开状态、提交参数、结果或错误等已有详情,再次点击收起;详情中的会话图标可打开所属对话查看正文,也可复制任务记录。
Trace 右上角更多菜单以文字列出压缩上下文、重置上下文及停止操作,重置可填写多行交接内容。只有所选会话的回答仍在执行时才显示“停止当前回答”;“停止全部任务”只在所选会话及其所属子任务有活动工作或排队输入时显示,不包括独立分叉。任务行的停止图标只停止该任务。计划步骤更新使用版本检查,等待回执期间禁用重复操作。
输入框不显示轮次切换:忙碌时再次发送默认进入下一轮持久队列,空闲时直接开始当前轮。未消费输入显示“立即发送”和撤回图标;立即发送保留原输入及附件,并在下一工具边界补充本轮,已消费输入不会重发或被撤回。点击消息的分叉图标先显示确认弹窗,确认后才从已提交回答位置创建并打开独立会话,取消不改变当前会话。分叉保留来源链接;同一 SQLite 内的 fork 有独立 provider 身份、队列和计划继承策略,不复制在途任务或审批。
前台完成、后台任务数量和连接状态分别展示。“停止中”只用于收到取消请求但尚未结束的活动任务;进入完成历史后按真实结果显示已完成、已停止、失败或不可用,不继续显示停止动画。多页面各自保存当前会话选择,重连以最新完整快照恢复,慢连接只保留最新待发快照。模型、effort、工作目录和权限仍从现有参数入口修改:活动任务期间拒绝切换,空闲后下一次发送重建工具与 AI bridge;子视图的工作流参数在主会话修改。Plan 审批期间不能继续提交 Durable 输入。
前台空闲后可以继续使用 /export 与 /compact,无需关闭常驻 worker。重开宿主会恢复已保存的排队输入;恢复命令会等待工具初始化和会话控制就绪,临时中断保留原请求身份。分叉创建后即使确认丢失,也可以从 Studio Trace 的任务页打开分叉并恢复分叉点之前的历史与来源链接。命令确认按 owner、目标会话与 requestId 隔离,Trace 保留运行事件,会话状态仅保存最新完整快照。
宿主控制连接意外断开时,持久 Agent 保留未完成输入和检查点,重连继续原任务;已完成工具不会因重连重复执行。模型连接异常自动重试,并保留原因和次数。重试耗尽、鉴权或配置错误按失败展示具体原因;主动停止显示已停止,不自动恢复。
停止前台保留后台子树;全部停止覆盖 owned 子会话但不跨独立 fork。关闭宿主保留可恢复任务,显式停止会持久取消。删除子会话先取消并隐藏该会话,其底层历史保留到根会话删除;删除根会话清理关联视图和 Agent 数据。受限子 Agent 由项目显式启用,小助手默认最多 4 个,只允许 read/grep/find/ls,不递归委派。本地 CLI / Studio 宿主负责常驻调度;该声明不提供多机租约。
本地运行环境
| 环境变量 | 说明 |
|---|---|
STEAMHARNESS_KV_STORE_DIR | 本地 KV store 目录。 |
STEAMHARNESS_PERSISTENT_VALUE_STORE_DIR | 本地 PersistentValue store 目录,项目知识库也保存在这里。 |
STEAMHARNESS_FILE_STORE_DIR | 本地文件 store 目录。 |
STEAMHARNESS_DESKTOP_RUNTIME_EVENTS=1 | json 模式下额外输出宿主可消费的 runtime event 前缀行。 |
STEAMHARNESS_KV_STORE_DIR 与 STEAMHARNESS_PERSISTENT_VALUE_STORE_DIR 互不复用:前者控制 context.storage.local.kv,后者控制 context.storage.local.persistentValue 和本地知识库。两者都按顶层 package.json.id 的 UUID 隔离当前项目。context.storage.server 始终使用同一项目 UUID 与已登录服务器连接,不受这两个本地目录影响。项目必须声明 dataStorage.mode;禁止或不可用的位置直接报错,本地数据不会自动同步到服务器。--related-project 只解析明确传入的目录,不扫描父目录或兄弟目录,也不会让关联访问递归穿过第二层关系:被调起来的项目自己不带关联解析器。服务器位置只选择数据后端,关联入口始终在本地执行。
这两个目录是本地运行共有的资源,不要在不同项目或不同 Core / CLI 版本之间共用同一个目录。条目布局随版本演进:早期版本写 global / workflow / conversation 作用域和 projectName 字段,当前版本只保留 project / conversation 并写 projectId,另有 .workflow-storage-format.json 标记。旧版本在同一个目录里读到不认识的条目会以 Local workflow KV entry is invalid and cannot be read safely. 失败,当前版本遇到没有标记的目录则按当前格式重建并删除原有数据目录。排查这类错误时先确认进程实际拿到的 STEAMHARNESS_*_STORE_DIR,不要删除正在使用的目录。
退出码
| 情况 | 退出码 |
|---|---|
运行成功,且 payload errCode 为 0 | 0 |
| 运行失败 | 1 |
payload errCode 非 0 | 1 |
| structure 分析失败 | 1 |
输出
| 命令 | stdout/stderr |
|---|---|
run | 成功时将 output node 内容写到 stdout;失败时 JSON 报告写到 stderr。 |
json | 完整执行报告写到 stdout。 |
structure | workflow 结构 JSON 写到 stdout。 |
resolve-params | 参数状态补丁 JSON 写到 stdout。 |
mcp | stdout 只输出 stdio JSON-RPC;项目日志与 worker 诊断写到 stderr。 |
参数分隔
如果 workflow 参数本身以 -- 开头,建议显式写分隔符:
steamharness run . -- --message "hello"
分隔符之后的参数会进入所选 entrypoint(Conversation 则为 executor)的 args 数组,即使参数名与 CLI 自身选项相同也不会再被 steamharness 消费。例如 steamharness run . --entrypoint validate -- --entrypoint workflow-owned 会选择 validate,并把第二个 --entrypoint workflow-owned 原样交给业务 workflow。
项目接入 Core Agent 时,配置详情第一项提供系统 AI/第三方 AI 切换与统一模型列表。输入框只选择已保存模型,默认第一项;模型编辑、连接信息和订阅加载均移入配置面板,详见Agent 模型列表。
AI 模型字段声明 allowThirdParty: false 时,配置面板只提供系统 AI,保存、导入及运行同时拒绝第三方模型和直接端点覆盖;省略时允许两种来源。