Automation

自动化跨线程防重复交付:让未知结果也消耗幂等键

一次自动文件交付把同一份内容发送到了同一目标两次。原请求产生了两个兄弟任务,也就是从同一父请求派生的两个独立执行。第一个任务可能已经完成外部动作,但界面证据无法确认最终文件名,因此结果被记录为未知。第二个任务稍后恢复,只看到自己的本地执行尚未发送,于是再次越过交付边界。

这次重复暴露了智能体与工作流系统中常见的一处缺口。每个执行者的局部状态都可能看起来安全,组合后的外部行为却会产生重复副作用。这里的副作用指改变外部系统状态的动作。修复需要围绕一次外部交付建立全局判断,并明确处理“可能成功、确认不完整”的结果。

这次结果属于可能成功

脱敏证据确认了四项事实:

  • 两个任务指向同一个目标,内容字节也 …

无人值守 Windows 软黑屏:用远程会话状态驱 …

一台无人值守的 Windows 工作站可能需要全天运行构建、定时任务和远程访问服务,同时让实体屏幕保持黑暗。普通空闲计时器在本地使用时很直接,远程控制加入后就会产生冲突:远程键盘和指针事件可能点亮屏幕,全局空闲规则也可能在远程操作者仍在工作时再次黑屏。

一次脱敏工作站实践同时出现了这两类问题。手动黑屏可以生效,远程控制客户端的活动却会恢复可见桌面;全局空闲时长也无法判断当前究竟是桌面无人使用,还是存在活动远程会话。

最终方案采用远程会话感知的状态机。它把本地输入、远程连接事件、开机宽限期、断开宽限期和手动请求作为独立信号,并明确各自优先级。这里的“软黑屏”指把亮度降到最低,在所有显示器上覆盖纯 …

自动化执行权交接:保留恢复证据,安全清理旧入口

自动化更换执行者,会同时改变行动主体、现行指令和恢复时可以信任的证据。只在一份文档里替换名称,无法完成这次迁移。旧调度仍可能运行,过期手册仍可能授予权限,过度清理分支还可能删除中断任务恢复时需要的状态。

一次脱敏交接同时暴露了这三类风险。仓库的现行运营文档仍指向旧执行者;历史运行分支和交付产物又属于恢复模型的一部分;部分停用发表入口也有保留价值,因为其中的硬拒绝实现能够证明禁用操作继续不可用。

安全处理先为所有状态分类。当前权限整体迁移,历史证据保持可读,停用写入路径继续显式拒绝,只有确认可丢弃的对象才进入清理范围。

一个仓库里可能同时存在四类状态

搜索旧执行者名称会得到很多匹配,但这些匹配承 …

完成态任务如何安全返修:用状态机绑定请求、草稿与审 …

自动化任务进入完成态时,通常已经留下多类事实:远端对象已经创建,内容已经回读,质量证据已经保存,租约也已经关闭。普通重试应当保持零写入。再次执行交付可能产生重复对象,也可能让旧证据继续描述已经变化的内容。

人工审稿会带来合理的例外。草稿在控制器看来已经完成,编辑仍可能要求调整结构、措辞或排版。若继续调用普通完成入口,控制器无法区分无害重放与获得授权的返修。

本次处理增加了一条独立的关闭写入返修状态机。它先把显式请求绑定到完成态来源,使过期证据失效,保留现有远端对象身份。只有修订内容完成更新和回读后,任务才能再次结束。

风险来自含义不清的完成态

脱敏案例包含两份仅保存为草稿的外部交付物。两稿都通 …

长任务执行前,先锁定版本化策略快照

长任务通常由多个进程分段完成:控制器先创建运行计划,后续工作器生成产物,进程中断后还可能由另一个实例恢复。若每个阶段都重新读取可变的全局策略,同一次运行就可能被几套规则先后解释。

一次策略升级暴露了这个风险。新版增加了更严格的选题、元数据和展示要求,设计目标是只影响新建计划。回归测试却发现,部分历史夹具开始读到尚未对它们生效的新字段。旧计划没有变化,计划外部的解释规则已经移动。

处理方法是在创建计划时选择一次策略,把规范化后的策略快照写入计划,后续生成、审核、完成和恢复都只读取这份快照。新策略可以继续演进,执行中的任务仍能保持同一套判断依据。

先确认判断边界是否移动

策略内容是否合理只是其中一 …

高频状态分支如何避免 CI 通知风暴

一个定时自动化把恢复状态保存在 Git 中。长任务运行期间,它会向专用分支提交租约心跳、检查点和回读结果。这些写入有明确用途:进程中断后,接手者可以重建所有权并安全恢复。

仓库的持续集成工作流却把每次状态写入都当成代码变化。打开 Pull Request 后,同一提交可能同时触发分支 push 和 pull_request 两条运行。测试夹具出现真实错误时,状态分支持续前进,相同失败便被反复通知。一个缺陷最终看起来像几十起新事故。

稳定处理方式是让 CI 跟随审查边界。状态提交继续保留审计能力;完整验证只在代码进入审查,以及审查结果进入默认分支时执行。

先把通知、运行和提交对齐

修改工作流前, …