#3332·Archon

fix(providers/opencode): 当 OpenCode 发生权限问题时,工作流节点会永久卡死。

作者: tbrandenburg创建于 2026年9月15日更新于 2026年9月17日

□ 问题

使用“开码”提供者的工作流程 AI 节点可永久被卡入 " 运行 " 状态是在助理已经提出最后答复之后。 这个 模型的响应流通过正确 通过运行记录中可见, 但工作流程节点从未向“完成”过渡。 跑步必须 手动取消/ 取消; Archon 中没有任何内容显示出错或超时 在绞刑期间。

根由: OpenCode 事件流包括 “ permission. 更新” ( " 延长 " )和 " 延长 " ( " 延长 " ) 事件,当嵌入的 OpenCode 服务器需要允许/拒绝决定时使用 (SDK的“许可”配置支持“任务”用于 类别,如外部-指导'、doom-loop'、bash'、edit'等。 Archon的 OpenCode 提供者从不处理任一事件类型,也从不调用 SDK的许可复制端点. 当服务器发出“ permission. 更新” 和 屏蔽会话等待回复, Archon 事件循环刚刚通过 每个"如果"分支不匹配,循环回"等待",并等待 永远——届会.idle'(Event ConferenceIdle')从未到来,因为本届会议 永远不要离开它被禁闭的状态。

单代理(session.ts')和多代理(多代理.ts') 打开代码 适配器有这一缺口,而“代理配置.ts”(仅构建 遗留“ 工具 ” : {名称: 布尔- 地图} 或“ 运行时间 ”。 t'''' `建造嵌入式服务器Config'(它只设置“服务器 : {hostname, port, 密码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 嵌入式非交互运行时间——所以没有办法预先授权 动作和没有代码路径可以代表无头运行回答待决的提示。

为什么

工作流量是用来运行无人照管。 无声无息地被绞死 操作员无法及时击败:运行占用了工作树和数据库 最终报告“所有者-失去者”而不是“失去者” 没有任何东西告诉操作员 为什么节点卡住了 他们只看到一个正确的 助理答案在记录和运行 从来没有完成。

□ 希望的结果

OpenCode 提供者节点达到终端状态( " 完成 " 或清晰) " 失败 " 有可操作错误),即使OpenCode服务器提出一个 " 允许.更新 " 活动。 这里没有代码路径 未答复的许可请求会造成无限制的绞刑.

□ 验收

  • [ ]一个脚本的OpenCode事件序列,包含一个允许.更新'事件 (在许可问题得到解决之前不附带session.idle') 使节点自动解析并完成, 或快速失败 命名待决权限时出错 —— 永远不要被挂起 暂停 。
  • 单一代理人(session.ts')和多代理人(多代理人.ts') OpenCode 适配器被固定(或多代理路径是) . . . . . . .

内容来源: coleam00/Archon