自动化一换账号,任务竟然全完成了?先检查幂等键

举报
yd_255169226 发表于 2026/10/13 14:59:47 2026/10/13
【摘要】 一次换号暴露了每日任务助手的幂等边界:状态、凭据和产物都要按账号与日期隔离,并分别核验执行成功、任务完成和积分到账。本文给出实际修复设计及离线验收清单。

做每日任务助手时,很容易写出这样的状态路径:state/2026-10-13.json。第一次运行记录完成,第二次运行跳过,看起来已经实现了幂等。

但只要同一天切换账号,新账号就可能读到旧账号的完成记录。脚本没有报错,也没有真正执行任务,只是稳定地跳过了所有事情。这次修复让我重新梳理了三个边界。

一、日期不是完整身份

每日任务至少需要账号、业务日期、任务ID三个维度。状态目录可以保持简单:

state/accounts/<account>/<date>/task-snapshot.json
state/accounts/<account>/<date>/points.json
state/accounts/<account>/<date>/qa-completion.json

账号标识来自实际登录页面的核验,不能根据文件名猜。没有当天已核验身份时,应明确停止执行,不沿用昨天的账号。账号名进入路径前还应拒绝斜线、父目录跳转和特殊目录名,避免路径穿越。

二、凭据和产物一起隔离

只隔离状态还不够。若完成记录属于账号B,调用凭据仍属于账号A,任务还是会发错地方。

凭据登记要绑定账号,每次调用前核对。显式指定凭据文件也不能绕过检查。历史凭据只能在原账号一致时兼容读取,不能自动迁给新账号。

产物也按账号和日期组织。网络盘未挂载时停止写入,不在本机创建同名目录冒充挂载盘。写入时拒绝符号链接和越界文件名,并限制单文件和整批大小。

三、完成和到账分别验收

工具返回成功,只能证明调用结束。任务页面显示完成、积分明细出现奖励,是另外两层证据。

例如,语音已经转写、发送并收到回答,但任务卡暂时仍显示待完成,此时应记录“已执行,等待核验”,而不是再次调用。否则平台同步延迟就变成了重复请求。

我为问答独立保存完成回执。同账号、同一天有完成证据时,即使新快照暂时显示待完成,也不自动重跑。余额只按官方页面实测记录,不用本地奖励相加推算。

最小验收清单

本次用临时目录完成了离线验证,未调用真实云接口:

  • 同日切换两账号,状态、尝试次数、积分和凭据不串用。
  • 切回原账号,历史完成记录仍保留。
  • 跨日但未重新核验身份时,执行明确失败。
  • 已完成问答不会因任务卡暂时回退而重新调用。
  • 产物写入拒绝符号链接、越界名称和超限内容。

离线验证不能证明线上奖励到账,因此仍需核验页面和积分明细。考试、作品审核和第三方采纳也不能包装成脚本可以保证的结果。

幂等不只是“发现文件就跳过”,而是针对同一个业务身份只产生一次已核验结果。先明确“同一个”指谁、哪一天、哪项任务,换号后的自动化才不会悄悄失效。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。