返回

Agent & Harness 实用向快速入门使用

本文最后更新于 2026/08/16,希望对同学们有所帮助。

如果对编码智能体不熟悉,本文便是为你量身定做的!每个章节都很重要。如果对本文有任何疑问或建议,欢迎向我联系。

AI 时代的基本技能

在 LLM(Large Language Model,大语言模型)时代,能够灵活运用 AI 是一项基本技能。特别是对于我们数学与统计背景的研究生来说更是如此——我们的工作硬性地需要计算机,但多数数理背景的同学对计算机科学和软件技术又没有那么熟悉。AI 恰好能够补足这一块短板。

事实上,AI 在各行各业已经有了十分广泛的运用,例如 AI 短剧。尤其对于互联网行业、研发岗位——我们的就业去向,以编码智能体(Coding Agent)为代表的智能体(Agent)已经彻底融入了工作流程中。

其实 AI 的运用规模可能远比我们所想的更大——在今天,就连相机都借助 AI 以实现更强大的自动对焦。诸如自动驾驶与天气预测等领域中 AI 的运用,更是司空见惯。

在一些软件研发的岗位面试中,面试官会直接问到平时如何使用 AI Coding 及其心得体会。这是来自我的真实见闻,并非凭空杜撰。坦诚地讲,我认为我现在的学习、生活与工作也离不开 AI,否则我需要花费更多的时间与精力才能完成任务。AI 能够帮助我们提升行事效率,已经逐渐成为一种重要的社会能力。

可以说,早在 LLM 爆发以前,AI 就完全进入了我们的生活。而在 Agent 大行其道的今天,这一现象只会有增无减。写代码、跑计算、改配置、数据分析、绘图、做 PPT……Agent 可以在我们的设备上完成许多种任务。

因此,我撰写了本文,希望能够写下我的经验,帮助同学们快速掌握 Coding Agent 的使用方法,并在自己的生活与项目中实践。

大模型的基本概念

为了更好地熟悉我们所使用的工具,有必要先行介绍一下大模型相关的基本概念。这里只会介绍一些所涉及的基本概念,绝不会有任何深入的原理——如果对大模型已经有基本的认识,可以跳过本章节。

如今的主流大模型均基于 Transformer 架构,使用注意力(Attention)机制。这里需要专业的理论与工程知识才能理解大模型的工作原理,我们略过这些复杂的概念。

LLM 本质上是一类自回归模型:LLM 利用当前输入的所有词预测下一个词,并将预测出的下一个词拼接到本轮输入,一同作为下一轮的输入。比如,对模型输入「我爱吃」,模型预测下一个词是「焦糖」,接着系统会将「我爱吃」与模型预测的输出「焦糖」拼接为「我爱吃焦糖」,作为模型下一轮的输入。在下一轮中对模型输入「我爱吃焦糖」,模型可能会预测下一词是「布丁」……重复这一过程,直至模型输出终止信号(即预测的下一词是终止标记)。

实际上模型预测的是下一 token,关于 token 的概念下文中很快就会介绍。为便于理解,上文暂时没有严谨地区分 token 与自然语言词汇。

事实上,模型内部不可能完全以自然语言的形式直接处理文本。在 NLP(Natural Language Processing,自然语言处理)场景下,我们输入的文本首先会经过分词器(Tokenizer),分词器负责将文本映射为 token ID 数组,数组中的元素就是所谓的 token。不同系列的模型通常使用不同的分词器,分词的方式也不尽相同,但一个自然语言词汇可能会被切分为多个 token——词与 token 并不总是一一对应的。比如,

  • 【茉莉绿茶】可能被分词为【茉莉】、【绿】与【茶】
  • 【clingy to me】可能被分词为【clin】、【gy】、【to】与【me】

接着,模型会将每个 token ID 映射至相应的多维浮点数向量,该过程被称为嵌入(Embedding)。模型内部的计算实际上都是在这些浮点数向量上进行的,而非原始文本。商业模型在计费时,一种常见的计费方式就是按输入与输出 token 计费。

一个有趣且意义深远的现象是,embedding 所构成的向量空间中往往会呈现出一定的语义结构。在 Word2vec 的论文中,Mikolov 就发现了 Word2vec 输出的 embedding 向量中存在【queen ≈ king - man + woman】的现象。

Agent 与 Harness

大模型、Agent 与 Harness

LLM 本身只是一类自回归模型,给定原始输入,不断地进行自回归以生成并输出下一 token,直至给出完整输出。这意味着 LLM 本身不具备感知环境并与环境交互的能力。

我相信读者此前都使用过 Chat 类型的 AI,比如 ChatGPT 网页端在线对话DeepSeek 网页端在线对话豆包 App 在线对话。这些仅 Chat 或 Tool Use 能力弱的 AI 软件对于基于图文的问答任务是合适的。比如,可以向 AI 询问游戏攻略,也可以要求 AI 给出感情相关问题的建议。但归根结底,这类 AI 无法感知并改变我们所处的真实环境。在 Agent 被大范围实践前,基于 LLM 的应用几乎都缺失了这一项重要能力。

Agent 则为 LLM 补足了该关键能力。Agent 是围绕 LLM 为其提供一系列「脚手架」应用后对整个系统的称呼。LLM 能够以特定的格式输出,该格式被 Agent 识别后可以进行相应的工具调用(Tool Use),并在获得结果后将信息返回给 LLM。借助工具调用,LLM 可以获取环境信息,例如查看设备上的文件、发送真实的网络请求,同时也能主动改变环境,例如编写代码文件、执行脚本。

围绕 LLM 建设的一切外围设施均可视为 Harness。因此,可以认为 Agent 是 LLM 与 Harness 有机结合后的系统。Harness 是晚于 Agent 出现的概念。

Agent 的意义不仅仅是为 LLM 充当眼睛与手。毕竟,LLM 的输出具有不确定性,而 Harness 实质上是一系列确定性的应用程序,需要让 LLM 尽可能按照设计的、预期的规则工作,因此会在许多情况下按既定规则引导、介入 LLM 的输入与决策。

Agent 的设计与开发是时下的一类极其热门的岗位,目前已经有了一些业内公认的良好设计和实践方案,如果感兴趣,可以查阅相关资料深入学习、研究,这里便不赘述了。

相关名词解释

Agent 相关产品迭代很快,不同产品对同一名词的实现也可能不同。下面只介绍阅读本文和使用 Agent 时最常见的含义。

  • Prompt:提示词,是提供给模型的输入内容。在一些场景下会进一步拆分为 System Prompt 与 User Prompt:System Prompt 通常由服务提供商设置,用于说明模型身份与约束,Chat 客户无法直接修改;客户在输入框中输入的内容则为 User Prompt。System Prompt 的权限高于 User Prompt。

  • Context:上下文。LLM 本身不保存会话状态,多轮工作需要由应用将必要的历史消息、摘要、文件内容与工具结果重新提供给模型,这些信息共同构成 Context。为模型选择合适的 Context 是 Agent 的基本设计问题之一。

  • 上下文窗口(Context Window):模型一次能够处理的 Context 存在长度上限,该上限即所谓的 Context Window。

  • 多模态(Multimodality):如果模型除了文本外还支持图片、音频等其他类型的数据作为输入或输出,则称该模型是多模态的。不支持图片输入的模型无法直接「阅读」图片。

  • 记忆(Memory):Agent 为无状态的 LLM 提供的外部记忆能力。由于上下文窗口有限,Agent 可能压缩过长的 Context,只保留关键历史信息,也可能跨会话保存需要长期使用的信息。

  • MCP(Model Context Protocol):一种开放协议,用于约定 AI 应用如何连接外部工具、数据源与服务。

  • Skill:一组可复用的说明与资源,用于告诉 Agent 在特定场景下应当如何完成任务。Skill 可以包含工作流程、领域知识、脚本与模板等文件。许多实现采用「渐进式披露」:Agent 只在需要时读取相应内容,以免占用过多 Context。

  • RAG(Retrieval-Augmented Generation):检索增强生成。RAG 会先从文档、数据库或网页等外部知识源中检索相关信息,再将结果加入 Context,供 LLM 参考并生成回答。

  • Plan / Goal:Goal 描述「最终要做到什么」,Plan 描述「接下来准备怎么做」。它们是部分 Harness 为 LLM 提供的任务状态管理能力,Agent 可以在工作期间根据结果调整 Plan,并持续追踪尚未完成的 Goal。

  • Loop:一次典型的 Agent Loop 包含读取 Context、决定下一步行动、调用工具并取得结果,再将结果加入 Context 等环节。Agent 会重复这一循环,直至任务完成、发生错误、需要用户介入,或达到资源限制。

  • 幻觉:指模型生成了不符合事实、缺少依据或与已知信息矛盾的内容。幻觉可能进一步导致错误的工具调用与环境修改,因此涉及重要事实或高风险操作时,应借助可靠信源、程序检查、测试或人工审核进行验证。

工具推荐与配置教程

目前最常见的 Coding Agent 是 Claude Code 与 Codex。二者都有强大的 Agent 能力,可以都安装并体验。如果要推荐第三方 Coding Agent,我会推荐 Pi。

Codex CLI 与 Codex (Desktop)

Codex 是 OpenAI 为 GPT 系列模型打造的官方 Agent,分为 Codex CLI 与 Codex App 两种形式。

过去普遍使用的是终端 Agent 程序 Codex CLI,后来 OpenAI 推出了具有图形化 UI 的 Agent 程序 Codex App。我更习惯使用 Codex CLI,但如果对终端命令行操作不熟悉,使用 Codex App 是完全可行的,体验也相当不错。

Codex CLI 安装参考:Codex 安装教程:Windows / Mac / Linux 三端完整安装指南

Codex App 从官网下载并在图形化界面的引导下完成安装即可:Codex:同一款强大的编程智能体 — 现已入驻 ChatGPT

Claude Code

Claude Code 是 Anthropic 为 Claude 系列模型打造的官方 Agent,是最早被广泛使用的终端 Coding Agent。

安装方式:

  • Windows 在 PowerShell 执行 irm https://claude.ai/install.ps1 | iex
  • Mac 在终端执行 curl -fsSL https://claude.ai/install.sh | bash

现在不太建议通过 Node.js 的 npm 安装 Claude Code,因为 npm 12 的 lifecycle script policy 与 Claude Code 自更新存在冲突,GitHub issue 提到 npm 12 的 allow-scripts 策略导致 @anthropic-ai/claude-codepostinstall 被阻止。排查这个问题花费了我一些时间与精力,且 Anthropic 官方现在也不再推荐通过 npm 安装——但许多中文教程依然介绍的是该方式。

Pi

Codex 与 Claude Code 分别是商业公司 OpenAI 与 Anthropic 开发的 Coding Agent。开源的 Pi 则以轻量化著称,秉承与 less is more 相似的设计哲学。如果要推荐第三方 Coding Agent,我会推荐 Pi。

作为开源的 Agent,Pi 本身就是学习 Agent 设计的一个极佳参考。阅读源码、学习 Agent 架构设计,Pi 是很好的教材。

Pi 使用起来也相当轻巧,遵循官方仓库中给出的方法安装、配置与使用即可。

实操演示

我录制了 Claude Code 实操演示视频,以翻译文献任务为例:Claude Code 演示

视频的形式会比图文更直观。

更实惠的价格

Codex 与 Claude Code 很强大,但存在两个问题:定价相对较贵,以及需要能访问外网的网络环境。

关于定价:大模型的扣费方案大体上分为按使用量扣费与套餐扣费两种。如果对 Agent 需求较大,通常选择合适的套餐会比按使用量计费更划算。套餐,即 Coding Plan 或 Token Plan,通常的形式是在若干日内给予固定的额度上限,不额外收费,并且在一定时间后重置可用额度。

关于网络环境:Codex 与 Claude Code 如果不做额外配置,在国内的网络环境下需要网络代理才能登陆并使用。官方的使用方式依赖官方账号。

国产模型 API

除了官方账号登陆的方式,Claude Code 与 Codex 均提供了配置 API 使用的方式,因此可以绕开官方、使用第三方模型供应商的 API。

国产模型大多提供了分别对接 Claude Code 与 Codex 的 API,只需要做一定的配置,便能将底层模型的请求从 OpenAI 或 Anthropic 切换至指定的第三方模型供应商,这通常会更便宜,也无需外网环境,但 Agent 的表现取决于 API 背后的具体模型能力。

例如,下面是 DeepSeek 官方文档中介绍的配置方式:

有的国产模型也提供套餐,比如 GLM、Kimi。DeepSeek 暂只支持按 API 使用量扣费。

中转站 API

中转站能在兼具更实惠的价格与更简单的网络要求的前提下,依然享受 OpenAI 或 Anthropic 的官方模型之强大能力。但相应地,需要承担数据安全与欺诈风险的代价——你无法确认中转站提供的 GPT 与 Fable 是不是拿 Qwen 去 cosplay 的。

如果需要中转站个人推荐,请与我联系 > <

Skills 与我的推荐

在过去模型能力与 Agent 能力偏弱时,Skill 能够帮助 LLM 获得特定场景下的额外信息,这相当于为 LLM 注入 Prompt。随着基模能力的飞跃与 Harness 的完善,如今已不再需要过多的 Skill。有研究指出,安装过多的 Skill 会导致 Agent 的表现下滑。

不过,在需要多次复用独特的领域知识时,Skill 依然是不错的选择,例如完成统计教学任务的 PPT。

现在,我只推荐一个相对通用的 Skill 组合:mattpocock/skills。作者 Matt Pocock 是资深的软件工程师,有着丰富的软件开发经验。其中的 grill-me 是我经常使用的 Skill,该 Skill 要求 AI 必须提前向我确认所有的边界问题,在与我充分讨论、敲定所有实现细节后再开始着手改动。这能为我省下不少心。如果在 AI 做出修改后才发现改动非我所预期,这会带来许多本不必要的麻烦。

按作者在仓库中给出的安装方式安装该 Skills 即可。

版本控制

Git 是一个分布式版本控制系统,用于记录一组文件在不同时刻的状态。借助 Git,我们可以查看版本差异、追踪修改原因,或回到此前能够正常工作的版本。Git 的完整机制比较复杂,这里只介绍日常使用中必须理解的概念。由于 AI 生成的结果具有不确定性,使用 Coding Agent 时尤其需要做好版本控制。

Repository(仓库)是由 Git 管理的项目,其中既有项目当前的文件,也有 Git 保存的版本历史等信息。我们在自己设备上使用的是本地仓库;托管于 GitHub、GitLab 等平台上的仓库则称为远端仓库。Git 本身完全可以只在本地做版本管理,但通常我们也会上传至远端仓库以方便多人协作。

Git 仓库中的当前文件构成 Working Tree(工作区),系直接阅读和编辑的内容。文件被修改后,变化首先只存在于工作区中。执行 git add 可以挑选希望记录的修改,将它们放入 Staging Area(暂存区)。暂存区可以理解为下一次提交的候选内容:git add 既没有建立新版本,也没有将代码上传至 GitHub。

执行 git commit 后,Git 会将暂存区中的内容保存为一次 Commit(提交)。每次 Commit 都是项目的一个版本快照,带有唯一标识、作者、时间与提交说明,并被保存在本地仓库中。执行 git push 后,本地的新 Commit 将被推送至远端仓库;git pull 则用于取得远端的新 Commit,并将其合入当前的本地分支。

Branch(分支)是一条独立的开发线。我们可以从当前版本建立新分支,在其中完成某一项任务,而不立即影响主分支。不同成员可以在各自的分支上工作,完成后再通过 Pull Request 检查修改并合入主分支。

对于一个新项目,可以执行 git init 将当前目录初始化为 Git 仓库;如果远端已经存在仓库,则可以执行 git clone <仓库地址> 将其完整复制到本地。日常最常使用的命令如下:

 1# 开始工作前取得远端更新
 2git pull
 3
 4# 查看工作区与暂存区的状态
 5git status
 6
 7# 查看尚未加入暂存区的修改
 8git diff
 9
10# 将指定文件的修改加入暂存区
11git add <文件路径>
12
13# 检查下一次 Commit 将包含的修改
14git diff --staged
15
16# 将暂存区保存为一次 Commit
17git commit -m "说明本次修改完成了什么"
18
19# 推送本地 Commit
20git push

建议每完成一个单一的小任务便提交一次,并在 Commit Message(提交说明)中写清修改范围与内容。开始一项独立任务时,可以使用 git switch -c <分支名称> 创建并进入新分支。Git 只能可靠保护已 Commit 的内容,重要项目还应当及时推送到可信的远端。

.gitignore 文件用于告诉 Git 哪些文件不需要纳入版本管理,通常应当排除缓存、虚拟环境、运行结果与本地配置。密码、API Key 等敏感信息不要写入代码,至少也必须将其配置文件排除;大型数据集、模型权重与生成文件也不适合直接放入普通的 Git 仓库。

已经被 Git 跟踪的文件不会因为后来写入 .gitignore 而自动消失;文件一旦被提交,即使在新版本中删除,敏感信息仍可能留在 Git 历史中。因此,.gitignore 不能代替对提交内容的检查。

Agent 写完代码后,必须由自己阅读 git diff,确认每项修改的用途,再运行代码与测试。不要未经检查便直接 Commit 或 Push。AI 生成代码的责任仍然属于使用者。

Git 要深入掌握还有很多内容,例如分支合并、冲突处理、Rebase、Tag 与 Hook 等。可以继续阅读 GitHub 的 Git 入门文档Git Hooks 官方文档GitHub Actions 快速入门

我对 AI 发展的看法

模型与 Agent 的发展非常快,而且为世界带来了迅速的变化。模型的能力按月计,一两个月未发布新模型,那么模型很可能就会落后。在工程上,也经常出现新的概念,尽管或许是炒作出来的。

AI 存在泡沫,但更多地是体现在资本上。技术上,AI 必然是推动时代进步的产物,参考 1873 年美国铁路泡沫与千禧年互联网泡沫。泡沫过后,不可否认其留下的技术资产极大地推动了生产力的发展。

Agent 有能力边界,不要将 Agent 视为任何场景下都无所不能的神明。