跳到主要内容

临时子智能体记录

可以读取某个父 Run 派出的临时 Worker 列表、任务说明和记录片段。Worker 没有独立 Run:调用时使用父 Run ID 和列表返回的 workerId。需要独立委派 Run 的历史时,使用会话历史与消息。

先完成连接与认证,使用实例所有者的 X-Agent-Service-Token。只有父 Run 的所属用户可以读取;其他用户的父 Run 与不存在的父 Run 都返回 404。记录可能包含任务输入、思考过程、普通工具参数和业务内容,请按对话隐私保管。

用途方法与路径
列出父 Run 的 WorkerGET /api/runs/:id/workers
分页读取一个 Worker 的记录GET /api/runs/:id/workers/:workerId/transcript

Worker 列表​

GET /api/runs/:id/workers​

使用有权读取的父 Run ID,无分页参数。成功返回 {run_id, workers},按 startedAt 升序。没有派出 Worker 时返回空数组。

curl --silent --show-error \
--header "X-Agent-Service-Token: ${AGENT_SERVICE_TOKEN}" \
"${BASE_URL}/api/runs/${PARENT_RUN_ID}/workers"
{"run_id":"parent-run","workers":[]}

每项至少包含 workerId、startedAt、status。可选字段包括 kind、agentType、preset、task、callerAgentId、sessionId、endedAt、summary、error、entryCount、bytes、truncated、routeDecision。只按实际字段显示,不能用缺席值补成成功。

sessionId 是该 Worker 的运行时子会话标识,不是一个新 Run ID。摘要的条数和字节信息也不能替代记录读取或业务结果核验。

Worker 状态​

状态含义
running仍观察为执行中
completedWorker 已正常结束;仍需检查其交付结果
failedWorker 失败
detached同步等待已结束,Worker 仍可在后台执行
stopped已显式停止
aborted随父执行中止
interrupted记录未正常收尾,已按父 Run 或服务重启事实判断为中断

读取时会推导状态:父 Run 不再运行时,残留的 running 变为 interrupted;重启前遗留的 detached 也会变为 interrupted。已有终态保持其含义。记录接口还可能返回 unknown,表示缺少可用的 Worker 索引;它不是完成。遇到未知的新值时保留未知,不据此自动继续任务。

分页读取记录​

GET /api/runs/:id/workers/:workerId/transcript​

查询参数规则
offset从成功解析且格式有效的 entry 位置开始,默认 0
limit默认 500,夹限到 1..2000

推荐传规范十进制整数。服务使用 parseInt:无效 offset 回到 0,无效 limit 回到 500,非正 limit 夹到 1;不能把其它接口的严格分页验证规则套用到这里。

curl --silent --show-error --get \
--header "X-Agent-Service-Token: ${AGENT_SERVICE_TOKEN}" \
--data-urlencode 'offset=1' --data-urlencode 'limit=1' \
"${BASE_URL}/api/runs/${PARENT_RUN_ID}/workers/${WORKER_ID}/transcript"
{
"run_id":"parent-run",
"workerId":"worker-example",
"status":"unknown",
"entries":[{"seq":99,"at":1793260800000,"kind":"text","text":"正在检查文件。"}],
"total":3,"offset":1,"limit":1,"truncated":false,"corruptLines":1
}

上例中索引缺失但记录文件可读,因此 status 为 unknown,没有 worker 摘要。offset=1 返回的 seq=99 说明两者不是同一游标。有可用摘要时另带 worker,其状态与响应顶层状态一致。

条目类型与续读​

  • route:实际路由决策的公开字段;prompt、text、thinking:输入、已聚合的正文或过程记录。
  • tool:首次记录的工具调用;tool_patch:按同一 toolId 补齐参数、摘要或生命周期,后写覆盖先写。跨页显示时保留已有调用上下文,不能把 patch 当成新调用。
  • artifact:已核验的文件产物引用;引用不授予文件访问权限。
  • truncated:达到录制上限的标记;end:Worker 收尾事实。

toolPhase 与 Worker 的 status 分开,取 requested/executing/completed/failed/interrupted/unknown。工具失败的 isError 不能因摘要占位而丢失。

total 是当前有效 entry 总数,不是消息数。后续位置使用响应的 offset + limit,不是最后一个 seq + 1,也不是折叠后的消息条数。坏 JSON 或无效 entry 被跳过并计入可选 corruptLines。

truncated: true 表示录制曾达到条数或字节上限,之后除终局外不再录制;它不表示还有下一页,也不决定 Worker 是否结束。已有空文件返回 200、空 entries;缺失文件返回 404。父 Run 已结束不代表一定存在完整记录。

记录没有快照 revision 或持久 tail 游标。执行中追加、记录清理和公开投影规则变化会影响后续读取;清除对话也会清理 Worker 记录。需要最新显示时重新读取,不把显示记录作为模型恢复材料或完整备份。

公开字段与敏感结果​

生效版本

v10.0.189+(Worker 记录的敏感字段投影与有效 entry 分页)。

新记录及旧记录的读取都按工具当前声明投影敏感字段和结果。敏感进度正文不会以早期 entry 外发;敏感终态结果可能变为占位,失败状态仍保留。缺少或矛盾的调用身份会使结果保守隐藏,不能凭记录自报的豁免标记取得正文。

额外回放属性和结果外置引用不在公开字段中;明确带类型的图片、音频或二进制内嵌字节也会被移除。普通 JSON 参数、普通字符串和纯 URL/dc-media:// 引用可以保留;这不是任意业务正文的通用敏感检测。旧文件不会因此原地改写。

本页与普通历史各自使用自己的条目结构和分页规则。遇到占位时按历史读取边界处理,不自动重跑工具来补正文。

可运行示例​

下载 workers.mjs,使用 Node.js 22+,无需 npm 依赖:

export DESIRECORE_URL='https://your-instance.example'
export DESIRECORE_TOKEN='your-existing-owner-token'
node workers.mjs list --run-id parent-run
node workers.mjs transcript --run-id parent-run --worker-id worker-example \
--limit 500 --all-pages --max-pages 20

示例先验证实例握手,默认只读一页。--all-pages 按 entry 窗口推进;观察到 total 改变或达到页数上限时以退出码 2 停止,已输出页面是部分结果。示例只输出原始分页信封,不自动折叠、tail、恢复执行或重试。

错误处理​

响应处理
400使用服务返回的安全父 Run ID/Worker ID;分别编码路径段
401检查实例令牌和可信用户身份
404父 Run 不存在、无权读取或记录文件缺失;旧服务也可能没有路由,核对实例版本与支持范围
500保存请求时间与路径供管理员排查,分享错误前移除路径和业务内容
503按服务就绪响应处理;不将缺少记录解释为完成

完整字段见 OpenAPI 下载。