Claude Code联网实战:从代码助手到互联网Agent的能力跃迁
OpenAI 这边刚把 Codex 的 harness 开源到 GitHub,Anthropic 那边就把 Claude Code 的视线从终端移向了整个公共互联网。如果你最近一直在用 Claude Code 写代码、做重构,可能已经注意到一个明显的变化:它不再只是“读你项目里的文件、改你本地的代码”,而是开始主动去查网页、抓公开文档、请求线上 API,再把结果带回到你的终端会话里。
这个变化值得每个做 AI 编程、Agent 开发的人认真看一遍。表面上看,这只是多了一个“联网搜索”的功能按钮;往深一层看,这是终端代理型 AI 工具从“本地代码助手”向“互联网 Agent”演进的信号。本文不打算只复述新闻,而是从开发者视角拆解:Claude Code 为什么要把能力延伸到公共互联网、这种能力实际落在哪些接口和机制上、你在真实项目里怎么配置和验证,以及这个方向上有哪些必须注意的边界和坑。
1. 这篇文章真正要解决的问题
先说实话:很多人看到“Claude 将攻击延伸至公共互联网”这种标题,第一反应是“AI 是不是要搞网络攻击了”。这是一个很容易误解的表述。这里的“攻击”不是网络安全领域的攻击,而是指 Claude Code 这类代理工具的能力边界向外扩张——从只能在本地文件系统里操作,变成可以主动访问公共互联网资源。
这意味着什么?过去你用 Claude Code 改代码,遇到一个不熟悉的 API 用法,得自己打开浏览器去查文档,然后把文档内容粘贴给 Claude。它虽然能帮你写代码,但信息源基本是断的,它只能基于训练数据和你在会话里喂给它的内容来推理。当 Claude Code 接入公共互联网能力之后,这条链路变短了:它可以直接去检索公开文档、读取网页内容、请求公开接口,然后基于实时获取的信息继续你的编程任务。
这篇文章要解决的核心问题包括:
- Claude Code 到底通过哪些技术机制获得公共互联网访问能力?
- 它在实际开发中能做什么?不能做什么?
- 开发者如何在自己的终端里配置、安装并验证这个能力?
- 相比 OpenAI Codex 的开源做法,Anthropic 的路线有什么不同?
- 使用这种“联网 Agent”时,权限边界、安全风险和成本问题怎么处理?
如果你正在用 Claude Code、Cursor 这类 AI 编程工具,或者正在做 Agent 类应用开发,这篇文章可以帮你把“AI 编程工具联网”这件事从概念落到操作层面。
2. 从“代码助手”到“互联网 Agent”:核心概念与演进背景
2.1 什么是 Claude Code
Claude Code 是 Anthropic 推出的终端代理型编程工具,基于 Claude 大模型运行。它不是一个 IDE 插件,而是一个跑在命令行里的 Agent:你可以让它读取项目文件、修 bug、重构代码、执行测试命令,它会根据你的指令和项目上下文自主完成一系列操作。
它在设计上与传统的“AI 补全”工具有一个本质区别:传统工具是“你写代码,AI 补全下一段”,Claude Code 是“你提出目标,AI 规划并执行操作步骤”。比如你可以直接对它说:“帮我检查一下这个项目的依赖版本,找出所有过期的库并给出升级建议”,它会自己去读取 package.json、分析依赖树、给出结论,甚至执行升级命令。
2.2 什么是 Codex
Codex 是 OpenAI 推出的编程 Agent。与 Claude Code 类似,它也是跑在终端环境里,可以读写文件、执行命令、安装依赖、运行测试。最近 OpenAI 把 Codex 的 harness 开源到 GitHub,引发了大量开发者的关注。
Codex 与 Claude Code 的核心逻辑其实是同构的:
- 都是文本指令驱动。
- 都具备文件读写和执行命令的能力。
- 都以“任务完成”为最终目标,而不是以“生成一段代码”为终点。
区别在于:OpenAI 选择通过开源 harness 来吸引开发者自建和扩展,Anthropic 则把 Claude Code 作为一个高度集成的商业产品推进。两者的技术边界和生态策略不同,但底层趋势是一致的——AI 编程工具正在从“代码生成器”变成“能执行任务的 Agent”。
2.3 什么是公共互联网能力
这里需要把“公共互联网”这个概念讲清楚。在 Agent 语境下,“访问公共互联网”不是指给 AI 一个浏览器让它随便逛,而是指 Agent 能够通过一组工具接口向外部网络发起请求并处理返回内容。具体包括:
| 能力类型 | 说明 | 典型用途 |
|---|---|---|
| Web 检索 | 根据关键词搜索并返回相关网页摘要 | 查找最新文档、技术博客、问题讨论 |
| 网页抓取 | 获取指定 URL 的网页正文内容 | 读取 API 文档、官方公告、安装指南 |
| HTTP 请求 | 向公开 API 发起 GET/POST 请求 | 查询数据、调用线上服务、验证接口 |
| 内容解析 | 将抓取到的 HTML、JSON、文本转为结构化结果 | 让模型基于网页内容继续推理 |
当 Claude Code 获得这些能力后,它就不再是一个信息孤岛。它可以自己去查一个库的最新版本、读一篇英文技术文档、调用一个公开 API 来验证自己的判断。在真实开发场景里,这种“实时获取外部信息”的能力,比单纯依赖训练数据要可靠得多。
2.4 从本地技能到联网技能:Agent Skills 与工具调用
Anthropic 在 Claude 的生态里引入了“技能(Skills)”这个概念。你可以把技能理解为一组预先定义好的能力模块,Agent 在需要时自动调用。比如“搜索文档”“读取网页”“执行 HTTP 请求”都是技能层面的能力。
对于开发者来说,更底层的机制是Tool Use。Claude 模型本身通过 API 暴露了工具调用接口,开发者或客户端可以在请求中声明可用的工具,模型会在需要时返回一个“调用某个工具”的指令,然后由客户端执行真正的操作,再把结果回传给模型继续推理。
Claude Code 之所以能访问公共互联网,本质上就是因为它注册了这类网络工具,并能在终端会话里自主决定何时调用。这个机制和我们平时写代码时的“依赖注入”思路很像:模型不知道抓取网页的具体实现,但它知道自己有一个叫做“web_fetch”的工具可用,需要时会触发这个工具,剩下的交给客户端处理。
3. Claude 能力延伸至公共互联网:到底改变了什么
3.1 对开发流程的改变
在没有联网能力的阶段,Claude Code 的工作半径是有限的:你项目目录里有什么,它就只能看到什么。如果你想让它分析一个外部库的用法,通常需要先把文档复制到项目里,或者手动粘贴给 Agent。这个过程本身就是信息损耗的重灾区——文档很长,复制不全;版本很多,容易粘错。
联网之后,这个流程变成:
- Claude Code 发现需要了解某个外部库的用法。
- 它自动发起搜索或直接抓取官方文档 URL。
- 它读取内容,结合当前项目上下文给出建议。
- 如果建议涉及 API 调用,它还可以直接请求线上接口验证。
这意味着 AI 编程工具的“上下文构建”方式发生了根本变化:从“用户喂什么,模型看什么”变成“模型自己找信息,自己拼上下文”。对于复杂项目的开发效率提升是肉眼可见的。
3.2 从“写代码”到“完成任务”
过去大家对 AI 编程工具的印象还停留在“自动补全代码”,但 Claude Code 这类工具真正想做的是“完成任务”。完成一个任务通常要经历多个阶段:信息收集、方案设计、编码实现、测试验证、问题修复。联网能力补上的正是“信息收集”和“测试验证”这两块。
举个例子,你让它“帮我查一下 xxx 库最新版本是否支持 Node.js 20,并把项目升级到兼容版本”。没有联网能力时,它只能凭训练数据里的旧信息给你一个大概率过时的结论。有联网能力时,它可以去 npm registry 查版本、去 GitHub 看 release notes,然后基于实时数据给出升级方案并执行。
3.3 对应用生态和工具链的影响
当 Claude Code 这一类终端 Agent 开始具备互联网能力,影响的不仅仅是写代码这个动作,而是整个开发工具链的协作方式:
- 以前“查文档—写代码—查报错—改代码”是一个循环,现在 AI 可以把这个循环的大部分环节串起来。
- 以前“本地环境—外部服务—代码仓库—发布平台”之间需要开发者手动切换工具,现在 Agent 可以通过工具调用访问这些系统的公开接口。
- 以前 Agent 的能力边界由本地文件系统决定,现在由“它能访问哪些外部服务和数据源”决定。
这也是为什么 OpenAI 开源 Codex harness 和 Anthropic 推进 Claude Code 联网能力,在方向上是一致的:两家公司都看到了同一个趋势——AI 编程工具的下一个竞争点不是模型参数,而是 Agent 能从外部世界获取多少实时信息,并安全地执行多少真实操作。
4. 环境准备与前置条件
如果你想在自己的终端里体验 Claude Code 的联网能力,需要准备以下环境。需要说明的是,版本相关细节请以实际项目为准,本文重点演示通用思路。
4.1 基础环境要求
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | macOS / Linux / Windows | Windows 推荐使用 PowerShell 或 Windows Terminal |
| Node.js | 18 及以上 | Claude Code 通过 npm 安装 |
| npm | 随 Node.js 安装 | 用于全局安装 CLI 工具 |
| Claude API Key | Anthropic 账号 | 在 Anthropic 控制台创建 |
| 网络 | 可访问公开互联网 | Agent 需要访问外部服务 |
4.2 安装 Claude Code CLI
Claude Code 目前主要作为 CLI 工具分发,安装命令如下。如果你在 Windows 环境下遇到claude 不是内部或外部命令的报错,大概率是 npm 全局安装路径没有加入 PATH。
npm install -g @anthropic-ai/claude-code安装完成后,验证是否成功:
claude --version如果输出版本号,说明 CLI 安装成功。如果提示找不到命令,执行以下命令查看 npm 全局 bin 路径,并把它加入系统 PATH:
npm bin -g4.3 配置 API Key
Anthropic 的 API 需要使用 API Key 进行认证。你可以先在 Anthropic 控制台创建 Key,然后通过环境变量注入。
macOS / Linux 下:
export ANTHROPIC_API_KEY="你的API_KEY"Windows PowerShell 下:
$env:ANTHROPIC_API_KEY="你的API_KEY"注意:API Key 是敏感凭证,不要写入代码仓库、不要粘贴到公开对话中。生产环境建议通过密钥管理服务或 CI 的 secret 配置注入。
配置完成后,启动 Claude Code:
claude进入交互界面后,可以先问一个简单问题,确认模型和 API 链路都正常。
4.4 模型选择与兼容性
Claude Code 默认会使用 Anthropic 的 Claude 系列模型。从实际搜索结果来看,社区里也有开发者尝试将 Claude Code 接入其他模型服务(例如 DeepSeek),但这类操作涉及协议兼容问题,官方并不保证支持。如果你只是想要一个稳定的体验,建议使用官方 API 默认模型。
一个常见的报错是:
"deepseek-v4-pro" is not a model this version of claude code recognizes
这种情况通常是因为你在配置里手动指定了一个当前版本 Claude Code 不认识的模型名称。解决办法是恢复默认模型配置,或者检查所使用的第三方接入方案是否与当前 Claude Code 版本兼容。
5. 核心流程拆解:从安装到联网任务
5.1 第一步:确认权限范围
在使用 Claude Code 的联网能力之前,必须先明确权限边界。这个“权限”包括两个层面:
- Claude Code 对本地文件系统的读写权限。
- Claude Code 对外部网络资源的访问权限。
在 Claude Code 的配置中,你可以限制 Agent 是否允许执行特定命令、是否可以访问某些目录。建议在开始联网任务之前先查看当前的权限配置,避免 Agent 在执行任务时做出超出预期的操作。
5.2 第二步:启动交互会话并配置工作区
启动 Claude Code 时,建议先切换到目标项目目录:
cd /path/to/your/project claude这样 Agent 可以感知项目结构,后续操作也会围绕当前目录展开。如果你在初始化过程中遇到“unable to connect to anthropic services”或“failed to connect to api.anthropic.com”之类的网络错误,优先检查 API Key 是否正确、网络是否能正常访问 Anthropic 服务。
5.3 第三步:发起一个联网任务
下面以“查询最新版本信息并更新依赖”为例,演示联网任务的基本流程。在 Claude Code 交互界面里输入:
请帮我查一下 axios 这个 npm 包当前的最新版本,并告诉我 Node.js 20 环境下的兼容性情况。如果 Agent 具备联网能力,它会触发 Web 搜索或网页抓取工具,去 npm registry 或 npm 官网获取相关信息,然后返回结论。
5.4 第四步:检查 Agent 的工具调用记录
联网任务结束后,建议检查 Agent 实际调用了哪些工具、访问了哪些 URL。这个行为可以通过 Claude Code 的会话日志查看。它的价值在于:你能确认 Agent 的信息来源是否可靠,而不是盲目相信模型生成的结论。
5.5 第五步:将结果用于项目代码
拿到外部信息后,可以继续让 Agent 基于这些信息修改项目代码:
基于你刚才查到的 axios 最新版本信息,帮我把 package.json 里 axios 的版本号更新到兼容的最新稳定版,然后把更新后的依赖安装好。这里注意一点:Agent 执行安装命令属于真实操作,如果项目里还有其他依赖与 axios 存在版本耦合,可能会导致冲突。建议先让 Agent 输出变更方案,你确认后再让它执行安装。
6. 完整示例与代码实现
这一节给出三个可以直接落地的示例。需要强调:所有示例都基于公开资源和自己有权限访问的服务,不要对任何未授权的目标发起请求。
6.1 示例一:用 Python 请求公开 API 并获取数据
这是最基础的联网场景:向一个公开 API 发起请求,获取数据并处理。下面用 Python 脚本演示,使用requests库访问一个公开的 API 接口。
# 文件路径:demo_public_api.py import requests # 以 JSONPlaceholder 公开 API 为例,这是一个提供假数据的免费接口 url = "https://jsonplaceholder.typicode.com/posts/1" try: response = requests.get(url, timeout=10) response.raise_for_status() data = response.json() print("请求成功,返回数据:") print(f"标题:{data.get('title')}") print(f"内容:{data.get('body')}") except requests.exceptions.Timeout: print("请求超时,请检查网络或目标服务状态") except requests.exceptions.RequestException as e: print(f"请求失败:{e}")运行方式:
python demo_public_api.py正常情况下会输出标题和内容字段。这个示例虽然简单,但它演示了 Agent 或脚本访问公共互联网时需要处理的核心问题:网络不可用、接口报错、数据解析。
6.2 示例二:用 Node.js 抓取网页并提取关键信息
在 Claude Code 的生态里,Node.js 是核心运行环境,因此用 Node.js 示例更贴近实际场景。下面的脚本使用cheerio解析一个公开网页的标题和正文摘要。
// 文件路径:demo_fetch_page.js const axios = require('axios'); const cheerio = require('cheerio'); async function fetchPageInfo(url) { try { const response = await axios.get(url, { timeout: 15000, headers: { 'User-Agent': 'Mozilla/5.0 (compatible; ClaudeCodeDemo/1.0)' } }); const html = response.data; const $ = cheerio.load(html); const title = $('title').text(); console.log('页面标题:', title); // 提取前两个 meta 描述 $('meta[name="description"]').each((index, el) => { if (index === 0) { console.log('页面描述:', $(el).attr('content')); } }); } catch (error) { console.error('抓取失败:', error.message); } } const url = 'https://example.com'; fetchPageInfo(url);运行方式:
node demo_fetch_page.js注意:抓取网页前要确认目标站点是否允许抓取,并遵守网站的 robots.txt 约束。User-Agent建议设置为能标识真实请求来源的字符串,不要伪装成浏览器欺骗站点。
6.3 示例三:在 Claude Code 中注册一个联网任务
如果你想直接体验 Claude Code 的联网能力,不需要自己写抓取脚本,而是通过对话让 Agent 完成。下面是一个标准任务模板:
请访问 https://nodejs.org/en/download 页面,提取当前 Node.js 的最新 LTS 版本号,并告诉我当前系统 Node 版本与最新 LTS 的差距。如果 Agent 支持网页抓取工具,它会直接访问该页面并返回版本信息;如果不支持,它会提示你手动添加工具或粘贴页面内容。
6.4 示例四:用 Python 调用视频或文本服务进行总结(以公开接口为例)
这个示例演示的是“获取内容—交给模型处理—输出结构化结果”的常见 Agent 链路。假设你要对一个公开网页内容做摘要:
# 文件路径:demo_summarize.py import requests from bs4 import BeautifulSoup url = "https://www.python.org/" def fetch_text(url): response = requests.get(url, timeout=10) response.raise_for_status() soup = BeautifulSoup(response.text, "html.parser") # 去掉 script 和 style 标签,避免把前端代码当正文 for tag in soup(["script", "style"]): tag.decompose() return soup.get_text(separator="\n", strip=True) text = fetch_text(url) # 截取前 2000 个字符作为样例,避免模型输入过长 sample = text[:2000] print("抓取到文本长度:", len(text)) print("前 2000 个字符预览:") print(sample)运行方式:
python demo_summarize.py这个示例的意义在于演示数据清洗:抓取网页后不能直接把 HTML 扔给模型,需要先去掉标签、脚本、样式,提取正文文本,再交给 NLP 服务或 Claude API 做进一步处理。
7. 运行结果与效果验证
完成示例代码后,需要验证任务是否真正成功。下面是每种示例的判断方法。
7.1 验证网络请求
- 预期输出:
请求成功,返回数据:以及对应的标题、内容字段。 - 判断标准:脚本退出码为 0,输出结果包含预期字段。
- 如果失败:先看错误类型。
Timeout是网络超时;RequestException可能是 URL 错误、DNS 解析失败、目标服务返回 4xx/5xx。
7.2 验证网页抓取
- 预期输出:打印页面标题和 meta 描述。
- 判断标准:输出内容是目标页面真实存在的,而不是默认值。
- 如果失败:检查目标 URL 是否可访问、是否被反爬限制、
User-Agent是否被服务器拒绝。
7.3 验证 Claude Code 联网任务
- 预期输出:Agent 返回包含最新版本号或合规性说明的文字结论。
- 判断标准:结论中有明确的数据来源,例如“根据 npm 官方仓库显示”或“访问了 xx 页面后得知”。
- 如果失败:检查 API Key 是否有效、当前网络能否访问 Anthropic 服务、Agent 是否真的启用了联网工具。
8. Claude Code 与 OpenAI Codex:两条路线的对比
8.1 产品形态对比
| 维度 | Claude Code | OpenAI Codex |
|---|---|---|
| 产品定位 | 终端代理型编程工具 | 终端代理型编程工具 |
| 核心能力 | 文件操作、命令执行、联网扩展 | 文件操作、命令执行 |
| 开源策略 | 闭源为主 | 已开源 harness |
| 模型依赖 | Claude 系列模型 | OpenAI Codex/ChatGPT 模型 |
| 扩展方式 | 工具调用与技能机制 | 社区自定义 harness |
8.2 生态路线差异
OpenAI 选择把 Codex harness 开源,意味着第三方可以修改、复制、重新部署这个“编程 Agent 的工作框架”。对于开发者来说,这种做法的好处是灵活,你可以替换模型、调整工具、改造流程;坏处是维护成本高,任何一个上游更新都可能破坏你的自定义实现。
Anthropic 选择把 Claude Code 作为一个产品来推进,工具的稳定性、接口一致性由官方保证。开发者的选择空间小一些,但使用门槛也低一些。两者的差异其实代表着 AI 工具生态的两种经典路线:开放平台模式 vs 集成产品模式。
从标题说的“OpenAI 之后又是 Anthropic”来看,更准确的理解是:OpenAI 先通过 Codex 展示了“编程 Agent 可以独立执行任务”,Anthropic 随即通过 Claude Code 的联网能力证明了“Agent 的任务边界可以扩展到公共互联网”。这不是巧合,而是两家公司在同一个方向上的正面竞争。
9. 常见问题与排查思路
下面是 Claude Code 使用过程中常见的几类问题,整理成表格方便对照排查:
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
claude不是内部或外部命令 | npm 全局 bin 路径未加入 PATH | 执行npm bin -g查看路径 | 将路径加入系统 PATH,重启终端 |
启动时报unable to connect to anthropic services | 网络无法访问 Anthropic 服务或 API Key 无效 | 检查网络连通性、确认环境变量已导出 | 修复网络,重新导出ANTHROPIC_API_KEY |
claude无法识别指定模型 | 配置了当前版本不支持的模型名称 | 输出报错信息中的模型名 | 恢复默认模型配置或升级 CLI 版本 |
| Agent 联网任务返回的信息过时 | 实际未触发网络工具,只依赖训练数据 | 检查会话日志中是否调用了网络工具 | 明确要求 Agent 访问指定 URL 或搜索关键词 |
| Web 抓取被目标站点拒绝 | 目标站点不允许非浏览器请求 | 查看响应状态码和返回内容 | 更换为公开 API,或者使用站点官方提供的 JSON 接口 |
| 安装依赖时版本冲突 | Agent 直接执行安装命令导致依赖树被修改 | 查看 package-lock.json 或依赖变更日志 | 先让 Agent 输出改动方案,确认后再执行 |
| 请求外部 API 被限流 | 短时间内请求次数过多 | 查看 API 返回的 429 状态码和 Retry-After 头 | 增加重试间隔,或使用本地缓存 |
10. 工程视角:权限边界、安全与成本建议
10.1 权限边界与最小权限原则
当 AI 编程工具具备联网能力后,权限边界问题会变得非常重要。核心原则是:给 Agent 的权限,应该是完成当前任务所需的最小权限。
在实际项目里,建议:
- 将 Agent 的工作目录限制在项目根目录内,避免它读取或修改无关文件。
- 对于高风险操作(如删除文件、推送代码、创建云资源),要求 Agent 每次执行前都先输出操作计划,由你确认后再执行。
- 不要在生产环境直接把完整 API Key 暴露给 Agent,建议使用代理层对请求进行审计和限流。
10.2 访问控制与合规
Claude Code 访问公共互联网时,实际发出的请求来自你的服务器或本地机器。这意味着:
- 目标服务可能会记录你的 IP 和请求模式。
- 你访问的数据必须是你有权访问的公开数据。
- 如果是企业内部系统或私有 API,必须先确认是否有权限调用。
简而言之:让 Agent 联网不是问题,问题是它对谁发起请求、请求了什么内容、你是否有权这样做。这一点在团队协作或生产环境中尤为重要。
10.3 成本控制
Agent 联网后会引入额外的成本:
- 模型推理成本:Agent 多轮调用工具、处理外部返回信息,都会增加 token 消耗。
- 外部 API 成本:如果让 Agent 调用付费 API,每次请求都会产生费用。
- 时间成本:Agent 为了验证信息可能发起多个请求,任务完成时间会比纯本地操作更长。
因此在让 Agent 执行联网任务时,建议先明确任务范围,避免开放式探索。比如“查一下 package.json 里 axios 的最新版本并返回版本号”比“帮我分析一下 axios 的生态情况”更节省成本。
10.4 回滚与容错
任何 Agent 自动执行的变更,都应该有回滚方案:
- 修改文件前确认是否有版本管理,推荐在 git 分支上操作。
- 执行安装命令前确认是否有锁文件可还原依赖状态。
- 在 CI/CD 流程里启用 Agent 操作时,设置超时和人工审批节点。
11. 总结与后续学习方向
Claude Code 从本地代码助手走向公共互联网 Agent,不是一个孤立的产品更新,而是 AI 编程工具整体演进的一个缩影。OpenAI 开源 Codex harness 是一种开放路线,Anthropic 强化 Claude Code 的联网能力是一种集成路线,但两种做法指向的是同一个共识:AI 编程的下一步,是从“帮你写代码”变成“帮你完成需要真实世界信息的任务”。
如果你准备在自己的工作流里引入这类能力,建议按下述顺序实践:
- 先把 Claude Code 安装好,跑通本地文件操作和命令执行。
- 尝试一个简单的联网任务,比如让 Agent 查询某个包的最新版本。
- 检查 Agent 的会话日志,确认它确实访问了外部数据源。
- 逐步增加复杂度,例如让 Agent 基于 API 返回结果生成代码。
- 在权限边界、成本控制和安全审计层面做好防护后再用于生产项目。
更值得继续深入的方向包括:了解 Agent 底层的 Tool Use 协议、学习如何自定义 Agent 工具、对比不同模型在 Agent 场景下的工具调用稳定性,以及研究 Agent 在外部信息验证上的局限性。这些内容比“某个工具又更新了”更有长期价值,也更能帮你在 AI 编程工具快速迭代的环境里建立自己的判断力。建议收藏这篇文章,下次配置 Claude Code 或研究 AI Agent 联网能力时,可以直接回来对照操作。
