@uzooai/anime-ai-cli 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.agents/skills/uzoo-anime-cli/SKILL.md +10 -4
  2. package/.agents/skills/uzoo-anime-cli/references/agreement-workflow.md +0 -10
  3. package/.agents/skills/uzoo-anime-cli/references/commands.md +8 -16
  4. package/.agents/skills/uzoo-anime-cli/references/generation-workflow.md +3 -13
  5. package/.agents/skills/uzoo-anime-cli/references/image-tools-workflow.md +5 -27
  6. package/.agents/skills/uzoo-anime-cli/references/interaction-workflow.md +1 -1
  7. package/.agents/skills/uzoo-anime-cli/references/material-graph-workflow.md +7 -17
  8. package/.agents/skills/uzoo-anime-cli/references/node-capabilities.md +19 -50
  9. package/.agents/skills/uzoo-anime-cli/references/node-workflow.md +3 -7
  10. package/.agents/skills/uzoo-anime-cli/references/remake-workflow.md +1 -1
  11. package/.agents/skills/uzoo-anime-cli/references/repaint-workflow.md +7 -294
  12. package/.agents/skills/uzoo-anime-cli/references/seedance-review-workflow.md +1 -5
  13. package/.agents/skills/uzoo-anime-cli/references/video-tools-workflow.md +3 -7
  14. package/CHANGELOG.md +8 -87
  15. package/README.md +26 -222
  16. package/docs/Agent/346/216/245/345/205/245/344/270/216/347/211/210/346/234/254/346/233/264/346/226/260.md +43 -0
  17. package/package.json +9 -12
  18. package/src/cli.js +5 -0
  19. package/src/group-membership.js +0 -1
  20. package/src/install.js +237 -0
  21. package/assets/README.md +0 -4
  22. package/docs/CLI/345/275/223/345/211/215/350/214/203/345/233/264/344/270/216/346/234/254/345/234/260/346/211/223/345/214/205-20261103.md +0 -134
  23. package/docs/CLI/346/216/210/346/235/203/346/216/245/345/217/243/344/270/216/344/273/244/347/211/214/350/207/252/345/212/250/345/210/267/346/226/260/350/256/276/350/256/241.md +0 -540
  24. package/docs/CLI/347/274/272/345/217/243/346/240/270/345/257/271/344/270/216/346/224/266/345/260/276-20261105.md +0 -65
  25. package/docs/CLI/347/275/221/351/241/265/344/277/235/345/255/230/350/212/202/347/202/271/347/274/272/345/244/261/344/272/244/346/216/245.md +0 -52
  26. package/docs/M0-M5/345/256/236/346/226/275/344/270/216/351/252/214/346/224/266.md +0 -89
  27. package/docs/npm/347/272/277/344/270/212/345/217/221/345/270/203/344/270/216/345/256/211/350/243/205/344/275/277/347/224/250.md +0 -151
  28. package/docs//344/270/213/350/275/275/346/216/245/345/217/243/351/200/202/351/205/215/344/270/216/351/252/214/346/224/266.md +0 -107
  29. package/docs//344/270/232/345/212/241/350/203/275/345/212/233/350/241/245/345/205/250/344/270/216Skill/347/273/223/346/236/204/350/247/204/345/210/222.md +0 -311
  30. package/docs//345/205/250/345/261/200/351/231/204/344/273/266/350/265/204/346/272/220/345/234/260/345/235/200/344/270/216/346/250/241/345/236/213/350/257/273/345/217/226/345/267/256/345/274/202.md +0 -47
  31. package/docs//345/206/205/351/203/250Windows/345/256/211/350/243/205/344/270/216/345/215/207/347/272/247/351/252/214/346/224/266/346/270/205/345/215/225.md +0 -34
  32. package/docs//345/233/276/347/211/207/346/212/240/345/233/276/346/216/245/345/205/245/344/270/216/351/252/214/346/224/266-20261104.md +0 -110
  33. package/docs//345/274/200/345/217/221/350/256/241/345/210/222.md +0 -127
  34. package/docs//345/274/202/346/255/245/346/212/240/345/233/276CLI/346/235/203/351/231/220/344/272/244/346/216/245-20261105.md +0 -50
  35. package/docs//345/274/202/346/255/245/346/212/240/345/233/276/347/234/237/345/256/236/351/252/214/346/224/266-20261105.md +0 -44
  36. package/docs//346/226/260/344/274/232/350/257/235/344/273/273/345/212/241/344/272/244/344/273/243-/351/230/266/346/256/2652A.md +0 -79
  37. package/docs//346/226/260/351/203/250/347/275/262/347/224/273/345/270/203/345/206/262/347/252/201/351/252/214/346/224/266-20261102.md +0 -61
  38. package/docs//346/231/256/351/200/232/346/265/217/350/247/210/345/231/250/347/231/273/345/275/225.md +0 -53
  39. package/docs//346/255/243/345/274/217/347/253/231/345/210/207/346/215/242/344/270/216/351/252/214/346/224/266-20261104.md +0 -90
  40. package/docs//347/224/273/345/270/203CLI/344/270/213/344/270/200/351/230/266/346/256/265/345/274/200/345/217/221/350/256/241/345/210/222.md +0 -136
  41. package/docs//347/224/273/345/270/203CLI/351/235/236/350/275/254/347/273/230/345/256/214/345/226/204/350/256/241/345/210/222.md +0 -183
  42. package/docs//347/224/273/345/270/203/350/203/275/345/212/233/345/245/221/347/272/246/346/240/270/345/257/271.md +0 -59
  43. package/docs//347/234/237/345/256/236/344/270/232/345/212/241/346/216/245/345/205/245/344/270/216/346/265/213/350/257/225.md +0 -1004
  44. package/docs//347/264/240/346/235/220/345/205/245/345/272/223/344/270/216/347/224/273/345/270/203/344/277/235/345/255/230/351/227/256/351/242/230/345/256/232/344/275/215.md +0 -52
  45. package/docs//351/230/266/346/256/2653B/351/252/214/346/224/266/344/272/244/346/216/245.md +0 -44
  46. package/docs//351/230/266/346/256/265/344/270/200/351/252/214/346/224/266.md +0 -60
  47. package/docs//351/235/236/350/275/254/347/273/230/346/214/201/347/273/255/345/256/214/345/226/204/344/270/216/351/252/214/346/224/266-20261103.md +0 -76
  48. package/docs//351/235/236/350/275/254/347/273/230/347/254/254/344/272/214/346/211/271/345/256/236/346/226/275/344/270/216/351/252/214/346/224/266.md +0 -39
  49. package/docs//351/235/236/350/275/254/347/273/230/350/241/245/345/205/205/346/235/241/344/273/266/351/252/214/346/224/266-20261103.md +0 -113
  50. package/docs//351/235/236/350/275/254/347/273/230/351/246/226/346/211/271/345/256/236/346/226/275/344/270/216/351/252/214/346/224/266.md +0 -71
  51. package/examples/real-business/image-request.template.json +0 -7
  52. package/examples/real-business/node-patch.template.json +0 -11
  53. package/scripts/check-package-resources.mjs +0 -56
  54. package/scripts/check-release.mjs +0 -19
  55. package/scripts/pack-local.mjs +0 -33
  56. package/scripts/release-policy.mjs +0 -22
@@ -1,127 +0,0 @@
1
- # CLI 与配套 Skill 三阶段开发计划
2
-
3
- 2026-10-31最新安排:用户决定转绘重新设计,CLI转绘开发及专项补验暂停。后续顺序以[当前非转绘完善计划](画布CLI非转绘完善计划.md)为准;本文件旧路线和M0–M5目标保留为历史,不自动续做转绘、多段或附件。整片拼接没有画布入口,移出当前必做项;独立转绘页面仍不接入。
4
-
5
- 2026-10-31:[M0–M5实施与验收](M0-M5实施与验收.md)记录本轮导出/归档、逐项调度和安装验证交付及未完成条件。
6
-
7
- 2026-10-31:后续画布业务开发以[画布 CLI 下一阶段开发计划](画布CLI下一阶段开发计划.md)的里程碑、依赖与验收为准;本文件保留原认证与分发路线及历史记录。
8
-
9
- 2026-10-31范围约定:视频转绘只接入画布内流程。独立「视频转绘」页面及其独立生成准备/素材选择/排序/生成均标为未接入,暂不实现;不纳入当前业务接入开发计划。
10
-
11
- 更新日期:2026-10-27
12
-
13
- ## 目标与范围
14
-
15
- 从现有 API 验证 demo 逐步发展为可内部使用、再到可正式分发的 CLI 与配套 skill。CLI 独立放在 `anime-ai-cli`;后端为 `anime-ai-engine`,业务前端为 `uzooAl-frontend`。参考实现放在 `pippit-cli-reference`,仅供设计对照。
16
-
17
- 本文件是开发路线与验收约定,不表示所列能力已经实现。接口细节以开发时核对的服务端实现为准;完成度采用验收项记录,不以主观百分比作为发布依据。
18
-
19
- 2026-10-29:当前 CLI + skill 按前端真实业务逐路线补全的优先级、依赖、交付标准及 skill 结构建议,见 [业务能力补全与 Skill 结构规划](业务能力补全与Skill结构规划.md)。该规划补充本文件,不重新打开用户已确认通过的 B/C/D 验收,也不表示已经执行待办或获得收费测试授权。
20
-
21
- ## 阶段与改动边界
22
-
23
- | 阶段 | 目标 | CLI / skill | 后端 | 现有业务前端 |
24
- |---|---|---|---|---|
25
- | 一 | 内部 CLI MVP,完成生成闭环 | 开发 | 不修改 | 不修改 |
26
- | 二(2A/2B) | 兼容双类别会话层、CLI 授权协议 | E1/契约对接 | 改造分端会话并新增授权接口 | 本阶段不改;仅验证后端契约 |
27
- | 三(3A/3B) | 网页/CLI 接入、联调灰度与正式分发 | 授权码、自刷新、发布 | 联调、设备/审计、开关与回滚 | 增加授权页,展示双端在线与同类替换 |
28
-
29
- 阶段二不承诺在现有前端完全不改、也不新增授权页面的条件下实现完整网页登录回调。后端具备换码接口并不意味着浏览器已能完成授权;若新增独立授权页,应明确计入新增网页代码的范围。
30
-
31
- ## 阶段一:不改前后端,完成内部 MVP
32
-
33
- ### 开发内容
34
-
35
- - 完善 CLI 参数校验、帮助、稳定 JSON 输出、错误码、退出码、超时与取消处理。
36
- - 保留导入现有登录态作为过渡入口,完善 profile 隔离、刷新令牌轮换与 `/auth/sign-session` 恢复;敏感凭据不出现在日志或错误输出中。
37
- - 复用 S1 签名;画布请求携带 `X-Client-Source: canvas`,补充查询参数、请求体和上传相关协议测试。
38
- - 完善账号、模型、画布、任务及团队/个人空间参数查询与上下文传递。
39
- - 接入现有上传会话、预签名上传、完成确认与资源引用流程。
40
- - 接入费用预估与生成提交;执行前提供估价和明确授权入口,skill 遵循用户授权范围。
41
- - 核对并使用现有 `Idempotency-Key` 契约;在提交前持久化幂等键与请求上下文,记录 task ID。响应丢失或超时后查询原任务,避免重复扣费。
42
- - 完善轮询、任务恢复、日志、失败信息和产物下载,校验下载状态与文件完整性,避免把错误响应当成媒体文件。
43
- - 将敏感凭据迁移至系统安全存储;普通配置与凭据分离。不可用时明确报错,不静默回退到明文长期凭据。
44
- - 扩展 skill 的命令文档、异步任务工作流、示例与行为约束,并补充安装和运行说明。
45
-
46
- ### 验收标准
47
-
48
- - 在测试环境完成“导入登录态 → 模型查询 → 上传 → 估价 → 授权提交 → 等待 → 下载”的完整闭环。
49
- - 验证 access token 过期、刷新轮换、签名恢复、提交响应丢失、轮询超时和重新启动后的任务恢复。
50
- - 本地 mock 与契约测试覆盖签名、上下文、上传、幂等提交、下载失败及稳定输出;真实扣费测试须获得用户明确授权。
51
- - 前后端业务仓库没有因本阶段发生代码改动;CLI 文档明确仍需手工导入登录态。
52
-
53
- ## 阶段二:后端增加 CLI 授权与长期会话能力
54
-
55
- 具体接口、E1/S1 兼容、授权码兑换、自刷新和分阶段验收见 [CLI 授权接口与令牌自动刷新设计](CLI授权接口与令牌自动刷新设计.md) 第 7、10 节。目标调整为每账号一个网页会话与一个 CLI 会话独立在线,同类仍只允许一处登录;普通退出按类别,账号安全撤销覆盖两类。当前运行限制在代码实现和验收前保持不变。
56
-
57
- 实施顺序固定为 2A(兼容会话层)→2B(后端授权接口)→3A(网页与 CLI 接入)→3B(回归、灰度与回滚)。2A 先保留旧网页键/JWT 兼容,全部鉴权和会话写入实例升级完成前不启用公开 CLI 类别。
58
-
59
- 新会话从阶段 2A 动工的任务交代与已拉取基线见 [新会话任务交代:阶段 2A](新会话任务交代-阶段2A.md)。
60
-
61
- ### 后端开发内容
62
-
63
- - 2A:按服务端可信 web/cli 类别隔离 sid、JTI、刷新恢复和签名状态;网页保留旧键,旧 JWT 无类别视为 web。覆盖普通/可选/WebSocket 鉴权、退出日志、设备列表与全局撤销。
64
- - 2B:定义 CLI 授权请求、短期一次性授权码与换码接口,采用 PKCE S256,并绑定授权请求、账号、客户端及回调地址。
65
- - 明确回环地址校验规则、授权码有效期、单次消费和重放拒绝规则;CLI 生成并校验随机 `state`。
66
- - 换码成功后交付 CLI 专用会话:短期 access token 与可轮换、可撤销的长期刷新凭据,绑定 CLI 类别与设备归属,保留网页会话;第一期沿用既有账号权限,细粒度 scope 未实现前不对外承诺。
67
- - 明确刷新、轮换、过期、撤销、重放检测及签名会话恢复的协议,避免依赖复制浏览器 Cookie。
68
- - 提供授权协议文档和测试环境;具体路由与字段在契约评审后确定,不在计划中假定已有接口。
69
-
70
- ### CLI 与网页入口
71
-
72
- - CLI 实现本机 `127.0.0.1` 临时回调服务、等待超时、取消、状态校验、授权码兑换和安全存储。
73
- - 回调 URL 仅携带短期授权码与状态,不携带 access token、refresh token 或签名密钥。
74
- - 现有业务前端可保持不变,但浏览器授权必须有受支持的入口:独立授权页或其他明确实现的网页桥接流程。缺少入口时,仅验收后端协议与 CLI 集成测试,不宣称网页登录完成。
75
-
76
- ### 验收标准
77
-
78
- - 换码单次有效,PKCE 不匹配、过期码、重复兑换与非法回调被拒绝。
79
- - 网页与 CLI 可独立刷新,同类新登录仅替换同类;普通退出不影响另一类,全局撤销覆盖两类。
80
- - CLI 重启后可恢复会话,刷新轮换后保存最新凭据;退出与撤销后的行为有明确测试。
81
- - 凭据不出现在回调 URL、普通配置、日志和 skill 输出中。
82
- - 明确记录网页入口是否交付,以及阶段三需要接入的契约。
83
-
84
- ## 阶段三:完整网页登录回调与正式分发
85
-
86
- ### 开发内容
87
-
88
- - 现有前端新增 CLI 授权页面或登录模式,登录后返回授权上下文并展示账号、设备、网页保持在线与旧 CLI 可能被替换的确认。
89
- - 前后端共同校验授权请求与回调目标,完成一次性授权码回调;处理取消、登录过期、账号切换和回调失败。
90
- - 完善设备/会话查看、撤销与审计,CLI 同步处理会话失效。
91
- - 完善 Windows、macOS、Linux 的安全凭据存储和安装验证,确定 npm 或二进制分发方式、版本兼容策略及升级机制。
92
- - 发布与 CLI 版本匹配的 skill,覆盖认证、模型发现、上传、估价、生成、任务恢复和交付文档及示例。
93
- - 3B:建立发布检查与端到端回归,验证双端并行、同端替换、全局撤销、支持的平台、代理/网络失败和跨版本配置迁移。灰度前升级全部实例,回滚先撤销 CLI 类别并保留网页状态。
94
-
95
- ### 验收标准
96
-
97
- - 新用户执行登录命令后,可在浏览器完成登录与授权,CLI 自动接收授权码并建立持久会话,无需复制 token/Cookie。
98
- - 验证错误 state、非法回调、重复回调、回调端口占用、超时与取消,失败时不遗留有效授权。
99
- - 完整生成闭环可由 CLI 和 skill 按用户授权完成;任务中断后可恢复,重复请求不会意外重复扣费。
100
- - 在声明支持的平台完成安装、升级、登录、刷新、撤销与卸载验证,发布包不含凭据和测试账号数据。
101
-
102
- ## 当前基线与执行顺序
103
-
104
- 截至 0.2.0,阶段一已实现上传、预估、明确提交、幂等恢复、等待与下载,以及 Windows 系统凭据加密、参数校验和扩展 skill。本地 mock 与实际 CLI 子进程验证已通过;真实 API、worker、存储与计费端到端联调仍待验收,详见 [阶段一验收记录](阶段一验收.md)。正式网页登录授权仍属于阶段二、三。
105
-
106
- 2026-10-26 的 0.3.0 增加阶段一浏览器会话桥接:`auth login` 打开独立浏览器,由用户正常登录后读取并保存该会话,继续使用现有刷新接口。此能力不需要修改前后端,但不是阶段二、三规划的 CLI 专属授权、授权码或回调协议。
107
-
108
- 同日 0.4.0 修正登录兼容性:网站验证码拒绝自动化环境,0.3.0 受控浏览器方案已移除。改用普通浏览器与本地扩展主动授权,将网页会话发送到 CLI 的一次性回环连接;安装和限制见 [普通浏览器登录](普通浏览器登录.md)。仍复用网页刷新凭据,独立 CLI 会话与正式授权协议的范围不变。
109
-
110
- 推荐顺序:阶段一先稳定 API client 与凭据管理,再完成上传、估价、幂等提交、恢复和下载,最后同步 skill 与测试;随后确定阶段二授权契约及网页入口,阶段三完成业务前端集成和发布。阶段二的契约设计可以提前进行,但不得因此扩大阶段一的业务仓库改动范围。
111
-
112
-
113
- ## 2026-10-27:阶段 2A 本地实施记录
114
-
115
- 已在后端 `cli-liu` / `4010259` 基线完成兼容会话层代码和本地验收,尚未提交或上线。网页/CLI 固定双类别,网页保留旧键/旧凭据兼容,同类仍互相替换;统一原子签发、刷新、有界加密恢复、当前端退出与全账号安全撤销,覆盖公共 HTTP、可选登录、通知与画布 WS、设备与准确 sid 审计。
116
-
117
- - 隔离回归 203 项通过,真实本地 MySQL/Redis/MinIO + HTTP/S1/通知 WS 冒烟通过;后端测试地址 `http://127.0.0.1:8212`。
118
- - CLI_SESSION_ENABLED / CLI_AUTH_ENABLED 继续默认关闭;隔离构造 CLI 凭据不是正式授权入口。业务前端、CLI 登录实现未修改。
119
- - WS 在收到后续消息/发送推送前复验;空闲连接无需立即断开,未宣称主动瞬时撤销。
120
- - 无新增 schema 迁移;仅初始化独立本地测试库的已有迁移链,没有生产迁移、生产部署或生成扣费。
121
- - 2B 已在隔离环境实现授权码/PKCE/E1、原子消费与 epoch/批准 web sid 协调、独立 CLI formatter 和请求恢复。3A 已接入现有登录页面与 CLI,并通过模拟验证码、网页确认、回调、刷新和撤销的本地联调;真实短信和滑块验收仍待完成。公开启用前需升级所有会话写入实例、联调管理端全局安全撤销,并落实审计补记与灰度回滚。
122
-
123
- 完整影响清单、实际测试命令、限制及部署步骤见 [后端阶段 2A 实施记录](../../anime-ai-engine/docs/阶段2A兼容会话层实施记录.md) 和 [本地测试部署](../../anime-ai-engine/deploy/local-session-2a/README.md)。
124
-
125
- ## 画布原运行只读查询(2026-10-31)
126
-
127
- 新增repaint history NAME --type reverse/delivery/video,在全局配置变更后核验原运行及差异;提交、写回恢复与下载的现有约束不变。28组回归、三类前端兼容核对及真实只读查询通过:原最终提示词和视频任务18可确认,原首轮反推已被当前第2轮替换而明确不可用。本轮无画布写入、处理/生成提交或下载,前后端未改。后续仍仅按实际画布入口补验;独立页面暂不实现,任意历史切换及配置变更后的导出另列待完善。
@@ -1,50 +0,0 @@
1
- # 异步抠图CLI权限交接(2026-11-05)
2
-
3
- 当前结果:用户已通知权限修复,旧请求另经用户核对未入队;一次新的关联验收job提交、查询、PNG/落图和用户网页重开通过。见[真实验收](异步抠图真实验收-20261105.md)。以下403、旧仓库快照和等待决定均为历史记录,不再作为当前阻塞。
4
-
5
- ## 历史决定:等待用户通知后端修复更新
6
-
7
- 2026-11-05用户明确:“先记录,后端修复更新后,我再通知,现在仓库的后端代码不是最新版”。本路线等待该通知,不自动轮询、拉取、重新登录、提交或回填。保留原operation、request_id、所有缓存和画布内容。
8
-
9
- 前述origin/master 729120a仅是当时读取的仓库快照,不是最新后端实现或正式部署证明;缺少两个静态权限项的源码定位及精确函数权限键仅作为交接参考,不能据此断定当前部署的完整根因,也不要求按旧快照直接修改。正式站HTTP403/code2001为实际观察,仍有效;其修复方式和实际权限身份须在用户通知后重新核对最新版及正常CLI响应。旧POST无job_id、是否入队及费用仍未确认,不能因后端更新就重发。
10
-
11
- 恢复时先核对服务、CLI访问权限和旧request_id副作用/已有job_id,再按当时实际契约继续;涉及画布写入时重新收集当前标签关闭/离开保存确认。当前未收到本轮关闭状态回答,不沿用旧日期确认。本次仅记录,没有新增请求、处理任务、费用或画布修改,也没有改动实现或重新打包。
12
-
13
- 当前实际服务https://uzooai.com。用户说明后端已更新后,本轮仅做签名只读检查,没有重新POST处理、回填画布或切换凭据。
14
-
15
- ## 部署实际响应
16
-
17
- - GET /api/v1/matting/jobs/随机UUID:HTTP403、code2001,文案“CLI 无权调用此接口,请在网页端操作”。request_id=d2588481-b37f-4fb0-a2c0-50c778d5656f;再次只读核验同样403/2001,request_id=f30b3ddd-50e3-41de-a37b-9a24dee8eb7a。
18
- - 任意不存在路由仍HTTP200/3001;当前抠图查询与上轮通用不存在响应已不同,但403不能当作任务查询成功。
19
- - 服务live/ready均通过,数据库/Redis为ok;不代表对象存储/队列或推理已经验收。
20
- - 画布doc_113bbd877b344b65abf96ec3ffc93928仍105版、7节点、6线,原图asset-2在,旧未知operation预分配结果节点不存在。本轮无画布变化。
21
-
22
- ## 只读源码核对
23
-
24
- 仅git fetch origin,读取后端origin/master 729120a,保留本地fix/cli-dev-http-origin分支、已有文档修改和工作区文件,不checkout/合并、不修改后端。
25
-
26
- - app/core/cli_access.py按精确METHOD+endpoint模块函数检查CLI权限,在endpoint依赖和副作用之前拒绝;本轮403文案与此一致。
27
- - app/core/cli_capabilities.py静态清单只有POST app.api.v1.matting.image_matting,没有新submit_matting_job/get_matting_job。
28
- - app/core/cli_access_policy.py读取系统级cli_access_policy(scope=system,team_id为空),合并version=1的精确布尔overrides;不缓存,保留默认清单及现有覆盖项。此为源码契约,不冒称已读取正式站策略配置。
29
- - app/api/v1/matting.py新提交202返回job_id/queued;查询UUID并按owner_user_id及matting资源kind/label过滤,成功提供result_ref/result_url/实际credit_cost。CLI现有适配字段与此匹配。
30
-
31
- ## 服务端所需调整(未由CLI执行)
32
-
33
- 经维护者确认后,在现有cli_access_policy.overrides中合并以下两项,不替换整个现有策略,不放开前缀/通配符,不关闭签名或身份验证:
34
-
35
- ```json
36
- {
37
- "POST app.api.v1.matting.submit_matting_job": true,
38
- "GET app.api.v1.matting.get_matting_job": true
39
- }
40
- ```
41
-
42
- 也可在服务端经评审将这两项补入静态能力清单并部署,保留原团队/钱包/素材权限和任务提交者限制。本轮不修改服务端、不使用网页令牌或改写client_type绕过限制。当前源码中的动态策略按请求读取;实际生效仍以正常CLI会话再次只读核验为准。
43
-
44
- ## 原未知提交必须保留
45
-
46
- 上轮operation production-matting-job-7738-20261104仍submission_unknown,未取得job_id,原POST request_id=bbb410d1-f06c-47ba-bbbb-32190b4cf766、HTTP200/code3001。权限变更不会自动证明旧请求未入队。需维护者按该request_id核对:若存在任务,提供原job_id及与该请求的关联;若确认未入队,记录证据后再处理后续提交,不删除/重置原未知记录或用最新同源任务猜测。当前接口没有按请求键找回/提交幂等契约,不能静默重POST。
47
-
48
- 本轮后续画布回填还需当前会话的标签关闭/离开保存确认,不能沿用11月4日的确认。已通过交互卡片收集权限调整/旧请求核对与本轮关闭状态;等待期间继续只读及文档工作。
49
-
50
- 脱敏证据.local/frontend-conflict-20261102/production-matting-jobs-route-diagnostic-1793844411899.json。原operation及所有旧产物保留。44组完整回归和前端对照为上一轮已通过记录,本轮没有实现代码变化,不重复冒称本轮执行了完整测试。新异步真实成功、结果下载/落图及网页验收尚未通过。
@@ -1,44 +0,0 @@
1
- # 异步抠图真实验收(2026-11-05)
2
-
3
- 当前结论:正式站CLI权限已恢复,新异步抠图的提交、进程退出后原job查询、原结果下载/透明PNG核验、原operation一次CAS落图及用户确认网页保存重开通过。本轮没有修改CLI业务实现或前后端;旧阻塞是历史记录,不再作为当前失败状态。
4
-
5
- ## 请求与旧记录
6
-
7
- 实际服务https://uzooai.com,独立uzooai-online profile,沿用团队SD2.5-Draft功能测试(519080401579)、画布1-1030(doc_113bbd877b344b65abf96ec3ffc93928)和原图7738/asset-2。用户明确确认旧POST request_id=bbb410d1-f06c-47ba-bbbb-32190b4cf766经服务端核对未入队,并重新确认本轮画布关闭/离开保存。本轮不修改旧operation的当时未知状态和诊断,不把权限修复等同旧请求无副作用证明。
8
-
9
- 新的关联验收operation为production-matting-job-7738-20261105;旧production-matting-job-7738-20261104、旧同步/本地worker及所有PNG保留。固定general、scope=team、原file_ref、team_uid;不传threshold、不换原图、不上传或入库。预览钱包快照0 OO,产品免费约定继续有效;实际结算另读原job,不用余额差额归因。
10
-
11
- ## 实际执行及恢复
12
-
13
- 1. 更新后签名GET随机job_id返回“抠图任务不存在”,不再是CLI无权访问;与任意不存在路由的通用“请求的资源不存在”区分。权限复查不提交处理。
14
- 2. 新预览读取105版/7节点/6线。仅一次POST /matting/jobs,CLI确认HTTP202并持久保存job_id=42740a87-7308-4099-9d80-62c3781c5f17,返回job_submitted后正常退出。没有启动本地worker或创建空画布结果。
15
- 3. 新CLI进程通过原operation查询同一job,status=succeeded、credit_cost=0、获得结果引用。此时没有本地PNG且画布仍105版,说明查询没有自动下载或落图。
16
- 4. 原matting-recover --yes匿名GET可信服务的原结果引用,缓存原字节并核验PNG/CRC/尺寸/透明通道,一次CAS保存到106版/8节点/7线。所有原节点/线深比较保持,独立GET读回通过。
17
- 5. 重复恢复canvas_written=false、canvas_verified=true;恢复阶段网络记录没有抠图POST,仅一次画布PUT,不重处理/不重保存。原job再次GET仍succeeded、实际0 OO。
18
-
19
- 结果节点matting-568e5612-65c5-48d2-b706-9f03da795516,类型image_upload,last_task_id=null,来源线role=matting-link;不认领源任务、不继承审核,不自动入库。PNG为220×757、116567字节,SHA-256为3a9eaf344f95de7b1b81008beee2e866be706a0a23f7cffc4087c2620944dd8e;alpha0–255,透明87441/有效79099/半透明11493像素。本地查看人物前景正常。
20
-
21
- ## 网页与服务端分别验收
22
-
23
- - 用户本人从新标签打开本次结果、保存并重开,明确回复“显示正常,保存重开后结果和来源线仍在”。这是用户网页人工验收,不冒称Agent浏览器自动验收。
24
- - 随后CLI禁止POST/PUT/PATCH/DELETE进行独立只读核验,读到109版/8节点/7线,结果、原图和来源线存在,last_task_id=null;原operation仍completed、canvas_verified=true、canvas_exactly_matches=false。网页规范化/调整后不要求全JSON相等,也没有再覆盖网页保存。
25
- - 105→106为CLI一次写入;106→109为网页验收后观察到的版本变化,不能归为多次CLI保存。后续运行必须重读,不假定仍109版。
26
-
27
- ## 检查、交付与保留边界
28
-
29
- 本轮CLI业务代码未变,44组完整回归及最新前端service/asset factory/snapshot对照为前一轮已通过记录,不冒称本轮重新执行。本轮新增的是实际部署、一次免费任务、进程退出后的原job恢复、PNG/保留原内容/一次写入核验、用户网页人工确认及其后只读读回。文档/skill/版本及包资源另作本轮检查;不开展N5安装/升级、不安装软件、不提交/推送或发布npm。
30
-
31
- 仍未覆盖真实排队中的queued/processing中间态、真实任务failed/cancelled、跨账号查询拒绝、服务端强杀/队列故障等,相关模拟通过不能替代真实边界。没有人为断开原提交响应或强杀服务;本次证明提交命令正常退出后服务端任务及原ID可恢复。提交响应丢失且未取得job_id仍无幂等/按请求键查回契约,不自动重POST或认领最新同源任务。
32
-
33
- 候选0.5.0-rc.7用于同步本轮验收结论与使用说明,不引入新的CLI业务参数;保持private和MIT,不发布npm。旧候选包和所有旧operation保留。
34
-
35
- ## 脱敏证据
36
-
37
- 位于.local/frontend-conflict-20261102:
38
-
39
- - production-matting-jobs-route-diagnostic-1793848256301.json:权限恢复后的只读响应与105版画布。
40
- - production-matting-job-verified-1793848832511.json:同job恢复、实际0 OO、PNG、一次CAS及重复恢复网络记录。
41
- - production-matting-job-web-verified-1793849063158.json:用户网页重开确认及109版只读核验。
42
- - production-matting-job-7738-20261105.png:本次原PNG副本;原缓存和receipt仍保存在受保护profile相邻operation目录。
43
-
44
- 历史权限与旧仓库快照的限制见[权限交接](异步抠图CLI权限交接-20261105.md)。当前真实验收以本文件为准;不将仓库源码当成正式部署证明,不公开凭据或签名文件引用。
@@ -1,79 +0,0 @@
1
- # 新会话任务交代:实施阶段 2A 兼容会话层
2
-
3
- 以下正文可直接交给新对话。准备日期:2026-10-26;本对话仅更新源码基线与设计,没有开始阶段 2A 实现。
4
-
5
- ---
6
-
7
- 请在现有工作区直接开始实现 **阶段 2A:网页/CLI 分端独立会话的兼容会话层**。先检查并列出改动范围,随后完成代码与测试,不要停在重复分析或只写计划。本次只做 2A,不提前实现 2B 授权接口或 3A 网页/CLI 登录接入。
8
-
9
- ## 工作区与源码基线
10
-
11
- - 工作区:`E:\anime-ai`。
12
- - 后端:`E:\anime-ai\anime-ai-engine`,远程 `https://github.com/UzooAI/anime-ai-engine.git`,开发分支 `cli-liu`。
13
- - 2026-10-26 已执行 fetch,并将 `cli-liu` 从 `48a0434` **快进**到当时的 `origin/develop` 最新提交 **`4010259b42afd3d867cdb275276b99f6a22113a5`**,共前进 14 个提交;准备交代时后端工作区干净,没有本项目会话改造的本地提交。
14
- - 前端:`E:\anime-ai\uzooAl-frontend`,仍在 `cli-liu`;本次未更新或修改前端。阶段 2A 不修改业务前端。
15
- - CLI/demo 与设计文档:`E:\anime-ai\anime-ai-cli`,与后端是同级独立目录,不要误认为设计文档在后端 Git 仓库内。
16
- - 开工先重新核对 branch/status/HEAD 和适用 AGENTS.md;若用户在间隔中有改动,保留并基于实际状态继续,不 reset、覆盖或偷偷切到 develop。以上 SHA 是已核对基线,不保证新会话时远端没有更新。
17
-
18
- ## 必须先读
19
-
20
- 1. `E:\anime-ai\anime-ai-engine\AGENTS.md` 及拟修改目录内适用的规则。
21
- 2. `E:\anime-ai\anime-ai-cli\docs\CLI授权接口与令牌自动刷新设计.md`,重点第 7 节和第 10 节的 2A。
22
- 3. `E:\anime-ai\anime-ai-cli\docs\开发计划.md`。
23
-
24
- 设计已经由原先“网页交接给 CLI、二者互踢”修订为 **每账号一个 web 会话+一个 cli 会话,互不影响;同类新登录仍替换同类旧登录**。以当前 v2 设计为准,不能实现旧的 exclusive_handoff 方案。文档是待实现契约,不是线上现有功能的证明。
25
-
26
- ## 阶段 2A 的具体任务
27
-
28
- 1. 清点公共认证与会话状态读写,按设计 7.3 建“公共实现需改/纯委托调用方验证保持/独立路径需改”清单。不是逐个改所有业务 API。模型、画布、生成等依赖 `get_current_user()` 的业务路由通常不改参数与逻辑。
29
- 2. 在统一 session store 中实现固定的 web/cli 类别与状态键。保留旧网页 Redis 键;已验证的旧 JWT 无 client_type 时只按 web 兼容。新类别必须来自已验签 JWT 与服务端记录,不能相信 Header/query/profile 名。未知类别、错误类型和 CLI 功能关闭时拒绝 cli,不回退到 web。
30
- 3. 按类别隔离 active sid、refresh JTI、轮换宽限/恢复状态、设备元数据及 TTL;维持每类最多一个有效会话。不通过多个 client_id/device_id/profile 扩容。
31
- 4. 原子处理签发、同类替换、刷新和撤销,覆盖旧请求晚到、并发刷新/新登录等竞争。区分普通当前端退出与全账号安全撤销;旧请求不能覆盖或删除新会话,也不能跨端误删。
32
- 5. 网页与 CLI 普通登录、刷新、退出各自独立;账号禁用/删除、全局撤销和确认的 refresh token 重放仍按全账号安全策略覆盖两类,不能顺手降低既有保护。过期或被同类替换不应误判为重放。
33
- 6. 调整普通 HTTP、optional auth、通知/画布协作公共 WebSocket 认证,使结果一致。保持账号状态、软删除、account_id 上下文、资源所有权和团队权限检查。optional auth 的匿名返回契约与 WS 握手失败协议保持兼容。
34
- 7. 签名仍用现有 E1/S1、sid/设备绑定及公钥轮换。`GET /auth/sign-session` 仍能在无 S1 内存密钥时依靠 Bearer 恢复,不靠 refresh 轮换恢复签名。网页和 CLI 的签名映射互不误吊销。
35
- 8. 设备列表支持两类在线、各自 TTL、正确 is_current;退出审计按明确 sid 回填,不能只更新用户最近一次登录记录。核对是否需要 schema 变更;没有必要不新增 users 字段。若确需迁移,只编写并离线验证,不执行生产迁移。
36
- 9. 检查已建立 WebSocket 连接的失效边界:当前代码主要在握手鉴权,不等于退出后立即断开。核对连接管理器是否按 sid/类别区分,并为同类替换、全局撤销后的后续操作/推送制定并测试实际策略;不要只修握手就宣称实时撤销已完成。
37
- 10. 新 CLI 类别/授权相关开关默认关闭;隔离测试中可构造 CLI 凭据验证底层。正式 CLI 签发入口、授权码、PKCE、E1 token endpoint、自刷新客户端将在 2B/3A 实现,不在本阶段开放真实用户入口。
38
-
39
- ## 已核对的关键文件与调用链
40
-
41
- - `app/core/deps.py::get_current_user()`:大部分 HTTP route 的公共依赖。
42
- - `app/modules/identity/application/optional_auth.py::OptionalAccessApplication.resolve()`:configs、showcase、featured_case 等委托它进行可选登录解析。
43
- - `app/modules/notification/websocket_auth.py::authenticate_notification_socket()`:通知与画布协作共同使用的握手认证。
44
- - WS 调用方为 `app/api/v1/notifications.py` 与 `app/api/v1/canvas_collab_ws.py`,不是只看 `canvas_collab.py` 的 HTTP 路由。
45
- - `app/modules/identity/infrastructure/session.py`:当前 token 签发/刷新/重放处置,现有状态按 user_id 唯一。
46
- - `app/core/redis.py`:active session、refresh JTI、轮换 CAS 与短期宽限记录。
47
- - `app/modules/identity/application/use_cases.py`:普通 logout、设备列表、账号注销等;注意哪些调用原本是全局撤销。
48
- - `app/modules/identity/infrastructure/commands.py`:退出记录目前按用户最近成功登录回填,需要核对 sid 归属。
49
- - `app/modules/identity/domain/device.py`:当前设备归并和 online 判定按单 sid 设计。
50
- - `app/api/v1/auth.py::restore_sign_session()`、`app/core/sign_v2/sessions.py`、`app/middleware/sign_v2.py`:复用签名机制,不重写算法。最新上游对签名中间件增加了 `read_body_or_gone()` 客户端断连处理,不能被本次改动退回。
51
- - `decode_token` 命中不全是认证入口;例如 formatter、签名身份对照和旧 request_hmac 的职责不同,逐项判断,不批量重写。
52
-
53
- ## 测试与验收
54
-
55
- 先读取现有测试/fixture,再按实际环境选择 Python/依赖。使用隔离 fake Redis/数据库,mock 必须 patch 在实际 use-site,不能让测试连到真实服务器或生产存储。
56
-
57
- 新增有意义的验证:
58
-
59
- - 旧网页 JWT、Cookie、Redis 键兼容;显式 web/cli 有效,未知/伪造类别与错误 token 类型拒绝。
60
- - web 与 cli 同时有效、各自刷新;同类第二次登录只替换同类;普通退出互不影响。
61
- - 两类并发刷新、同类刷新和新登录/退出竞争;旧请求不能误删新状态;有效会话数每类最多一个。
62
- - 真实重放与全局撤销覆盖两类;普通过期、同类替换和受限响应恢复不误伤另一端。
63
- - 代表性 HTTP 依赖传播、optional auth 匿名/登录可见性、通知与画布协作 WS、签名恢复与设备列表/审计。
64
- - CLI 开关关闭默认拒绝 CLI,网页正常;已有 WS 连接失效的实际策略有独立测试和结果说明。
65
-
66
- 相邻回归至少核对 `app/tests/test_auth_session_codes.py`、`test_auth_replay_and_http_status.py`、`test_auth_login_devices.py`、`test_identity_auth_architecture.py`、`test_identity_module.py`、`test_sign_v2.py`、`test_notifications_ws.py`、`test_canvas_collaboration_security.py` 等相关测试,按改动路径选取并补齐,不机械全跑无关重型套件。失败应查原因,不通过删测试、关闭校验或连接真实生产服务来通过。
67
-
68
- 最终交付:代码、必要迁移源码、公共模块/调用方影响清单、实际测试命令与结果、阶段 2A 完成项/限制与后续 2B 依赖。更新设计/开发计划中的实际实施记录,不能把测试构造的 CLI 会话当成正式网页登录已经完成。
69
-
70
- ## 范围与操作约束
71
-
72
- - 注意中文 UTF-8,保持文件格式。
73
- - 在 `cli-liu` 开发;不修改现有业务前端或 CLI 登录实现,不开始 2B/3A,不关闭 CAPTCHA、设备校验、E1/S1 或资源权限。
74
- - 当前 CLI 0.4.0 的扩展方案仍是 demo,尚无正式 CLI 授权接口;扩展导入的 web token 不会自动变成独立 CLI token。用户最终目标是普通浏览器无需扩展的正式授权。
75
- - 不读取/输出真实 token、Cookie、密钥,不登录真实账号、不提交实际生成扣费任务。
76
- - 不部署、不 build/up 或重启容器、不执行生产迁移、不清空 Redis、不推送远端或创建 PR。部署由维护者本人手动执行。
77
- - 若发现需要管理端配套调整,先按仓库规范列出明确依赖与可访问文件范围,不能假定另一个管理仓库已经同步。
78
-
79
- 完成阶段 2A 后报告结果与阶段 2B 的准备条件,不自行延伸到后续阶段。
@@ -1,61 +0,0 @@
1
- # 新部署画布冲突验收(2026-11-02)
2
-
3
- ## 部署与入口
4
-
5
- 用户指定新前端http://192.168.30.106:4173/,本轮不使用本地前端源码服务。临时代理只监听127.0.0.1:4174,上游固定为该前端,转发HTTP及WebSocket;不关闭CLI的远端HTTPS限制、不修改现有profile。代理脚本位于忽略目录.local/frontend-conflict-20261102/proxy.mjs。
6
-
7
- 实际app-version:1.5.10;buildId=1.5.10.20261102.1409.72bc887b-2a42-4f97-b048-467b3e06f0cb。经代理ready为HTTP200/code0,database/redis均ok。新来源需要用户本人登录。
8
-
9
- ## 验收方案
10
-
11
- 仅在用户确认的独立文字测试画布制造并发/网络故障,不在cli团队业务画布覆盖内容,不提交生成。此测试明确需要同时持有网页快照和服务端更新,是用户要求的冲突验证场景;不把测试例外推广至普通CLI操作。
12
-
13
- | 场景 | 核验 | 当前状态 |
14
- |---|---|---|
15
- | 网页旧版本与服务器新版本冲突 | 出现选择,未选择前服务器保留新内容 | 待执行 |
16
- | 选择服务器 | 页面加载服务器节点/内容,后续保存不回退 | 待执行 |
17
- | 选择网页本地 | 明确选择后本地内容落服务端,版本正确递增 | 待执行 |
18
- | 冲突未处理退出/重开 | 不静默覆盖,待处理内容/提示符合产品行为 | 待执行 |
19
- | 网络中断编辑后恢复 | 本地编辑不丢,服务器已更新时仍要求选择 | 待执行 |
20
- | 返回同画布 | 最新服务器内容加载,无旧内存回写 | 待执行 |
21
-
22
- 只有真实部署UI操作和服务端读回证据通过后,才能调整临时关闭标签规避规则。本地旧源码复现不代表新部署行为。
23
-
24
- ## 实际结果
25
-
26
- 测试画布doc_e80cec108d4c45ab818cbeaa436b7e5e,猫猫队,用户确认名称。仅测试文字节点及画布名称,没有媒体上传/生成或业务画布写入。测试同时持有网页和CLI是本次明确授权的冲突复现例外。
27
-
28
- | 实测 | 结果 |
29
- |---|---|
30
- | 冲突等待选择 | 初始网页旧快照,CLI增标记A至v3;网页改名触发选择,等待时服务器仍v3且A保留,通过 |
31
- | 加载服务器版本 | 名称回到服务端,标记A显示,通过 |
32
- | 用本地覆盖 | CLI增B至v4,网页改名冲突后明确选择本地,v5保留本地名称/A,服务器独有B被移除,符合全量覆盖语义 |
33
- | 关闭冲突、离开、返回 | CLI增C至v6,网页改名冲突后关闭弹窗→菜单回到画布列表→浏览器后退;旧本地名称仍在、C不可见,持续保存中且没有选择框。服务端仍v6、C保留。失败:本地冲突恢复交互卡住,未见服务器被覆盖 |
34
- | 刷新上述未解决状态 | 加载服务器v6/C,未保存本地名称丢弃,未出现本地恢复选择。仅已观察画布名称,不扩大为所有内容均丢失 |
35
- | 断网恢复 | 停止仅测试代理,网页改名后保存失败、本地名称保留;重启代理,CLI增D至v7,再次编辑保存仍弹冲突;明确选本地后v8保存本地名称、移除服务器独有D。通过的是连接拒绝恢复后的手动再保存,未验证OS offline事件或自动重试 |
36
-
37
- ## 测试期间部署变化与最新构建复查
38
-
39
- 初始构建1.5.10.20261102.1409.72bc887b-2a42-4f97-b048-467b3e06f0cb。测试期间更新为1.5.10.20261102.1448.b87e9b55-db24-4a36-8674-6de68d5e2299;旧页面出现新版本提示。刷新加载新页面后重复关闭冲突返回场景:CLI增加标记E到v10;网页名称改为画布保存冲突验收-新版未选择E,冲突关闭→回列表→浏览器后退,再次持续保存中且只显示旧3节点、不显示E。读回服务器仍v10、4节点含E,名称仍画布保存冲突验收-断网恢复D。新构建未重新覆盖全部双分支/断网矩阵,不能把旧构建通过项无条件推广。
40
-
41
- 建议定位关闭冲突后的保存Promise/状态清理、离开flush和同画布返回时的待处理冲突状态;仅依据部署UI和服务端快照报告现象,未用本地旧源码认定新部署根因。保存中状态应恢复为可操作的待解决状态,重新进入应再次提供本地/服务器选择;刷新前未保存修改应明确提示或提供恢复机制。
42
-
43
- 现场保留在Edge测试标签与独立测试画布。临时代理进程监听127.0.0.1:4174仍运行;旧profile未改,专项脚本只在本次内存client指向新代理,后续不应误把原5174当作新前端。本批不撤销日常关闭画布标签规则,不修改前后端,不收费。
44
-
45
- ## 1.5.12移除关闭按钮后的续测
46
-
47
- 实际部署buildId:1.5.12.20261102.1514.3429ca86-b342-40b9-8bf8-5fbb897ba0bb。沿用用户已授权的独立测试画布,新加载部署后测试。
48
-
49
- - 已通过:冲突弹窗不再有关闭按钮;Esc及点击遮罩均无法关闭。选择加载服务器版本后正确显示新增server-nox-server-01节点。
50
- - 新复现的未解决路径:CLI增server-nox-local-02至v24;网页改名为冲突验收1.5.12-保留本地并触发冲突,不选任何版本,执行浏览器后退到workspace,再前进回画布。等待超过30秒后仍显示旧本地名称和保存中,不再弹框,网页只有旧6节点,不显示新增标记。
51
- - 服务端核验:仍v24、7节点,server-nox-local-02保留,名称仍画布保存冲突验收-断网恢复D,未观察到自动覆盖。用户先前手动测试节点也保留。
52
- - 结论:去掉×堵住原关闭入口,但浏览器历史导航仍可离开未解决冲突并进入相同状态异常。建议路由离开时处理/保留未决冲突,重新进入时重新提示,并收敛保存Promise与保存状态。不是只加按钮限制即可视为完整修复。
53
- - 最新版本地覆盖分支尚未完成第二次选择,因导航边界复现后保留现场;不把1.5.10的通过结果当作1.5.12完整回归通过。断网矩阵本轮未重跑。
54
- - 仅新增两个测试文字节点、修改测试名称,无业务画布/生成/上传/前后端代码变更。回环代理继续运行,日常关闭画布标签规避仍保留。
55
-
56
-
57
- ## 2026-11-03本批后续验收
58
-
59
- 本批继续使用4174固定代理到192.168.30.106:4173;相关标签按本次用户确认关闭并保存,CLI写入后才打开网页,验收后关闭受控标签再GET。独立测试画布58版13节点,文本单/批复制、稳定引用、删除保留与组改名/拆组已保存重开;业务测试画布六媒体副本、审核标记及普通生成2069已网页验收,审核状态复用后583版58节点35边。真实服务/网页/源码oracle分开记录,详见[集中验收](非转绘持续完善与验收-20261103.md)。
60
-
61
- 发现并修复的是CLI断线后未将保留持久引用计入模式的问题;未改前端。冲突框×已移除是既有部署基线,未重复开发;后退/前进冲突恢复按用户低优先级决定忽略,不续查或修改。未来新会话重新取得标签关闭确认。
@@ -1,53 +0,0 @@
1
- # 使用普通浏览器登录 CLI
2
-
3
- > 历史记录:本文描述 0.4.0 的扩展桥接,不再对应当前 `auth login`。3A 新流程及本地测试前提见项目 README;线上尚未启用新流程。
4
-
5
- 0.4.0 起,`auth login` 使用普通浏览器和本地扩展交付会话。0.3.0 的 Playwright 登录窗口会触发网站自动化环境检查,已移除该实现与依赖。网站仍正常执行短信、滑块和设备校验。
6
-
7
- ## 一次性安装扩展
8
-
9
- 1. 在准备登录的 Edge 中打开 `edge://extensions`(Chrome 使用 `chrome://extensions`)。
10
- 2. 开启“开发人员模式”或“开发者模式”。
11
- 3. 点击“加载解压缩的扩展”或“加载已解压的扩展程序”。
12
- 4. 选择文件夹 `E:\anime-ai\anime-ai-cli\extensions\uzoo-cli-login`,确认其中包含 `manifest.json`。
13
- 5. 将 **Uzoo CLI Login** 固定到浏览器工具栏,方便后续点击。
14
-
15
- 扩展只申请 `uzooai.com` 和本机回环地址的访问权限;没有后台采集脚本。连接状态只保存在浏览器会话存储中,不写入同步存储。只有主动点击“授权当前会话给 CLI”后才读取当前网站 access token、设备标识与 API Cookie,并发送到当前这一次 CLI 的本机连接。
16
-
17
- ## 每次登录
18
-
19
- ```powershell
20
- cd E:\anime-ai\anime-ai-cli
21
- node src/cli.js --profile uzooai-online auth login
22
- ```
23
-
24
- 1. CLI 打开普通浏览器中的本机“连接 Uzoo CLI”页面。若没自动打开,可手动打开终端打印的 `http://127.0.0.1:端口/connect#...` 链接。
25
- 2. 保持在这个本机页面,点击工具栏中的 **Uzoo CLI Login** 扩展,再点击 **连接 CLI 并打开登录页**。
26
- 3. 页面跳转到 `https://uzooai.com/auth/login?redirect=/workspace`,按正常网站流程完成登录。
27
- 4. 在同一标签页进入工作区后,再次点击扩展,点击 **授权当前会话给 CLI**。
28
- 5. 终端收到会话后验证账号,并使用系统加密存储保存。运行下列命令确认:
29
-
30
- ```powershell
31
- node src/cli.js --profile uzooai-online auth status
32
- ```
33
-
34
- 默认等候 5 分钟,安装扩展时间较长时可加 `--timeout 900000`。Ctrl+C 可取消,连接口令只在当前进程存活期间有效且单次使用。失败时重新运行命令并重新连接即可。
35
-
36
- 系统默认浏览器若没有安装该扩展,可以指定已安装扩展的浏览器:
37
-
38
- ```powershell
39
- node src/cli.js --profile uzooai-online auth login --browser msedge
40
- # 或 --browser chrome
41
- ```
42
-
43
- ## 会话使用范围
44
-
45
- 这仍是网页用户会话,不是独立 CLI 授权。浏览器与 CLI 共用一份刷新凭据时,同时刷新可能造成轮换冲突。建议在普通浏览器中创建一个专用于 CLI 登录的用户配置文件,并在那里安装扩展;授权后关闭使用该会话的网页。不要直接从正在长期使用的日常网页会话反复授权。
46
-
47
- 使用独立浏览器用户配置文件时,请在那个配置文件中打开 CLI 打印的本机连接链接;系统默认打开的可能是另一个配置文件。凭据过期或撤销后重新登录。`auth logout` 只清理本地 CLI 凭据。
48
-
49
- CLI 不读取浏览器磁盘上的 Cookie 数据库、不接管日常浏览器调试端口、不注入指纹修改脚本。CLI 专属授权与独立刷新凭据仍按阶段二、三实现。
50
-
51
- ## 验证范围
52
-
53
- 本地测试覆盖回环地址/Host/扩展来源/随机口令、重复与并发回调拒绝、超时取消、API 身份验证、旧凭据保护,以及扩展弹窗的主动点击、未登录拒绝、Cookie 范围与连接清理。扩展弹窗测试使用模拟 Chrome API;实际普通浏览器加载扩展与真实网站验证码需要人工验收。本次不声称已通过真实网站登录。
@@ -1,90 +0,0 @@
1
- # 正式站切换与验收(2026-11-04)
2
-
3
- 用户说明服务版前后端已更新,将后续实际业务地址切换到 `https://uzooai.com`;CLI使用独立 `uzooai-online` profile,API为 `https://uzooai.com/api/v1`。该profile已有内置正式站默认地址,本次读取未发现已保存CLI会话。原开发站stage3b-test、回环代理配置、凭据和全部operation保留;不将原profile改绑到正式站,不迁移或重放旧生成请求。
4
-
5
- ## 本次实际核验
6
-
7
- - 正式站 `/health/live` 为HTTP200/code0/alive,`/health/ready` 为HTTP200/code0/ready,database和redis均ok。
8
- - 使用正式站正常PKCE授权流程创建CLI授权请求,实际返回 `2110 / cli_auth_disabled`;没有进入有效授权页,没有保存正式站CLI凭据、签署协议、提交生成或处理任务,也没有写画布或产生费用。
9
- - 服务健康仅证明API/数据库/Redis就绪;本次仍不能证明正式站抠图推理、对象存储或具体模型业务可用。
10
- - 需要部署方核对 `CLI_SESSION_ENABLED`、`CLI_AUTH_ENABLED` 与 `CLI_AUTH_ORIGIN=https://uzooai.com`;CLI不修改服务端,不通过复制网页令牌或转发开发站凭据绕过。启用后由用户本人完成正常登录及明确授权。
11
-
12
- 健康证据:`.local/frontend-conflict-20261102/production-switch-1793773239869.json`。此前正式站2026-11-03同码拒绝属于历史;本条为前后端更新后的重新实测。
13
-
14
- ## 后续验收边界
15
-
16
- 正式站授权后先重新读取真实账号、个人/团队空间及画布,不假定开发站同号对象存在或归属相同。沿用用户明确选择的空间意图,但团队、素材、节点和原任务必须以正式站实际查询结果绑定。
17
-
18
- 既有图片历史、样片转正片、协议v3任务2078等真实验收基于当时的新开发部署,不自动变成正式站的业务通过证明。正式站若使用同库,也仍需读回确认归属和服务绑定,不能修改旧operation的baseUrl来跨服务续交。
19
-
20
- 抠图仍按用户确认的免费服务处理:正式站登录后核对实际入口、部署契约、透明PNG、结果查询及未知提交恢复;不以推理POST探测健康,不新增收费假设或未经产品核对的参数。已有 `image matting-check` 仅为只读预检,执行与可靠恢复尚未接入。
21
-
22
- 本次不发布npm、不提交或推送代码,不恢复N5、转绘或去字幕专项。
23
-
24
- ## 2026-11-04 正式站授权已启用并完成登录
25
-
26
- 用户确认正式部署授权开关已启用生效后,重新运行uzoo-anime --profile uzooai-online auth login,正式站返回https://uzooai.com/auth/login授权页。用户本人登录并明确授权,CLI成功保存独立加密会话,cliSessionReplaced=false;此前2110/cli_auth_disabled阻塞已解除。
27
-
28
- 独立GET核验:API=https://uzooai.com/api/v1,live/ready均HTTP200/code0、database/redis均ok。实际账号LIU(uid=585603228375),唯一有效团队“SD2.5-Draft功能测试”(team_uid=519080401579),共享余额快照0 OO;协议required=true、agreed=true、version=v2。正式站账号/团队与开发站不同,不能复用开发站猫猫队、测试画布或任务ID。正式站v2已签不代表开发站v3发生变化,也不需要为切换再次签署。
29
-
30
- 后续真实业务明确使用uzooai-online profile和正式站实际对象。开发站stage3b-test及旧operation/产物保留,不将其改绑到正式站。抠图免费约束沿用用户说明;CLI登录成功只解除身份接入阻塞,不等于抠图执行/原结果恢复已经实现或已验收。
31
-
32
- 本次未创建/修改正式站画布、上传、签署协议或提交生成/抠图,未产生费用。证据:.local/frontend-conflict-20261102/production-switch-1793774998943.json;正式网页公开入口/assets/index-Da5Nhe9D.js已记录,公开HTML摘要b32df6a35c964ba2e813b66937ac075280bcdc04227d86d971213cbbf0639c72。页面资源不当作抠图推理服务或全部业务契约证明。
33
-
34
- ## 2026-11-04 正式站抠图执行更新(rc.4)
35
-
36
- 免费抠图已接入单次执行、透明PNG核验、缓存与已知原结果GET恢复、CAS落图及来源线;正式站7738原图返回0 OO,用户确认网页保存重开,独立102版读回通过。此前“仅预检/执行未实现”为历史阶段;无引用的未知提交服务端查回仍未接入,不重发。详情见[抠图接入与验收](图片抠图接入与验收-20261104.md)。
37
-
38
- ## 2026-11-04 独立后台执行更新(rc.5)
39
-
40
- 用户选择独立后台执行+原operation状态查询,保持现有同步PNG接口。新增matting-start/matting-status:后台独立Node进程仅缓存PNG,原recover确认后保存;本地状态可离线读取、不争profile锁,不冒称服务端实时进度。网络真正丢响应且无引用、关机/强杀后的未知提交仍不重发;不改前后端。
41
-
42
- 正式站新operation production-matting-background-7738-20261104,用户已授权一次免费处理并确认关闭画布,原图7738与旧operation保留。启动命令退出后worker独立接收完成,原PNG220×757/116567字节,SHA-256为3a9eaf344f95de7b1b81008beee2e866be706a0a23f7cffc4087c2620944dd8e;alpha0–255,透明87441/有效79099/半透明11493像素,实际响应0 OO。
43
-
44
- 后台完成时画布仍104版/6节点/5线,无结果节点且尚未尝试保存;原operation recover --yes一次CAS到105版/7节点/6线,独立读回及重复只读恢复canvas_verified=true,无再次处理或保存,不入库。新结果未重复做网页重开验收;旧结果用户已确认网页正常/保存重开仍在的记录不混作新结果证明。
45
-
46
- 脱敏证据.local/frontend-conflict-20261102/production-matting-background-verified-1793783196848.json及production-matting-background-7738-20261104.png。模拟覆盖启动进程退出、后台存活、离线状态、profile锁、重复启动、错误worker绑定、立即响应、网络丢响应/强杀不重放、缓存后同operation显式回填;测试结果以本轮实际执行记录为准。
47
-
48
- ## 2026-11-04 异步抠图接口适配(rc.6,真实验收待条件)
49
-
50
- 用户截图新增POST /api/v1/matting/jobs(multipart,202与job_id)和GET同路径/{job_id}(仅提交者,五种状态及成功result_ref/result_url/credit_cost);旧同步接口保留。本地anime-ai-engine/app/api/v1/matting.py与前端仍为旧同步实现,等待新代码位置/脱敏响应示例。正式站公开OpenAPI未给可用JSON;就绪探测通过,签名随机不存在job只读查询HTTP200/业务码3001、request_id=ee2da706-2111-4e61-8892-43e13168e68c,没有提交真实处理或写画布。
51
-
52
- 已实现matting-submit及按原operation的服务端查询/恢复,202及job_id立即持久化,五状态、实际免费约束、匿名原引用GET、透明PNG/尺寸核验、一次CAS及不重放保护;同步旧operation/本地后台记录保留。针对性模拟通过个人/团队、CLI重建client后的原ID查询、排队/处理/终态、失响应/不合法响应、费用/身份/来源/权限/PNG异常及保存冲突/丢响应。模拟不替代真实接口成功验收,当前未提交新真实job、未产生本轮费用或新画布变化。
53
-
54
- 提交没有job_id的失响应仍缺幂等/按请求键查询契约,不自动重提;已知job_id后无需本地进程持续存活。新路线真实处理及网页重开待用户确认本轮原图和画布关闭后验收。
55
-
56
- ## 异步抠图最新核验:前端已更新,正式站提交未确认
57
-
58
- 用户说明最新前端已有实现,并明确采用原图7738的一次免费验收、确认本轮画布关闭/保存。前端工作区原本干净,git fetch origin后确认当前提交为origin/master祖先,仅git merge --ff-only origin/master从3d3a2a84快进919c71b8,没有创建新提交/推送、安装或启动前端。实际media-tools/api/matting.js有createJob/getJob,services/matting.js的createAndPoll核对202、job_id、裸/code-data包装、五状态和结果字段;flow/services/nodeActionService.js画布入口调用createAndPoll,未开放threshold参数。
59
-
60
- 44组完整npm test通过;诊断补充后异步抠图针对性测试再次通过(含实际遇到的HTTP200/3001不重放)。新增test/matting-jobs-web-compat.mjs只读加载上述实际前端service,个人/团队表单、202与ID、裸/包装响应、queued→processing→succeeded及结果URL对照通过。使用现有Vite依赖,无安装。前端代码对照不是当前正式部署任务成功证明。
61
-
62
- 原图7738预览实际团队SD2.5-Draft功能测试(519080401579)、钱包0 OO、220×757,最新画布105版。仅一次POST /matting/jobs尝试使用operation production-matting-job-7738-20261104,返回HTTP200/业务码3001,没有job_id;安全request_id=bbb410d1-f06c-47ba-bbbb-32190b4cf766。保留submission_unknown及原诊断,没有重POST、启动新worker或换operation。当前不能证明已入队或未入队,费用未确认,不将原免费约定冒称本次服务结算证据。
63
-
64
- 失败后只读服务探测ready(数据库/Redis),随机job路径与任意不存在路由均返回HTTP200/3001“请求的资源不存在”,仅支持“疑似未挂载新路由”,不能证明某一任务状态。画布仍105版/7节点/6线,原图在、分配的新结果节点不存在,无本次画布变化。已请求服务端核对正式部署及原request_id,若有job则提供原job_id;不自动重新提交。后台worker上轮0 OO/104→105的成功证据与本轮失败分开。
65
-
66
- 脱敏证据.local/frontend-conflict-20261102/production-matting-jobs-route-diagnostic-1793785327626.json。原operation本地诊断保留;本轮新接口完整成功、原job恢复下载/落图和网页重开未通过。旧同步/本地后台功能继续保留。
67
-
68
- ## 2026-11-05 后端更新后复查:CLI权限阻断
69
-
70
- 用户要求更新后重试,本轮先只读核对,GET /matting/jobs/随机UUID返回HTTP403/code2001“CLI 无权调用此接口,请在网页端操作”,request_id=d2588481-b37f-4fb0-a2c0-50c778d5656f;live/ready通过,画布仍105版/7节点/6线。没有新POST、费用或画布写入;旧未知提交的是否入队及费用仍未确认。
71
-
72
- 只fetch并读取后端origin/master 729120a,定位CLI静态清单只有旧同步image_matting,缺少POST app.api.v1.matting.submit_matting_job及GET app.api.v1.matting.get_matting_job;可由维护者合并精确动态policy覆盖或补静态清单,保留身份/团队/提交者校验。没有修改后端、切换网页凭据或绕过策略。已用卡片请求服务端调整和核对旧request_id,并重新收集本轮画布关闭确认;不自动重POST旧未知operation。
73
-
74
- 具体证据、精确权限键及旧请求核验见[权限交接](异步抠图CLI权限交接-20261105.md)。本轮没有实现代码变化,上一轮44组回归/前端对照仍为历史已通过,真实新job成功/恢复落图/网页验收继续待条件。
75
-
76
- ## 当前决定:等待用户通知后端修复更新
77
-
78
- 2026-11-05用户明确:“先记录,后端修复更新后,我再通知,现在仓库的后端代码不是最新版”。本路线等待该通知,不自动轮询、拉取、重新登录、提交或回填。保留原operation、request_id、所有缓存和画布内容。
79
-
80
- 前述origin/master 729120a仅是当时读取的仓库快照,不是最新后端实现或正式部署证明;缺少两个静态权限项的源码定位及精确函数权限键仅作为交接参考,不能据此断定当前部署的完整根因,也不要求按旧快照直接修改。正式站HTTP403/code2001为实际观察,仍有效;其修复方式和实际权限身份须在用户通知后重新核对最新版及正常CLI响应。旧POST无job_id、是否入队及费用仍未确认,不能因后端更新就重发。
81
-
82
- 恢复时先核对服务、CLI访问权限和旧request_id副作用/已有job_id,再按当时实际契约继续;涉及画布写入时重新收集当前标签关闭/离开保存确认。当前未收到本轮关闭状态回答,不沿用旧日期确认。本次仅记录,没有新增请求、处理任务、费用或画布修改,也没有改动实现或重新打包。
83
-
84
- ## 2026-11-05 异步抠图真实路线通过
85
-
86
- 用户通知CLI权限修复后,只读确认新查询已到达业务接口;用户另确认旧request_id经服务端核对未入队,并重新确认画布关闭。保留旧记录,新关联operation production-matting-job-7738-20261105仅提交一次202,job_id=42740a87-7308-4099-9d80-62c3781c5f17。提交CLI退出后新进程查询原job成功,实际0 OO;原operation取回220×757/116567字节透明PNG并一次CAS落图,105→106版、7→8节点、6→7线,原内容保持且重复恢复不再保存/处理。
87
-
88
- 用户确认本次网页显示正常、保存重开后结果及来源线仍在;其后只读109版/8节点/7线、原operation completed/canvas_verified=true,网页规范化后的canvas_exactly_matches=false不误报失败,不覆盖网页内容。本轮业务代码不变;前轮44组回归及前端对照属于历史已通过,本轮新增真实部署/任务/PNG/落图/用户网页及其后读回证据。候选rc.7同步记录、文档和skill,保持private,不发布、不做N5。
89
-
90
- 此前3001/403及等待修复为历史状态,当前阻塞已解除。无job_id的未知提交仍不能自动重提;这次旧请求未入队依据用户服务端核验,未篡改旧operation。完整证据和未覆盖边界见[本次真实验收](异步抠图真实验收-20261105.md)。