本节摘要:本节带你跑通 OWL 的最小协作示例:发起一场两个核心角色的会议,输入一句任务,逐段读对话日志。读日志的方法是本节重心——每一段输出都能对回第 2 章的某个机制(转写、拆解、分派、验收),这套对应关系建立起来,你后面所有排错都有地图可循。
本节是全册的分水岭:此前所有概念从这一节起变成"跑在你机器上的东西"。首次会建议用一个小而真实的任务,别用"测试测试"——日志要有真实纹理才读得懂。示范任务就用贯穿案例的缩微版:"查竞品A官网的三档订阅价格"。
框架提供多组启动脚本适配不同模型服务,首次会直接用任一脚本即可;理解结构后,你也可以自己写一个最小入口:
import asyncio async def first_meeting() -> None: """首次会议入口:与框架自带启动脚本同构的最小骨架。""" # 框架内置的 run 函数会依次完成: # 1)读取配置与密钥;2)装配默认工具箱; # 3)创建用户智能体与辅助智能体;4)提示你输入任务 from owl.run_app import run await run() asyncio.run(first_meeting()) # 运行后提示: # Enter your task: 查竞品A官网的三档订阅价格
输入任务后回车,会程开始。终端会滚动输出对话轮次与工具调用过程——现在轮到本节的重头戏:逐段读日志。
下面是一份首次会的典型日志(缩微任务,节选关键段)。每段后标注它对应第 2 章的哪个机制:
[会前] 正在装配工具箱:搜索、浏览器、代码执行、文档处理(4项) [会前] 智能体就绪:调研发起人、调研主持人
对应六阶段流程(1.2)的阶段一与阶段二:布置会场、知识召回(首次会无历史可召回,直接过)。
[轮次01] 调研发起人: 议题转写:访问竞品A官网定价页,提取三档订阅的名称与月付价格。 验收标准:三档齐全,价格含币种;以官网页面为准。
对应 2.1 甲方代表的议题转写:注意它把八个字的原始需求补成了对象、问题、标准三齐全的议题卡——你输入的那句话已经不在场上了,场上的是这张卡。
[轮次02] 调研主持人: 议题单一,无需再拆。派单:浏览器专家,抵达官网定价页并提取价格区块。
对应 2.2 主持人的拆解与分派:单议题小任务不强行拆分——粒度守则(子任务数不超五)在此生效。
[足迹01] 打开网址 https://www.example-compa.com/pricing 状态:成功 [足迹02] 等待含"元/月"的元素出现(上限30秒) 状态:成功 [足迹03] 提取文本 定价区块约800字 状态:成功
对应 3.1 外联部的操作足迹:条件等待(等"元/月"元素)与文本提取,截屏留痕在完整任务里会出现。
[轮次03] 调研主持人: 专家回报:基础版99元/月,专业版299元/月,企业版需联系销售。 验收:三档齐全,含币种,达标。汇总结论并交差。 [会末] 任务完成。产出:三档价格结论与来源说明。
对应 2.2 的监控与汇总:验收时主持人逐条对表(这是日志里最值得学的段落——它复述了验收标准再宣布通过)。对应六阶段的阶段六:散会总结。
日志宣布完成,产出却只有价格没有出处说明。这在缩微任务里无伤大雅,在真实任务里是灾难的前兆。治法是把"含来源"写进议题的验收标准——主持人对表时自然会卡这一条。
def audit_first_run(final_output: str, acceptance: set) -> dict: """首会产出自检:对照验收标准检查产出文本。""" missing = [a for a in acceptance if a not in final_output] return {"达标项": sorted(acceptance - set(missing)), "缺失项": missing, "判定": "真完成" if not missing else "假完成,补验收标准重跑"} # 输出: # audit_first_run( # "基础版99元/月,专业版299元/月,企业版需联系销售(来源:官网定价页)", # {"三档", "币种", "来源"}) # -> {'达标项': ['三档', '币种', '来源'], '缺失项': [], '判定': '真完成,补验收标准重跑'}
上面输出里判定文案有个小瑕疵(真完成时尾巴多了一句)——真实运行日志也可能出现类似的拼接毛边,读日志时要看语义而非格式,这也是本节想教的读法之一。
输入"查竞品A的价格",产出却是"竞品A、B、C价格综述"。执行侧好心地扩大了范围。对法:日志轮次 01 的议题转写是否忠于你的原意——那是你检查意图偏移的唯一窗口,养成首读议题卡的习惯。
中途某轮出现"未能获取,已尝试替代方案",末尾却宣布完成。替代方案拿到的数据质量可能天差地别。对法:数一数日志里的"受阻—替代"段落,若有,检查产出里是否如实标注了数据来源的降级(呼应 3.4 的可信度分级)。
背景:缩微首会跑通后,团队直接上了贯穿案例的完整任务(三竞品对比纪要),结果第七轮起轮次暴增、上下文吃紧。操作:没有改代码,先读日志——发现主持人把"调研三个竞品"拆成了一个串行巨单(T1 到 T5 挤在一条线程里),而非按 2.4 的依赖分层并行。结果:仅把议题卡改为分层下发,轮次从二十三降到十四,产出质量不变。解读:首会跑通不等于配置最优,完整任务上线前先做一轮日志审计(下一节的方法),比事后调参便宜得多。
变式:如果你只想体验协作机制不想花太多调用费,把任务换成纯本地议题("把这段文本里的所有日期改成统一格式"),全程只有两轮对话,一次工具调用都不发生——它验证的是角色扮演机制本身。