# Artificer 运行能力

本文件跟踪 Artificer 的 AipodSpec、provider/model 选择、credential 投影、任务级覆盖、Session 续跑和真实派单验收。单次配置、协议或运行故障作为 ITEM 进入本长期问题域。


## R1 [in_progress]

落实 [UniDesk #1846](https://github.com/pikasTech/unidesk/issues/1846) 与 [AgentRun #325](https://github.com/pikasTech/agentrun/issues/325)：Artificer 的 API credential 唯一来自 ~/.codex/*.pika，AgentRun effective backend profile 固定为 gpt-pika，默认模型改为 gpt-5.6-sol、reasoning effort 改为 medium，并支持任务级模型与 reasoning 选择，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R1_Task_Report.md)。

### R1.1 [in_progress]

在 [UniDesk #1846](https://github.com/pikasTech/unidesk/issues/1846) 将 gpt.pika 的 auth.json/config.toml 唯一 sourceRef 改为 /root/.codex/*.pika；plan/sync 默认视图显示精确 sourceRef 与 source/effective profile，config.toml 同步前验证显式 provider/base URL 且不输出值，activation fence blocked 时不提示 --confirm，缺失或不安全配置 fail closed，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R1.1_Task_Report.md)。

### R1.2 [completed]

在 [AgentRun #325](https://github.com/pikasTech/agentrun/issues/325) 让 AipodSpec 默认 backendProfile/credential.profile=gpt-pika、默认模型 gpt-5.6-sol、默认 reasoning effort=medium，并支持显式 model/reasoning override；provider/SecretRef 不随模型切换，带点的 gpt.pika 在 AgentRun admission 中 fail closed，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R1.2_Task_Report.md)。

### R1.3 [in_progress]

修复 UniDesk Aipod create/render/send：只有显式参数才覆盖服务端 AipodSpec，增加 --model 与 --reasoning-effort 同构 dry-run，禁止 client sessionPolicy 默改 provider/executionPolicy，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R1.3_Task_Report.md)。

### R1.4

两个 PR 合并后只观察自动链；先跑 .pika 默认与显式模型最短 Artificer canary，再为 [UniDesk #1844](https://github.com/pikasTech/unidesk/issues/1844) 创建唯一替代 task 并记录 supersedes，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R1.4_Task_Report.md)。

## R2 [completed]

解决 [AgentRun #335](https://github.com/pikasTech/agentrun/issues/335)：修复 Artificer 同 session follow-up 的 AipodSpec primary workspace、resource bundle、GitHub tool credential 继承退化，以及终态收敛窗口复用旧 run 产生 provider-less 空 command 的竞态；只修既有 session admission/继承路径，不新增合同、租约、围栏、fallback 或第二 authority，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R2_Task_Report.md)。

## R3 [completed]

解决 [AgentRun #337](https://github.com/pikasTech/agentrun/issues/337)：由 Artificer owning YAML 的既有 Aipod/runner 启动装配统一提供 Git author/committer identity，使全新 task 与同 session resume/new-turn 均无需任务内 git config 即可提交；只做最小必要修复，不新增第二 authority、合同、租约、安全机制、围栏或 monitor 支线，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R3_Task_Report.md)。

### R3.1 [completed]

调查 config/aipods/artificer.yaml、Aipod render 与 runner 启动路径，确认单一 identity owner，并用两个既有失败 task 和 #335 resume canary 建立初始/续跑复现证据，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R3.1_Task_Report.md)。

### R3.2 [completed]

由原生子代理在独立 AgentRun v0.2 worktree 实现最小 YAML-first identity 装配与定向测试，覆盖初始 runner 和同 session 新 turn；Artificer 不递归修自己，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R3.2_Task_Report.md)。

### R3.3 [completed]

主代理 review/合并后只观察自动 CI/CD；以新 task 直接 commit、同 session send 直接 commit 两个 canary 验收，不使用 task-local git config 或人工发布，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R3.3_Task_Report.md)。

## R4 [completed]

解决 [AgentRun #340](https://github.com/pikasTech/agentrun/issues/340)：修复 Artificer active turn 在 durable steer 已确认后发生 backend retry/thread resume 时丢失 steer 增量、错误回退初始 prompt 的问题；只修既有 command/event/thread 恢复路径，不新增客户端重发、第二 prompt authority、合同、租约、安全机制或围栏，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R4_Task_Report.md)。

### R4.1 [completed]

只读复现 [AgentRun #340](https://github.com/pikasTech/agentrun/issues/340) 的 durable steer ack → backend hard-timeout/retry → thread resume 指令回退，定位 effective prompt/turn state 在哪一层遗漏 steer，并冻结最小修复边界，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R4.1_Task_Report.md)。

### R4.2 [completed]

由原生子代理在独立 AgentRun v0.2 worktree 实现 active steer 的顺序、幂等恢复与定向测试；Artificer 不递归修自己，不触碰 Monitor 业务、provider/model/workspace/credential 装配，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R4.2_Task_Report.md)。

### R4.3 [completed]

主代理 review/合并后只观察自动 CI/CD；用新 Artificer canary 验证 active steer 后 backend retry 无需重发仍继续最新指令，并确认 workspace/resource bundle/tool credential 保持正确，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R4.3_Task_Report.md)。

## R5 [completed]

解决 [AgentRun #346](https://github.com/pikasTech/agentrun/issues/346)：由 owning Aipod YAML 提示词明确当前 Artificer 是执行者并禁止递归创建或派发 Artificer；由原生子代理做最小修复，不改变模型、provider、SecretRef、workspace、credential 或 resume 语义，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R5_Task_Report.md)。

### R5.1 [completed]

由原生子代理按 [AgentRun #346](https://github.com/pikasTech/agentrun/issues/346) 修改 config/aipods/artificer.yaml 的单一 prompt authority 并补 render 定向测试，禁止 Artificer 递归修自己，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R5.1_Task_Report.md)。

### R5.2 [completed]

主代理 review/合并 [AgentRun #346](https://github.com/pikasTech/agentrun/issues/346) 的最小 PR，只观察自动 CI/CD，不新增代码默认值或第二 prompt authority，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R5.2_Task_Report.md)。

### R5.3 [completed]

自动上线后执行最短 Artificer canary，确认直接处理业务任务且没有创建第二 task，并记录 task/run/session 证据，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R5.3_Task_Report.md)。

## R6 [in_progress]

让 Artificer 派单成为 Target-aware 的单命令流程：所有子代理派单前先用 MDTODO 跟踪；主代理通过 trans 在 YAML 选择的 Target 上执行 create/dispatch；Artificer 接单后内部也通过 trans 到 Target 的任务 worktree 执行，从而复用当前 NC01 的 Git、工具和运行面受控权限。CLI 只需 target、target-workspace、repo、ref 与 prompt，即在创建前通过同一 trans 核对工作区、分支和源码身份，自动渲染合法 session、workspaceRef 与 Aipod 资源包，不让 schema-invalid 或私库 fetch 错误在建 task 后才暴露；owning YAML prompt 与 unidesk-subagent 固化规则，并以 /root/.worktrees/selfmedia/r6-ocr-visual-planner 真实验收，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6_Task_Report.md)。

### R6.1 [in_progress]

由原生子代理在最新远端基线的独立 worktree 实现易用派单入口：外层在 YAML Target 上通过 trans 派单，Artificer 内部通过 trans 到 NC01 目标工作区复用主机权限；覆盖 target/target-workspace/repo/ref、创建前源码身份预检、合法 session/workspaceRef/Aipod 投影、owning prompt，以及 unidesk-subagent 的“所有子代理先建 MDTODO”固定规则；对应原生任务 artificer_dispatch_ux，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.1_Task_Report.md)。

### R6.2 [in_progress]

主代理审查跨仓改动并按依赖顺序合并 PR，只观察自动 CI/CD 收敛；不得人工触发 mirror、PipelineRun、apply 或 rollout，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.2_Task_Report.md)。

### R6.3

上线后通过 trans 在 NC01 使用新单命令入口，以任务 worktree /root/.worktrees/selfmedia/r6-ocr-visual-planner、仓库 pikainc/selfmedia 和 ref feat/r6-ocr-visual-planner 派发 OCR/视觉规划，确认 task 直接 running、Artificer 内部继续用 trans、session 可续跑且不出现 schema-invalid 或 repository-not-found，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.3_Task_Report.md)。

### R6.4 [in_progress]

修复 Target 单命令 live 输出超过全局预算后丢失 task/run/session identity：默认 human 与显式 JSON/YAML 都先返回紧凑 identity、auto-dispatch decision、Target 摘要与下钻命令，不嵌入完整 task/Aipod payload；补超过 10 KiB 场景测试，确保不会退化为 stdout-text-bytes-exceeded-threshold，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.4_Task_Report.md)。
### R6.5 [in_progress]

修复 cancelled task 后同 session continuation 未继承原 session 的 tenant/project，导致 send session 被 tenant-policy-denied 拒绝；由 session/task durable identity 自动沿用原 project，不绕过策略，并用 selfmedia 原 session 续跑 canary 验收，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R6.5_Task_Report.md)。
## R7 [completed]

解决 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348)：由 owning Artificer Aipod YAML 把单 turn hard-timeout 从 30 分钟调整为 2 小时（7200000 ms），只改 YAML 及最小必要 render/配置测试，不新增代码默认、第二 timeout authority、客户端续跑补丁、合同、租约、安全机制或围栏，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7_Task_Report.md)。

### R7.1 [completed]

由原生子代理按 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348) 在独立 v0.2 worktree 修改 config/aipods/artificer.yaml timeoutMs 为 7200000，并完成最小 render/配置测试；禁止 Artificer 递归修自己，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.1_Task_Report.md)。

### R7.2 [completed]

主代理审查并合并 [AgentRun #348](https://github.com/pikasTech/agentrun/issues/348) 的最小 PR，只观察自动 CI/CD，不人工触发交付链，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.2_Task_Report.md)。

### R7.3 [completed]

自动上线后以新 Artificer task input 与超过 30 分钟的真实或受控 canary 验证 2 小时 budget 生效，不修改当前 Monitor run 的既有 task policy，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R7.3_Task_Report.md)。

## R8 [completed]

解决 [UniDesk #1944](https://github.com/pikasTech/unidesk/issues/1944)：修复 Artificer Aipod 已为 2 小时但 UniDesk session follow-up 仍使用 15 分钟 hard-timeout 的配置分裂；将 `config/agentrun.yaml#client.sessionPolicy.executionPolicy.timeoutMs` 调整为 7200000 ms，在配置解析/校验中拒绝任何低于 3600000 ms 的 hard-timeout，并更新中文长期参考与最小测试；属于 AgentRun 自身运行时，必须由原生子代理执行，禁止 Artificer 递归修复，不新增第二 timeout authority、续跑补丁、锁、租约或状态机，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R8_Task_Report.md)。

## R9 [completed]

解决 [UniDesk #2034](https://github.com/pikasTech/unidesk/issues/2034)：确认 `908c5515a` 与 `dcff1b205` 汇合后产生的重复 `pikainc/pikaoa` override 已由 `3bded7e0` / PR #2020 精确删除；通过 PR #2038 保护并吸收固定 `/root/unidesk` 的 4 个并行提交，再按 P0 执行 `stash -u`、`pull --ff-only` 与 `stash apply`，不新增 parser/validator、warning normalization、credential authority、fallback、锁或租约；最后以 #2537 continuation task 做最短 Artificer canary，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R9_Task_Report.md)。

## R10 [completed]

解决 [UniDesk #2044](https://github.com/pikasTech/unidesk/issues/2044)：定位首次引入 `/responses/compact` 响应消息缺少 `role` 的提交或镜像版本，并精确反向移除该回归以恢复既有 compact 合同；保持 Artificer、Codex app-server、Sub2API 与原 session 单一路径，不增加 retry、fallback、role 猜测、第二 authority 或新 session 绕行；经 YAML-first 自动交付后复用 HWLAB #2541 原 session continuation 验证，属于 Artificer 自身运行链故障，必须由原生子代理执行，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R10_Task_Report.md)。

## R11 [completed]

通过 [UniDesk #2179](https://github.com/pikasTech/unidesk/issues/2179) 执行最短 Artificer 端到端 canary：使用 NC01/nc01-v02 正式 AgentRun 新 task 与独立 Target worktree，验证自动 dispatch、runner/session、Target trans、默认资源包、credential presence、GitHub 评论、result 回收和 post-task 收口，全程只读且不修改源码或运行面，完成任务后将详细报告写入[任务报告](./details/artificer-runtime-capabilities/R11_Task_Report.md)。
