[!NOTE]
当前 MAX API 分为正式版和 Preview 预览版。Preview 预览版用于提前开放新能力和修复,便于在真实环境中验证兼容性、稳定性和安全性;正式版将在对应 Preview 预览版稳定运行 1 周后正式发布,以保障系统安全性和可靠性。

MAX API v1.0.4-preview.1 预览版:

Seedance 2.0 计费与任务协议优化、Responses 兼容增强及多节点用量归因修复

GitHub 地址

https://github.com/MAX-API-Next/MAX-API/releases/tag/v1.0.4-preview.1
在这里插入图片描述

Highlights

  • 完善豆包 Seedance 2.0 视频任务支持,新增官方 safety_identifierpriority 参数透传,并保留对 Seedance 响应形态的结果解析兼容。
  • 修正豆包 Seedance 2.0 动态计费:按输出分辨率和是否包含视频输入计算倍率,避免 1080p、4k 或视频输入请求被错误按基础档计费。
  • 通用视频任务协议聚焦路径、状态和结果解析配置;请求体透传复用渠道级 Pass Through Body,字段改写和默认值复用现有 Param Override
  • 任务提交链路会在计费前应用最终 Param Override 请求体,避免视频时长、分辨率、尺寸或输入媒体被改写后仍按旧请求预扣费。
  • 任务 Param Override 的 header 联动现在会真正发送到上游;return_error 和无效改写会按本地配置错误处理,不再误触发渠道处罚。
  • 清理历史协议配置,前端保存会移除旧协议值和已废弃的视频任务请求体配置。
  • 修复异步视频任务可能卡在 in_progress + 100% 的问题,非终态任务不会再因为进度为 100% 而退出后台轮询。
  • 修复多节点异步任务结算日志归属:任务完成轮询可以发生在任意节点,但消费日志和用量数据会归属到任务发起节点。
  • 增强用量看板数据维度,支持按分组、令牌、渠道和节点记录消费聚合,降低多节点部署下排查账单归属的难度。
  • 增强 OpenAI Responses 兼容层,新增 Responses ↔ Chat Completions 双向转换能力,便于把 /v1/responses 请求接入 Chat 形态上游。
  • 新增 Gemini /v1/responses 兼容路径,支持将 Responses 请求转换为 Gemini generateContent,并将 Gemini 非流式 / 流式结果回转为 Responses 响应。
  • Advanced Custom 新增 openai_responses_to_openai_chat_completions 转换器,可为自定义通道配置 Responses 入站、Chat Completions 上游的转发链路。
  • 修复 Claude / Gemini 工具调用响应兼容性问题,assistant 文本和工具调用同时存在时不会再丢失文本内容。
  • 加强 Claude 工具调用参数校验,空参数继续按 {} 兼容,无效 JSON 参数会明确报错,避免向上游发送被静默改写的空输入。
  • 强化前端 Markdown / HTML 富文本渲染安全,公告、首页、关于页、法律文档等可配置内容统一经过安全渲染链路处理。
  • 优化通知中心状态管理,提升已读状态、通知弹窗去重和本地缓存恢复的稳定性。
  • Playground 新增一键清空聊天能力,并改善模型 / 分组等选择器在数据刷新、异常和空选项下的状态恢复。
  • 用量日志新增更细的重试筛选语义,可区分普通错误重试和空输出重试,方便定位重试来源。
  • 修复历史时间窗口下用量统计 RPM / TPM 显示为 0 的问题,实时速率指标继续按最近 60 秒计算。

New Features

  • 豆包 Seedance 2.0 任务请求新增参数支持:
    • safety_identifier 可透传到上游。
    • priority 可透传到上游。
    • priority: 0 会被保留并发送,不会因为零值被 omitempty 丢弃。
  • Seedance 2.0 计费支持官方分辨率档位:
    • 480p / 720p 作为基础档。
    • 1080p 使用独立倍率。
    • 4k 使用独立倍率。
    • 是否包含视频输入会参与同一套价格表计算。
  • 通用视频任务协议支持渠道级请求体透传:开启渠道 Pass Through Body 后,JSON 请求会保留客户端字段,并继续应用模型映射。
  • 通用视频任务协议提交请求统一经过 Param Override,可复用现有参数覆盖能力完成字段改写、默认值注入和上游适配。
  • 任务请求头现在复用普通 relay 的 header override 处理,set_headerdelete_headercopy_headermove_headerpass_headers 可用于异步任务上游请求。
  • 异步任务私有数据新增任务发起节点记录,提交任务时保存当前 NODE_NAME,轮询结算时复用该节点名写入消费数据。
  • quota_data 用量聚合新增分组、令牌、渠道和节点维度,便于后续按更细粒度做数据导出、审计和多节点归因。
  • 新增 Responses → Chat Completions 请求转换能力:
    • 支持 instructions、字符串 / 数组 input、多模态 content parts、function call、function call output、tools、tool_choice 和 text.format
    • 保留可选参数显式零值,例如 temperature: 0parallel_tool_calls: falsemax_output_tokens
    • text.format.json_schema 会转换为 Chat Completions response_format.json_schema,并移除 Responses 外层 type 字段。
  • 新增 Chat Completions → Responses 响应转换能力:
    • 支持普通文本、reasoning summary、function call、usage 和 length / content_filter 不完整结束状态。
    • 流式 Chat Completions 可回转为 Responses SSE 事件,包括 response.created、文本增量、reasoning summary、function call arguments 和最终完成事件。
  • Gemini 通道新增 Responses 模式处理:
    • 非流式 /v1/responses 返回 OpenAI Responses 结构。
    • 流式 /v1/responses 返回 Responses SSE 事件。
    • 上游缺少 usage 时会按输出内容估算 usage,并写入最终 response.completed 事件。
  • Advanced Custom 新增 openai_responses_to_openai_chat_completions 转换器:
    • 入站路径支持 /v1/responses
    • 上游可配置到 OpenAI Chat Completions 兼容路径。
    • 前端高级自定义配置补齐转换器选项、路径提示和校验。
  • Responses → Chat 标准转换会拒绝 custom_tool_call 和非 function tool,避免把不符合 Chat Completions 协议的 type: "custom" 请求发给标准 Chat 上游。
  • 前端新增安全富文本渲染能力:
    • 新增 HTML 内容组件和共享 sanitizer。
    • Markdown 渲染统一走可审计的安全处理。
    • iframe 类型内容仅允许安全来源和安全嵌入路径。
  • 通知系统新增前端状态工具和存储测试,支持更可靠的通知去重、状态恢复和本地已读记录维护。
  • Playground 新增聊天历史清空入口,用户可以在不刷新页面的情况下快速重置当前对话。
  • 用量日志前端筛选新增重试子类型支持,列表筛选可匹配 retry_logempty_retry 两类标记。

Improvements

  • 豆包 Seedance 2.0 价格表从旧的固定视频输入折扣升级为按 (模型, 分辨率, 是否视频输入) 计算相对倍率。
  • 管理员仍只需把 Seedance 2.0 ModelRatio 配置为基础档无视频输入单价,系统会按实际请求自动追加 OtherRatio
  • Seedance 2.0 计费逻辑同时读取通用任务 metadata 和官方 protocol 原始请求,避免请求转换链路与计费链路使用不同字段来源。
  • Seedance 2.0 计费逻辑会额外检查客户端原始请求中的顶层 video_url / video,避免官方媒体请求的视频输入被漏算。
  • 使用通用任务协议并开启渠道请求体透传时,后端只要求 model 必填;promptless image-driven 请求不会再被基础任务校验提前拒绝。
  • 视频输入检测补充兼容 metadata.video_urlmetadata.videometadata.content[].video_url 等结构。
  • 视频输入计费检测会校验实际值是否可用,空字符串、nullfalse 和空 video_url.url 不再触发视频输入倍率。
  • 通用任务 URL 拼接会识别并去除与 base_url 重复的 path 前缀,减少 /v1/v1/... 这类配置错误。
  • 通用任务请求会先生成最终提交体,再进入计费估算、预扣费和上游发送;Doubao、Gemini / Vertex、Ali 和 Kling 计费路径会优先参考最终提交体中的计费字段。
  • 视频任务最终请求上下文会从最终 JSON 提交体回填 duration_secondswith_audiogenerate_audioinputparametersimagesreference_images 等常见字段,保证字段映射后仍能被计费估算读取。
  • Ali / Kling 动态任务计费会优先解析最终上游 payload,Gemini / Vertex 会优先读取最终 parameters.durationSecondsparameters.resolution,降低通用协议字段映射后的计费偏差。
  • 任务路径的 Param Override 错误会保留本地错误语义,跳过自动重试和渠道健康处罚;header override 配置错误同样不会被误当作上游失败。
  • 通用任务响应解析在拿到结果 URL 时会优先视为成功,兼容上游状态字段仍停留在 in_progress 但结果已生成的任务。
  • 异步任务后台轮询和超时扫描改为按任务状态判断未完成任务,不再因为非终态任务的进度被写成 100% 就跳过后续处理。
  • 普通消费日志的数据导出也会记录分组、令牌、渠道和当前节点,和异步任务消费日志保持一致的数据结构。
  • 旧的用户级用量查询继续按用户、模型和小时聚合返回,内部新增维度不会改变现有用户查询的总量语义。
  • Responses 兼容层增强消息回放逻辑,手动 replay response.output 时会跳过 reasoningcomputer_callweb_search_callfile_search_callitem_reference 等非 Chat message 形态条目,避免注入空用户消息。
  • Responses → Chat 转换补齐 reasoning、工具调用、工具结果和多模态输入的映射,并对不支持的 stateful 字段提前返回明确错误。
  • Chat → Responses 转换补齐 official incomplete_details.reason 字段,避免继续输出非官方字段名。
  • Responses ↔ Chat usage 转换保留更完整的 token detail 信息,包括 cached creation、文本、音频、图片和 reasoning token 细分,减少兼容层造成的用量明细丢失。
  • Responses → Chat 流式转换复用同一套 usage 明细映射逻辑,流式和非流式的 cached creation、text、audio、image、reasoning token 细分保持一致。
  • OpenAI Chat → Responses 流式转换减少每个 SSE chunk 的重复 JSON 解析,仅在检测到错误字段时进入错误响应解析。
  • Responses → Chat 转换会校验 function_call / function_call_output 的调用 ID,缺少 call_id / id 时提前返回错误,避免转发空 tool_call_id 到上游。
  • Gemini Responses 工具转换对不支持的非 function tool 改为显式报错,不再静默丢弃搜索、代码执行、文件搜索等 managed tool 配置。
  • Gemini Responses 流式处理与 OpenAI Chat → Responses 流式处理保持一致:最终事件包含 usage 兜底估算,并在开启响应审计时写入审计内容。
  • Gemini Responses 转换会过滤 Gemini 不兼容的 custom / freeform Responses 工具和 custom tool call 输入输出,降低转换后被 Gemini 上游拒绝的概率。
  • Chat Completions 响应转换为 Claude / Gemini 格式时,若同一 assistant 消息同时包含文本和 tool_calls,文本和工具调用都会保留。
  • Claude Chat → Claude Messages 工具调用转换更稳健:arguments 为空时发送 {}arguments 不是合法 JSON object 时返回明确错误。
  • Claude 响应格式转换更符合 Anthropic 协议:无法解析为 JSON object 的 tool call arguments 会包装到 input.arguments,确保 tool_use.input 始终是 object。
  • Claude / Gemini 响应转换复用统一的 tool call 参数解析逻辑,并统一使用项目 JSON wrapper,减少不同通道之间的异常参数处理差异。
  • 豆包 legacy task protocol 的计费分辨率现在复用实际上游请求 payload,避免顶层请求字段和 metadata 转发字段不一致时出现计费 / 请求分歧。
  • 豆包 legacy task protocol 的可选 resolution / ratio 改为指针字段,显式空字符串会被保留,未传字段仍会省略,符合上游请求 DTO 的零值语义。
  • 豆包 Seedance 2.0 fast 模型补齐高分辨率视频输入价格组合,1080p / 4k 搭配视频输入时也会应用 fast 模型的视频输入倍率。
  • 用量日志 retry 标记补齐独立索引字段和读前 backfill 机制,旧日志会在首次 retry 筛选查询前完成标记回填,减少升级窗口期筛选不准的问题。
  • 用量统计中的 RPM / TPM 查询继续只统计最近 60 秒,但不再叠加页面选择的历史起止时间,历史窗口下也能显示当前实时速率。
  • 消费日志创建时的 retry 标记同步只保留一次 GORM hook,减少写入日志时重复解析 Other JSON 的开销。
  • 富文本渲染失败时采用更保守的失败关闭策略,避免 sanitizer 异常导致未清洗内容直接展示。
  • 登录、注册、关于页、首页和法律文档等页面的 Markdown / HTML 显示逻辑收敛到共享渲染工具,减少不同页面对同一内容的展示差异。
  • 通知弹窗去重改为当前页面生命周期内的内存状态,避免同一批通知在短时间内重复打扰用户。

Bug Fixes

  • 修复 doubao-seedance-2-0-260128 顶层 resolution: "1080p" 请求被按基础档计费的问题。
  • 修复 1080p 无视频输入请求可能从应有的 51/46 倍率被错误计为 1.0 的问题。
  • 修复 1080p / 4k 搭配视频输入时仍按旧固定视频折扣计费的问题。
  • 修复 priority: 0 这类显式零值可选参数在请求转换时可能无法可靠表达的问题。
  • 修复多节点部署下异步任务由非提交节点轮询完成时,消费日志和用量导出被归属到轮询节点的问题。
  • 修复任务消费日志此前未写入 quota_data 导出维度,导致任务结算数据与普通消费日志在用量看板链路中不一致的问题。
  • 修复 quota_data 缓存聚合 key 过粗,可能把不同分组、令牌、渠道或节点的同小时同用户同模型数据合并到同一条记录的问题。
  • 修复空 video_urlnull / false video 或空 video_url.url 仅因字段存在就触发 Seedance 2.0 视频输入折扣的问题。
  • 修复官方媒体请求将视频输入放在顶层 video_url 时,Seedance 2.0 计费没有应用视频输入价格的问题。
  • 修复通用视频任务启用渠道请求体透传时,promptless 图片驱动请求被基础校验错误拒绝的问题。
  • 修复任务 Param Override 改写 durationresolutionsize、视频输入等计费字段后,预扣费仍按改写前请求计算的问题。
  • 修复任务 Param Override return_error 或无效规则被包装成 build_request_failed 500 上游错误,可能触发自动重试或渠道处罚的问题。
  • 修复任务 Param Override 中的 set_header / pass_headers 等 header 联动只写入运行时状态、没有真正发送到上游的问题。
  • 修复通用任务 Param Override 将计费字段写入上游专用 parametersinput 或媒体数组后,计费上下文没有同步这些最终字段的问题。
  • 修复任务 header override 配置错误从任务请求发送阶段返回时,可能继续被包装为上游请求失败的问题。
  • 修复旧 request_body_moderequest_body_mappingrequest_body_defaults 配置在前端保存后仍可能残留,导致后端拒绝或重复提交旧协议值的问题。
  • 修复通用视频任务 submit path 与 base_url 同时包含 /v1 时可能拼出重复路径的问题。
  • 修复 Seedance 上游已经生成结果,但本地任务仍停留在 in_progress + 100% 的问题;解析到结果 URL 时会转为完成。
  • 修复非终态视频任务写入 progress: 100% 后从后台轮询和超时扫描中消失,导致任务长期卡住的问题。
  • 修复 Advanced Custom 缺少 Responses → Chat 转换器,导致 /v1/responses 难以接入只兼容 Chat Completions 的自定义上游的问题。
  • 修复 Gemini Responses 流式上游缺少 usageMetadata 时,最终 response.completed 事件可能没有 usage 的问题。
  • 修复 Gemini Responses 流式调用未写入响应审计内容的问题。
  • 修复 Responses 手动回放 response.output 时,reasoning、搜索、电脑操作、文件搜索和 item reference 等非消息条目可能变成空 user 消息的问题。
  • 修复 Chat Completions 转 Responses 时不完整结束原因字段与官方 Responses 结构不一致的问题。
  • 修复 Responses → Chat 转换可能把 custom_tool_call 转成标准 Chat Completions 不支持的 type: "custom" 工具调用并继续转发的问题。
  • 修复 Responses → Chat 转换可能生成空 tool_call_id,导致 assistant tool call 和 tool result 无法正确关联的问题。
  • 修复 Responses usage 回转到 Chat usage 时会丢失 cached creation、text、audio、image 等 token detail 字段的问题。
  • 修复 Responses → Chat 流式回转仍使用旧的 inline usage 映射,导致流式请求丢失 cached creation、text 和完整 completion details 的问题。
  • 修复 Gemini Responses 工具过滤静默丢弃非 function 工具,导致调用方难以发现上游能力未被支持的问题。
  • 修复 Claude / Gemini 输出格式在 assistant 消息同时包含文本和 tool_calls 时,仅保留工具调用、丢失文本说明的问题。
  • 修复 Claude tool_use 在 OpenAI tool call arguments 为空时被跳过的问题;无效 JSON 参数现在会返回错误,避免静默发送空 input
  • 修复 Claude 响应转换中 malformed tool call arguments fallback 可能把 tool_use.input 输出为裸字符串、不符合 Anthropic object 要求的问题。
  • 修复 Gemini malformed tool call arguments 缺少对齐测试覆盖的问题,Claude / Gemini fallback 行为现在都有回归测试保护。
  • 修复豆包 legacy task protocol 中实际上游请求使用 metadata.resolution,但计费仍可能读取顶层 resolution,导致请求按 720p 转发却按 1080p 计费的问题。
  • 修复豆包 legacy task protocol 中显式传入空 resolution / ratio 时无法和未传字段区分的问题。
  • 修复 doubao-seedance-2-0-fast-260128 在 1080p / 4k 搭配视频输入时缺少价格组合,可能没有应用视频输入倍率的问题。
  • 修复 retry 日志中同时带有 retry_logempty_retry 标记时只被归类为空输出重试,导致错误重试筛选和统计少算的问题。
  • 修复前端用量日志 retry 筛选只看合并标记、无法区分错误重试和空输出重试的问题。
  • 修复用量统计在查询历史时间窗口时,RPM / TPM 因同时套用历史范围和最近 60 秒范围而显示为 0 的问题。
  • 修复日志写入时 BeforeCreateBeforeSave 同时同步 retry 标记,导致 Other JSON 每次创建被重复解析的问题。
  • 修复 Markdown / HTML 渲染链路中部分页面缺少统一清洗逻辑,公告或配置内容在不同入口显示安全性不一致的问题。
  • 修复通知重复展示和已读状态恢复不稳定的问题,减少刷新或重新打开页面后的重复提醒。
  • 修复 Playground 查询失败或选项列表为空时,模型 / 分组选择器可能保留不可用旧值的问题。
  • 清理 jsonwrapcheck 过期 allowlist 条目,避免移除直接 encoding/json 调用后 CI 仍因 stale baseline 失败。

Compatibility Notes

  • tasks.private_data 新增 node_name JSON 字段;历史任务没有该字段时会回退使用当前处理节点,保持兼容。
  • quota_data 表新增 use_grouptoken_idchannel_idnode_name 字段,升级后会随迁移自动补齐。
  • 现有用户维度用量查询会继续返回聚合后的总量;新增维度主要影响数据导出、内部归因和后续更细粒度分析。
  • 多节点部署建议显式配置稳定的 NODE_NAME,这样异步任务日志和用量数据可以稳定归属到提交任务的实例。
  • Seedance 2.0 的基础计费配置仍以无视频输入基础档为准;1080p、4k 和视频输入组合由系统根据请求内容自动计算倍率。
  • Seedance 2.0 fast 模型高分辨率请求仍不额外叠加分辨率倍率,但 1080p / 4k 搭配视频输入时会应用 fast 模型的视频输入倍率;上游不支持的参数仍由上游校验。
  • 旧渠道重新保存时,前端会清理已废弃的 request_body_mode / mapping / defaults 字段;只保留路径覆盖的渠道会继续作为路径覆盖配置保存。
  • task_protocol_config 不再包含请求体生成 DSL;需要原样透传请求体时使用渠道 Pass Through Body,需要字段映射或默认值时使用 Param Override
  • 任务 Param Override 现在会影响最终计费输入;如果旧配置曾通过默认值或字段改写改变时长、分辨率、尺寸或输入媒体,升级后预扣费会与实际上游请求保持一致。
  • 如果任务 Param Override 把字段改写到上游专用的 parameters / input / 媒体数组结构,升级后这些字段也会进入计费推断;建议检查旧规则是否依赖改写前的低价默认值。
  • 任务 header override 会在适配器默认请求头之后应用,配置中的运行时 header 可覆盖默认上游请求头;请确认 set_header / pass_headers 规则不会意外覆盖认证或内容类型。
  • Seedance 响应形态仍通过通用结果解析和豆包响应形态兜底兼容,但旧协议值本身不会再启用专用请求体构建路径。
  • Responses → Chat 兼容模式不支持需要服务端状态管理的 Responses 字段;请求包含 conversationprevious_response_idpromptcontext_management 时会返回明确错误。
  • Responses → Chat 兼容模式面向标准 Chat Completions 上游,不支持 custom_tool_call、custom tool 或 freeform tool;Gemini 通道会在自身兼容路径中过滤这类不兼容工具。
  • Gemini Responses 兼容路径以 Chat Completions 中间形态转换为基础;Gemini 不支持的 custom / freeform 输入项会被过滤,非 function tool 会返回明确错误,不再静默丢弃。
  • Advanced Custom 的 openai_responses_to_openai_chat_completions 转换器只匹配 /v1/responses 入站路径;其它路径仍按各自注册的转换器校验。
  • Responses 兼容层会保留可选参数显式零值语义,避免客户端明确传入的 0false 在转发时丢失。
  • Responses → Chat replay 要求 function_call 带有 call_ididfunction_call_output 带有 call_id;缺失时会返回错误,调用方需要补齐有效 tool call 关联 ID。
  • Claude 工具调用参数为空字符串时会继续按空 object 兼容;参数存在但不是合法 JSON object 时会失败返回,不再静默改写为 {}
  • Claude 响应转换遇到 malformed tool call arguments 时,会把原始字符串保存在 tool_use.input.arguments,不再把裸字符串直接作为 input
  • 豆包 legacy task protocol 中 resolution / ratio 作为可选字段处理;显式空字符串会继续发送给上游,未提供字段才会省略。
  • 前端富文本内容现在统一经过 sanitizer;依赖自定义 HTML 的部署需要确认内容符合允许的标签、属性和 iframe 来源规则。
  • .tmp/RELEASE_NOTES_v1.0.4.md 为内部发布草稿,不会进入 Git 提交;发布前如需公开版本,应复制到正式发布流程中重新审阅。

Verification

  • go test ./relay/channel/task/doubao
  • go test ./relay/channel/task/taskcommon ./relay/channel/task/doubao ./relay/channel/openai ./model ./service
  • go test ./model ./service
  • go test ./model -run "TestGetAllUnFinishSyncTasksIncludesNonTerminalHundredProgress|TestGetTimedOutUnfinishedTasksIncludesNonTerminalHundredProgress" -count=1
  • go test ./service -run "TestShouldApplyTaskResultProgressSkipsNonTerminalCompleteProgress" -count=1
  • go test ./service ./service/openaicompat
  • go test ./service/openaicompat ./relay/channel/claude ./relay/channel/gemini ./relay/channel/advancedcustom ./relay/channel/openai
  • go test ./service/openaicompat ./relay/channel/gemini ./relay/channel/advancedcustom
  • go test ./service/openaicompat -run "TestResponsesResponseToChatCompletionsResponse|TestResponsesRequestToChatCompletionsRequest"
  • go test ./service -run "TestResponseOpenAI2(Gemini|Claude)"
  • go test ./model -run "Test(SumUsedQuotaRetryFilter|GetAllLogsRetrySubtypeFilters|SumUsedQuotaRetrySubtypeFilters|RetryFilterIgnoresNestedRetryMarker|RetryFilterBackfillsLegacyMarkersBeforeCompletion|RetryFilterUsesIsRetryAfterBackfillCompletion)$"
  • go test ./model -run "TestSumUsedQuotaKeepsRpmTpmLiveForHistoricalWindow"
  • go run ./tools/jsonwrapcheck
  • bun test src/components/html-content.test.ts src/components/ui/markdown.test.ts src/lib/renderable-content.test.ts src/hooks/notification-utils.test.ts src/stores/notification-store.test.ts src/features/usage-logs/lib/utils.test.ts src/features/playground/lib/query-state.test.ts src/features/playground/lib/selection-state.test.ts
  • bun test tests/channel-form.test.ts
  • go test ./service -run "TestRecalculate_PositiveDeltaAttributesQuotaDataToSubmitNode"
  • go test ./relay ./relay/channel ./relay/channel/task/taskcommon ./relay/channel/task/doubao ./relay/channel/task/gemini ./relay/channel/task/vertex ./relay/channel/task/ali ./relay/channel/task/kling ./controller -run "Test(PrepareTaskSubmitRequestBody|DoTaskApiRequestAppliesRuntimeHeaderOverride|ApplyTaskParamOverride|BuildConfiguredTask|EstimateBilling|EstimateTaskBilling|ShouldRetry)" -count=1
  • go test ./controller ./relay ./relay/channel ./relay/channel/task/taskcommon ./relay/channel/task/doubao ./relay/channel/task/ali ./relay/channel/task/gemini ./relay/channel/task/kling ./relay/channel/task/vertex ./relay/common ./service
  • bunx eslint src\features\channels\types.ts src\features\channels\lib\advanced-custom.ts
  • git diff --check

Full Changelog: https://github.com/MAX-API-Next/MAX-API/compare/v1.0.3-preview.2…v1.0.4-preview.1

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐