用户中途取消,Agent 任务怎么停下来?

使用 AI Agent 时,经常会遇到这样的情况: 你让 Agent 分析一个项目,它先读取文件,再分析代码,然后准备修改几个文件。等了半天,你突然发现需求说错了,于是点击「停止」。 普通聊天中,停止生成文字通常就够了。但 Agent 不一样,它可能正在调用模型、执行工具、读写文件,甚至请求外部 API。 这时,一个问题就出现了:用户点击停止之后,Agent 真的停下来了吗? 如果只是让前端不再显示回答,后台任务可能还在运行。如果只停止当前模型请求,Agent 也可能在下一步继续调用工具。 因此,任务取消不是简单地增加一个停止按钮,而是需要让 Agent 的整个执行过程都能响应取消操作。 一、为什么 Agent 不能简单地停止生成? 先看一个常见的 Agent 执行过程: 用户提出需求 ↓ AI 分析任务 ↓ 调用搜索工具 ↓ 分析搜索结果 ↓ 调用文件处理工具 ↓ 整理结果 ↓ 返回回答 Agent 并不是一次性生成答案,而是根据每一步的执行结果,决定接下来做什么。 例如,用户让 Agent「搜索资料并生成一份报告」,它可能先搜索网页,再读取内容,最后生成报告。每一步都可能涉及新的模型请求或工具调用。 如果用户在搜索过程中点击停止,系统至少要解决三个问题: 不再发起新的模型请求。 不再启动新的工具调用。 尽可能停止已经运行的模型请求和工具任务。 前两个相对容易,第三个则取决于具体操作是否支持取消。 例如,正在执行的本地任务可能可以主动检查取消状态;已经提交给第三方服务的任务,则未必能被立即终止。 所以,停止 Agent,不只是停止它说话,还要阻止它继续做事。 二、给 Agent 一个「停止信号」 可以把 Agent 想象成一个正在执行任务的员工。 用户点击「停止」,就相当于通知这个员工:「先别继续做了。」 但光发出通知还不够。员工需要在工作过程中留意这条通知,收到后停止接下来的工作。 在程序中,这种通知可以通过「取消信号」实现。 以 JavaScript 为例,浏览器和 Node.js 都提供了 AbortController,可以用它发出取消信号。 const controller = new AbortController(); // 把信号传给支持取消的任务 const task = fetch("/api/agent/run", { method: "POST", signal: controller....

2026年07月09日 · 2 min · Leanku

推荐几个Agent Skills 资源

随着 AI Coding 和 Agent 的发展,Skill 正逐渐成为扩展 Agent 能力的重要方式。 一个 Skill 通常由 SKILL.md 以及可选的脚本、参考资料和资源文件组成,用于把某一类任务的知识、流程和经验封装起来,让 Agent 在需要时加载并执行。Agent Skills 目前已经形成开放格式规范,并支持通过渐进式加载机制减少不必要的上下文消耗。 如果你正在学习 Agent Skills,或者已经开始使用 Claude Code、Codex、Cursor 等 AI 编程工具,下面这些资源值得收藏。 一、 学习与官方资源 Agent Skills 官方规范 地址:https://agentskills.io/ 介绍:Agent Skills 的官方开放规范,介绍 Skill 的基本结构、SKILL.md、元数据、资源目录以及 Progressive Disclosure,是学习 Skills 最值得优先阅读的资料。 Agent Skills GitHub 地址:https://github.com/agentskills/agentskills 介绍:Agent Skills 开放规范的官方 GitHub 项目,可以查看规范源码、文档和相关示例,也适合跟踪规范的后续发展。 Anthropic Skills 地址:https://github.com/anthropics/skills 介绍:Anthropic 官方 Skills 仓库,提供文档处理、PDF、Excel、PowerPoint 等实际 Skill,可以直接参考成熟 Skill 的目录结构和编写方式。 Claude Agent Skills 地址:https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview 介绍:Claude 官方 Skills 文档,介绍 Skills 的工作机制、创建方式、API 使用方法以及安全注意事项。...

2026年04月11日 · 2 min · Leanku

AI Agent Skill:让 Agent 真正学会“怎么做事”

AI Agent 的基本模型: Agentic Coding ↓ Context Engineering ↓ MCP ↓ Tool Design ↓ Agent Loop 但还有一个问题没有解决: Agent 知道有哪些工具,也知道怎么调用工具,为什么它还是经常“不知道应该怎么做”? 例如让 Agent 完成一次代码 Review。 它可能拥有: git_diff read_file search_code run_test 这些 Tool 已经足够让它操作代码库。 但它仍然需要知道: 先看什么? 重点检查什么? 什么问题值得报告? 如何判断问题严重程度? 什么时候应该运行测试? 最终应该如何输出? 这些内容既不是 Tool,也不是 MCP。 它更接近一种: 任务级的知识、流程和操作规范。 这就是 Agent Skill。 今天的 Agent Skills 已经不只是某个产品里的一个概念,而是正在形成一个开放的文件格式和生态。官方规范将 Skill 定义为一个包含 SKILL.md 的目录,可以进一步携带脚本、参考资料和其他资源,并通过 Progressive Disclosure 按需加载。 1. Skill 到底是什么? 先给出一个比较工程化的定义: Skill 是围绕某一类任务封装的可复用知识、操作流程、规则、示例和辅助资源,让 Agent 能够以更加稳定和一致的方式完成这类任务。 例如: code-review 不是一个具体的 Tool。 它可能包含:...

2026年03月24日 · 6 min · Leanku

AI Agent 的工作原理:从 Tool Calling 到自主任务执行

前面几篇文章分别了解了 Agentic Coding、Context Engineering、MCP 和 MCP Tool Design。 把这些内容放在一起,就会出现一个更核心的问题: AI Agent 到底是怎么“行动”的? 我们经常看到这样的描述: 用户: “帮我分析一下这个项目的问题,并修复它。” Agent: 读取代码 → 分析问题 → 修改代码 → 运行测试 → 发现错误 → 再次修改 → 重新测试 → 完成任务 看起来像是 AI 在「自主工作」。 但从工程角度看,它并不是一个神秘的黑盒。 Agent 的核心其实可以抽象成一个不断循环的过程: 理解任务 ↓ 观察当前环境 ↓ 决定下一步行动 ↓ 调用 Tool ↓ 获得结果 ↓ 更新 Context ↓ 再次判断 ↓ …… ↓ 任务完成 也就是说: Agent 最核心的能力,不是一次生成一个答案,而是能够根据环境反馈持续决定下一步应该做什么。 1. 从一次 LLM 调用开始 最简单的 LLM 应用其实非常直接: User ↓ Prompt ↓ LLM ↓ Response 例如:...

2026年03月24日 · 6 min · Leanku

Agentic Coding:从“让 AI 写代码”到“让 AI 完成软件工程任务”

最近看到一个新词:Agentic Coding,了解了一下。 近几年,AI 写代码已经从一个新鲜功能变成了开发者日常工作的一部分。 最开始,我们让 AI 补全一行代码;后来可以让它生成一个函数、一段 SQL,甚至生成一个完整的页面。再后来,Cursor、Claude Code、GitHub Copilot 等工具开始能够读取整个代码库、修改多个文件、执行命令和运行测试。 这时候,事情开始发生变化。 以前我们更习惯说: 「让 AI 帮我写代码。」 现在越来越接近: 「把这个开发任务交给 AI,让它自己完成。」 这就是 Agentic Coding 值得讨论的地方。 它并不是简单地把代码生成能力做得更强,而是把 AI 在软件开发中的角色从「代码助手」进一步推向「任务执行者」。 从代码补全到 Coding Agent 最早一代 AI 编程工具解决的问题其实非常明确:预测开发者接下来可能要写什么代码。 开发者输入前面的代码,AI 根据当前文件和上下文预测后面的内容。 这种模式本质上还是: 开发者 ↓ 写代码 ↓ AI 提供建议 ↓ 开发者确认 后来,AI Coding 进入了第二个阶段。 开发者不再需要逐行告诉 AI 怎么写,而是可以直接描述一个需求: 给用户登录接口增加 Refresh Token。 Access Token 有效期 30 分钟, Refresh Token 有效期 7 天, 并增加 Token 刷新接口。 AI 可以生成多个文件、修改已有代码,并根据项目结构调整实现。 这已经不只是代码补全,而是基于任务生成代码。 再往前一步,Coding Agent 开始拥有更多实际操作能力。...

2026年03月15日 · 5 min · Leanku