OpenClaw 移除 MiniMax 音乐时长控制:5 个关键变更解析
—# OpenClaw 移除 MiniMax 音乐时长控制:5 个关键变更解析
OpenClaw 最新版本(commit 86ebcee)正式移除了 MiniMax 音乐模型的时长控制功能。这一变更直接影响依赖音乐生成能力的 AI Agent 开发者。本文将解析变更背景、具体实现细节,以及你需要采取的适配措施。
—
为什么移除时长控制功能?
供应商合约变更
根据官方提交记录,MiniMax 供应商已调整其 API 合约,不再支持通过参数直接控制生成音乐的时长。此前 OpenClaw 在文档和代码中”宣传”支持该功能,但实际调用时存在以下问题:
- 提示词注入失效:系统尝试通过
duration参数向提示词注入时长提示,但供应商端已忽略该指令 - 能力声明不准确:
provider capabilities中仍标记支持时长控制,导致开发者预期与实际行为不符
> 核心原则:OpenClaw 坚持能力声明与实际行为严格一致,避免开发者产生错误预期。
—
5 个关键变更详解
1. 移除能力声明(Provider Capabilities)
变更位置:src/providers/minimax/capabilities.ts
// 变更前
export const minimaxMusicCapabilities: MusicCapabilities = {
duration: { min: 5, max: 60, default: 30 }, // ❌ 已移除
genres: ['pop', 'rock', 'classical', ...],
// ...
};
// 变更后
export const minimaxMusicCapabilities: MusicCapabilities = {
// duration 字段完全移除
genres: ['pop', 'rock', 'classical', ...],
// ...
};
影响:调用方无法再通过 provider.supports('duration') 检测时长控制能力。
—
2. 停止提示词注入(Prompt Injection)
变更位置:src/providers/minimax/music.ts
// 变更前:自动注入时长提示
function buildMusicPrompt(params: MusicRequest): string {
let prompt = params.description;
if (params.duration) {
prompt += [时长约${params.duration}秒]; // ❌ 已移除
}
return prompt;
}
// 变更后:仅使用原始描述
function buildMusicPrompt(params: MusicRequest): string {
return params.description; // ✅ 纯净提示词
}
关键说明:开发者如需控制时长,应直接在 prompt 描述 中明确说明,而非依赖参数。
—
3. 文档同步更新
官方文档移除了关于 MiniMax 时长控制的所有声明,包括:
| 文档位置 | 变更内容 |
|———|———|
| docs/providers/minimax.md | 删除 duration 参数说明 |
| docs/music/controls.md | 移除 MiniMax 时长控制对比表 |
| API 参考 | 更新请求体 schema |
—
4. 测试用例调整
变更位置:tests/providers/minimax/music.test.ts
// 变更前
test('should include duration hint in prompt', () => {
const result = buildMusicPrompt({ description: '轻快的钢琴曲', duration: 45 });
expect(result).toContain('45秒'); // ❌ 断言失效
});
// 变更后
test('should preserve original description without injection', () => {
const result = buildMusicPrompt({ description: '轻快的钢琴曲,时长约45秒' });
expect(result).toBe('轻快的钢琴曲,时长约45秒'); // ✅ 透传验证
});
—
5. 变更日志记录
[Unreleased]
Fixed
- MiniMax: 移除音乐时长控制能力声明,停止提示词注入行为 (#84765)
- 原因:供应商 API 合约变更,原参数不再生效
- 影响:使用 duration 参数的调用将忽略该字段
- 迁移:在 description 中直接描述时长需求
—
开发者适配指南
立即检查清单
1. 搜索代码中的 duration 参数使用
grep -r "duration.minimax\|minimax.duration" src/ --include="*.ts"
2. 检查能力检测逻辑
grep -r "supports.duration\|capabilities.duration" src/ --include="*.ts"
3. 验证测试用例
npm test -- --grep="minimax.*music" --verbose
迁移方案对比
| 场景 | 旧写法(已失效) | 新写法(推荐) |
|—–|————–|————|
| 明确时长 | { description: "钢琴曲", duration: 30 } | { description: "钢琴曲,时长约30秒" } |
| 范围时长 | { description: "背景音乐", duration: { min: 20, max: 40 } } | { description: "背景音乐,20-40秒长度" } |
| 任意时长 | { description: "即兴爵士" } | { description: "即兴爵士" } ✅ 不变 |
—
常见问题 FAQ
Q1: 我的现有代码会中断吗?
不会中断,但行为变更。duration 参数将被静默忽略,不会报错。建议主动移除该参数以避免混淆。
Q2: MiniMax 完全不能控制时长了?
并非如此。MiniMax 仍可通过自然语言描述影响生成时长,只是不再支持精确的参数化控制。实际时长仍由模型根据描述推断。
Q3: 其他音乐提供商受影响吗?
目前仅 MiniMax。其他提供商(如 Suno、Udio)的时长控制保持原有实现。可通过以下命令查看各提供商能力:
npx openclaw providers list --capability music --format table
Q4: 如何获取准确的时长?
建议在 prompt 中明确指定,并在生成后验证实际时长:
const result = await openclaw.music.generate({
provider: 'minimax',
description: '舒缓的冥想音乐,严格控制在60秒左右',
});
console.log(实际时长: ${result.duration}s); // 验证输出
Q5: 未来会恢复该功能吗?
取决于 MiniMax 官方 API 演进。建议关注 OpenClaw 文档 的提供商更新公告,或订阅 MiniMax 开发者通知。
—
总结与下一步
本次变更体现了 OpenClaw 对能力透明性的承诺——不宣传无法可靠交付的功能。关键行动:
1. 审查代码:移除所有 MiniMax 的 duration 参数
2. 更新提示词:将时长需求融入自然语言描述
3. 验证行为:在测试环境确认生成结果符合预期
4. 关注文档:订阅 OpenClaw 文档 获取后续更新
—
相关阅读
—