在体系中的位置:2.2 看了"演员"(智能体),这一节看"舞台"(环境)。在 AgentScope 里环境和智能体是共生的一对——没有环境,多智能体的共享状态和全局规则就没处放;没有智能体,环境只是个空壳。
我们用建筑类比:智能体像建筑里的各个工种(水电工、木工),环境像整栋楼的"中控 + 施工规范"。工种之间不直接喊话,都通过中控报进度、领任务;规范规定"什么能改、什么不能动"。把规范收进环境,而不是写进每个工种脑子,换规范时工种代码一行都不用动。这就是环境中介的价值。
AgentScope 的环境不是被动的消息中转站,它是主动的计算实体,承担三重角色:
信息枢纽(发布-订阅)。智能体把消息广播到环境,声明自己关心哪类消息,环境负责精准投递给订阅者。这把智能体间的解耦从"不直接调用"进一步推进到"不知道彼此存在"。
状态管理器。环境维护一份共享状态——可以是一个任务进度字典、一张地图坐标网格、一份市场价格表。智能体读状态来感知世界,执行动作来改状态。这种"共享状态"让智能体之间能间接协作,而不必直接通信。
规则执行者。环境的规则体现为:谁何时能发言、执行动作消耗多少资源、某个动作是否合法。规则封装在环境里,改规则不用动每个智能体。
# 环境作为信息枢纽 + 状态管理的示意(2.0 风格) from agentscope.environment import Environment # 构建一个共享环境,承载任务状态 env = Environment(name="项目看板") # 其他智能体读 env.get_state("intro_done") 感知进度
运行说明:上面是语义示意,具体 API(如 publish/subscribe/set_state)在 3.3 建环境时会给可运行版本。这里先建立"环境=枢纽+状态+规则"的三合一心智。
智能体不能直接改世界,必须通过环境。这条纪律用下面这张图表达,它把"感知-行动-反馈"的闭环画出来。

这是工程取舍,不是语法偏好。两个理由:
可维护性。规则集中后,改"发言顺序"或"资源配额"只动环境一处。如果规则散落在十个智能体里,改一处漏九处是常态。
可观测性。环境是单一事实来源,Studio 这类观测工具能直接把环境状态画出来。调试"为什么系统卡住"时,看环境状态比挨个问智能体快得多。
代价也有:环境成了单点。一旦环境的规则有 bug,全系统表现异常。所以环境的规则逻辑要简单、可测,别把复杂业务塞进去——那是智能体的事。
把"规则放进环境"落成代码:下面从 EnvironmentBase 自定义一个带"发言令牌"的环境,只有拿到令牌的智能体才能广播,规则集中在环境里、智能体无感知。
# 自定义环境:把"谁当前能发言"的规则收进环境 from agentscope.environment import EnvironmentBase class TurnEnv(EnvironmentBase): def __init__(self, name): super().__init__(name=name) self._token_holder = None def acquire(self, agent_name: str) -> bool: """规则:同一时刻只允许一个持有者,拿到令牌才能发言。""" if self._token_holder is None: self._token_holder = agent_name return True return False def release(self, agent_name: str) -> None: if self._token_holder == agent_name: self._token_holder = None env = TurnEnv(name="轮流发言台") print(env.acquire("智能体A")) # True:A 拿到令牌 print(env.acquire("智能体B")) # False:B 拿不到,规则生效 env.release("智能体A") print(env.acquire("智能体B")) # True:A 释放后 B 才能拿
运行输出(典型):打印 True / False / True。智能体侧只调用 acquire,完全不知道"为什么有时失败"——调度纪律由环境统一把持。换规则(比如改成"最多两人同时发言")只改 TurnEnv,所有智能体代码一行不动,这就是"规则集中进环境"的可维护性红利。
背景:经济学研究想观察"价格波动如何从个体交易里涌现"。让一类智能体当买家、一类当卖家,在共享市场上交易。
操作:构建一个 MarketEnvironment,内部维护价格表和库存状态,定义规则"报价不得高于当前价的 20%"。买家/卖家智能体订阅 quote 类消息,报价经环境校验合法后才更新价格表。
结果:运行上千轮后,价格表自然收敛到均衡附近,宏观现象从微观交互涌现。
解读:这里环境承担了"规则执行者"——校验报价合法性,智能体只管策略。若把校验写进每个智能体,换个规则要改全部,且无法保证一致。
变式:若想研究"无规则自由市场",把环境规则清空即可,智能体代码不变。环境和业务的解耦在此显现价值。
⚠️ 别把复杂业务逻辑塞进环境规则。环境一旦成单点且逻辑臃肿,一个 bug 全系统异常,且极难定位。环境只放"简单、可测的全局约束"。
💡 判断一段逻辑该放智能体还是环境,问一句"这段约束换场景时会不会变"。会变且影响全局,放环境;只服务于某个角色的策略,放智能体。