Files
pikasTech-HWLAB/docs/reference/spec-v02-hwlab-cli.md
T

25 KiB
Raw Blame History

v0.2 hwlab-cli 短连接 Client 规格

hwlab-cli 是 v0.2 固定开发目录里的短连接业务 client。它用于让 Codex 和人工在 G14:/root/hwlab-v02 直接调用与 Cloud Web 相同的 HTTP API,完成除视觉展示以外的真实业务交互和 E2E 排障。

hwlab-cli 不属于常驻服务,不发布镜像,不创建 Kubernetes Service、Deployment、CronJob 或 suspended Job template,不进入 GitOps desired state,不作为 CI/CD artifact 构建对象。CLI 源码变更仍属于 origin/v0.2 source branch:开发时在 G14:/root/hwlab-v02 的独立 worktree 修改并提交,按变更风险运行最小单元测试和 git diff --check;推送后 v0.2 CI/CD 只应把它识别为 source-only/CLI-only 变化,复用所有 runtime artifact,不新增 hwlab-cli image、TaskRun、Deployment 或 Job。

标准调用入口是直接使用 Bun 运行 TypeScript 入口:bun tools/hwlab-cli/bin/hwlab-cli.ts client ...。不要把 node scripts/run-bun.mjs ... 作为 v0.2 手动验收入口;该 wrapper 只保留历史兼容价值,曾经在远端交互中输出 wrapper usage 并遮蔽真实 CLI 行为。长期文档、issue 复现步骤和手动验收命令都应使用直接 Bun 入口。

正式复现和验收必须通过运行时装配解析 endpoint,而不是在命令里手动传 URL。标准环境是 HWLAB_RUNTIME_NAMESPACE=hwlab-v02HWLAB_RUNTIME_LANE=v02HWLAB_RUNTIME_ENDPOINT_LOCKED=1HWLAB_CODE_AGENT_ASSEMBLED_RUNTIME=1CLI 输出必须包含 runtimeEndpoint.source=runtime-namespaceruntimeEndpoint.explicitOverride=false 和解析出的 baseUrl--base-url--api-base-urlHWLAB_CLIENT_BASE_URL 或等价显式 URL 只允许在本地 debug 且未设置 endpoint locked 时使用;issue 复现、最终验收、Web 等价 CLI、AgentRun runner、device-pod-cli 和 hwpod 都不得靠人工判断 17666/19666/19667。

在系统中的职责划分

  • 提供 WEB 等价的非视觉业务入口:登录鉴权、session 恢复、Device Pod 看板、Code Agent 对话、trace/result 轮询、logout 和工作台 live summary。
  • 只走 Cloud Web 同源 API surface;正式运行时由 HWLAB_RUNTIME_* 装配出当前 lane 的 Web/API endpoint,失败时必须 fail closed,不能静默退回 legacy DEV 入口。
  • Web/CLI 路径一致性优先于继续 Web 修复。Cloud Web 暴露 Code Agent、AgentRun、continuation、steer、trace/result 或 provider 问题后,必须先能用 runtime namespace/lane 装配出的 bun tools/hwlab-cli/bin/hwlab-cli.ts client agent send/result/trace/inspect/steer ... 对同一 Cloud Web origin、同一 /v1/agent/chat*、同一 conversationId/sessionId/threadId/retryOf 复现或解释,再继续修 Web 状态机。Cloud API 只用于显式 admin/setup/gateway 诊断,不得替代 WEB 同源路径验收。
  • 从 Web trace 回放 Code Agent 问题时,优先用 client agent send --from-trace <traceId> 读取 Cloud Web 的 /v1/agent/chat/inspect,自动带回原 conversationId/sessionId/threadId 并把 retryOf 指向来源 trace;只有 inspect 缺失时才手动传 --conversation-id--session-id--thread-id--retry-of。CLI 输出必须包含 replay 来源、inspect 状态和 redacted continuation 摘要。
  • 默认业务子命令不直连 Postgres、Kubernetes Service、Secret、device-pod 内部 Service、gateway RPC 或本地 fixture;需要鉴权的请求使用 /auth/* 返回的 cookie 或显式 --cookie。唯一例外是 client gateway 诊断族:它使用同一 runtime endpoint resolver 定位 Cloud API,用于短连接观测 gateway session、单次 shell invoke 和 transport 压测;该入口只验证底层传输稳定性,不替代 Web 用户流程授权,也不发布镜像或常驻服务。显式 API URL 只作为 unlocked local debug 入口。
  • Pod 内透传执行不放进 hwlab-cli;需要进入正在工作的 Code Agent/Cloud API pod 时,hwlab-cli 只查询并输出 UniDesk 标准 route,实际透传由 UniDesk bun scripts/cli.ts ssh 'G14:k3s:hwlab-v02:pod:<pod>:<container>' ... 完成。pod: 是 route 语法,/ 只用于 pod 内文件系统路径。
  • client runtime routes 必须按当前运行 profile/lane 的数据生成 UniDesk pod: route;实现不得硬编码 devv0.2v0.3、namespace 或 catalog path。新增版本只允许通过 deploy.json.lanes[profile] 声明 namespace、artifact catalog 和 service overrides,不为每个版本新增代码分支。
  • 运行时不做内部证明型校验、旧健康诊断或重断言;CI/CD 只保留能证明代码可构建、语法正确和最小冒烟可用的校验。功能正确性通过 hwlab-cli client 短连接真实业务 E2E 暴露和修复。
  • 专用子命令覆盖高频用户工作台;client request METHOD /path 覆盖 WEB 同源代理允许的其他非视觉 API。client request 只接受以 / 开头的 Cloud Web 相对路径,禁止绝对 URL,避免绕过 Cloud Web 直接打内部服务。
  • client gateway pressure 是 device-pod/gateway 高频故障的真实业务传输压测入口;必须覆盖 small stdout、大 stdout、长单行 stdout、stderr flood、结构化 timeout 和超出 gateway inflight 上限的并发请求。所有场景必须返回 JSON、HTTP/route/traceId/requestId、字节数、truncated 标记、sha256 和 bounded preview;失败必须明确是 http_*stdout_not_truncatedstderr_not_truncatedtimeout_not_observedstructured_gateway_busy 等可定位原因,禁止无输出、长时间黑洞或只靠 shell pipe 截断。
  • 输出默认是 JSON;任何失败都要有 ok:falseactionstatus、HTTP 状态、route 和可定位错误,不允许无 stdout 成功。可能返回大对象的 client 子命令默认返回紧凑摘要,避免高频排障输出爆炸;需要完整响应体时显式加 --full
  • device-pod-cli/hwpodjob output 默认也必须返回紧凑 JSON:保留 job/status/blocker/freshness/text/evidence 摘要,省略嵌套 gateway dispatch 和长命令;需要完整 payload 时显式加 --full。Code Agent 和人工不得用 | headgrep 或 shell 管道作为默认输出压缩方式,避免 stdout pipe、子进程信号转发或长输出造成 commandExecution 黑洞。
  • Code Agent 交互必须默认暴露 traceIdresultUrl、终态和 assistant 回复文本摘要;不能要求用户先拉全量 trace 再手工查找回复。
  • CLI 本地登录态必须支持 --profile NAME 隔离,同一 base URL 下不同 profile 写入 .state/hwlab-cli/profiles/<base-url-hash>/<profile>.json。切换到其他账号再切回原账号时,client workbench restore/status 必须从服务端账号 workspace 恢复之前的 workspaceIdconversationIdsessionIdthreadIdactiveTraceId 和 revision,而不是只依赖本地文件。
  • client workbench restore/status/watch/reset 是账号 workspace 的非视觉入口:restore/status 对应 GET /v1/workbench/workspacewatch 对应 /events?afterRevision=reset --confirm 对应服务端 reset。输出必须显示 workspace revision、selected conversation/session、active trace 和本地 state file,且不得保存 password、session token 原文以外的 Secret 值。
  • client agent send 是 Cloud Web Code Agent composer 的非视觉等价入口。它必须支持 --from-trace--conversation-id--session-id--thread-id--retry-of,并在输出中返回 redacted continuation 摘要,证明本次 CLI 请求是否覆盖 Web 的继续会话路径。浏览器 issue 中已经给出 traceId 时,复现命令优先使用 --from-trace <traceId>,让 CLI 先走 /v1/agent/chat/inspect 读取 Web 上下文,再提交同源 /v1/agent/chat
  • client agent composer status|submit 是 Cloud Web composer 的状态机等价入口。status 必须先恢复账号 workspace,再用与 Web 相同的 composer policy 输出 lockeddisabledsubmitModeroutetargetTraceId、conversation/session/thread 和 workspace revision;运行中 turn 必须显示 locked=falsedisabled=falsesubmitMode=steersubmit 必须按该 policy 自动选择 /v1/agent/chat/v1/agent/chat/steer,不得要求用户手动判断 URL 或绕过 Cloud Web 同源 path。
  • Code Agent continuation 的 thread 字段只有 threadId 一个标准名称。CLI 读取 inspect、--from-trace 回放、手动 --thread-id 提交和输出摘要都必须以该字段为唯一 thread identity;服务端响应也应保持同一字段口径。
  • client agent send 默认先恢复账号 workspace,再向 /v1/agent/chat 发送 workspaceIdexpectedWorkspaceRevision;服务端接受后 CLI 保存新的 workspace revision,终态轮询后再 PATCH workspace 清理终态 activeTraceId。只有显式 --no-workspace 才跳过这一默认恢复路径。
  • client agent steer <traceId> 是运行中引导入口,必须调用 Cloud Web 同源 POST /v1/agent/chat/steer,把 steer 文本装配成 AgentRun type=steer command 作用到目标 trace 的 active turn。CLI 不手动穿内部 URL;验收使用当前 runtime namespace/lane 自动解析的 19666 Web 入口,并通过原 trace 的 result/trace 观察 steer 是否被 runner 接收和应用。
  • client agent trace <traceId> --render web 必须调用 Cloud Web trace row 的同一纯转换路径,输出 render="web"、renderer 标识、source event count、rendered row count、默认压制的 noise event count 和 row 摘要。浏览器 trace 展示错乱时,必须先用该 CLI 入口确认 Web 渲染转换是否已经乱序、重复、缺 final response、吞掉关键 row 或只显示泛化 tool call,再继续修浏览器 DOM/CSS。
  • AgentRun v0.1 短连接 runner 已要求支持同 run/runner 多轮 command。CLI 仍应把 Web 提交的 conversationId/sessionId/threadId 原样送到 Cloud Web API,用于验证 adapter 是否在 runner lease 有效时复用同一个 AgentRun runId / jobName 并创建新 commandId;每轮都新建 runner 或重新 bundle 不是通过状态,trace 中的原因说明只能用于定位。
  • client harnessclient harness-opsclient harness-opt 吸收 G14 harness-ops 的短连接业务能力:health、submit、result、trace、wait 和 audit。
  • harness 系列命令只调用 Cloud Web/Code Agent 同源 API,不创建镜像、Job、常驻服务,也不执行 hot-sync、kubectl cp 或硬编码 namespace/pod 的运行面写路径。
  • hwlab-cli cicd、fixture MVP gate 和 CLI 镜像/Job 口径属于废弃路径;开发中遇到这些旧门禁、旧测试或旧预检时直接删除,不再维护兼容。

内部架构

  • tools/hwlab-cli/bin/hwlab-cli.ts 是唯一可执行入口,使用 Bun 运行。
  • tools/src/hwlab-cli-lib.ts 承载参数解析、cookie jar、HTTP 请求、轮询和 JSON 输出。
  • tools/hwlab-cli/bin/hwlab-cli.mjs 只允许作为兼容 shim 调用 Bun TS 入口;新功能不得继续写入 .mjs 旧库。
  • CLI session cookie 默认写入 .state/hwlab-cli/session.json;状态只保存 base URL、cookie、actor 摘要和过期时间,不保存 password 或 Secret 原文。
  • 所有 client 子命令都是短连接;长耗时 Code Agent 只提交 async request 并短轮询 result/trace,单次命令必须有 timeout 和中间状态输出。

API 接口说明

CLI 接口 WEB 等价 API 说明
hwlab-cli client auth login POST /auth/login 使用账号密码登录 Cloud Web,同步保存 cookie。
hwlab-cli client auth session GET /auth/session 恢复当前 actor/session。
hwlab-cli client auth profiles 本地状态读取 列出同一 base URL 下的本地 profile state,用于账号切换可见性。
hwlab-cli client auth logout POST /auth/logout 撤销 server session 并清理本地 cookie。
hwlab-cli client device-pods list GET /v1/device-pods 对应右侧 Device Pod 列表。
hwlab-cli client device-pods status POD GET /v1/device-pods/{pod}/status 对应 Device Pod summary/status。
hwlab-cli client device-pods events POD GET /v1/device-pods/{pod}/events 对应纯文本事件流。
hwlab-cli client device-pods probe POD /debug-probe/chip-id/io-probe/uart/1/tail 对应 Target/Debug/IO 摘要。
hwlab-cli client runtime routes GET /v1/live-builds 查询当前工作面 pod,并输出 UniDesk 标准 pod: route;不执行透传、不调用 kubectl、不内嵌 UniDesk。
hwlab-cli client gateway sessions GET Cloud API /v1/gateway/sessions 显式 Cloud API 诊断入口,观察 gateway online/stale、inflight 和 capability;默认不带 Web cookie。
hwlab-cli client gateway invoke POST Cloud API /v1/rpc/hardware.invoke.shell 显式 Cloud API 诊断入口,执行一次 bounded shell dispatch 并返回结构化 dispatch 摘要。
hwlab-cli client gateway pressure POST Cloud API /v1/rpc/hardware.invoke.shell 显式 Cloud API 压测入口,真实验证大输出、长单行、stderr、timeout 和并发超容量不会造成黑洞。
hwlab-cli client agent send GET /v1/agent/chat/inspect + POST /v1/agent/chat + GET /result/{trace} 以 short connection 提交 Code Agent 消息并轮询结果,默认输出 assistant 回复文本摘要;支持 --from-trace 自动复现 Web continuation,也支持手动 --conversation-id--session-id--thread-id--retry-of
`hwlab-cli client agent composer status submit` GET /v1/workbench/workspace + POST /v1/agent/chatPOST /v1/agent/chat/steer
hwlab-cli client agent trace TRACE [--render web] GET /v1/agent/chat/trace/{trace} 回放 trace,默认输出状态、事件摘要和 assistant stream 文本;--render web 复用 Cloud Web trace row 转换,便于 CLI 复现 Web trace 渲染问题。
hwlab-cli client agent steer TRACE POST /v1/agent/chat/steer 对目标 trace 的运行中 Code Agent turn 发送 steer 文本;默认短连接返回 accepted 和 steer command 摘要,后续观察原 trace 的 result/trace。
hwlab-cli client agent cancel TRACE POST /v1/agent/chat/cancel 取消当前 Code Agent 请求。
hwlab-cli client harness submit POST /v1/agent/chat G14 harness-ops 的短连接提交入口,默认 provider profile 为 deepseek,返回 trace/result URLharness-opsharness-opt 是同义别名。
hwlab-cli client harness wait/result/trace GET /v1/agent/chat/result/{trace}GET /trace/{trace} 轮询或读取一次 Code Agent 结果和 trace;单次 wait 最长 60 秒。
hwlab-cli client harness audit GET /v1/agent/chat/trace/{trace} 或本地 trace file 只输出工具摩擦信号,辅助发现应补的主 CLI/device-pod 操作;不是运行时 gate。
hwlab-cli client workbench summary /health/live/v1/v1/live-builds/v1/device-pods* 汇总 Cloud Workbench 非视觉功能面。
hwlab-cli client workbench restore/status/watch/reset GET/PATCH /v1/workbench/workspace* 恢复、观察或重置账号级共享 workspace,支持 Web/CLI 和多 profile 共享同一账号状态。
hwlab-cli client rpc METHOD [--full] POST /json-rpc 像 Web callRpc 一样自动生成 idtraceIdmeta,覆盖 system.healthcloud.adapter.describe 等 JSON-RPC 非视觉能力。
hwlab-cli client request METHOD /path [--full] Cloud Web 同源相对路径 覆盖 /v1/access/status/v1/setup/status/v1/diagnostics/gate/v1/m3/status/v1/m3/io 等低频或新增 WEB API/json-rpc 优先使用 client rpc

client 之外的历史命令不作为 v0.2 验收入口。保留旧命令时只能返回废弃说明或转向 client,不得把 fixture 或 dry-run 结果当作 WEB 功能通过证据。

测试规格

T1

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 或当前 v0.2 worktree 用 cli 手动测试以下内容:先设置 HWLAB_RUNTIME_NAMESPACE=hwlab-v02 HWLAB_RUNTIME_LANE=v02 HWLAB_RUNTIME_ENDPOINT_LOCKED=1 HWLAB_CODE_AGENT_ASSEMBLED_RUNTIME=1,再运行 bun tools/hwlab-cli/bin/hwlab-cli.ts client auth login --username admin --password-env HWLAB_PASSWORD,确认返回 JSON、HTTP 200、保存 cookie,输出不包含 password 或 Secret 原文,且 runtimeEndpoint.source=runtime-namespaceruntimeEndpoint.explicitOverride=false

T2

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:在 runtime endpoint locked 环境下运行 client auth sessionclient device-pods listclient device-pods status device-pod-71-freqclient workbench summary --pod-id device-pod-71-freq,确认全部由 runtime namespace 解析到 Cloud Web 同源 API,未登录时返回认证 blocker,登录后返回真实 Device Pod payload,不读取本地 fixture,也不需要手动传 URL。

T3

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:运行 client agent send --message "你好" --provider-profile deepseek --timeout-ms 120000,确认响应包含 accepted/result/trace 信息和 assistant 回复文本;若后端失败,输出必须包含 traceId、resultUrl 或 runnerTrace 摘要,不能无输出或只给旧 gate blocker。

T3.1

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:对一个来自 Cloud Web 的失败 trace 运行 client agent send --from-trace <traceId> --message "重试上一条" --provider-profile deepseek --no-wait,确认 CLI 先访问 /v1/agent/chat/inspect?traceId=<traceId>,再提交 /v1/agent/chat,输出包含 replay.sourcecontinuation.replayedFromTraceconversationId/sessionId/threadId/retryOf,且不输出 cookie、token 或 secret 原文。

T5.1

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:复测取消后追问场景时,client agent send/result/trace --render web 输出只允许出现标准 threadId,不允许出现历史 thread 别名字段;第二轮必须是新 commandId 且 trace row 不包含上一 command 的尾部 assistant/tool/terminal 文本。

T3A

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:在 runtime endpoint locked 环境下分别用 --profile admin-a--profile admin-a-second 登录同一个账号,运行 client workbench restore/status,确认两个 profile 看到相同 workspaceId 和 revision;再用 --profile other-user 登录另一个账号,确认 workspace 不同;最后切回 admin-a,确认原 workspace、conversation/session/thread 仍能恢复。该验收必须使用真实 runtime namespace/lane 自动解析入口,不能 mock,不能手动传 URL。

T3.2

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:对一个来自 Cloud Web 的真实 trace 运行 client agent trace <traceId> --render web --limit 80,确认输出 renderer=web/hwlab-cloud-web/app-trace:traceDisplayRows、source event count、rendered row count 和 row 摘要;如果 Web trace 展示错乱,应先用该命令复现并定位到 Web row 转换还是浏览器 DOM/CSS 层。

T3.3

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:在 runtime endpoint locked 环境下先运行 client agent send --message "执行一个会持续运行的任务,等待后续 steer" --provider-profile deepseek 获得运行中 trace,再运行 client agent steer <traceId> --message "请把最终回复包含 STEER_ACCEPTED 标记",最后用 client agent result <traceId>client agent trace <traceId> --render web 确认同一 target trace 出现 AgentRun steer command 事件且最终回复或 trace 可见 steer 处理结果。该验收必须使用 runtime namespace/lane 自动解析出的同源 Web 入口,不能 mock,也不能用自动交互脚本,不能手动传 URL。

T3.4

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:先启动真实运行中的 Code Agent turn,再运行 client agent composer status,确认 composer.locked=falsecomposer.disabled=falsecomposer.submitMode=steercomposer.route=/v1/agent/chat/steercomposer.targetTraceId=<运行中 trace>;随后运行 client agent composer submit --message "请在最终回复或 trace 中体现 COMPOSER_STEER_OK",确认请求自动走 Cloud Web 同源 /v1/agent/chat/steer,最后用原 trace 的 client agent resultclient agent trace --render web 验证 steer 可见。该验收必须使用 runtime namespace/lane 自动解析入口,不能手动传 URL、不能 mock、不能用自动交互脚本。

T4

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:运行 client request GET /v1/access/statusclient request GET /v1/diagnostics/gateclient rpc system.health,确认它们全部走 19666 Cloud Web 同源 API,返回 JSON route/httpStatus/body,且 client request 传入绝对 URL 会被拒绝。

T5

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:运行 client harness healthclient harness submit --message "你好" --provider-profile deepseek --timeout-ms 120000client harness wait <traceId>client harness audit <traceId>。确认它们全部是短连接 JSON 输出,不创建镜像、Job、CronJob、Deployment 或 hot-sync 写路径。

T6

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 用 cli 手动测试以下内容:在 runtime endpoint locked 环境下运行 hwpod job output --pod-id D601-F103-V2 <jobId>,确认 device-pod-cli 自动定位当前 lane 的 Cloud API,默认输出包含 body.compacted=true、状态、job 摘要和 bounded text,且不包含嵌套 dispatch.command;再加 --full 确认完整 payload 可按需展开。通过 client harness submit 让 Code Agent 执行同一 hwpod job output,确认 trace 中 commandExecution 可以完成,不需要 | head,也不需要手动传 URL。

T7

阅读 docs/reference/spec-v02-hwlab-cli.md,然后在 G14:/root/hwlab-v02 或当前 v0.2 worktree 用 cli 手动测试以下内容:在 runtime endpoint locked 环境下运行 bun tools/hwlab-cli/bin/hwlab-cli.ts client gateway pressure --gateway-session-id gws_D601_F103 --large-bytes 131072 --parallel 8 --request-timeout-ms 60000 --timeout-scenario-ms 1000 --no-auth --full。确认 gateway CLI 自动定位当前 lane 的 Cloud APIsmall stdout、大 stdout、长单行 stdout、stderr flood、timeout 和并发超容量全部返回结构化 JSON;大输出应显示 stdoutBytesstderrBytesstdoutTruncatedstderrTruncated、sha256 和 preview,超出 maxInflightRequests 的请求必须显示 structured_gateway_busy,不能出现无输出或卡死。

规格的实现情况

规格项 状态 说明
固定 repo 短连接 client 目标状态 hwlab-cliG14:/root/hwlab-v02 或当前 v0.2 worktree 直接用 Bun 运行,不作为 runtime service。
WEB 等价 API client 目标状态 client 子命令覆盖 Cloud Web 非视觉业务面。
WEB composer 状态机等价 已实现 `client agent composer status
JSON-RPC 同源 API 目标状态 client rpc 自动补齐 Web JSON-RPC envelope 的 meta 字段。
通用同源 API request 目标状态 client request 用于追平低频和新增 WEB API,禁止绝对 URL。
G14 harness-ops 短连接能力 目标状态 client harness / client harness-ops / client harness-opt 覆盖 submit/result/trace/wait/audit,只作为业务 API client。
Gateway transport 压测 已实现 client gateway pressure 只作为显式短连接诊断入口,覆盖大输出、timeout 和并发超容量的结构化返回。
Device Pod job output 紧凑输出 已实现 hwpod job output 默认省略嵌套 dispatch--full 才展开完整 payload,防止 Code Agent 通过 shell pipe 压输出。
本地 cookie session 目标状态 .state/hwlab-cli/session.json 只保存 cookie/session 摘要。
账号 profile 与共享 workspace 已实现 --profile 隔离本地登录态,client workbench 通过服务端 account_workspaces 恢复同账号共享 workspace。
镜像/Service/Job template 已废弃 相关 deploy、GitOps、artifact 和 Tekton 口径必须删除。
PR/CI/CD/worktree 流程 已废弃 CLI 变更不走常驻服务发布流程。