Repository navigation
feat(#728): 新增 labnana 命令组,清理域名表与 --reference-url 存量债 - #27
Merged
Merged
Conversation
- 新增 listenhub labnana image create/list/get 与 labnana video create,打 /v1/banana/* 路由。-n 是客户端扇出:后端没有张数入参,n 个并行请求共享同一个 batchId(与网页端一致,Featured/Trending 据此折叠),撞限流按失败计并报出、 以非零码退出,不静默吞;n=1 保持不带 batchId。 - 视频侧复用既有参数构造,只按 surface 切换路由,不复制一份 schema。 - 域名候选表改为读 SDK 导出的 DOMAIN_BASE_URLS,删掉重复表与对应 ponytail 注释。 - 删除隐藏兼容项 --reference-url(本工作区 9 个仓库 + marswaveai/skills 均无调用方)。 依赖 SDK 发布含 DOMAIN_BASE_URLS 与 banana 方法的新版本后才能安装、跑 CI。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011PmBrtFBVUwG3bFaQzrBJ4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
合并前置(已满足)
@marswave/listenhub-sdk@0.0.22已发布。提交a160814已把 CLI 的pnpm-lock.yaml同步到该版本;pnpm install --frozen-lockfile、pnpm ready与pnpm build均已通过。精确 head CI 已成功:run 32655205447。目标
marswaveai/listenhub-ralph#728 素材流水线的步骤二:agent 按 CSV 逐行批量生成 Labnana 素材。2026-08-22 拍板放弃 ego-browser 网页操作(每张图要多轮 DOM 交互,labnana 的下拉选项只在展开态存在于 DOM、跨轮次选择器必然失效,批量不可用),改用 CLI。
改了什么
新
labnana命令组不复用
listenhub image:二者同后端但不同路由(v1/imagesvs/v1/banana/images)、参考图上限与独有入参都不同,混进一个命令会让--model/--reference的语义分叉。-n= 客户端并行扇出后端
POST /v1/banana/images没有张数入参,网页端的「N 张」本身就是 n 个并行请求共享一个batchId(Featured/Trending 据此折叠分组)。CLI 复刻这个语义:生成一个batchId、发 N 个并行请求、全部带同一个值。-n 1不带batchId,与网页端单图生成逐字一致。rate limited与其它错误),命令以非零码退出,已成功的 id 仍然打印——CSV 回写要得到部分成功的结果。-n 1时错误原样抛给handleError,保留既有退出码语义(2=auth、3=timeout)。技术债 2:域名表去重
_shared/domain.ts的BASE_URLS改为读 SDK 导出的DOMAIN_BASE_URLS,删掉重复表与那条ponytail:注释(它的升级路径写的就是「SDK 发版后改为从 SDK 导出的映射读取」)。技术债 3:删除
--reference-url与
--reference语义重叠的隐藏兼容项(.hideHelp()、空描述、两个 README 都没写)。核对无外部调用方:本工作区 9 个仓库 +marswaveai/skills(确实在用listenhub image create)全量 grepreference-url|referenceUrl零命中。视频侧:
createVideo加一个surface参数切换路由,复用同一份参数构造,不复制第二份 schema。验证
npx vp check(fmt + lint + 类型)All 85 files are correctly formatted/Found no warnings, lint errors, or type errors in 75 filesnpx vp test runTest Files 11 passed,Tests 94 passed(新增 5 条)npx vp pack+node dist/cli.mjs --helplabnana出现在命令表pnpm install --frozen-lockfile解析@marswave/listenhub-sdk@0.0.22pnpm ready:85 files check 通过、94 tests passed;pnpm build通过a16081480d635fad6fd4b3daa92d5f4093fecde6)新增
tests/labnana.test.ts:n>1发 n 个请求且共享同一batchId、n=1不带batchId、撞限流的分片被报出且以非零码退出、越界-n与超过 14 张参考图先在客户端拒绝(不静默截断)。tests/openapi/client.test.ts的 SDK mock 从「只提供OpenAPIClient」改成importOriginal展开——domain.ts现在还会从 SDK 读DOMAIN_BASE_URLS,原写法会让它变成隐形的undefined。这是补强 mock,不是放松断言。config show前后输出对比(技术债 2 的验收)同一份
XDG_CONFIG_HOME,改动前后各跑三种域设置,diff完全一致:image create --help回归(技术债 3 的验收)--reference-url已不出现(本来.hideHelp()也不出现),--reference与其余参数逐字不变。既有listenhub image create的行为未改动。还没跑的
真实跑通
labnana image create -n 2拿到两个 imageId 属于 issue 验收,但会真实消耗fangge@marswave.ai的积分,且需要人先做一次listenhub auth login(云端容器没有登录态)。SDK 发版后由人触发一次真实批次验证。同理,「现有 OAuth token 对/v1/banana/*是否直接生效」这条 issue Risk:代码侧已确认后端只有一个 router 与一个鉴权闸,banana controller 与其它 controller 一起被 glob 进同一份列表(src/controller/index.ts:52-63),token 覆盖是结构性的;但没有真实请求验证过。实现期假设
-n上限 10,理由如上;没有实测数据支撑这个具体数字。maxRetries。issue 写的是「沿用后端既有 IP/用户限流,撞限流按失败计并报出」,重试后仍失败才计失败,符合这条。labnana video只做了create,没有get/list——Contract 列的命令面就是这些。--no-wait提交视频后目前没有对应的查询子命令,需要的话再加。>=0.0.22 <0.1.0而不是钉死某个版本:本 PR 不能知道 SDK 实际会发成哪个号(版本号交给发版流程),这个区间表达的是「含 banana 与 DOMAIN_BASE_URLS 的那一版及之后」。风险判定
scripts/route-gates.py参考信号:risk=high、reasons=["auth","money"]、nonDowngradable=false、nonDowngradableFiles=[]。判定:快车道(覆盖参考信号)。 本次新增提交仅将已发布 SDK 写入 lockfile;完整 diff 中的
auth/money命中来自 CLI 命令与 SDK 类型文本,不修改鉴权、扣费、结算、补偿或回填代码。全部本地验证已通过,变更不影响既有listenhub image命令。Staging
命中 issue 白名单例外第 3 条:
scripts/staging-git.sh没有listenhub-cli的 staging 分支映射,本仓不发 staging。🤖 Generated with Claude Code
https://claude.ai/code/session_011PmBrtFBVUwG3bFaQzrBJ4
Generated by Claude Code
发布修订(当前)
本节覆盖此前指向
a160814的发布前置与精确 CI:CLI 版本已从0.0.19升为未占用的0.0.20,当前 head 为5cbb9c82363d9dc2649ac2f579187ca58131f5bf。pnpm install --frozen-lockfile、pnpm ready(85 files / 94 tests)和pnpm build均通过;精确 head CI run 32655610197 已成功。此次补充提交仅上调 npm 发布版本,不改变 CLI 功能或 SDK 锁定版本。