阿里云百炼大模型配合自家云效 DevOps MCP token 消耗巨大
一个小需求用了阿里云百炼大模型+yuxiao mcp 一下子干掉了 25 RMB,还是得用订阅模式。
简述
试用阿里云效 devops 平台推荐的 mcp 工具进行 ai coding 的实践,刚弄一个不算太大的需求试水,结果阿里云百炼大模型 + yuxiao mcp 一下子花费了 25 RMB, 记录下这次坑爹的经历。
试用过程
探索如何在公司的项目(devops 试用的阿里云效)中落地 ai coding,看到 通义灵码+云效 DevOps MCP:通过云效工作项自动生成代码并提交请求 的推荐再加上最近 cc + mcp 的实践,想着只要将我的变更需求写小写细,应该能够通过上述的流程实现日常需求的 ai coding,自己只需要做好 review 就好。
需求任务工单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
接口:PUT scrm-api/form/component 数据结构示例: { "components": [ { "name": "输入框", "type": "input", "config": [ { "label": "姓名", "checked": true, "disabled": true, "switchActive": true, "isCustomize": false }, { "label": "手机号", "checked": true, "disabled": true, "switchActive": true, "isCustomize": false }, { "label": "短信验证", "checked": true, "noShow": true } ] }, { "name": "单选项", "type": "radioButton", "config": [ { "label": "年龄段", "checked": true, "disabled": false, "switchActive": true, "isCustomize": false, "children": [ { "label": "22" }, { "label": "33" } ], "mappingFields": [] } ] }, { "name": "多选项", "type": "multipleChoices", "config": [ { "label": "目前遇到的问题", "checked": true, "disabled": false, "switchActive": true, "isCustomize": false, "children": [ { "label": "啊啊" }, { "label": "搜索xx" } ], "mappingFields": [] } ] } ], "name": "如测22", "hint": "", "hintChecked": false, "id": "6721931e1bcfd54f1f532457" } 1. components.config.label 字段字数限制调整为不超过 50 字 2. 将姓名和手机号(+短信验证)分离出来为两个单独 component 3. 所有component 添加排序字段 sort
首先使用了智谱的 api key,发现任务执行会中断,然后换的阿里百炼的 api key(用的 cc switch 做的切换)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
> 调用 yunxiao mcp 中的工具,获取 兴智技术项目管理项目中8.3.0迭代中Id 为NFQX-10950的任务详情,读取任务 详情中上下文相关的代码,生成详细的代码执行计划(不需要执行),写入到 NFQX-10950.md 文件中供我review ● 我需要获取云效项目中具体任务的详情。让我先找到您的组织和项目信息,然后获取指定任务的详情。 ⎿ { "lastOrganization": "xxxxxxxxxxxxx", "userId": "xxxxxxxxxxxxxxx", … +2 lines (ctrl+o to expand) ⎿ { "id": "xxxxxxx", "name": "xxxx", … +4 lines (ctrl+o to expand) ● yunxiao - search_projects (MCP)(raw_arguments: "{\"organizationId\":\"627b12d911fc0f0c9e29a52c \",\"name\":\"兴智技术项目管理\"}") ⎿ Error: MCP error -32603: Invalid input: [{"code":"invalid_type","expected":"string","received":"undefined","path":[" organizationId"],"message":"Required"}] Todos ☒ 获取当前用户和组织信息 ☐ 查找兴智技术项目 ☐ 获取8.3.0迭代信息 ☐ 获取任务NFQX-10950详情 ☐ 分析任务上下文和相关代码 ☐ 生成详细的代码执行计划 ☐ 写入NFQX-10950.md文件
- 可以看到调用一次 mcp 的 tool 就中断了,因为后续几次工具参数传的不正确,其他模型没有训练过阿里云平台本身的数据,导致对 yunxiao mcp 工具的调用失败了。阿里的模型能够正常连续工作,但是工作过程中,console 连续提示了 token 消耗巨大的警告(这是在本身 yunxiao mcp 工具调用获取云效任务信息的过程中,没涉及后面的需求理解和代码生成,可惜没有记录下来)。
- 后续: 用了更精确的提示词解决了智谱模型 + yunxiao mcp 表现不佳的问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
任务要求 使用 Yunxiao MCP 工具获取任务 NFQX-10950 的详细信息,分析相关代码,生成详细的代码执行计划并写入 NFQX-10950.md 文件。 执行过程 1. 获取组织信息 - 通过 mcp__yunxiao__get_current_organization_info 获取当前用户和组织ID 2. 搜索任务 - 使用 mcp__yunxiao__search_workitems 在"xx技术项目管理"项目中找到 NFQX-10950 3. 获取任务详情 - 通过 mcp__yunxiao__get_work_item 获取完整的需求描述和上下文 4. 代码分析 - 分析了表单组件相关的核心文件: - FormComponent.java (实体类) - FormComponentApi.java (API控制器) - FormComponentByWebDTO.java (DTO类,包含核心业务逻辑) - FormComponentServiceImpl.java (服务实现)
执行历史(倒序查看)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
{ "display": "对于姓名和手机号未分离的历史数据,在修改的时候自动进行分离", "pastedContents": {} }, { "display": "FormComponentByWebDTOTest#testValidateLabelLengthFailure 测试失败", "pastedContents": {} }, { "display": "调用 yunxiao mcp 中的工具,获取 兴智技术项目管理项目中8.3.0迭代中Id 为NFQX-10950的任务详情,读取任务详情中相关的代码,生成详细的代码执行计划,写入到 NFQX-10950.md 文件中", "pastedContents": {} }, { "display": "/exit ", "pastedContents": {} }, { "display": "调用 yunxiao mcp 中的工具,获取 兴智技术项目管理项目中8.3.0迭代中Id 为NFQX-10950的任务详情", "pastedContents": {} }, { "display": "/exit ", "pastedContents": {} }, { "display": "将上述代码编写计划写入到 NFQX-10950.md 文件中", "pastedContents": {} }, { "display": "执行上述修改", "pastedContents": {} }, { "display": "根据上述任务需求描述生成详细的代码编写计划并写入文档,供我review", "pastedContents": {} }, { "display": "调用 yunxiao mcp 中的工具,获取 兴智技术项目管理项目中8.3.0迭代中Id 为NFQX-10950的任务详情", "pastedContents": {} }, { "display": "调用 yunxiao mcp 中的工具,获取 兴智技术项目管理项目中8.3.0迭代中我的任务列表", "pastedContents": {} }
效果(通过测试的 Git 提交总结)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
提交信息: feat:#NFQX-10950 作者: saveole 提交时间: 2025年10月9日 11:16:33 📊 统计信息 - 修改文件数: 4个 - 代码行数变更: +395行, -1行 📁 修改的文件 1. scrm/src/main/java/com/ds/scrm/model/promo/dto/FormComponentByWebDTO.java 2. scrm/src/main/java/com/ds/scrm/model/promo/entity/BaseComponent.java 3. scrm/src/test/java/com/ds/scrm/model/promo/BaseComponentTest.java 4. scrm/src/test/java/com/ds/scrm/model/promo/FormComponentByWebDTOTest.java 🔧 主要功能改动 1. FormComponentByWebDTO.java 核心功能增强 - 自动分离姓名和手机号: 实现了 autoSeparateNameAndPhone() 方法,当检测到组 件中同时包含姓名和手机号字段时,会自动将它们分离成独立的组件 - 标签长度验证: 添加了字段标签长度限制,最多50个字符 - 类型转换优化: 修复了 Hutool JSON 和 FastJSON 之间的类型转换问题 2. BaseComponent.java 实体扩展 - 新增排序字段: 添加了 sort 字段用于组件排序功能 3. 测试用例完善 - BaseComponentTest.java: 新增47行测试代码,测试排序字段和基础功能 - FormComponentByWebDTOTest.java: 新增211行测试代码,覆盖以下场景: - 姓名和手机号分离成功案例 - 自动分离功能测试 - 标签长度验证测试 - 排序字段测试
总结经验
- 还是得购买订阅制的 AI 服务,token 消耗不起
- 提示词得尽可能精确,提供更准确利于大模型理解的上下文
This post is licensed under CC BY 4.0 by the author.