Agent 是否在执行,不能只看任务看板
任务处于进行中,并不代表关联的 Agent 或运行会话仍然活跃。文章以 APX 为例,主张将任务流程状态与当前执行证据分开呈现。
任务处于进行中,并不代表关联的 Agent 或运行会话仍然活跃。文章以 APX 为例,主张将任务流程状态与当前执行证据分开呈现。
任务看板需要一个 running 列。它对工作流很有用:有人接手了这张卡片,或者团队希望把它标记为进行中。但看板上的列只是对流程状态的声明,并不能证明某个进程仍在运行。
这种区别在 Agent 系统中很重要。runtime session 结束后,任务可能仍然停留在 running 列。Agent 可能正在任务线程中工作,卡片却依然显示 pending。人也可能出于规划需要手动移动卡片。如果仪表盘把这些情况都解读成“工作肯定正在进行”,它给出的确定性就超出了证据所能支持的范围。
APX 将这两个问题分开处理。任务工作流记录的是开放任务被放在哪一列;执行视图问的则是另一个问题:现在有哪些证据?
假设一个名为“审查身份验证流程”的任务位于 running 列。实际情况至少有四种:
只有前两种情况支持“正在工作”的判断。第三种支持“执行已结束”。第四种支持的是“尚未验证”,而不是“正在正常运行”。
因此,APX 不会将 status 字段视为存活信号。它的任务执行视图会综合具体证据:当前正在运行的 Agent turn、通过任务评论明确关联的 runtime session,以及评论、session 启动或结束等最新活动。如果没有任何证据表明执行仍在继续,但工作流列却是 running,判定结果就是 not_verified。
这个说法刻意没有绿色状态指示灯那么让人安心。它告诉负责人系统知道什么,而不假装知道更多。
对 Agent 来说,实用规则很简单:当任务标题或看板列不足以判断情况时,就调用 get_task。返回结果包含一个 execution 对象,其中分别提供工作流信息和 runtime 信息。这样,一份有用的进度报告就能区分以下情况:
Workflow: running
Execution: working
Evidence: linked runtime session is open
Workflow: running
Execution: not verified
Evidence: no live task turn or linked open session
Workflow: in_review
Execution: ended
Evidence: latest linked session finished
这些并不只是措辞上的修饰。它们会导向不同的后续操作。“正在工作”可能意味着继续等待,或者检查仍在运行的 session。“尚未验证”意味着查看任务线程、询问任务负责人,或者先弄清发生了什么,再移动卡片。“已结束”意味着阅读并审查结果,而不是自动关闭任务。
尤其要注意,进程成功退出不等于业务验收通过。runtime 以退出码零结束时,产出的可能只是一份草稿、尚未完成的调查,或者仍需人工审查的结果。APX 将执行证据与任务关闭分开处理,避免 Agent 悄悄把“命令执行完毕”变成“工作已被接受”。
APX 通过任务评论中携带的 session 标识和路径,查找与任务相关的 runtime session。这比扫描所有 Agent 历史记录的范围更小。它可以防止无关 session 让某个任务看起来仍在进行,也能让证据留在卡片上,方便审查者在预期的位置找到它。
同样的边界也解释了 APC 的作用。APC 是可移植的项目上下文层:AGENTS.md、Agent 定义、skills 和持久规则随项目一起迁移。APX 则是日常使用的 runtime 与工具层:它将本地 session、任务活动和执行证据保留在这份可移植约定之外。
可移植的任务指令可以规定成功需要满足哪些条件。至于某个具体 session 是否仍然存活,只有 runtime 才能回答。
看到一个任务位于 running 列时,不要只问:“它在哪一列?”还要问:“有什么证据表明它现在仍在运行?”
这一点小小的区分,能让自动化运行得更加从容。它可以避免为仍在进行的工作重复启动执行,及时暴露停滞的卡片,防止它们带来虚假的安心感,也能让验收回到它应有的位置:审查实际结果。
看板跟踪工作流,证据跟踪执行。可靠的 Agent 运作,两者缺一不可。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。