You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数体内agent变量无法解析但其他模块可正常使用的问题求助

解决定时函数中无法解析agent变量的问题

问题原因

定时触发的全局函数没有绑定特定的agent执行上下文——流程模块里的代码是在处理单个agent的流程节点时执行的,天然能直接引用当前处理的agent;但定时函数是独立触发的,不存在默认的agent变量,自然无法解析。

解决方案

直接从hold模块中获取所有待阻塞的Patient实例,逐个判断条件后解除对应agent的阻塞,修改后的代码如下:

// 遍历hold模块内的所有Patient实例
for (Patient patient : hold.getAgents()) {
    // 早间患者且有空闲的晨间外科医生时解除阻塞
    if (patient.isMorning && SurgeonMorning.idle() > 0) {
        hold.unblock(patient);
    }
    // 晚间患者且晚间外科医生无空闲时解除阻塞
    else if (!patient.isMorning && SurgeonAfternoon.idle() == 0) {
        hold.unblock(patient);
    }
}

关键说明

  • hold.getAgents()会返回当前在hold模块中所有被阻塞的agent集合,你可以直接指定类型为Patient(因为你确认上游队列过来的都是该类型)
  • 调用hold.unblock(patient)可以精准解除单个符合条件的agent阻塞,避免原代码中hold.unblock()一次性解除所有阻塞的问题
  • 如果后续hold模块可能混入其他类型agent,可添加类型判断:
    for (Agent agent : hold.getAgents()) {
        if (agent instanceof Patient) {
            Patient patient = (Patient) agent;
            // 后续判断逻辑不变
        }
    }
    

内容的提问来源于stack exchange,提问作者NickA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:10:49