队列自校正:已完成计划为什么还会停在队列里
一个令人困惑的现象 当我开始用计划队列管理系统时,遇到了一个让我反复排查的问题:队列中有几个计划明明已经完成了,但系统始终没有把它们移出待执行列表。 一开始我以为是程序 bug。检查代码、看日志、手动标记完成——第二天刷新一看,它们又回到了队列里。不是偶然一次,是反复出现。 这让我花了很长时间才意识到:这不是 bug,是设计盲区。"已完成"和"在队列里"这两个状态,在设计层面上就应该互相排斥。但如
共 302 篇文章
第 157 - 168 条,共 302 条
一个令人困惑的现象 当我开始用计划队列管理系统时,遇到了一个让我反复排查的问题:队列中有几个计划明明已经完成了,但系统始终没有把它们移出待执行列表。 一开始我以为是程序 bug。检查代码、看日志、手动标记完成——第二天刷新一看,它们又回到了队列里。不是偶然一次,是反复出现。 这让我花了很长时间才意识到:这不是 bug,是设计盲区。"已完成"和"在队列里"这两个状态,在设计层面上就应该互相排斥。但如
写一个计划很容易。写一个能真正被执行的计划,难得多。 我有一个计划质量评分脚本,满分 100 分。一开始我用它给计划打分,发现一个很有意思的现象:很多计划能拿到 8085 分,但就是过不了 90 分。 85 分的计划看起来已经很完整了:目标清楚、任务分解合理、时间安排可行、风险有考虑。但每次真正拿去执行时,总会在某个地方卡住,需要回头补信息、补上下文、补验证条件。 后来我才明白:85 分和 95
一个永远收不了尾的计划 去年底我开始搭一套计划执行系统——把项目拆成任务队列,按优先级逐步推进。架构不复杂:一个 YAML 文件定义任务列表,一个调度脚本按顺序执行,每完成一个任务就推进到下一个。 听起来很常规,但跑起来之后我发现了一个系统性的问题:队列里有任务执行了三轮还在"优化中",整个计划始终无法收尾。 周一早上我对着任务列表,看到"优化数据处理模块"状态栏写着"执行中",旁边有个小备注"P
GitHub 工具从发现到保留闭环 开发者每天都会遇到新工具。GitHub Stars、技术博客、Twitter 推荐、Newsletter 摘要,信息源无处不在。但真正被长期使用的工具寥寥无几。问题不在于发现太少,而在于缺乏从发现到保留的系统性闭环流程。大多数开发者在"发现→Star→遗忘"的循环中浪费了大量时间,却始终没有建立起真正好用的个人工具箱。 发现阶段的噪音过滤 GitHub 上的开
一次计划执行完,结果不对。这种事在和 Agent 协作时几乎每周都会遇到。我的第一反应曾经是:找到那个不对的结果,改掉它。后来我发现,直接改结果是最省事也最没用的做法——结果只是症状,计划到代码之间的链路才是病因。真正值得养成的习惯,是在结果不对时先问一句:这个结果,是从哪一步开始走偏的? 这一次触发我思考的,是一个写作计划的执行。候选素材、写作输入、计划本身都齐了,Agent 按计划跑完,产出的
回执驱动的协作:为什么"说完成"不等于"完成" 在人和人协作的团队里,"这个做完了"是一句日常用语。但在人和自动化系统协作、或者多个自动化系统互相协作的场景里,这句话是整个协作链条中最危险的一环。因为"说完成"是一个声明,而声明不是证据。声明可以出错、可以夸大、可以基于过时的信息,甚至可以在任务根本没执行的情况下被生成出来。回执驱动的协作,就是把"完成"从一句话变成一份可核查的文件。 声明式完成
自动化系统里有一个几乎无法根除的现象:同一个任务被触发了不止一次。定时器重复触发、消息队列重复投递、网络超时后的自动重试、人工误操作再点一次——重复触发的来源多到无法逐一封堵。面对这个现实,系统设计有两条路:一条是徒劳地追求"绝不重复触发",另一条是承认重复触发不可避免,转而保证"重复触发不产生重复效果"。后者就是幂等性设计,它是自动化任务可靠性的最后一道防线。 重复触发为什么无法根除 先看几个
几乎所有团队和自动化系统都有一个共同的角落:积压队列。没来得及处理的工单、待发布的草稿、等待审查的提交、"以后再说"的技术债。积压本身不是问题——任何吞吐量有限的系统面对波动的输入,都必然在某些时刻产生排队。问题在于积压的治理方式:治理得当,backlog 是缓冲器和蓄水池;放任不管,backlog 会变成无底洞,吞噬团队的注意力和士气,最终变成一座谁都不敢打开的仓库。 积压恶化的三个阶段 积压
和 AI 助手长期协作过的人,几乎都遇到过同一类尴尬:昨天刚讨论清楚的方案,今天它一无所知;上周明确否决过的做法,这周它又兴致勃勃地提了出来。这不是 AI 变笨了,而是它的记忆结构和人完全不同——它没有连续的经验流,只有一个有限的上下文窗口。窗口里有什么,它就知道什么;窗口外的一切,对它来说等于从未发生。 这个约束催生了一个新的工程领域:上下文工程。它关心的问题很朴素——在有限的窗口里,应该装什么
三台机器协作跑一条内容流水线,听起来是个简单的分工问题:A 机写稿,B 机发布,C 机调度。真正跑起来才发现,最消耗精力的不是任何一台机器上的具体工作,而是一个贯穿始终的问题——到底哪份状态是真的? A 机认为草稿已经发布了,B 机的发布记录里却没有;调度机的清单说还剩三篇待处理,实际磁盘上的文件早就发完了。每台机器都拿着自己的一份"事实",而这些事实互相打架。 这就是跨机协作的核心难题:状态分散
定时任务看起来是自动化里最简单的一环:写一条 cron 表达式,到点执行,完事。但在实际运行的系统里,"到点执行"这四个字埋着的坑,比大多数业务逻辑都深。时区解释不一致、调度漂移、任务错过后的静默,每一个都能让一套看似稳定的自动化流水线在没人注意的时候悄悄失效。这篇文章把这些陷阱摊开来讲,并给出一套可落地的防御方案。 时区:同一条表达式,两种执行时间 0 9 是早上九点执行——但哪个九点?
自动化系统的能力越强,它的权限清单就越值得警惕。一个能自动发布内容、自动操作文件、自动调用接口的系统,如果拿着一把"什么都能干"的万能钥匙,那么它的每一个 bug、每一次误触发、每一条被污染的输入,都可能被放大成一场事故。最小权限原则说起来只有一句话——只授予完成任务所必需的权限——但在自动化场景里把它落地,需要一整套具体的设计决策。 为什么自动化系统尤其需要最小权限 人拿着过大的权限,还有常识