用途:在 agentic workflow 的 safe-output 作业中支持临时 ID(temporary ID),让 agent 在同一次运行中创建父 issue 后立即引用它来关联子 issue,而无需提前知道真实编号。临时 ID 在 create_issue 完成后于执行时解析。
格式:aw_[A-Za-z0-9]{3,8},固定前缀 aw_,后接 3 至 8 位字母数字,例如 aw_abc、aw_abc123、aw_Test123。
主要能力:共享模块 pkg/workflow/js/temporary_id.cjs 提供 generateTemporaryId()、isTemporaryId(value)、normalizeTemporaryId(tempId)、loadTemporaryIdMap()、resolveIssueNumber(value, map)、replaceTemporaryIdReferences(text, map)。create_issue 作业为每个新 issue 生成临时 ID,构建 temporary_id -> issue_number 映射并通过 core.setOutput("temporary_id_map", JSON.stringify(map)) 输出。消费作业通过环境变量 GH_AW_TEMPORARY_ID_MAP 读取该映射。
使用方式(为某作业添加支持):更新 Go 作业构建器使其接收 createIssueJobName 参数并添加 GH_AW_TEMPORARY_ID_MAP 环境变量与条件性 needs;在 compiler_jobs.go 中传入该参数;在 JavaScript 脚本中 require("./temporary_id.cjs"),用 loadTemporaryIdMap() 加载映射,用 resolveIssueNumber() 解析编号;必要时在 collect_ndjson_output.cjs 中增加校验;补充单元与集成测试并更新文档。
失败处理:解析失败时用 core.warning() 记录警告并继续处理其他项,将失败写入步骤摘要,最终以警告状态成功完成,允许部分成功。
适用场景:link_sub_issue(parent_issue_number、sub_issue_number,已实现)、add_comment(issue_number,通过文本替换,已实现);update_issue 的 issue_number 可添加;close_pull_request 使用 PR 编号,不适用。
限制与安全:临时 ID 仅在单次工作流运行内有效;映射经环境变量传递、不对外暴露;agent 无法伪造临时 ID 引用其他工作流的 issue;解析失败仅记录日志,不暴露映射内容。