- 人工智能
- AI Agent
- Agent 框架
- 工具调用
- Agent 工作流
- RAG
- MCP Clients
- 强化学习
【免费下载链接】agent-core-java
openJiuwen agent core Java是 openJiuwen Core的 Java版本,提供AI Agent开发、运行、调优与演进相关的全套SDK能力。
本篇技术指南聚焦 openJiuwen agent-core-java 中LeaderTeammateAgentTeam多智能体团队系统的**长期团队(persistent lifecycle)**生命周期语义。文章以 lifecycle_persistent.md 模板 为核心,讲解:什么条件下该模板被注入 Leader 系统提示词、长期团队完成任务后的三步收尾契约、以及背后的源码级运行时行为(自动待命、轮询暂停、Leader 存活等)。读完你将掌握如何通过一行配置创建"常驻待命、随时接收新任务"的长期 Agent 团队,并理解其与临时团队的底层差异。
一、模板定位:长期团队 vs 临时团队
openJiuwen 的 Agent 团队(LeaderTeammateAgentTeam)在创建时可以声明两种生命周期(lifecycle):
| 生命周期 | 语义 | 收尾方式 | 对应模板 |
|---|---|---|---|
persistent | 长期团队,完成任务后保持运行、进入待命,等待新指令 | 汇总成果 → 不解散 → 自动待命 | lifecycle_persistent.md |
temporary(默认) | 临时团队,完成任务后立即解散 | 汇总成果 →shutdown_member关闭全部成员 →clean_team解散团队 | lifecycle_temporary.md |
默认值是temporary,这在两处源码中有明确体现:
- LeaderTeammateAgentTeam.java#L466 中 Builder 字段
private String lifecycle = LIFECYCLE_TEMPORARY; - TeamAgentSpec.java#L54 中
private String lifecycle = "temporary";
两个常量LIFECYCLE_PERSISTENT = "persistent"与LIFECYCLE_TEMPORARY = "temporary"定义于 LeaderTeammateAgentTeam.java#L70-L81。
二、模板全文解读:长期团队的收尾契约
lifecycle_persistent.md 全文以"团队性质"声明开篇,明确告知 LLM 这是一个长期团队,完成当前任务后继续保持运行等待新指令。其核心收尾流程为三步:
- 汇总当前轮次的工作成果
- 不要关闭成员或解散团队
- 团队将自动进入待命状态,等待用户下发新任务
模板特别强调了收尾要高效这一行为约束:
用
send_message(to="*")一次性广播本轮总结与待命通知,不要逐个成员致意,也不要回复成员的致谢/确认消息,避免无意义的来回寒暄。
这一约束非常有价值:在多智能体协作中,最容易产生 token 浪费的场景之一就是收尾阶段的"告别寒暄"。to="*"表示向团队内全体成员广播,一次性完成总结播报与待命通知,同时明令禁止回复成员的致谢/确认消息,从而避免消息风暴。
英文版模板位于 lifecycle_persistent.md(en),与中文版结构、语义一一对应,这是项目"cn/en 双语对齐"编辑规则的体现(见 prompts/CLAUDE.md)。
三、装配机制:模板何时、以何种方式进入系统提示词
该模板不是独立运行的文档,而是作为**生命周期提示词段(lifecycle section)**被装配进 Leader 的系统提示词。装配逻辑的核心判断只有一个:角色为 Leader 且 lifecycle 为"persistent"。
3.1 经典装配路径:AgentTeamPolicy
AgentTeamPolicy.java#L128-L133 中,buildTeamPolicy按如下规则选择模板:
String lifecycleSection = ""; if (builder.role == TeamRole.LEADER) { String lifecycleName = Objects.equals(builder.lifecycle, "persistent") ? "lifecycle_persistent" : "lifecycle_temporary"; lifecycleSection = loadTemplate(lifecycleName, language); }随后通过system_prompt.md装配模板的{{lifecycle_section}}占位符注入最终系统提示词(AgentTeamPolicy.java#L135-L141)。关键约束:Teammate 角色不消费生命周期模板——非 Leader 时 section 为空,即普通成员不会被灌输"团队要不要解散"这类 Leader 专属决策信息,职责边界清晰。
3.2 Rail 装配路径:TeamRail
在 Rail(新装配路径)中,TeamRail.buildTeamLifecycleSection 承担相同职责:
public static PromptSection buildTeamLifecycleSection(TeamRole role, String lifecycle, String language) { if (role != TeamRole.LEADER) { return nullValue(); } String lang = normalizeLanguage(language); return new PromptSection(LIFECYCLE, Map.of(lang, labels(lang, "lifecycle_heading") + "\n\n" + AgentTeamPolicy.loadTemplateForRail( "persistent".equals(lifecycle) ? "lifecycle_persistent" : "lifecycle_temporary", lang) .trim() + "\n"), 14); }注意该路径下装配的标题是# 团队生命周期(对应 i18n 标签lifecycle_heading,见 TeamRail.java#L658),且模板内部的小节标题使用##级别(因为外层 Rail 已提供#级标题),这与 prompts/CLAUDE.md 中"顶层用##"的排版规则一致。
四、运行时实现:长期团队如何"自动待命"
提示词只是语义层,真正的"待命"行为由协调内核(coordination kernel)中的事件处理器落地。长期团队(persistent)在完成所有任务后,会经历一条完整的"完成 → 暂停轮询 → 等待新任务"链路。
4.1 任务完成检测与自动暂停:TeamCompletionHandler
TeamCompletionHandler.java 是团队完成生命周期的驱动与消费方。在 Leader 空闲轮询(POLL_TASK)时,它会通过TeamBackend.isTeamCompleted()评估团队完成条件,并在上升沿发布TEAM_COMPLETED事件。最关键的分支在 TeamCompletionHandler.java#L139-L141:
if ("persistent".equalsIgnoreCase(blueprint.lifecycle().orElse(null)) && !snapshot.isTeamDeleted()) { lifecycle.concludeCompletedRound(snapshot.memberCount(), snapshot.taskCount()); }注释解释了两种生命周期的本质差异(TeamCompletionHandler.java#L133-L138):
- persistent 团队:完成时自动暂停——关闭 Leader 事件流,由 Runner 驱动 finalize → pause,团队进入待命状态;
- temporary 团队:不在该处做任何暂停处理,由 Leader 通过
clean_team自行拆除。
4.2 待命与清理的成员侧行为:AgentLifecycleHandler
AgentLifecycleHandler.java 处理STANDBY/CLEANED等事件:
- onStandby(AgentLifecycleHandler.java#L93-L97):收到
TEAM_STANDBY后调用poll.pausePolls()暂停周期轮询——这正是"进入待命状态"的代码级实现,团队不再主动发起新一轮 LLM 调用,只静默等待外部输入; - onCleaned(AgentLifecycleHandler.java#L109-L117):Leader 收到
TEAM_CLEANED时明确忽略该事件、不执行自我关闭,注释指出"persistent leaders have to survive clean_team to accept the next interaction"——即长期团队的 Leader 必须跨过 clean_team 存活,以便承接下一轮交互;而非 Leader 成员则在此处lifecycle.shutdownSelf()退出协调循环。
4.3 待命期间的提示词配套:all_done_persistent
与"任务全部完成"配套的调度提示语也按生命周期区分,定义在 I18n.java#L83-L91:
- 长期团队(
all_done_persistent):"所有任务已完成。请汇总本轮工作成果。团队继续保持运行,等待新的任务指令。" - 临时团队(
all_done_temporary):"所有任务已完成。请汇总团队工作成果,然后依次调用 shutdown_member 关闭所有成员,等待所有成员状态转为 shutdown 后,调用 clean_team 解散团队。"
两句提示语的差异与模板语义完全对应,形成"提示词 → 调度文案 → 运行时行为"的闭环。
五、实战:如何创建一个长期团队
在 LeaderTeammateAgentTeam.Builder 中通过.lifecycle("persistent")即可声明长期团队:
LeaderTeammateAgentTeam team = LeaderTeammateAgentTeam.builder() .teamName("assistant_team") .description("长期驻留的助理团队,随时承接新任务") .leaderMemberName("team_leader") .leaderPersona("你是团队的协调者,负责分派与汇总") .addPredefinedMember(memberSpec) // 预注册成员(hybrid 模式) .lifecycle("persistent") // 关键:声明为长期团队 .teammateMode("build_mode") // build_mode / plan_mode .spawnMode("inprocess") // inprocess / process .transport("inprocess") // inprocess / pyzmq .storage("sqlite") // sqlite / memory / postgresql / mysql .language("cn") // cn / en .build();Builder 的lifecycle(String lc)方法定义于 LeaderTeammateAgentTeam.java#L520-L523,最终在build()时随TeamAgentSpec一起传入运行时(LeaderTeammateAgentTeam.java#L727-L733)。
作为对照,AgentTeamE2eExampleSupport.java#L99-L111 中的端到端示例使用的是.lifecycle("temporary")——这是默认的"一次性任务团队"用法。你可以直接将"temporary"改为"persistent",观察团队在任务完成后不再解散,而是进入待命并接受新指令。
使用建议
- 需要长期驻留的助手/客服型团队:使用
persistent,团队一轮任务结束后驻留待命,避免反复重建团队带来的成员创建与上下文初始化开销; - 一次性专项任务:保持默认
temporary,任务完成即shutdown_member+clean_team全量回收,避免空闲成员占用资源; - 切换生命周期:唯一改动点是
lifecycle参数,提示词与运行时行为会自动跟随切换,无需修改任何业务代码。
六、小结
lifecycle_persistent.md虽是一个短小精悍的提示词模板,但它承载了 openJiuwen 多智能体团队系统中"长期团队"完整的行为契约:任务完成后汇总成果、不解散成员、自动进入待命等待新指令,并以一次广播高效收尾。其背后的实现链条清晰可循——lifecycle参数决定模板装配(AgentTeamPolicy / TeamRail),TeamCompletionHandler驱动完成检测与自动暂停,AgentLifecycleHandler落实轮询暂停与 Leader 存活,最终形成一个"配置一处、语义与运行时同步生效"的完整生命周期机制。
- 人工智能
- AI Agent
- Agent 框架
- 工具调用
- Agent 工作流
- RAG
- MCP Clients
- 强化学习
【免费下载链接】agent-core-java
openJiuwen agent core Java是 openJiuwen Core的 Java版本,提供AI Agent开发、运行、调优与演进相关的全套SDK能力。
相关推荐
Warp 排队提示词附件机制全解析:从输入暂存到队列行火力的完整生命周期
Warp 排队提示词附件机制全解析:从输入暂存到队列行火力的完整生命周期 导读 :本文围绕 Warp 的 APP 4617 特性展开,讲解当 Agent 忙时用
桌面应用开发者工具人工智能AI 应用AI Agent代码智能体openJiuwen Agent Teams 临时团队生命周期:任务完成后高效关闭与解散的完整指南
openJiuwen Agent Teams 临时团队生命周期:任务完成后高效关闭与解散的完整指南 导读 在 openJiuwen agent core jav
人工智能AI AgentAgent 框架工具调用Agent 工作流RAGMCP Clients强化学习Rust RFC 生命周期解析:从提交到实现的完整路径 🚀
Rust RFC 生命周期解析:从提交到实现的完整路径 🚀 想要了解Rust语言如何保持稳定性和创新性的完美平衡吗?RFC(Request for Comme
文档
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考