我现在给股票Agent接数据第一件事不是让它写复盘而是让它证明自己刚才拿到了什么。“调用成功”很容易让人放下戒心。但连得上和用得对中间还隔着日期、字段、单位和缺失处理。这次我用悟道MCP做了一轮小样本检查把能确认的和需要补查的都写进同一份报告。我参与悟道数据的维护。本文是2026年10月26日的实际查询记录不是对其他数据源的跑分也不是全量验收结论。执行和文件整理在Codex中完成WorkBuddy等具备对应MCP与文件能力的Agent也可以复用这套检查顺序。先把这次的范围钉住我选了三个公开演示代码000001、600519、300750不读取私人自选股。行情固定查2026-10-23截止的两根不复权日线财务目标期为2026-09-30。固定日期的好处是下一次再跑可以知道输入究竟有没有变。本次只调用了交易日、日线、财务摘要和公告查询。不写入自选不触发交易也没有用故意打满额度来“测试稳定性”。接入地址仍是https://stock.quicktiny.cn/api/mcp具体客户端配置以悟道数据接入说明为准。六项检查三项通过三项继续核对项目这次实际看到什么本轮结论交易日2026-10-23返回交易日为true通过仅这一日期批量覆盖日线请求3个代码成功3个代码集合对应通过仅这次样本返回日期3个最新行日期均为20261023每股两根通过没有用别的日期顶替金额单位日线工具约定amount为元报告明确转换为亿元尚未独立对账待核对声明单位不等于验证数值财务期别和字段两股目标期返回但营收/利润缺失一股最新仍为半年报待核对不通过完整三季报要求空公告指定代码、区间和关键词的站内查询返回0条待核对不能推出公司没公告这里“通过”只表示这个输入下检查成立。不是说接口所有股票、所有日期都正确同样“待核对”也不代表服务断了而是当前证据还不够支持后续使用。先看一个很容易被忽略的返回财务目标都是2026-09-30但这次返回并不整齐样例最新返回期末本次营收/利润字段我怎么处理平安银行0000012026-09-30缺失保留期别列入待补宁德时代3007502026-09-30缺失不填0不计算同比贵州茅台6005192026-06-30有返回但期别不同不当作三季报服务返回了success:true并不意味着我的业务要求已经满足。尤其不能把“有一期财报”理解为“目标期的关键字段齐了”。响应里没有警告也不能替代调用方自己的检查。这次对300750用“第三季度报告”关键词、2026-10-01至26日区间查站内公告返回0条。我只记录这组条件下的空结果不把它改写成“未披露三季报”。如果要核对披露事实下一步另查公告原文与正式披露入口本篇没有把这一步说成已经完成。我留下的不是一句“测试成功”而是一份输入文件下面这个最小快照是本次结果的公开字段摘录。amountUnit来自工具字段约定是调用方显式记录的单位不是凭数字大小猜出来的。{queriedOn:2026-10-26,requestedDate:2026-10-23,calendar:{date:2026-10-23,isTradingDay:true},requestedCodes:[000001,600519,300750],kline:{successCount:3,adjust:none,amountUnit:CNY,independentlyReconciled:false,rows:[{code:000001,date:20261023,close:11.2,amount:1628277170},{code:600519,date:20261023,close:1335,amount:7677216283},{code:300750,date:20261023,close:237.6,amount:25396241824.4}]}}这个JSON是调用后的最小摘录不是服务端原样响应。财务摘要与公告结果另外保留避免把两种日期混在一行里行情日期是一种日期报告期末和公告日期又是另外两种。最小验收器怎么写我把最容易自动检查的三项放进一个Node脚本。保存为check.mjs把上面的JSON存为sample.json执行node check.mjs sample.json。它不联网、不读取密钥也不宣称替你验完所有数据。importfsfromnode:fs;exportfunctioncheck(s){constisox{if(typeofx!string)returnnull;constt/^\d{8}$/.test(x)?${x.slice(0,4)}-${x.slice(4,6)}-${x.slice(6,8)}:x;return/^\d{4}-\d{2}-\d{2}$/.test(t)?t:null;};constwanteds.requestedCodes;constrowss.kline.rows;constreturnednewSet(rows.map(rr.code));constuniqueWantednewSet(wanted).sizewanted.length;constcoveragewanted.length0uniqueWantedrows.lengthwanted.lengthreturned.sizerows.lengthwanted.every(codereturned.has(code))s.kline.successCountwanted.length;constrequestedDateiso(s.requestedDate);return[{item:交易日,pass:requestedDate!nulliso(s.calendar.date)requestedDates.calendar.isTradingDaytrue},{item:代码覆盖,pass:coverage},{item:返回日期,pass:coveragerequestedDate!nullrows.every(riso(r.date)requestedDate)}];}if(process.argv[1]?.endsWith(check.mjs)){constsJSON.parse(fs.readFileSync(process.argv[2],utf8));console.log(JSON.stringify(check(s),null,2));}我另外用离线构造样本检查了漏一只代码、重复代码、空数组、返回日期变化、非交易日等情况。构造样本是验收器测试不是线上服务曾经出过这些故障的证据。金额、财务字段与空公告暂时留给人工检查一方面要回原文对账另一方面要明确后续任务究竟需要哪些字段。银行和制造业的研究要求也不该被一个通用“成功”标签抹平。最后才给Agent完整任务用悟道MCP查一组我明确指定的公开演示代码先不写市场观点。 固定请求日期分别保存请求参数、实际日期、代码、字段和单位。 把调用成功与业务完整分开输出PASS、REVIEW、FAIL及原因。 目标期不符或字段缺失不取上一期替代不把缺失改成0。 空结果只描述查询条件与查询范围不扩大成不存在该事实。 另存需要核对的原文入口没读过就标待核对。 生成sample.json、check-result.json与一张可读的验收表。换其他股票数据源我仍然会问同样的问题。悟道MCP是这次实际使用的例子不是“接了MCP就天然正确”的理由。第一轮能把这些事说清楚我才愿意让Agent继续做复盘、财报整理或定时任务。否则自动化越顺一份日期不对的报告也可能每天准时送到。
阅读完成 · 觉得有帮助?