3.7 KiB
3.7 KiB
AgentRun Code Agent Dispatch
本文定义 HWLAB Code Agent 通过 AgentRun v0.1 手动调度 API 执行时的装配边界。它只描述稳定的 payload、SecretRef 和 credential 归属,不替代当前 G14 DEV /v1/agent/chat 的真实 completed 判定。
装配入口
- 源码入口是
internal/agent/agentrun-dispatch.mjs。 createHwlabAgentRunDispatchAssembly()生成 AgentRunPOST /api/v1/runs、POST /api/v1/runs/:runId/commands和POST /api/v1/runs/:runId/runner-jobs三段 payload。dispatchHwlabAgentRun()使用同一 assembly 顺序调用 AgentRun manager;调用方可以注入fetchImpl做合同测试或接入真实 manager。- 默认 manager URL 是
http://agentrun-mgr.agentrun-v01.svc.cluster.local:8080,默认 namespace 是agentrun-v01,默认 providerId 是G14,默认 workspace branch 是v0.2。
Credential 边界
- Provider credential 只通过
executionPolicy.secretScope.providerCredentials[]的 AgentRun provider SecretRef 引用,默认随backendProfile选择agentrun-v01-provider-deepseek、agentrun-v01-provider-codex或agentrun-v01-provider-minimax-m3。 - GitHub PR/issue 能力通过
toolCredentials[].tool=github注入,默认 SecretRef 是agentrun-v01-tool-github-prkeyGH_TOKEN。 - UniDesk SSH passthrough 通过
toolCredentials[].tool=unidesk-ssh注入,默认 SecretRef 是agentrun-v01-tool-unidesk-sshkeyUNIDESK_SSH_CLIENT_TOKEN。 UNIDESK_SSH_CLIENT_TOKEN只授予 UniDesk frontend/ws/sshscoped client 能力;route allowlist 由 UniDesk frontend 配置控制。HWLAB 不持有 provider token、主 server SSH key 或完整 frontend 登录态。runnerJob.transientEnv只能承接本次 runner job 需要的短期执行上下文,例如HWLAB_DEVICE_POD_API_KEY和UNIDESK_MAIN_SERVER_IP;HWLAB_DEVICE_POD_API_KEY必须标记 sensitive,不得承载 GitHub token、UniDesk SSH client token、provider key、长期 SSH key 或 registry token。- HWLAB v0.2 device-pod 能力在 runner 内只通过
hwpod -> HWLAB_RUNTIME_API_URL -> hwlab-cloud-api进入。HWLAB_RUNTIME_API_URL指向当前 namespace 的hwlab-cloud-apiService;HWLAB_RUNTIME_WEB_URL仅供需要浏览器同源语义的工具查看 Cloud Web。AgentRun 不把HWLAB_DEVICE_POD_API_KEY发往 Cloud Web,也不以 Cloud Web 代理替代设备 API。
ResourceBundle
- AgentRun run 必须使用 Git-only
resourceBundleRef,默认 repo 是http://git-mirror-http.devops-infra.svc.cluster.local/pikasTech/HWLAB.git。 commitId必须是完整 40 字符小写 SHA,不接受 branch、tag、HEAD或短 SHA。workspaceRef只描述目标 repo/branch,默认 branch 是v0.2;实际 checkout 身份以resourceBundleRef.repoUrl + commitId为准。- 默认
toolAliases会把tools/unidesk-ssh.mjs暴露为 runner shell 内的unidesk-ssh命令;它只实现 AgentRun Code Agent 所需的短连接 UniDesk SSH passthrough,例如unidesk-ssh G14:/root/hwlab-v02 script -- 'pwd',完整文件传输和 patch 仍走 UniDesk CLI 原入口。 - AgentRun runtime image 已预装
gh,结合tool=github注入的GH_TOKEN即可访问 HWLAB/UniDesk PR 与 issue;不得把 GitHub token 放入 prompt 或transientEnv。
验收
- 源码合同测试:
node --test internal/agent/agentrun-dispatch.test.mjs。 - 语法检查:
node --check internal/agent/agentrun-dispatch.mjs && node --check internal/agent/agentrun-dispatch.test.mjs。 - 合同必须证明
UNIDESK_SSH_CLIENT_TOKEN不出现在transientEnv,GitHub/UniDesk SSH 能力都通过 AgentRuntoolCredentialsSecretRef 装配,且 runner resource bundle 默认暴露unidesk-ssh可执行别名。