a↗Agent 工程实战中文课程 / v1.0.0⌕ 搜索课程/
本页目录

AgentLab项目与数据契约

版本:1.0.0。本文定义本课程自己的业务规则,是习题、参考实现、互动与评分的共同事实源。它不是任何真实商家的售后条款。

1. 贯穿项目

项目名称:AgentLab;业务环境:青禾商店售后;第二环境:三个小型代码修复任务。二者共享任务、模型适配、工具预算与Trace概念,不强行共享领域规则。

所有订单、用户、金额、延迟和故障均为合成教学材料。基础轨只使用本地Python标准库;真实LLM、MCP、FastAPI/PostgreSQL、Temporal/LangGraph与Docker是明确标记的扩展实验,课程网站本身不执行它们。

2. 身份

认证主体为Principal(tenant_id,user_id),不可由模型或工具参数覆盖。shop-a/u-alice和shop-b/u-bob为两个测试主体。同一订单号在不同租户可以同时存在。无权限和不存在对外统一返回NOT_FOUND。

所有读、审批、提交、事件和artifact接口都执行对象级授权。参考实现只模拟已经认证的Principal,不实现登录、JWT签发或完整身份提供方。

3. 订单与政策v2

订单字段:tenant_id、order_id、owner_id、paid_cents、refunded_cents、shipment_state、delivered_days、unopened、custom、version。金额为非负整数分,不使用浮点。available=paid-refunded,必须非负。时间使用注入的整数时钟,单位秒。

规则按以下优先级判断:

  1. 无访问权:NOT_FOUND,不暴露其他信息。
  2. available=0:ALREADY_REFUNDED,不创建新退款。
  3. custom=true:MANUAL_REVIEW,不自动退款,包括物流丢件的定制品。
  4. shipment_state=lost:可退available。
  5. shipment_state=delivered且0≤delivered_days≤7且unopened=true:可退available。
  6. shipment_state=unknown:MANUAL_REVIEW。
  7. 其他情况:NOT_ELIGIBLE。运输中可以解释和建工单,但参考内核不实现真实客服工单。

全额可退余额是本课程唯一退款金额策略。部分余额来自之前已确认退款;本次不允许模型自选金额。所有退款都需要审批,不按金额豁免。

4. 提案与批准

提案绑定:tenant、owner、order、amount_cents、currency=CNY、order_version、policy_version=policy-v2、operation_id、expires_at。operation_id在提案创建时由服务端生成,恢复/重试不得改变。

提案摘要用于检查语义变化,不是授权令牌。授权来自服务端保存的认证用户审批。有效时间为now < expires_at,等于到期时刻即无效。

批准可以幂等重复;相反决策不能覆盖已有批准/拒绝。执行前重新核验订单版本、政策版本和余额。任何字段变化均需要新提案与新审批,本课程不支持上限授权。

已成功操作的合法同参数重试可返回原结果,即使当前提案已过期或订单版本已推进,因为它不产生新副作用;仍需检查请求主体与参数一致。不能把该规则用于提交一项尚未执行的过期操作。

5. 操作语义

作用域为(tenant_id,operation_id)。参数摘要一致的重复请求返回原结果;不一致报IDEMPOTENCY_CONFLICT。同一operation最多一笔账本记录。新业务意图有新ID,但仍受当前余额、版本与新审批约束。

本地参考服务的订单、提案、操作与账本在同一SQLite事务,支持模拟提交后丢响应。此保证不自动扩展到真实支付API。远端不支持去重或查询时,未知结果必须进入核对流程。

6. Run与事件

conversation_id、run_id、attempt_id、call_id、operation_id不同。run可能多次恢复,operation不随尝试变化。任务状态见M05。等待审批落盘,不占执行资源。

UI事件按每run递增seq排序,可重复传输;客户端去重,不重新执行操作。业务状态与其事件同事务提交。观测Trace允许独立保留策略;恢复和审计所需事实不能因采样丢失。

7. 教学预算

离线Runner默认最多6次模型调用、8次工具调用,每工具返回上限由注册表约定。参考实现验证轮次/调用预算;输出字节、真实token、墙钟及远端费用预算是后续实验任务,不冒称已全部实现。

模拟成本单位不等于人民币或供应商报价。真实实验必须配置价格来源与时间,基础课程不得要求付费API才能阅读、完成互动或运行参考测试。

8. 数据分层

retail/orders.json为业务合成数据;policies.json为检索内容;tasks.jsonl为24个任务规格,expected是教学答案而非秘密测试;evaluation/trials.json为指标练习,不是Agent实测。coding目录是原创小题,不是SWE-bench样本。

所有公开任务的expected字段只能供评测器使用,不放入模型输入。网页默认先显示任务,提交或主动展开后显示期望与解释。

9. 非目标

本包不是部署完成的生产后端,不包含真实账户/支付,不替学习者选择供应商,不保证任何求职结果。课程正文、答案、交互规格与离线参考材料已经交付;实际网站和可选集成由后续开发Agent按handoff实现与验证。