Post

阿里云百炼大模型配合自家云效 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行测试代码,覆盖以下场景:
      - 姓名和手机号分离成功案例
      - 自动分离功能测试
      - 标签长度验证测试
      - 排序字段测试
    
  • Token 和费用消耗 token cost rmb cost

总结经验

  • 还是得购买订阅制的 AI 服务,token 消耗不起
  • 提示词得尽可能精确,提供更准确利于大模型理解的上下文
This post is licensed under CC BY 4.0 by the author.