学习现场

这一次

对照实验 · 不进原来的十本

你点了关闭。
对面可能已经写上了。

接下来九十分钟,从空文件夹写一段不会把工单关两次的代码。原来那页叫「编码所有权基线」,还在。这一页只干这一件事。

城市设施 · 重复投诉

CASE-2044

要做的事
关掉这张工单
已经签过
note = 重复件,关闭
这一次的号
op_close_2044

你发出关闭。HTTP 客户端抛出 TimeoutError。回执没回来。库里的事实,你这边还不知道。

这次超时发生在哪一侧
工单OPEN
已提交次数0
客户端看到(还没发出)
回执

下一行代码做什么

    第二张

    审批绑的是字,不是心情。

    审批签的是 note = 重复件,关闭。发出之前,模型把 note 改成了 误报,关闭。下面三种实现,点开看工单按谁的字关上。

    然后写

    空目录。九十分钟。

    钟在上面。AI 可以问、可以看 diff,不要让它一次吐出整个仓库。先不要打开原版实验。

    1. 类型先落地

      operation_id 在进门时就有,不在重试循环里生成。请求、响应、工单、回执都有字段,多一个键就拒。

    2. GET 能跑,POST 要过审批

      读可以直接发。关工单之前,审批必须绑 operation_id + 参数摘要 + 过期。摘要对不上,写工具一次都别叫。

    3. 超时以后先问

      提交后超时:按原来的号对账,找到回执就结束。没找到且确认没写上,才沿同一个号再试一次。换号是另一笔生意。

    4. 故意弄坏,再加一条

      注入一次「写上了才超时」。看着提交次数。然后再加:只有 OPEN 才能关。约束写在代码边界,不写在提示词里。

    栈就这些:FastAPI、Pydantic、一次异步读、一次异步写、pytest。不要在这一次里做多 Agent、界面或集群。

    会双写的一份

    Ledger 是对的。Closer 会换号。

    原版实验是完整教师答案,先别打开。这份更小:外部账本行为是对的,关闭逻辑在超时后换号,也不校验审批摘要。测试是对的,刚拉下来是红的。

    cd empty-dir/lab
    python3 -m venv .venv
    source .venv/bin/activate
    python -m pip install -e '.[dev]'
    pytest -q

    四条全绿,并且你能说出超时之后走了哪一分支,这份小代码就算做完。然后再去空目录写 FastAPI 那一份。

    坐下之后

    写三句。只留在这台电脑。

    双写还在的话,先别开始堆 Agent 框架。卡在语法或 API 上,可以再坐一次;卡在超时以后换号,把上面那份会双写的 Closer 再改一遍。

    和原版

    同一关,另一写法。

    完整说明在 DESIGN.md。原页为广州火山 FDE 的第一关,内容没改。做 Agent 写工具时还用同一条:超时先问,不要换号。