# LangGraph interrupt 人工审批教程：批准与拒绝各运行一次再检查文件

## 本轮实际范围

已真实运行 LangGraph 1.2.15 的 interrupt、Command 恢复、批准/拒绝和字符串负例；没有模型调用或线上副作用。

## 起步

```bash
python3 verify.py
```

## 1. 创建无模型的审批环境

在独立 Python 环境安装 requirements.txt。本例用确定性草稿测试框架控制流，不调用任何模型，也不发送邮件或发布线上内容。

```bash
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
```

## 2. 查看中断携带的实际动作

run.py 的 review 节点通过 interrupt 暴露 title 与 write-local-draft。暂停之前不写文件；查看 result.json 的 paused_payload，而不是只看一张图。

## 3. 先运行拒绝分支

同一个 thread_id 下用 Command(resume=False) 继续。返回 rejected 后 approved.md 必须不存在；字符串 false 不是 JSON 布尔 false。

## 4. 再运行批准分支

为批准示例使用另一个线程，用真正的 True 恢复。finish 节点才创建 output/approved.md，并核对文件写入的固定标题。

```bash
.venv/bin/python run.py
```

## 5. 检查前置代码重跑边界

官方说明恢复时会从中断节点开头重新执行。把外部副作用放在审批之后，不能在 interrupt 前先发送再期待恢复“撤回”。

## 6. 运行类型错误负例

脚本对第三个线程提交字符串 false，必须抛出 ValueError 并记录拒绝。不能把任意非空字符串按真值当成批准。

```bash
.venv/bin/python verify.py
```

## 7. 最后才扩展模型草稿

需要 AI 生成草稿时单独加入兼容 Chat 模型节点，记录真实输出再审批。本包固定草稿与实际控制流已运行，不能冒称完成模型调用。

## 官方来源

https://docs.langchain.com/oss/python/langgraph/interrupts

## 提醒

参考文档、卡片、JSON和图片都明确标注人工或离线范围；没有实际调用的模型不提供假成功结果。占位配置不是可用凭据。
