---
title: "Agent 快速开始"
description: "从下载的示例把你所用框架的 Agent 作为持久化 Dex Session 运行，批准一次写操作，然后在它等待时和 tool 运行时停止程序，看 Session 继续运行。"
canonical_url: "https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start/"
source: "docs/i18n/zh-Hans/docusaurus-plugin-content-docs/current/agent-frameworks/quick-start.mdx"
locale: "zh-Hans"
framework: "claude-agent-sdk"
language: "python"
---

> 供 AI Agent 使用的全部页面索引：https://docs.superdurable.io/zh-Hans/llms.txt

# Agent 快速开始

本文件为 Claude Agent SDK 版本。其他框架：[Google ADK](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.google-adk.md) · [LangChain and LangGraph](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.langchain-langgraph.md) · [Mastra](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.mastra.md) · [OpenAI Agents SDK](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.openai-agents-sdk.md) · [Pydantic AI](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.pydantic-ai.md) · [Vercel AI SDK](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.vercel-ai-sdk.md)

本页代码为 Python。其他语言：[TypeScript](https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.typescript.md)

把你所用框架的 Agent 作为持久化 Dex Session 运行，然后在对话中途停止它，看它继续运行。整个过程大约 10 分钟。

> **用编程 Agent 来做**
>
> 先安装一次 Dex Skills：
>
> Claude Code:
>
> ```bash
> claude plugin marketplace add superdurable/dex-skills
> claude plugin install superdurable-dex@superdurable
> ```
>
> Codex:
>
> ```bash
> codex plugin marketplace add superdurable/dex-skills
> codex plugin add superdurable-dex@superdurable
> ```
>
> 然后粘贴这段提示词：
>
> ```text
> 在这个文件夹里运行 Dex Agent 快速开始。
>
> 1. 阅读 https://docs.superdurable.io/zh-Hans/agent-frameworks/quick-start.md，把它当作唯一依据。
> 2. 问我想用哪个框架和哪种语言。
> 3. 启动 dexcli dev，运行示例 Agent。
> 4. 批准 cancel_order 调用，在它等待时停掉程序，再重启，向我展示 Session 继续运行。
>
> 规则：只做这个快速开始里的内容。不要编造 API。安装其他东西之前先问我。
> ```

<a id="before-you-start"></a>

<a id="what-you-will-build"></a>

<a id="run-it"></a>

<a id="start-in-an-empty-folder"></a>

<a id="get-the-example"></a>

## 1. 获取示例并运行

在一个终端中运行 `dexcli dev`（[安装 `dexcli`](https://docs.superdurable.io/zh-Hans/components/run-locally.md)）。在第二个终端中下载示例，并向 Agent 询问一个订单：

**Python**

```bash
curl -sL https://codeload.github.com/superdurable/dex/tar.gz/main | tar -xz --strip-components=3 dex-main/examples/python/agent-harnesses
cd agent-harnesses
uv sync --locked
uv run --frozen python -m agent_harness_examples.quick_start claude-agent-sdk "Look up order 1001"
```

需要 Python 3.11 或更高版本以及 uv。它会调用 Claude，所以先设置 `ANTHROPIC_API_KEY`。

它会打印 Session ID 和 Agent 的回复：

```text
Session claude-agent-sdk-quick-start-<8 hex digits>
Agent: <the model's reply about order 1001>
```

例子: [examples/python/agent-harnesses/agent_harness_examples/quick_start/\_\_main\_\_.py](https://github.com/superdurable/dex/tree/main/examples/python/agent-harnesses/agent_harness_examples/quick_start/__main__.py)

这个 Agent 是一个小型订单客服 Agent，有两个 tool。`look_up_order` 读取订单，因此 Dex 可以重试它。`cancel_order` 取消尚未发货的订单；它是写操作，所以最多运行一次，并且要等人批准后才运行。

<a id="approve-a-write"></a>

## 2. 批准一次写操作

用消息 **Cancel order 1002** 运行同一条命令。程序会停下来询问：

```text
cancel_order wants to run with {"order_id":"1002","reason":"requested by the customer"}. Approve? [y/N]
```

Session 在 `AwaitToolApproval` 中等待。输入 **y**，Agent 就会取消订单并回复。[审批](https://docs.superdurable.io/zh-Hans/agent-frameworks/approvals.md) 介绍应用如何读取并答复正在等待的调用，以及人如何在 Dex Web 中批准它。

<a id="stop-the-worker"></a>

## 3. 在 Agent 等待时停止程序

再次要求取消订单 1002；每次不带 `--session-id` 运行都会启动一个新 Session。程序请你批准时，按 Ctrl+C。程序、它的 Worker 和 Client 都会停止，而 Session 仍在 Dex 中等待。

在同一个文件夹中再次运行第 1 步的命令，用 `--session-id SESSION_ID` 替换消息。新的 Worker 启动，程序会询问同一个 `cancel_order` 调用。输入 **y**。订单只取消一次，重启之前的模型调用仍然是已完成状态。

1. Worker：RunModel 调用模型。模型请求调用 cancel_order。
2. Dex Server：cancel_order 在 AwaitToolApproval 中等待。这个等待由 Dex Server 保管。
3. Worker 停止。
4. Dex Server：审批继续在 Dex Server 上等待，不需要 Worker。
5. 重启后的 Worker：Worker 重新启动并连接 Dex。
6. Dex Server：你在程序的提示符处批准 cancel_order，Dex Server 记录这个答复。
7. 重启后的 Worker：cancel_order 只运行一次。模型写出回复。
8. Dex Server：这一轮完成。

停止前的模型调用保持已完成，cancel_order 只运行了一次。

<a id="stop-while-a-tool-runs"></a>

## 4. 在 tool 运行时停止

在 Tool Call 中途崩溃是更难处理的情况。示例可以放慢每次 Tool Call，让你有时间停止它。

1. 在第 1 步的命令前加上 `DEX_ORDER_DESK_TOOL_DELAY_SECONDS=20`，询问订单 1001。
2. 在 20 秒内像崩溃那样杀掉程序。崩溃相当于 kill 信号；Ctrl+C 会先让正在运行的调用完成。

**Python**

```bash
pkill -9 -f agent_harness_examples.quick_start
```

例子: [examples/python/agent-harnesses/agent_harness_examples/quick_start/\_\_main\_\_.py](https://github.com/superdurable/dex/tree/main/examples/python/agent-harnesses/agent_harness_examples/quick_start/__main__.py)

3. 带上 `--session-id`、不带消息，再次运行程序。Agent 会回复订单信息。
4. 查看这次 Tool Call 是如何运行的：

```bash
dexcli flow history --all SESSION_ID | jq '.events[]
  | select(.payload.context.stepType == "CallTool")
  | .payload.context | {finalAttempt, failure: .lastFailureInfo.details.detail}'
```

`finalAttempt` 是 **2**。第一次尝试在 Worker 断开时失败；因为 `look_up_order` 是读操作，Dex 在新的 Worker 上再次运行了它。它之前的模型调用只运行了一次。

现在对写操作做同样的事：设置延迟后要求取消订单 1002，批准它，在 20 秒内杀掉程序，再带上 `--session-id` 运行。Dex 把 `cancel_order` 记录为 `outcome_unknown`，并且不会再运行第二次，因为它是非幂等写操作。Agent 会告诉用户结果未知，由你的应用在任何人重试之前先检查订单系统。[核对 outcome_unknown](https://docs.superdurable.io/zh-Hans/agent-frameworks/tool-calls.md#reconcile-outcome-unknown) 介绍具体做法。

<a id="make-it-durable"></a>

## 是什么让它变得持久

这个示例先按框架本身的写法写好 Agent，再把它包装进 Dex Agent Session，并为每个 tool 指定策略。[你的代码有哪些变化](https://docs.superdurable.io/zh-Hans/agent-frameworks/add-to-your-agent.md#what-changes-in-your-code)给出了每个框架的两个版本。

<a id="use-it-in-your-own-agent"></a>

<a id="complete-files"></a>

<a id="wire-it-into-your-app"></a>

<a id="web-handler"></a>

<a id="next"></a>

## 下一步

- [把 Dex 加入你的 Agent](https://docs.superdurable.io/zh-Hans/agent-frameworks/add-to-your-agent.md) 把这个 Agent 移到你自己的应用中，提供完整文件和一个 web app。
- [Session](https://docs.superdurable.io/zh-Hans/agent-frameworks/sessions.md) 解释哪些内容在重启后保留了下来，以及你所用框架的 turn 如何对应到 Step。
- [Tool Call](https://docs.superdurable.io/zh-Hans/agent-frameworks/tool-calls.md) 解释为什么 `cancel_order` 最多运行一次，以及写操作可能运行两次的那一种少见情况。
- [内置 Agent Loop](https://docs.superdurable.io/zh-Hans/agent-frameworks/built-in-agent-loop.md) 不用框架构建 Agent。
- [订单客服 Agent](https://docs.superdurable.io/zh-Hans/use-cases/order-support-agent.md) 是完整的示例，包含它的 HTTP route。
