要把模糊的业务需求准确转化为可执行的 Agent 任务链,核心做法是:①先明确“动词+宾语”、输入来源与数据格式、最终输出交付物;②使用 Plan-and-Solve 方法手动拆解子任务并做好分层;③为每一步绑定对应工具和参数校验规则;④注入上下文变量,减少模型幻觉与错误补全;⑤在正式运行前插入断点,验证关键中间结果。

你需要做的,是把一句模糊的业务诉求——例如“自动抓取竞品价格并邮件通知涨幅超10%的SKU”——整理成一条可执行、可调试、可追踪、可回溯的 Agent 工作流,而不是直接丢给大模型后任其自由发挥,最终导致执行跑偏。
第一步:识别真实约束条件,过滤无效或“假需求”
打开 MiniMax Coding Plan 控制台后,在「任务输入框」中先不要急着写代码提示词,而是先用三行结构梳理原始需求:
① 先把目标描述清楚(动词+宾语):自动抓取竞品价格
② 输入信息来自哪里(来源和格式必须明确):https://example.com/pricing 页面的 HTML 表格,包含 SKU、price、date 三列
③ 最终需要交付什么结果(必须具体):发送一封带表格附件的邮件,收件人为采购组邮箱,标题中包含“【预警】XX日价格异动”
如果这一步漏掉任意一项,后续 Agent 往往会在“是否需要登录”“日期字段到底叫 last_updated 还是 date_posted”“邮件模板是否要加公司 LOGO”等问题上反复追问,甚至自行做出错误判断。尤其要注意【输入必须写明具体字段名与数据格式,不能只笼统写“价格数据”】。
第二步:用 Plan-and-Solve 模式手动拆解子任务
不要完全依赖模型自动生成执行计划——正确做法是先自己列出草稿,再让 Coding Plan 检查方案是否可行:
方法一:按执行顺序拆解(适合线性任务流程)
→ Step 1:通过 HTTP GET 请求获取 HTML 页面
→ Step 2:使用 BeautifulSoup 解析表格,提取 SKU/price/date 三列
→ Step 3:读取本地历史 CSV,按 SKU 进行价格比对
→ Step 4:筛选涨幅>10% 的记录,生成新的 DataFrame
→ Step 5:调用 SMTP 发送带附件的预警邮件
方法二:按失败风险分层(适合需要容错的自动化场景)
Plan 层(必须优先完成):确认目标 URL 可访问、本地 CSV 文件存在且列名一致、SMTP 配置已测试通过
Execute 层(可并行但需标注依赖关系):Step A 抓网页→Step B 读 CSV→Step C 做比对→Step D 发邮件
Monitor 层(每步后追加检查):检查 Step A 返回状态码是否为 200;检查 Step B 读取行数是否>0;检查 Step C 输出结果是否非空
注意:Plan-and-Solve 模式要求模型先输出完整 JSON 计划,再进入执行阶段。因此你在 Coding Plan 中输入时,必须明确写出“请按 Plan-and-Solve 格式输出:先返回{“plan”: [ {“step”:1, “action”:“...”} ] },再执行”。否则系统默认走 ReAct 模式,一边思考一边执行,容易在中途卡住或偏离预期。
第三步:为每个子任务绑定工具与参数校验规则
在 Coding Plan 的「工具配置」页面,按步骤逐项绑定:
抓取网页 → 绑定 requests.get(),强制设置 timeout=10,headers 中的 User-Agent 必须填写真实浏览器标识,否则部分网站会直接返回 403。
解析 HTML → 绑定 BeautifulSoup,指定 parser 为 "lxml",并增加校验规则:如果 find_all("table") 返回空列表,立即报错退出,不要继续后续流程。
读取 CSV 这一步,直接绑定 pandas.read_csv() 即可,参数必须写清楚:engine="c"、encoding="utf-8-sig"。另外有一点绝不能省略,【必须声明usecols=["SKU","price","date"],避免因 Excel 导出后列顺序混乱导致匹配失败】。
邮件发送 → 绑定 smtplib.SMTP_SSL(),host 填 smtp.exmail.qq.com,port=465,同时要求模型生成的代码中,to 字段必须为 list 类型,即使只发给一个人,也必须写成 ["procurement@xxx.com"]。
第四步:注入上下文变量,切断“幻觉式补全”
在 Coding Plan 输入框顶部,使用三重反引号包裹 Context 区块:
```
CONTEXT:
- 当前日期:2026-08-11
- 历史CSV路径:/data/price_history.csv
- 邮件SMTP账号:alert@xxx.com / AppPassword: xxxxxxxx
- 竞品页面更新规律:每日09:00准时刷新
```
如果这一步不做,模型很可能会自行编造文件路径、随意猜测密码长度,或者假设页面按小时更新——这些虚构信息都会让最终生成的代码在真实环境中直接报错。MiniMax M2.5 及以上模型能够较准确识别 ```CONTEXT``` 区块,并有效抑制无关联的联想和补全。
第五步:运行前强制插入断点验证
在 Coding Plan 生成完整脚本后,不要立刻执行。先点击「插入断点」按钮,并在以下关键位置手动加入 print():
- requests.get()后:print(f"Status: {response.status_code}, Length: {len(response.text)}")
- pd.read_csv()后:print(f"Loaded {len(df)} rows, columns: {list(df.columns)}")
- 比对计算后:print(f"Found {len(alert_df)} SKUs with >10% increase")
这些 print 语句的目的不只是记录日志,更重要的是让 Agent 在真实执行过程中暴露中间状态。如果某个 print 没有输出,就说明前面某一步已经异常退出,此时无需等到邮件发送失败后再回头排查问题。
