chore: preserve restored parallel task records
This commit is contained in:
@@ -18,7 +18,8 @@ description: UniDesk 主代理调度子代理的必读技能。用户提到子
|
||||
- 涉及事件、投影、实时、回放或持久化的派单,主代理必须在子 issue 中先写出 current data flow 和 desired data flow;两者存在架构变化时,先更新长期 SPEC 并取得用户明确授权,再允许实施。
|
||||
- 新增测试只能验证已经授权的合同,不能用测试通过把未经授权的架构变化、迁移依赖或新 authority 合法化。
|
||||
- 主代理审核顺序固定为:先比较用户最新目标、适用 SPEC 和 current/desired data flow,再审核代码内部一致性、测试和实现质量;后者通过不能覆盖前者偏离。
|
||||
- 执行型和调研型委派默认优先使用 AgentRun `Artificer`:
|
||||
- 执行型和调研型委派必须使用 AgentRun `Artificer`:
|
||||
- 只有用户明确指定原生子代理,或 Artificer 经有界 readiness、最短真实派单或 typed failure 证明确实不可用时,才允许改用原生子代理;
|
||||
- Artificer 的 `create task`、`apply` 和 `dispatch` 必须以下文“子 issue + MDTODO”登记为 fail-closed 前置;禁止先创建 task 或派单再补登记;
|
||||
- 原生子代理和 Artificer 每次派单前都必须已有对应 MDTODO ITEM 或 SUBITEM;派单 prompt 与最终报告必须写明同一个 MDTODO ID;
|
||||
- Artificer 协调状态只复用 MDTODO 与 AgentRun 已有的 task/run/command/session 资源:
|
||||
@@ -42,7 +43,7 @@ description: UniDesk 主代理调度子代理的必读技能。用户提到子
|
||||
- Artificer 禁止递归修复自身:
|
||||
- 影响派单、AipodSpec、provider/model、credential 投影、session/workspace、Runner、AgentRun runtime 或其 CI/CD 可用性的故障,调查与实现必须交给原生子代理;
|
||||
- Artificer 只能在修复自动上线后作为被测对象,执行最短 canary、原 session 续跑或业务验收;
|
||||
- Artificer 是所有执行型子代理任务的强制默认执行面:用户只说“子代理”“并行代理”或“派代理”时,必须使用 Artificer;只有用户明确指定“原生子代理”,或 Artificer 经有界 readiness、最短真实派单或 typed failure 证明确实不可用时,才允许使用原生子代理;
|
||||
- 用户只说“子代理”“并行代理”或“派代理”时,不构成原生子代理例外,仍必须使用 Artificer;
|
||||
- 主代理不得因为方便、速度、空闲并发槽、已有原生 worktree、历史习惯或预计任务较短而自行降级到原生子代理;管理性、决策性工作由主代理直接完成,不构成原生子代理例外;
|
||||
- Artificer 已被证明确实不可用时,先创建独立 issue 和泛化问题域 MDTODO,再派一个原生子代理修复 Artificer;只有与故障修复解耦且用户明确要求继续的紧急业务任务,才允许临时使用原生子代理,并必须在 Artificer 恢复后交接;不得把临时 fallback 固化为长期调度入口;
|
||||
- Artificer 恢复后,原生子代理必须在 clean commit、PR 或只读报告 checkpoint 停止继续扩展;主代理通过原 issue、MDTODO 和 session 传递接续上下文,再由 Artificer 接替尚未完成的工作;禁止两个执行面共享可写 worktree、重复提交或并发修改同一任务;
|
||||
|
||||
@@ -116,3 +116,7 @@
|
||||
## 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 [in_progress]
|
||||
|
||||
解决 [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)。
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# R2.2.14 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已通过 [PR #2002](https://github.com/pikasTech/unidesk/pull/2002) 合并 runtime 精准批量 CRUD 的命令内自动回读对账,关联 Issue #1998 已关闭。
|
||||
|
||||
- `runtime apply/delete` 支持 `--accounts <selector,...>`;单账号 `--account` 保持兼容,两者互斥。
|
||||
- 所有 selector 与账号类型在写入前完成校验,重复解析到同一账号时零写入失败。
|
||||
- confirm 后自动回读全部目标,逐项输出完整账号名称/ID、write、reconciled、before/desired/actual、状态码与失败原因。
|
||||
- 汇总输出 `selected/changed/writeSucceeded/writeFailed/reconciled/mismatched/partialWrite`,不再要求外部逐账号 `get`。
|
||||
|
||||
## YAML 真相修复
|
||||
|
||||
最新远端分支一度仍保留旧 3 条模板,而生产 runtime 已有 7 条规则。合并前已将 owning YAML 同步为 400/429/500/502/503/504/524 七条通用规则,避免批量 apply 删除现有精确规则。
|
||||
|
||||
## v0.1.147 真实验证
|
||||
|
||||
对明确 selector `27,28`:
|
||||
|
||||
- dry-run:`selected=2 changed=0`,两账号均 `before=7 desired=7 actual=7`。
|
||||
- confirmed-noop:`writeSucceeded=0 writeFailed=0 reconciled=2 mismatched=0`。
|
||||
- 两账号均 `write=noop reconciled=true`,没有修改 runtime。
|
||||
|
||||
## 验证
|
||||
|
||||
runtime/types 单文件 `bun --check` 与 `git diff --check` 通过。此次没有修改账号、proxy、容量、优先级、凭据或 Sub2API 运行面。
|
||||
@@ -0,0 +1,24 @@
|
||||
# R2.2.17 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已通过 [PR #2025](https://github.com/pikasTech/unidesk/pull/2025) 合并 Sub2API 用户反馈一键只读追踪,关联 Issue #2000 已关闭。
|
||||
|
||||
- 新增 `codex-pool feedback --user <email-or-id>`,一次查询用户、API Key、分组、请求空窗、实时并发、上游账号、proxy 和基础设施状态。
|
||||
- 固定 10 条一页,使用 page token 与 request ID 渐进披露;默认 Kubernetes 列表风格,显式 `--json` 才返回完整脱敏结构。
|
||||
- 默认文本完整显示账号名称与 ID,不再截断 human-readable 上游账号名。
|
||||
- 不发探针,不修改 runtime、YAML、账号、proxy 或调度。
|
||||
|
||||
## v0.1.147 真实验证
|
||||
|
||||
对用户 `mail0795336304@163.com` 最近 30 分钟查询成功:
|
||||
|
||||
- 9 个已完成请求,排队 0、在途 0,最大相邻空窗 81.7 秒。
|
||||
- API Key `pika_win`,分组 `unidesk-codex-pool`。
|
||||
- 上游账号完整显示为 `https://sub2.pokexiao.com plus 0.03#31`。
|
||||
- app、Redis、proxy 和 host-docker 基础设施摘要同一命令返回。
|
||||
- 从原调查约 9 次手工入口收敛为 1 次 CLI,投影减少 8 次、约 88.9%。
|
||||
|
||||
## 验证
|
||||
|
||||
feedback/options/types 单文件 `bun --check`、`git diff --check` 和 PK01 真实只读入口均通过,默认输出未超限。
|
||||
@@ -0,0 +1,20 @@
|
||||
# R2.2.19 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已通过 [PR #2018](https://github.com/pikasTech/unidesk/pull/2018) 合并只读 Sub2API 原生运维查询能力,关联 Issue #2004 已随 PR 关闭。
|
||||
|
||||
- 新增 `platform-infra sub2api ops diagnosis`:读取原生 Ops 智能诊断,支持所有分组概要、指定分组/诊断 ID 下钻、平台与原生时间窗口过滤。
|
||||
- 新增 `platform-infra sub2api ops channels`:读取原生渠道状态和 7/15/30 天窗口,支持渠道、模型、稳定记录 ID 与固定分页下钻。
|
||||
- 默认输出为 Kubernetes 列表风格;完整结构只通过显式 `--json` 披露。
|
||||
- 输出区分原生事实、前端规则投影和不可获得字段,不重算第二套诊断,也未修改运行面。
|
||||
|
||||
## 验证
|
||||
|
||||
- PK01 原生 diagnosis 与 channels 查询成功。
|
||||
- 渠道 3 的历史记录可按稳定 ID `15589` 下钻,保留原生状态、模型、延迟、PING、可用率、检查时间及错误原文。
|
||||
- 语法检查、diff check 与 PR 受控预检通过后合并。
|
||||
|
||||
## 后续
|
||||
|
||||
内部监控超时、请求切号关联和 P0/P1/P2 快速查询分别由 R2.2.23 与 R2.2.21 继续增强;这些后续能力不改变本任务的原生只读边界。
|
||||
@@ -0,0 +1,26 @@
|
||||
# R2.2.21 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已通过 [PR #2024](https://github.com/pikasTech/unidesk/pull/2024) 合并 P0/P1/P2 只读故障快速查询,关联 Issue #2013 已关闭。
|
||||
|
||||
- 默认命令展示所有分组概要;`--level` 必须与 `--group` 组合,避免跨分组分页漏数。
|
||||
- P0 展示客户可见错误;P2 按稳定 request ID 与客户错误集合对账,区分内部吸收与故障穿透。
|
||||
- 支持账号完整名称/ID、模型、同步/流式、端点、request ID 和固定游标。
|
||||
- 默认 Kubernetes 列表风格,显式 `--json` 才输出结构化 JSON。
|
||||
|
||||
## v0.1.147 兼容
|
||||
|
||||
当前 PK01 运行面为 `v0.1.147`。该版本会忽略 request-errors/upstream-errors 的部分过滤参数,因此 CLI 使用原生有限错误集合并在客户端执行精确过滤,避免假命中。
|
||||
|
||||
- 请求 `f7ff0efe-64d3-4dd7-8716-20bdfc3a2f90` 精确返回账号 `https://sub2.pokexiao.com plus 0.03 (31)` 的 P0 记录。
|
||||
- 请求 `762b9f30-bbbc-46e3-baea-84c2fbd4325a` 判定 `ABSORBED=yes`。
|
||||
- `lyon9801` 请求 `721ad9a0-aac6-49e3-ab7c-042f5eaeeff9` 判定 `ABSORBED=no`、`TEMP_UNSCHED=none`,不再把 generic `active` 状态误报成临时不可调度。
|
||||
- v0.1.147 原生 Ops 不提供端点/请求级 TTFT;P1 将普通与 compact 分栏为 `unavailable`,保留全局原生 TTFT P99,绝不以总耗时替代首 Token 时间。
|
||||
|
||||
## 验证
|
||||
|
||||
- `bun --check`:faults/options/types 通过。
|
||||
- `git diff --check` 通过。
|
||||
- PK01 默认概要、P0/P1/P2、组合过滤、精确 request ID 与内部吸收对账均通过真实只读验收。
|
||||
- 未修改 YAML、账号、proxy、调度或 Sub2API 运行面。
|
||||
@@ -0,0 +1,26 @@
|
||||
# R2.2.23 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已通过 [PR #2023](https://github.com/pikasTech/unidesk/pull/2023) 合并 Sub2API 内部渠道监控记录下钻,关联 Issue #2016 已关闭。
|
||||
|
||||
- `ops channels --record <id>` 一次返回原生监控记录、实际 runtime 镜像、超时源码参考、账号完整名称、请求候选、切号/选号失败与最终结果。
|
||||
- 默认渠道概要保持轻量;历史记录通过固定分页和稳定 record ID 渐进披露。
|
||||
- 监控记录本身没有 request ID 时,时间窗+模型关联明确标记为 `inferred`,不伪称原生确定关联。
|
||||
|
||||
## v0.1.147 兼容边界
|
||||
|
||||
PK01 当前实际镜像为 `docker.1panel.live/weishaw/sub2api:0.1.147`。CLI 动态展示该版本;已确认的 30 秒响应头/45 秒总请求常量来源于 v0.1.155 源码参考,因此在版本不匹配时标记:
|
||||
|
||||
- `runtimeVersionMismatch=true`
|
||||
- `runtimePolicyStatus=unverified`
|
||||
- `sufficientForObservedCompletion=null`
|
||||
|
||||
不会用 v0.1.155 的参考常量替 v0.1.147 作充分性结论。
|
||||
|
||||
## 验证
|
||||
|
||||
- 回退后原生 monitor 对象由渠道 3 重建为渠道 4,旧记录 `15589` 不再属于当前对象;CLI 正确拒绝错误下钻。
|
||||
- 当前记录 `15745` 原生显示 30 秒 response-header timeout;CLI 将其启发式关联到账号 `https://api.iceiu.com plus 0.03 (33)`,并明确 `correlationStatus=inferred`。
|
||||
- 默认 overview、当前渠道历史、指定 record 的 text/JSON、`bun --check` 与 `git diff --check` 均通过。
|
||||
- 未修改 runtime、YAML、账号、proxy 或调度。
|
||||
@@ -0,0 +1,29 @@
|
||||
# R2.2.25 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
PK01 Sub2API 已通过 YAML-first 受控流程从 v0.1.155 回退到 v0.1.147。实际运行镜像为 `docker.1panel.live/weishaw/sub2api:0.1.147`,容器 running/healthy。
|
||||
|
||||
## 配置与交付
|
||||
|
||||
- owning YAML:`config/platform-infra/sub2api.yaml#targets.PK01.image.tag`
|
||||
- 变更:`0.1.155` → `0.1.147`
|
||||
- commit:`6829826e`(合并时进入 master)
|
||||
- PR:[pikasTech/unidesk#2021](https://github.com/pikasTech/unidesk/pull/2021),已合并
|
||||
- 正式 apply job:`platform_infra_sub2api_apply_pk01_20260714102943464_502c76`,exit 0
|
||||
- PK01 public exposure 子任务成功收敛
|
||||
|
||||
未修改账号池 runtime、Codex pool、Redis、端口、Secret、Caddy策略或代理配置。
|
||||
|
||||
## 验证
|
||||
|
||||
- `image-prepull --target PK01 --dry-run`:v0.1.147 镜像已存在,digest `sha256:436faced...`
|
||||
- `sub2api apply --target PK01 --dry-run`:host-docker 渲染通过
|
||||
- `image-prepull --target PK01 --confirm --wait`:成功,无需拉取
|
||||
- `sub2api apply --target PK01 --confirm`:异步 job 成功
|
||||
- `sub2api status --target PK01`:app running/healthy,实际镜像 v0.1.147;Redis持续运行
|
||||
- `sub2api validate --target PK01`:Docker Compose、app running、Redis PONG、PostgreSQL accepting connections、本地 health、公网 PK01 Caddy health 全部通过
|
||||
|
||||
## 备注
|
||||
|
||||
最新 master 的受控 GH CLI 因无关的 `pikaInc/pikaoa` repository override 重复而 fail-closed;本次使用已有干净旧 worktree中的同一受控 GH CLI完成 PR创建、preflight和merge,没有使用原生 gh或手写 API,也未修改该无关配置。
|
||||
@@ -0,0 +1,54 @@
|
||||
# R2.2.26 任务报告
|
||||
|
||||
## 范围
|
||||
|
||||
只读分析 PK01 当前 Sub2API v0.1.147 最近 4 小时全部分组的上游账号质量。评分权重为可靠性 60、TTFT 25、当前可用性 15,置信度独立计算。未修改 runtime、YAML、账号、proxy、容量、优先级或调度。
|
||||
|
||||
## 全局概要
|
||||
|
||||
- 请求 5,448,客户错误 115(2.11%),上游错误 236(4.33%)。
|
||||
- `unidesk-codex-pool`:约 2,063 请求,客户错误率 4.27%,上游错误率 6.45%,TTFT P99 114,229 ms。
|
||||
- `自用`:约 3,385 请求,客户错误率 0.80%,上游错误率 3.04%,TTFT P99 108,562 ms。
|
||||
- `grok`:无流量,全部账号均为证据不足,不能评分。
|
||||
- 当前可用账号 8/10,池使用 4/225,无排队;账号 29、30 因 403 余额不足不可用。
|
||||
|
||||
## unidesk-codex-pool 账号评分
|
||||
|
||||
| 账号 | ID | 评分/等级 | 置信度 | 尝试 | 失败率 | TTFT P95 | 结论 |
|
||||
|---|---:|---|---|---:|---:|---:|---|
|
||||
| lyon9801 | 15 | 97 / A | 高 | 326 | 0.31% | 23,998 ms | 首选 |
|
||||
| https://sub2.pokexiao.com pro 0.05 | 32 | 91.9 / A | 高 | 139 | 0.72% | 50,604 ms | 首选 |
|
||||
| https://sub2.pokexiao.com plus 0.03 | 31 | 89.4 / B | 高 | 641 | 2.03% | 40,700 ms | 健康 |
|
||||
| https://api.iceiu.com plus 0.03 | 33 | 87.8 / B | 高 | 466 | 1.29% | 66,495 ms | 健康;发生切号/forward 信号 |
|
||||
| https://ai.whistlelads.com plus 0.03 | 28 | 86.5 / B | 高 | 133 | 4.51% | 6,507 ms | 延迟好,但失败率偏高 |
|
||||
| https://sub.yjxm1221.top plus 0.025 | 27 | 37.2 / E | 高 | 136 | 13.97% | 152,164 ms | 明显较差;高失败率、TTFT 长尾和切号信号 |
|
||||
| https://api.recurdream.com plus 0.02 | 35 | 100 / insufficient | 低 | 1 | 0% | 4,526 ms | 仅 1 样本,不可比较 |
|
||||
|
||||
账号 19、29、30、34 在该分组无请求证据;29、30 当前不可用。
|
||||
|
||||
## 自用分组账号评分
|
||||
|
||||
| 账号 | ID | 评分/等级 | 置信度 | 尝试 | 失败率 | TTFT P95 | 结论 |
|
||||
|---|---:|---|---|---:|---:|---:|---|
|
||||
| lyon9801 | 15 | 98.6 / A | 高 | 228 | 0.44% | 10,491 ms | 首选 |
|
||||
| https://sub2.pokexiao.com plus 0.03 | 31 | 95.2 / A | 高 | 1,103 | 0.73% | 27,564 ms | 首选 |
|
||||
| https://api.iceiu.com plus 0.03 | 33 | 90.5 / A | 高 | 1,212 | 0.50% | 64,557 ms | 首选;有切号信号 |
|
||||
| https://ai.whistlelads.com plus 0.03 | 28 | 89.2 / B | 高 | 167 | 3.59% | 9,716 ms | 延迟好,但失败率偏高 |
|
||||
| https://sub.yjxm1221.top plus 0.025 | 27 | 83 / B | 高 | 279 | 4.30% | 38,103 ms | 健康但有失败、切号失败和流式 forward 信号 |
|
||||
| https://sub2.pokexiao.com pro 0.05 | 32 | 96.3 / insufficient | 低 | 9 | 0% | 35,357 ms | 样本少于 10,不可映射可比较等级 |
|
||||
|
||||
账号 19、29、30、34、35 在该分组证据不足;29、30 当前不可用。
|
||||
|
||||
## 关键判断
|
||||
|
||||
- `lyon9801` 是最近 4 小时跨两个有流量分组最稳定的高置信账号。
|
||||
- 账号 27 的质量强烈依赖分组:在 `unidesk-codex-pool` 为 E,在 `自用`为 B,不能跨分组简单平均或据此全局停用。
|
||||
- 账号 28 的 TTFT 很好,但两个分组失败率均超过 3%,主要扣分来自可靠性。
|
||||
- 账号 31、33 在 `自用`表现为 A;在 `unidesk-codex-pool`受更多客户错误或切号/forward 信号影响而降为 B。
|
||||
- `recurdream` 的 100 分仅有 1 次请求,属于偶然高分,不应参与排序或自动调度。
|
||||
- 当前池无排队且并发使用极低,评分证据不支持通过降低全局并发解决问题。
|
||||
- 评分只用于分析,不应自动修改 priority、capacity 或 schedulable。
|
||||
|
||||
## 证据边界
|
||||
|
||||
上游错误桶是账号级共享证据,账号被多个分组共享时不能跨分组相加。分组评分使用原生 admin usage、request-errors 和 system-log 中具备分组/request ID 的事件;v0.1.147 缺失的字段明确按证据不足处理。
|
||||
@@ -0,0 +1,49 @@
|
||||
# R2.2.27 任务报告
|
||||
|
||||
## 目标
|
||||
|
||||
交由 Artificer 改进 Sub2API 账号评分流程,使一次 `runtime errors` 查询直接输出最近窗口的账号 Token(M/B)和金额(USD `$`),保持 PK01 v0.1.147 兼容、默认 Kubernetes 列表风格、机器输出保留精确值与来源。
|
||||
|
||||
## 原生接口取证
|
||||
|
||||
2026-07-14 在 PK01 运行面只读验证 `/api/v1/admin/usage`。v0.1.147 原生记录提供:
|
||||
|
||||
- `input_tokens`、`output_tokens`;
|
||||
- `cache_creation_tokens`、`cache_read_tokens`;
|
||||
- `image_output_tokens`;
|
||||
- `total_cost`、`actual_cost`;
|
||||
- 账号、分组、模型、请求时间和首 Token 延迟等归因字段。
|
||||
|
||||
最近 4 小时、全部 OpenAI 分组共读取 49 页、4,145 条成功 usage:
|
||||
|
||||
- 总 Token:406.796M;
|
||||
- 原生 `actual_cost`:$448.4070;
|
||||
- 原生 `total_cost`:$448.4070;
|
||||
- `unidesk-codex-pool`:1,563 请求、125.660M Token、$136.6777;
|
||||
- `自用`:2,582 请求、281.135M Token、$311.7292;
|
||||
- `grok`:无流量。
|
||||
|
||||
Token 汇总口径为 input + output + cache creation + cache read + image output;金额直接采用原生 `actual_cost`,并保留 `total_cost` 校验,不引入第二份价格表。
|
||||
|
||||
## 实现规格
|
||||
|
||||
Issue #2035 已记录完整实现和验收要求:
|
||||
|
||||
- 复用账号评分已经读取的 usage 分页,不额外重复扫描;
|
||||
- 默认账号表直接展示完整账号名称、Token M/B、`$actual_cost`;
|
||||
- JSON 输出保留精确整数 Token、分项、原始 USD 数值和 provenance;
|
||||
- 无流量可显示零;API 或字段缺失必须显示 `unsupported/partial`,不得伪装为零;
|
||||
- 兼容 v0.1.147,不修改运行面、不维护独立价格表。
|
||||
|
||||
## Artificer 派单状态
|
||||
|
||||
已创建并推送独立 worktree/branch:
|
||||
|
||||
- `/root/unidesk/.worktree/sub2api-account-usage-ledger`;
|
||||
- `feat/sub2api-account-usage-ledger`。
|
||||
|
||||
原生资源 API 显示 Artificer 为 `available`,但 `agentrun create task` 被 NC01/nc01-v02 类型化拒绝:
|
||||
|
||||
`github/repository-override-pikainc-pikaoa is not declared by YAML lane NC01/nc01-v02`
|
||||
|
||||
因此当前没有创建 runner,也没有绕过 YAML 资源契约。Issue #2035 评论已补充原生字段、4 小时数据和派单阻塞证据。任务保持进行中,待 AgentRun lane 资源声明修复后直接继续受控派单与 PR 验收。
|
||||
@@ -0,0 +1,42 @@
|
||||
# R2.2.28 任务报告
|
||||
|
||||
## 范围
|
||||
|
||||
只读核查 PK01 Sub2API 当前 OpenAI 上游账号的实际全局 priority、状态和可调度性,并结合最近 4 小时账号评分与原生 usage 给出推荐优先级;未修改 runtime、YAML、账号或调度配置。
|
||||
|
||||
## 调度语义与纠正
|
||||
|
||||
PK01 当前没有分组优先级,只有账号全局 `priority`。Sub2API 调度语义为数值越小优先级越高;因此一次 priority 调整会影响该账号所在的全部分组,不能用 priority 实现“只在某一个分组降级”。此前报告关于可能存在分组级覆盖的表述已删除。
|
||||
|
||||
## 当前 priority
|
||||
|
||||
- `1`:lyon9801、https://sub.yjxm1221.top plus 0.025、https://ai.whistlelads.com plus 0.03、https://api.lwylink.xyz plus 0.05、https://sub2.pokexiao.com plus 0.03、https://api.iceiu.com plus 0.03、https://sub.yjxm1221.top grok、https://api.recurdream.com plus 0.02。
|
||||
- `10`:https://sub2.pokexiao.com pro 0.05。
|
||||
- `50`:https://sub.yjxm1221.top pro 0.06、https://api.lwylink.xyz pro 0.1。
|
||||
- 账号 29、30 当前 `error`、`schedulable=false`;其余列出账号为 `active`、`schedulable=true`。
|
||||
|
||||
当前主要问题是多数账号同为最高优先级 1,没有体现质量差异。账号 https://sub.yjxm1221.top plus 0.025 在 `unidesk-codex-pool` 为 E、失败率 14.88%、TTFT P95 148 秒,却与核心账号同为 priority 1;账号 https://sub2.pokexiao.com pro 0.05 在该分组为 A,却为 priority 10。
|
||||
|
||||
## 推荐全局 priority
|
||||
|
||||
- lyon9801:`1 -> 1`。
|
||||
- https://sub2.pokexiao.com plus 0.03:`1 -> 1`。
|
||||
- https://sub2.pokexiao.com pro 0.05:`10 -> 5`,只谨慎提升一级,因为“自用”分组样本不足。
|
||||
- https://ai.whistlelads.com plus 0.03:`1 -> 10`。
|
||||
- https://api.iceiu.com plus 0.03:`1 -> 10`。
|
||||
- https://api.recurdream.com plus 0.02:`1 -> 20`,样本不足,保留观察流量。
|
||||
- https://sub.yjxm1221.top plus 0.025:`1 -> 20`。这是全局降级,会同时影响 `unidesk-codex-pool` 与“自用”;若希望只在前者降级,必须调整账号分组/拆分账号,而不是 priority。
|
||||
- https://sub.yjxm1221.top pro 0.06:`50 -> 50`。
|
||||
- https://sub.yjxm1221.top grok:`1 -> 50`。近期无流量;如果它只服务 grok,应通过分组和模型归属管理,不让它以全局最高 priority 混入其他池。
|
||||
- https://api.lwylink.xyz pro 0.1:`50 -> 50`,余额不足,建议退役或补款后重新评分。
|
||||
- https://api.lwylink.xyz plus 0.05:`1 -> 50`,余额不足;若不立即退役,也不应保留最高优先级。
|
||||
|
||||
## 推荐层级
|
||||
|
||||
- priority 1:两名核心上游,共 35 并发。
|
||||
- priority 5:优质备用,增加 10 并发。
|
||||
- priority 10:二级容量,增加 70 并发。
|
||||
- priority 20:观察/降级池,增加 60 并发。
|
||||
- priority 50:无证据、专用或待退役账号。
|
||||
|
||||
近期无排队且当前并发很低,但当前快照不能替代峰值数据;正式变更前仍应 dry-run,并核对峰值容量和账号模型能力。金额受模型与缓存结构影响,仅辅助评价实际资源效率。建议尚未下发。
|
||||
@@ -0,0 +1,30 @@
|
||||
# R2.2.29 任务报告
|
||||
|
||||
## 目标
|
||||
|
||||
按 R2.2.28 的最近 4 小时评分与用量结论,精准调整 PK01 Sub2API runtime-manual 账号的全局 priority。只修改 priority,不修改分组、容量、代理、凭据、状态、可调度或临时不可调度规则。
|
||||
|
||||
## 执行与保护
|
||||
|
||||
由于当前受控 runtime CLI 尚未支持 priority 写入,本次使用 PK01 内部 Sub2API 原生 admin API 进行一次性精准变更。凭据仅在远端进程内读取,未输出。执行前逐账号校验 ID、完整名称和预期旧 priority;更新过程设置失败回滚;执行后逐账号 GET 回读,并再通过正式 `runtime list` 做独立全量对账。
|
||||
|
||||
## 实际变更
|
||||
|
||||
- https://sub.yjxm1221.top plus 0.025(27):1 -> 20。
|
||||
- https://ai.whistlelads.com plus 0.03(28):1 -> 10。
|
||||
- https://api.lwylink.xyz plus 0.05(30):1 -> 50。
|
||||
- https://sub2.pokexiao.com pro 0.05(32):10 -> 5。
|
||||
- https://api.iceiu.com plus 0.03(33):1 -> 10。
|
||||
- https://sub.yjxm1221.top grok(34):1 -> 50。
|
||||
- https://api.recurdream.com plus 0.02(35):1 -> 20。
|
||||
|
||||
保持不变:
|
||||
|
||||
- lyon9801(15):1。
|
||||
- https://sub2.pokexiao.com plus 0.03(31):1。
|
||||
- https://sub.yjxm1221.top pro 0.06(19):50。
|
||||
- https://api.lwylink.xyz pro 0.1(29):50。
|
||||
|
||||
## 验证
|
||||
|
||||
7 个更新全部返回成功且逐账号回读一致,未触发回滚。正式 `runtime list --target PK01` 再次显示全部 11 个账号 priority 与目标一致;账号 29、30 原有 error/schedulable=false 保持不变,其他账号状态保持 active/schedulable=true。输出确认 groups、concurrency、proxy、credentials、status、schedulable 和 temp rules 均未进入变更 payload,Secret 未打印。
|
||||
@@ -0,0 +1,20 @@
|
||||
# R2.2.30 任务报告
|
||||
|
||||
## 目标
|
||||
|
||||
交由 Artificer 实现 Issue #2037,为 Sub2API runtime 增加账号全局 priority 的单账号与精准批量 dry-run/confirm、全量 selector 预检、写后自动回读、所有权提示和 Kubernetes 列表/显式 JSON 输出;明确 lower-is-higher、没有分组优先级,兼容 v0.1.147,不自动部署或调整生产 priority。
|
||||
|
||||
## 已完成登记
|
||||
|
||||
- 子 Issue:https://github.com/pikasTech/unidesk/issues/2037
|
||||
- MDTODO:R2.2.30,进行中。
|
||||
- 独立 worktree:`/root/unidesk/.worktree/sub2api-runtime-priority`。
|
||||
- 分支:`feat/sub2api-runtime-priority`,基于最新 `origin/master` 创建并推送,worktree clean。
|
||||
|
||||
## 派单状态
|
||||
|
||||
正式 `agentrun create task --aipod Artificer --target NC01` 被类型化前置校验拒绝:
|
||||
|
||||
`validation-failed executionPolicy toolCredential github/repository-override-pikainc-pikaoa is not declared by YAML lane NC01/nc01-v02`
|
||||
|
||||
因此当前没有 AgentRun task、run、runner 或代码改动,也未绕过正式资源 API。Issue 评论已保存生产调整结果、worktree/branch 和阻塞证据。任务保持进行中,待 AgentRun lane owning YAML 声明修复后以相同边界重新派单。
|
||||
@@ -0,0 +1,55 @@
|
||||
# R2.2.31 任务报告
|
||||
|
||||
## 窗口与范围
|
||||
|
||||
只读分析全局 priority 于 2026-07-14 15:03(Europe/Berlin)生效后至约 15:30 的新窗口。按 `unidesk-codex-pool`、“自用”和 `grok` 分组读取原生 dashboard、账号评分、failover、usage、Token、模型和金额;没有再次修改运行面。
|
||||
|
||||
账号名称尾部的 0.02/0.025/0.03/0.05/0.06/0.1 按用户确认作为上游采购成本指标。由于未提供该数值的具体计量单位,本报告只按相对成本排序,不把它擅自换算成美元。
|
||||
|
||||
## 总体效果
|
||||
|
||||
- `unidesk-codex-pool`:117 请求,客户错误 0,上游错误率 0.85%;1 次上游失败触发 failover 并成功恢复,没有错误穿透客户。
|
||||
- “自用”:161 请求,客户错误 0,上游错误率 0。
|
||||
- `grok`:0 请求。
|
||||
- 原生 usage 精确生效后窗口:272 条成功记录,33.245M Token,Sub2API 模型计费口径金额 $24.5076。
|
||||
- 当前无排队;8/10 可用,账号 29、30 仍因余额不足不可用。
|
||||
|
||||
## 账号表现与成本
|
||||
|
||||
### priority 1
|
||||
|
||||
- lyon9801:104 条成功 usage、11.209M Token;主池评分 100/A、TTFT P95 5.3 秒;“自用”无错误但 TTFT P95 411 秒。账号名称没有成本后缀,无法与代理账号做采购成本数值比较。继续作为可靠性锚点,但“自用”长尾需继续观察,不能把零错误等同于低延迟。
|
||||
- https://sub2.pokexiao.com plus 0.03:84 条成功 usage、7.075M Token,成本指标 0.03;两组均 0 错误,评分 97.6/A 与 100/A,TTFT P95 26 秒和 9.3 秒。当前是成本、稳定性和用量平衡最好的代理上游,priority 1 合理。
|
||||
|
||||
### priority 5
|
||||
|
||||
- https://sub2.pokexiao.com pro 0.05:新窗口无流量。成本指标 0.05 高于 0.03,但此前主池评分 A,作为比普通 B 级账号更可靠的首层 failover 备用仍合理。短窗口没有证据支持继续提升或降低。
|
||||
|
||||
### priority 10
|
||||
|
||||
- https://ai.whistlelads.com plus 0.03:18 条成功 usage、3.275M Token,成本指标 0.03;发生 1 次账号失败,failover 成功,客户错误为 0,短窗失败率 5.56%、评分 B。priority 10 合理,不应提升。
|
||||
- https://api.iceiu.com plus 0.03:新窗口无流量;此前两组 B 且 TTFT P95 72–74 秒。保持 priority 10,不因零流量推断改善。
|
||||
|
||||
### priority 20
|
||||
|
||||
- https://sub.yjxm1221.top plus 0.025:39 条成功 usage、7.010M Token,成本指标 0.025;“自用”短窗 0 错误、评分 A、TTFT P95 46 秒,主池无新流量。它仍承载请求很可能来自既有会话粘性;历史主池 E 级证据尚未被 26 分钟单分组短窗推翻,保持 priority 20。
|
||||
- https://api.recurdream.com plus 0.02:27 条成功 usage、4.675M Token,成本指标最低 0.02;短窗 0 错误、评分 A、TTFT P95 6.8 秒。表现值得观察,但累计证据仍偏少,暂时保持 priority 20;完整新窗口达到至少 100 次尝试且失败率持续低、TTFT 稳定后,可优先考虑提升到 10。
|
||||
|
||||
### priority 50
|
||||
|
||||
- 账号 19、34 无流量,维持末级。
|
||||
- 账号 29、30 余额不足且不可调度,维持 50,并优先退役或补款后重新验收。
|
||||
|
||||
## 调度解释
|
||||
|
||||
运行面 `openai_advanced_scheduler_enabled=false`,priority 为主要分层依据;`openai_advanced_scheduler_sticky_weighted_enabled=false`,既有 previous-response/session affinity 仍可能使用 legacy hard-hit。因而 priority 20 的账号在调整后仍有流量,不足以证明 priority 未生效;主池新流量已经主要集中到 priority 1,符合预期。
|
||||
|
||||
## 调整建议
|
||||
|
||||
当前不建议立即进行第二轮 priority 修改:
|
||||
|
||||
- 保持 15/31 为 1,32 为 5,28/33 为 10,27/35 为 20,其余为 50。
|
||||
- 下一完整观察窗口优先评估账号 35:达到至少 100 次尝试且保持低失败率、低 TTFT 时,候选 `20 -> 10`,利用最低成本 0.02。
|
||||
- 账号 28 若完整窗口失败率继续高于 3%,候选 `10 -> 20`。
|
||||
- 账号 27 即使“自用”继续良好,也应先确认主池历史 E 级问题不再复现;由于没有分组 priority,不宜根据单一分组短窗全局提升。
|
||||
- lyon9801 若“自用”TTFT P95 在更长窗口持续超过 120 秒,应优先调查 sticky/长会话与请求结构,不立即做全局降级,以免损害其在主池的优质表现。
|
||||
@@ -0,0 +1,26 @@
|
||||
# R2.2.32 任务报告
|
||||
|
||||
## 经济口径
|
||||
|
||||
用户确认账号名称尾部数值为上游采购成本,售价扣除服务器等固定成本后的可用收入为 0.10。因此单元毛利按 `0.10 - 采购成本` 评价;成本 0.10 的账号毛利为 0,不应作为常态主调度账号。
|
||||
|
||||
## 运行面修改
|
||||
|
||||
在确认配置、skill 和脚本没有按 `lyon9801` 名称引用后,对两个 runtime-manual 账号执行精准更新:
|
||||
|
||||
- 账号 15:名称 `lyon9801 -> lyon9801 0.10`,全局 priority `1 -> 20`。
|
||||
- 账号 35:名称保持 `https://api.recurdream.com plus 0.02`,全局 priority `20 -> 5`。
|
||||
|
||||
执行前校验账号 ID、完整名称和旧 priority;失败路径带回滚;执行后逐账号 GET 和正式 `runtime list --target PK01` 全池回读均一致。未触发回滚。分组、容量、load factor、proxy、credentials、status、schedulable 和临时不可调度规则未进入更新 payload,Secret 未打印。
|
||||
|
||||
## 当前盈利分层
|
||||
|
||||
- priority 1:`https://sub2.pokexiao.com plus 0.03`,毛利 0.07;两组 A,是当前主盈利账号。
|
||||
- priority 5:`https://api.recurdream.com plus 0.02`,毛利 0.08;近期低延迟零错误,作为最低成本首层备用。`https://sub2.pokexiao.com pro 0.05`,毛利 0.05;历史主池 A,作为高可靠首层备用。
|
||||
- priority 10:`https://ai.whistlelads.com plus 0.03`、`https://api.iceiu.com plus 0.03`,毛利均 0.07;质量 B,作为二级容量。
|
||||
- priority 20:`https://sub.yjxm1221.top plus 0.025`,毛利 0.075,但历史主池 E;`lyon9801 0.10`,毛利 0,保留为高可靠应急账号而非日常主力。
|
||||
- priority 50:成本 0.06/0.05/0.10 的无流量或不可用账号,以及成本未明确的 grok 专用账号。
|
||||
|
||||
## 结论
|
||||
|
||||
上一轮把 lyon9801 放在 priority 1 只优化了可靠性,没有纳入真实采购毛利,经济判断错误。本轮已修正为“盈利主账号优先、低成本可靠备用其次、零毛利直连账号只做应急兜底”。既有 sticky 会话可能短期继续使用账号 15,新增会话应逐步转向 priority 1/5 的盈利账号。后续效果应在完整新窗口复核客户错误率、failover、账号 35 的样本量和实际毛利流量占比。
|
||||
@@ -0,0 +1,74 @@
|
||||
# R2.2.33 任务报告
|
||||
|
||||
## 结果
|
||||
|
||||
已实现并合并 YAML-first 的 Sub2API 只读利润统计 CLI:
|
||||
|
||||
```bash
|
||||
bun scripts/cli.ts platform-infra sub2api codex-pool profit --target PK01 --since 24h
|
||||
bun scripts/cli.ts platform-infra sub2api codex-pool profit --target PK01 --since 24h --json
|
||||
```
|
||||
|
||||
- PR:[pikasTech/unidesk#2041](https://github.com/pikasTech/unidesk/pull/2041)
|
||||
- merge commit:`1e457e100451f659d9ffaa59282197d8881a829d`
|
||||
- 运行面修改:无;命令只读取 Sub2API 原生 `/api/v1/admin/usage`。
|
||||
- 兼容边界:PK01 Sub2API v0.1.147。
|
||||
|
||||
## YAML 经济口径
|
||||
|
||||
`config/platform-infra/sub2api-codex-pool.yaml#profit` 是唯一配置真相:
|
||||
|
||||
- 默认窗口:`24h`。
|
||||
- 盈利分组:`unidesk-codex-pool`。
|
||||
- 自用分组:`自用`,只计算采购成本,不计算收入。
|
||||
- 排除分组:`grok`。
|
||||
- 原生用量金额字段:`actual_cost`。
|
||||
- 净收入系数:`0.10`。
|
||||
- 账号采购成本系数:从完整账号名称末尾读取。
|
||||
|
||||
计算口径:
|
||||
|
||||
- 盈利池净收入:盈利池 `actual_cost × 0.10`。
|
||||
- 盈利池采购成本:盈利池 `actual_cost × 账号成本系数`。
|
||||
- 不扣自用利润:盈利池净收入减盈利池采购成本。
|
||||
- 扣除自用利润:不扣自用利润再减自用池采购成本。
|
||||
- 缺少账号成本或存在未分类流量时,相关结果标记 `partial`,不按零填充。
|
||||
|
||||
## 24 小时实测
|
||||
|
||||
时间窗:`2026-07-13T13:53:45.388492+00:00` 至 `2026-07-14T13:53:45.388492+00:00`。
|
||||
|
||||
- 盈利池净收入:`$119.90406516`。
|
||||
- 盈利池采购成本:`$44.38306157975`。
|
||||
- 自用池采购成本:`$61.16283474975`。
|
||||
- 不扣自用利润:`$75.52100358025`。
|
||||
- 扣除自用利润:`$14.3581688305`。
|
||||
- 完整性:`complete`。
|
||||
- 缺失成本账号:0。
|
||||
- 未分类流量:0。
|
||||
- 缺失运行时分组:0。
|
||||
- JSON 输出:`outputTruncated=false`,共 17 个分组账号聚合项。
|
||||
|
||||
## 账号证据摘要
|
||||
|
||||
盈利池主要利润贡献:
|
||||
|
||||
- `https://api.iceiu.com plus 0.03`:`$25.27732641`。
|
||||
- `https://ai.whistlelads.com plus 0.03`:`$16.292410547`。
|
||||
- `https://sub2.pokexiao.com plus 0.03`:`$15.9759602345`。
|
||||
- `https://sub.yjxm1221.top plus 0.025`:`$14.09999392875`。
|
||||
- `lyon9801 0.10`:`$0`,符合净收入系数与采购成本系数相同的零利润口径。
|
||||
|
||||
自用池主要成本:
|
||||
|
||||
- `https://api.iceiu.com plus 0.03`:`$21.6630541425`。
|
||||
- `lyon9801 0.10`:`$19.564363`。
|
||||
- `https://sub2.pokexiao.com plus 0.03`:`$11.2459306335`。
|
||||
|
||||
## 验证
|
||||
|
||||
- 相关 TypeScript 文件全部通过 `bun --check`。
|
||||
- YAML parser 读取到 `defaultWindow=24h`、`netRevenueCoefficient=0.1` 和三类分组。
|
||||
- `git diff --check` 通过。
|
||||
- PK01 原入口文本表格成功。
|
||||
- PK01 显式 JSON 成功且未触发输出截断。
|
||||
@@ -0,0 +1,29 @@
|
||||
# R2.2.7 任务报告
|
||||
|
||||
## 结论
|
||||
|
||||
已按职责拆分超过 3000 行的 `remote-python-sync.ts`,并通过 [PR #2032](https://github.com/pikasTech/unidesk/pull/2032) 合并到 `master`。合并提交为 `75984f2562bffda7f984fda57ac1f7fa775fecb7`。
|
||||
|
||||
## 变更
|
||||
|
||||
- 公共 remote Python 运行时迁入 `remote-python-core.ts`。
|
||||
- sentinel 状态、validate/capability、sync/validate 入口、trace、sentinel-probe/dispatcher 分别迁入独立模块。
|
||||
- `remote-python-sync.ts` 仅保留原顺序拼装入口。
|
||||
- 主文件为 20 行,新文件最大 1219 行,全部低于 2000 行。
|
||||
- 未修改 runtime、YAML、账号、proxy、调度和部署。
|
||||
|
||||
## v0.1.147 兼容性
|
||||
|
||||
- PK01 真实运行面确认使用 Sub2API `v0.1.147`。
|
||||
- 拆分前后生成的完整 remote Python 模板均为 148,417 bytes。
|
||||
- 拆分前后 SHA-256 均为 `df4336595acaba637a132c8c6e9a25e6048f3534d2ad5536c2640b0076331101`。
|
||||
- 因生成脚本字节级一致,v0.1.147 的客户端回退、`unsupported/unverified` 投影、有界过滤和现有运行语义保持不变,不依赖升级。
|
||||
|
||||
## 验证
|
||||
|
||||
- 7 个相关 TypeScript 文件逐一通过 `bun --check`。
|
||||
- `git diff --check` 通过。
|
||||
- `platform-infra sub2api status --target PK01` 健康并显示镜像 `0.1.147`。
|
||||
- `codex-pool runtime list --target PK01` 只读入口成功。
|
||||
- 不存在 request ID 的 trace 返回预期有界未命中。
|
||||
- sentinel 未部署时保持既有 `unavailable` 语义。
|
||||
@@ -0,0 +1,25 @@
|
||||
# R2.3 任务报告
|
||||
|
||||
## 结论
|
||||
|
||||
已完成 PK01 Sub2API 原生 system-log 策略事件索引缺口的只读调查,完整证据见 [Issue #2027 调查结论](https://github.com/pikasTech/unidesk/issues/2027#issuecomment-4968617404)。调查以当前真实运行面 `v0.1.147` 为主证据,`v0.1.155` 仅用于源码差异参考;未修改代码、runtime、YAML、账号、proxy、调度,未发探针、未部署。
|
||||
|
||||
## 根因分层
|
||||
|
||||
- `openai.upstream_failover_switching`、`openai.account_select_failed`、`openai.forward_failed` 是 warning/error 事件,已真实写入 v0.1.147 的 `ops_system_logs`,并可按 request ID 从原生 admin/ops API 查询。
|
||||
- `account_temp_unschedulable` 在 v0.1.147 中以 INFO 发出;`OpsSystemLogSink.shouldIndex` 只接收 warning/error/fatal 等级或特定组件,因此该事件在进入 sink 队列前被过滤。
|
||||
- 临时不可调度事件还缺少 `request_id`、`client_request_id`、用户、API key、分组、模型等上下文字段,即使单纯纳入索引,也不能稳定完成逐请求归因。
|
||||
- v0.1.155 仍以 INFO 发出该事件,sink 等级过滤规则未改变,因此升级不能直接解决。
|
||||
- 当前容器在回退 v0.1.147 时重建,容器日志只能覆盖重建后窗口;当前无 `max-size/max-file`,但容器替换后没有稳定历史保留合同,不能替代数据库索引。
|
||||
|
||||
## CLI 现状与候选
|
||||
|
||||
- `codex-pool feedback --user ... --request-id ...` 已是近期 request-scoped 原生 system-log 的可靠入口。
|
||||
- `runtime errors` 能读取 host-Docker 容器日志,但当前主要输出账号级聚合。
|
||||
- `codex-pool trace` 在 PK01 host-Docker 上仍硬编码 `kubectl logs`,会产生 false not-found;应独立修复为复用 `runtime_logs()`。
|
||||
- 可独立增加只读 `platform-infra sub2api ops system-logs`,封装 v0.1.147 已有 `q`、request ID、账号、时间范围和固定分页合同。
|
||||
- 若要求临时不可调度稳定入库和逐请求关联,需要 Sub2API 上游源码增加策略事件 allowlist,并补齐请求上下文字段;不建议仅把 INFO 粗暴升为 WARN。
|
||||
|
||||
## 裁决
|
||||
|
||||
PK01 可继续保持 v0.1.147。failover、账号选择失败和 forward failure 的可见性优化不需要上游源码变更;临时不可调度的稳定数据库索引和逐请求关联需要上游源码变更,但不属于本只读任务实现范围。Issue #2027 已关闭。
|
||||
@@ -45,10 +45,10 @@
|
||||
|
||||
实现统一附件元数据、对象引用、可替换存储端口、完整性校验、授权 API 和 CLI;附件使用 UUIDv7 平级资源身份,业务对象仅通过 typed ID 关联,执行记录见 [pikasTech/unidesk#1991](https://github.com/pikasTech/unidesk/issues/1991),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.3.6_Task_Report.md)。
|
||||
|
||||
#### R1.3.7
|
||||
#### R1.3.7 [in_progress]
|
||||
|
||||
实现合同与合同版本平级 UUIDv7 REST 资源,通过 contractId、previousVersionId、currentVersionId 建立 ID 关系,保证版本不可变、并发序号唯一、附件关联和全量 CLI,执行记录见 [pikasTech/unidesk#1992](https://github.com/pikasTech/unidesk/issues/1992),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.3.7_Task_Report.md)。
|
||||
#### R1.3.8
|
||||
#### R1.3.8 [in_progress]
|
||||
|
||||
实现平级 UUIDv7 发票资源,通过 partnerId、contractId、contractVersionId 和 attachmentId 建立关联,支持定点金额、typed 一致性校验、不可删除废弃事实、筛选汇总和全量 CLI,执行记录见 [pikasTech/unidesk#1993](https://github.com/pikasTech/unidesk/issues/1993),完成任务后将详细报告写入[任务报告](./details/pikaoa-enterprise-platform/R1.3.8_Task_Report.md)。
|
||||
#### R1.3.9 [in_progress]
|
||||
|
||||
@@ -52,6 +52,9 @@
|
||||
|
||||
冻结 [#1802](https://github.com/pikasTech/unidesk/issues/1802) / [#1769](https://github.com/pikasTech/unidesk/issues/1769) 的交付合同:定义 admission-owned outer-event provenance、标准 terminal roles/results、父子运行归属、commit/digest 关联和 fail-closed 判定,明确 YAML owner 与 controller 职责,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R4.1_Task_Report.md)。
|
||||
|
||||
#### R4.1.1 [in_progress]
|
||||
|
||||
解决 [UniDesk #2039](https://github.com/pikasTech/unidesk/issues/2039):分层确认 AgentRun #358 合并后无 PipelineRun 是 webhook/mirror 缺口、只读 status 假阻塞还是 admission 实际拒绝;保留 #1769 对伪造 marker、错误 creator 和未授权 ServiceAccount 的真实安全拒绝,将 live spec/config SHA、API defaulting、版本及等价一致性漂移降级为结构化非阻塞 warning,禁止人工 mirror、PipelineRun、trigger、sync、flush 或 apply,并用修复 PR 的新真实 merge 事件验收自动交付,完成任务后将详细报告写入任务报告,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R4.1.1_Task_Report.md)。
|
||||
### R4.2
|
||||
|
||||
依赖 R4.1,让 YAML-owned pipeline 输出标准 terminal evidence,由单一 controller 自动 reconcile GitOps;Argo/status 必须针对同一 GitOps repository 和 commit graph 验证 exact/descendant,并把 source、artifact、GitOps、revision、runtime digest 形成可审计链,完成任务后将详细报告写入[任务报告](./details/pr-merge-driven-automatic-delivery/R4.2_Task_Report.md)。
|
||||
|
||||
@@ -23,3 +23,7 @@
|
||||
## R3 [in_progress]
|
||||
|
||||
依据 [UniDesk #2007](https://github.com/pikasTech/unidesk/issues/2007) 为 pikainc/selfmedia release 分支建立独立生产 PaC/GitOps 流水线:master 保持开发 consumer,release 精确驱动独立生产 namespace、Pipeline、GitOps branch/Application、runtime/PVC/Secret 与 YAML-first 公网端口;禁止 branch follower、手工同步和共享可写状态,以正常 release PR merge 验收生产公网入口、登录、digest 与 health,完成任务后将详细报告写入[任务报告](./details/selfmedia-production-delivery/R3_Task_Report.md)。
|
||||
|
||||
### R3.1 [in_progress]
|
||||
|
||||
按用户最新要求将非选中 consumer 的全局配置一致性错误降级为结构化 non-blocking warning,避免开发 source-artifact/状态/交付被生产配置阻塞;当前选中 target/consumer 的字段、权限、ownership 与安全校验仍 fail-closed,并由定向测试证明两类边界,完成任务后将详细报告写入[任务报告](./details/selfmedia-production-delivery/R3.1_Task_Report.md)。
|
||||
|
||||
@@ -38,9 +38,10 @@
|
||||
#### R2.2.6 [completed]
|
||||
|
||||
继续纯分析 Sub2API timeout 与 failover:按所有分组、模型、账号和请求类型定位超长 TTFT 与客户错误,区分响应头前等待、流式提交后失败和无候选,评估观测下限是否可能缓解且不做配置实验或运行面变更,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.6_Task_Report.md)。
|
||||
#### R2.2.7
|
||||
#### R2.2.7 [completed]
|
||||
|
||||
按仓库 P0 拆分超过 3000 行的 `remote-python-sync.ts`,关联 [Issue #2026](https://github.com/pikasTech/unidesk/issues/2026):把大段内嵌 Python 按 trace、sync/validate 与 sentinel 职责迁入原生模块,单文件收敛到 2000 行以下,并保持受控 CLI 行为与只读诊断契约不变,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.7_Task_Report.md)。
|
||||
|
||||
按仓库 P0 拆分超过 3000 行的 `remote-python-sync.ts`:把大段内嵌 Python 按 trace、sync/validate 与 sentinel 职责迁入原生模块,单文件收敛到 2000 行以下,并保持受控 CLI 行为与只读诊断契约不变,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.7_Task_Report.md)。
|
||||
#### R2.2.8 [completed]
|
||||
|
||||
增强 Sub2API CLI 的上游账号粒度质量分析与自动评分:使用原生 Ops 归因账号请求量、客户/上游错误、触发切号、切号结果、同账号重试、临时不可调度和首字延迟覆盖率/分位数,输出可解释评分、置信度和扣分原因;只做分析,不自动修改账号 runtime 或调度配置,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.8_Task_Report.md)。
|
||||
@@ -59,7 +60,7 @@
|
||||
#### R2.2.13 [completed]
|
||||
|
||||
向当前PK01全部非 lyon9801 OpenAI账号精准批量下发 codex-upstream-failover 统一临时不可调度模板:从runtime账号清单固定显式selector,排除lyon9801,先dry-run再confirm并逐账号对账,不修改分组、优先级、容量、proxy或凭据,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.13_Task_Report.md)。
|
||||
#### R2.2.14 [in_progress]
|
||||
#### R2.2.14 [completed]
|
||||
|
||||
由 Artificer 实现 Sub2API runtime 精准批量 CRUD 的命令内自动回读对账:confirm 后批量回读全部selector并输出write result、actual、reconciled、mismatch和部分写入摘要,避免外部逐账号get;关联 [GitHub issue #1998](https://github.com/pikasTech/unidesk/issues/1998),完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.14_Task_Report.md)。
|
||||
#### R2.2.15 [completed]
|
||||
@@ -69,32 +70,63 @@
|
||||
#### R2.2.16 [completed]
|
||||
|
||||
紧急只读追踪用户 mail0795336304@163.com 反馈请求卡住15分钟:定位用户ID、近30分钟请求、当前长请求/并发、request ID、账号与模型,区分排队、上游首字、流式间隔、代理网络或客户连接,不取消请求且不修改runtime、YAML、proxy或调度,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.16_Task_Report.md)。
|
||||
#### R2.2.17 [in_progress]
|
||||
#### R2.2.17 [completed]
|
||||
|
||||
复盘用户直接反馈的只读追踪过程并交由 Artificer 实现 [Issue #2000](https://github.com/pikasTech/unidesk/issues/2000):增加通用的一键用户追踪 CLI,以邮箱或用户ID关联请求空窗、用户/API Key并发、client/internal request ID、上游账号名称、proxy基础设施和证据化归因,采用Kubernetes列表风格与稳定ID渐进披露,减少手工API与重复trace调用,不改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.17_Task_Report.md)。
|
||||
#### R2.2.18 [completed]
|
||||
|
||||
将 PK01 的 Sub2API 通过 owning YAML 从 v0.1.153 受控升级到 v0.1.155:只修改 PK01 target镜像版本,依次执行状态核对、plan、apply dry-run、镜像预拉、受控apply、状态与公开健康验证,保持账号池runtime和Codex pool配置原样,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.18_Task_Report.md)。
|
||||
#### R2.2.19 [in_progress]
|
||||
#### R2.2.19 [completed]
|
||||
|
||||
交由 Artificer 实现 [Issue #2004](https://github.com/pikasTech/unidesk/issues/2004):增强 Sub2API CLI 拉取 v0.1.155 原生智能诊断与渠道监控状态,泛化所有分组/渠道概要和指定对象下钻,以Kubernetes列表风格呈现TTFT、上游与客户错误率、原生建议和证据边界,以及7/15/30天渠道运行状态、平台/模型、对话延迟、端点PING、可用率、最近记录和刷新事实,使用稳定ID渐进披露,不重算第二套诊断且不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.19_Task_Report.md)。
|
||||
|
||||
#### R2.2.20 [completed]
|
||||
|
||||
快速缓解错误 #17440:基于 request e5c08dde-9e60-4a14-9458-5574cec00b65 的真实链路,将精确短语 Input must be a list 补入通用 504 临时不可调度规则,对全部非 lyon9801 账号精准批量 dry-run、确认下发和自动回读对账,不改容量、优先级、代理或 Sub2API 源码,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.20_Task_Report.md)。
|
||||
#### R2.2.21 [in_progress]
|
||||
#### R2.2.21 [completed]
|
||||
|
||||
交由 Artificer 实现 [Issue #2013](https://github.com/pikasTech/unidesk/issues/2013):定义并实现 Sub2API P0/P1/P2 故障快速查询 CLI,P0 为上游故障穿透客户,P1 为首字延迟偏高且普通与 compact 分开统计并突出极端离群,P2 为上游错误率偏高;支持所有分组概要与按等级、分组、账号名称、模型、请求类型、稳定 request ID 下钻,默认 Kubernetes 列表风格和固定分页,不靠手工 limit,不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.21_Task_Report.md)。
|
||||
|
||||
#### R2.2.22 [completed]
|
||||
|
||||
主代理只读追踪客户错误 #17490(request ID 4eb9a84b-7346-47a8-bb66-fb7b44317279):使用 Sub2API 原生 Ops、trace、账号完整名称、failover/retry/临时不可调度和近期窗口证据,定位账号 https://sub2.pokexiao.com plus 0.03 的同步502为何穿透客户,区分候选耗尽、context取消、不可重试阶段或模板未命中;先调查,不盲目新增generic 502规则,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.22_Task_Report.md)。
|
||||
#### R2.2.23 [in_progress]
|
||||
#### R2.2.23 [completed]
|
||||
|
||||
交由 Artificer 实现 [Issue #2016](https://github.com/pikasTech/unidesk/issues/2016):增强 CLI 对 Sub2API 内部账号/渠道监控的原生只读访问,展示探测 timeout、cadence、阶段耗时、账号选择、上游首字节、切号/重试和最终状态,支持所有监控对象概要与稳定 ID 下钻,默认 Kubernetes 列表风格且不靠手工 limit;不修改运行面、不发新探针,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.23_Task_Report.md)。
|
||||
#### R2.2.24 [completed]
|
||||
|
||||
只读调查错误 #17511(request ID `f7ff0efe-64d3-4dd7-8716-20bdfc3a2f90`)为何上游 502 后未成功切号,重建流式请求的账号选择、首字节、响应提交、failover、排除列表、context deadline 与最终客户错误链,并与内部 monitor 请求 #17490 对照,不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.24_Task_Report.md)。
|
||||
### R2.3
|
||||
#### R2.2.25 [completed]
|
||||
|
||||
调查并收敛 Sub2API 原生 system-log 索引未保留策略事件的能力缺口,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.3_Task_Report.md)。
|
||||
将 PK01 Sub2API 从 v0.1.155 受控回退到 v0.1.147:只修改 owning YAML 版本事实,在最新 master 的独立干净 worktree提交并通过受控 GitHub PR 合并,随后使用原 platform-infra Sub2API 交付入口完成 PK01 rollout,并核验实际镜像、版本、健康状态和原入口可用性,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.25_Task_Report.md)。
|
||||
#### R2.2.26 [completed]
|
||||
|
||||
只读执行 PK01 Sub2API 最近4小时所有分组的上游账号质量评分:使用原生 Ops 账号请求量、客户/上游错误、切号、重试、临时不可调度、TTFT 和当前可用性,完整报告账号名称、评分、等级、置信度和扣分原因;兼容 v0.1.147,不修改 runtime、YAML 或调度配置,完成任务后将详细报告写入任务报告,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.26_Task_Report.md)。
|
||||
#### R2.2.27 [in_progress]
|
||||
|
||||
交由 Artificer 实现 [Issue #2035](https://github.com/pikasTech/unidesk/issues/2035):增强 Sub2API 最近窗口账号质量分析,在同一分组、同一账号、同一窗口的一张 Kubernetes 列表中聚合展示评分/等级/置信度/失败率/TTFT 与请求数/Token(M/B)/金额($);复用 v0.1.147 原生 admin usage 分页,JSON 保留精确值与来源,字段缺失不伪造为零,并修复 `--group <id>` 精确下钻错误,不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.27_Task_Report.md)。
|
||||
|
||||
#### R2.2.28 [completed]
|
||||
|
||||
只读核查 PK01 Sub2API 当前全部 OpenAI 上游账号的实际 priority、分组成员关系、可调度与可用状态,并结合最近4小时分组内评分、失败率、TTFT、Token和金额给出分层的推荐优先级调整方案;报告完整账号名称,区分立即建议、观察建议和证据不足,不直接修改 runtime、YAML或调度配置,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.28_Task_Report.md)。
|
||||
#### R2.2.29 [completed]
|
||||
|
||||
按 R2.2.28 的最近4小时评分与用量结论,精准调整 PK01 Sub2API 账号全局 priority:只更新明确列出的 runtime-manual 账号,变更前全量预检、失败自动回滚、变更后批量回读对账;不修改分组、容量、代理、凭据、状态、可调度或临时不可调度规则,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.29_Task_Report.md)。
|
||||
#### R2.2.30 [in_progress]
|
||||
|
||||
交由 Artificer 实现 [Issue #2037](https://github.com/pikasTech/unidesk/issues/2037):为 Sub2API runtime 接入账号全局 priority 的单账号与精准批量 dry-run/confirm、所有 selector 预检、写后自动回读对账、所有权提示和 Kubernetes 列表/显式 JSON 输出;明确 lower-is-higher、没有分组优先级,兼容 v0.1.147,不自动调整评分、不部署或修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.30_Task_Report.md)。
|
||||
#### R2.2.31 [completed]
|
||||
|
||||
只读复核 PK01 Sub2API 全局 priority 调整生效后约25分钟的新窗口:按全部分组和完整账号名称统计请求量、流量份额、客户/上游错误、失败率、TTFT、切号、Token与原生金额,并将账号名称尾部0.02/0.025/0.03/0.05/0.06/0.1作为上游采购成本权重综合评价当前分层,给出下一轮优先级建议;不修改运行面,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.31_Task_Report.md)。
|
||||
#### R2.2.32 [completed]
|
||||
|
||||
按用户确认的经济口径修正 PK01 Sub2API runtime:将账号15名称从lyon9801标注为lyon9801 0.10,并按净售价0.10减采购成本重新调整全局priority,将零毛利账号15从1降至20、将成本0.02且近期表现良好的账号35从20升至5;执行前校验名称/旧值,变更后回读,不修改分组、容量、代理、凭据、状态、可调度或临时不可调度规则,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.32_Task_Report.md)。
|
||||
#### R2.2.33 [completed]
|
||||
|
||||
实现 YAML-first 的 Sub2API 利润统计 CLI:默认读取最近24小时原生 admin usage,按账号完整名称聚合请求、Token(M/B)和 actual_cost,并依据 YAML 声明的盈利分组、自用分组、净收入系数与账号名称尾部采购成本系数,输出不扣除自用成本和扣除自用成本两种利润口径;缺失成本或未分类流量必须标记 partial,默认 Kubernetes 列表风格、显式 --json 保留精确值,兼容 v0.1.147,不修改 runtime,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.33_Task_Report.md)。
|
||||
#### R2.2.34 [in_progress]
|
||||
|
||||
纠正 Sub2API 利润 CLI 的币种与倍率语义:原生 actual_cost 是标准 API 美元计费基数,售价 0.10 和账号名称尾部 0.02/0.025/0.03/0.05/0.06/0.10 都表示每 1 美元标准 API 计费对应的人民币单价;将 YAML、字段名、Kubernetes 表格、JSON 和 skill 统一改为 CNY per API USD,重新统计最近24小时人民币利润,不做汇率换算且不修改 runtime,完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.2.34_Task_Report.md)。
|
||||
### R2.3 [completed]
|
||||
|
||||
调查并收敛 Sub2API 原生 system-log 索引未保留策略事件的能力缺口,关联 [Issue #2027](https://github.com/pikasTech/unidesk/issues/2027),完成任务后将详细报告写入[任务报告](./details/sub2api-upstream-reliability/R2.3_Task_Report.md)。
|
||||
|
||||
Reference in New Issue
Block a user