多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

掌握大模型编程:小白程序员必备的 Agent 执行链开发实战(收藏版)

掌握大模型编程:小白程序员必备的 Agent 执行链开发实战(收藏版) 当 AI 开始参与编码软件工程需关注如何将模型的推理能力组织成可控、可验证、可复用的任务执行链。文章从model harness出发梳理 Claude Code 四层架构详解记忆、Skills、Subagents、Hooks、MCP、headless 和 Agent SDK 如何组合成开发工作流。工程师需设计系统约束模型在正确边界内工作harness 包含工具、权限、上下文等决定 Agent 能否稳定完成任务。模型擅长理解自然语言、生成代码和提出工具调用但它不会天然知道项目规范也不会自动拥有读取文件、执行命令或修改生产资源的权限。真正决定 Agent 能否稳定完成任务的是模型之外那层负责提供上下文、工具、权限和反馈的工程系统。这层系统通常被称为 harness。本文从model harness这一基本关系出发梳理 Claude Code 一类 Agent 工具的四层架构并说明记忆、Skills、Subagents、Hooks、MCP、headless 和 Agent SDK 如何组合成可落地的开发工作流。一、Agent 不只是一个模型在 Agent 工程中模型提供推理和生成能力harness 负责把这些能力组织成可控的任务执行过程。“Harness”原意是缰绳或挽具。它不会代替模型思考而是通过上下文、规则、工具、权限和评测机制约束模型的执行边界让模型围绕用户目标持续推进。一次完整任务通常不是“提问一次、回答一次”而是一个循环理解目标 - 制定计划 - 调用工具 - 观察结果 - 验证是否满足目标 - 不满足则纠偏并继续执行在每一个阶段harness 都可能介入任务开始时加载项目背景和本轮需要的资料模型准备调用工具时检查工具、参数和权限工具执行后把结果重新放回上下文任务结束前运行测试、规则检查或人工审批验证失败时把失败原因反馈给模型触发下一轮修正。因此Agent 的最终效果由模型能力和 harness 共同决定。更强的模型可以提高单次推理质量但不能替代项目上下文、权限隔离、工具执行和结果验收。工程师真正需要设计的是一套让模型在正确边界内持续工作的系统。二、Claude Code 的四层架构可以把 Claude Code 的能力自底向上分成四层记忆层、扩展层、集成层和编程层。层次解决的问题典型组件记忆层让 Agent 理解当前项目CLAUDE.md、rules、memory扩展层让 Agent 按需加载知识、拆分任务、执行硬约束Skills、Subagents、Hooks集成层让 Agent 进入 CI/CD 和外部系统headless、MCP编程层让开发者用代码编排 Agent 工作流Agent SDK这四层不是四个互相独立的产品功能而是一条逐层增强的执行链记忆层提供稳定基线扩展层提供任务能力集成层连接外部环境编程层把这些能力编排成自动化流程。在这四层之外还可以用 Plugin 做分发封装。Plugin 不是新的推理层而是把记忆文件、Skills、Hooks、MCP 配置和其他支持资源打包成一个可安装单元方便团队统一复用和版本管理三、记忆层给 Agent 一份项目员工手册模型本身并不知道你的项目为什么这样分层、哪些目录不能修改、测试应该怎么运行。每次会话如果都从零开始模型就会反复询问同样的问题或者根据常见经验猜测项目规则。记忆层解决的就是这个问题。CLAUDE.md、rules 和 memory 文件会在会话启动时把项目背景注入上下文可以把它理解为给 Agent 准备的一份项目员工手册。3.1CLAUDE.md应该放什么适合长期加载的内容包括项目目标、目录结构和核心模块技术栈、构建命令和测试命令代码风格、分层约束和禁止事项数据、权限、部署和生产环境边界完成任务前必须执行的验证步骤。不适合放在这里的是某一次任务的临时需求、很少使用的长篇参考资料和只适用于一个功能的操作流程。这些内容应该按需放进 Skill 或参考文件避免每轮会话都占用上下文。3.2 作用域与优先关系CLAUDE.md通常有四种作用域按管理范围由大到小为企业级、用户级、项目级、本地级。不同作用域的内容会一起进入上下文并不是简单的“后者覆盖前者”。如果规则发生冲突越靠近当前工作目录、描述越具体的规则通常越适合当前任务Agent 也应优先遵守它。例如用户级规则可以约定代码提交使用中文说明项目级规则还可以进一步规定“提交前必须运行定向测试并且单次提交不超过 400 行”。两条规则都有效项目级规则只是对当前仓库增加了更具体的约束。同理若用户级要求变量名用大驼峰而项目级说明具体原因那些包需要变量名采用小驼峰按照”越靠近当前工作目录、描述越具体的规则通常越适合当前任务Agent 也应优先遵守它“模型应该遵循后者。但是结合claude 官方的说法用户级和项目级规则会一起进入上下文项目级虽然后加载但不覆盖用户级。所以最终结果可能会遵循任意一个按照最佳实践建议我们应当避免这种规则冲突的情况。记忆层的价值不在于写得越多越好而在于把每次任务都需要的稳定事实写清楚。上层的 Skill、Hook 和 Subagent 能否准确执行往往取决于它们能否先读懂这份项目背景。四、扩展层把知识、任务和约束拆开扩展层主要包含 Skills、Subagents 和 Hooks。它们都能增强 Agent但职责完全不同Skill 负责告诉 Agent 一类任务应该掌握什么知识、按什么步骤完成Subagent 负责把边界清晰的子任务放到独立上下文中执行Hook 负责在固定事件节点执行确定性检查必要时阻止操作。4.1 Skill按需加载的工作流CLAUDE.md适合沉淀项目背景和通用规范Skill 适合沉淀特定任务的过程性知识。例如团队经常需要重构历史代码可以把“按 Clean Code 原则重构、补充单元测试、验证行为不变”的流程封装成clean-funcSkill。它在SKILL.md的 YAML frontmatter 中描述适用场景并通过$ARGUMENTS接收目标方法--- name: clean-func description: 重构函数并补充测试确保行为不变 --- 请重构 $ARGUMENTS 1. **先读取调用方和测试确认当前行为** 2. **只处理职责、命名、嵌套和重复逻辑** 3. **为边界条件补充测试** 4. **运行定向测试确认行为没有改变。**使用时可以显式指定目标/clean-func ArticleService#publishSkill 也可以根据description由 Agent 自动判断是否匹配当前任务。显式触发和自动触发解决的是同一个问题把一套可复用的工作流程集中维护而不是每次都在 Prompt 里重新描述。4.2 Commands 与 Skills 的合并在当前 Claude Code 设计中Custom Commands 已经并入 Skills。.claude/commands/deploy.md和.claude/skills/deploy/SKILL.md都可以生成/deploy指令旧的 Commands 文件继续兼容。两者本质上都在封装可复用工作流。统一到 Skills 后一套机制既能支持用户主动调用也能支持 Agent 按描述自动加载还能在目录中携带脚本、模板和参考资料。新工作流优先使用 SkillsCommands 更适合作为存量兼容路径。4.3 Subagent用上下文隔离拆分职责Subagent 在独立上下文窗口中执行主 Agent 委派的子任务再把结果返回主会话。它适合以下场景代码检索和调用链分析安全、性能、可读性等专项审查线上日志读取和故障归因即需要大量中间过程但不应污染主会话的任务通过subagent将噪音隔音返回核心摘要给主会话例如一个只负责 Clean Code 的审查 Agent 可以这样声明--- name: reviewer-cleancode description: 按 Clean Code 原则走查可读性与可维护性 tools: Read, Grep, Glob model: opus --- 只检查命名、函数职责、嵌套、重复、注释和错误处理。 每条结果输出“文件:行号 违反的规则 修改建议”。 不要重复报告业务 Bug、安全问题或性能问题。主 Agent 不需要把所有审查维度混在一个上下文里。它可以并行委派多个专项 Agent再汇总结构化结果。这样既减少无关信息占用主上下文也能让每个审查者保持清晰的职责边界。4.4 Hook把“应该”变成“不能绕过”Skill 是软约束它告诉模型应该怎么做但模型仍可能理解错误或漏掉步骤。Hook 运行在模型推理之外在工具调用、会话开始或任务结束等事件节点执行固定逻辑因此适合处理可量化的硬约束。常见事件包括PreToolUse工具执行前检查并拦截PostToolUse工具执行后记录或验证结果Stop任务准备结束时检查必要时阻止结束并要求继续验证。例如团队希望 Agent 每次只提交一小批改动可以在Bash工具的PreToolUse上挂一个脚本{ hooks: { PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: sh /$CLAUDE_PROJECT_DIR/.claude/hooks/gate.sh/, statusMessage: commit 死规则闸门 } ] } ] } }脚本只对git commit做进一步检查统计暂存区改动行数超过 400 行就拒绝提交如果删除测试或新增Disabled也直接阻断cmd$(jq -r .tool_input.command // empty) case $cmd in *git commit*) ;; *) exit 0 ;; esac block() { echo $1 2; exit 2; } changed$(git diff --cached --numstat | awk {s$1$2} END{print s0}) [ $changed -gt 400 ] block diff 太大($changed 行),拆小再提 git diff --cached | grep -qE ^//.*Disabled|^-.*Test / block 动了测试,人工确认前不许提Hook 是执行链内的硬约束但不是完整的安全边界。高风险操作仍应依赖权限系统、沙箱和资源侧鉴权。例如数据库账号只开放查询权限Git 主分支设置为受保护分支合并必须经过 CI 和人工审核。即使 Hook 漏配危险操作也不应因此获得真实落地权限。五、集成层让 Agent 进入真实开发环境扩展层解决“Agent 怎么工作”集成层解决“Agent 怎么接入外部系统”。其中两个关键能力是 headless 和 MCP。5.1 Headless在无人值守流程中运行Headless 模式让 Claude Code 脱离交互终端运行。通过-p传入 Prompt再用--output-format json输出结构化结果就可以接入 GitHub Actions、Jenkins、GitLab CI 或定时任务。例如在 CI/CD 中审查最近一次提交claude -p 审查最近一次提交的代码变更重点关注安全隐患与性能问题 / --output-format json / --max-turns 10 / --allowed-tools Read,Grep,Glob参数的含义是-p以非交互方式执行本次任务--output-format json以 JSON 返回结果--max-turns 10限制最多循环 10 轮--allowed-tools只开放指定工具。Headless 也适合被 Cron 定时触发。例如每小时读取过去一小时的 CPU、内存和异常日志只输出巡检报告不执行变更0 * * * * cd /opt/ops /usr/local/bin/claude / -p 通过已配置的监控 MCP 读取过去 1 小时的 CPU、Memory 和异常日志只做分析不执行变更输出异常指标、可能原因和排查建议 / --output-format json / --max-turns 8 / --no-session-persistence / --allowed-tools mcp__prometheus__* mcp__elasticsearch__* / /var/log/claude-inspection.jsonl 21生产环境应默认只开放读取监控指标和日志所需的工具。重启、扩容、修改配置等操作必须单独审批不能因为 Agent 能调用工具就默认授予它执行变更的权限。5.2 MCP把外部工具和数据接入上下文如果说 headless 让 Claude Code 走进 CI/CD 和定时任务那么 MCP 就是让外部能力以统一方式进入 Agent。MCP 可以连接第三方 API、GitHub Issue、监控系统、知识库或其他遵循 MCP 协议的工具。Agent 先根据任务决定需要什么数据再通过 MCP 获取数据并继续推理。例如审查一个开源项目的集成方案时如果本地上下文无法确认最新 API 行为可以通过 MCP 获取项目文档再据此判断而不是只凭模型记忆猜测。这里的重点不是工具数量而是工具描述、权限和返回结果都要纳入整体执行边界。六、编程层用 Agent SDK 封装工作流当开发者不再满足于手工启动 Claude Code而是希望把它嵌入代码审查、巡检或发布流水线就进入了编程层。以死锁审查为例开发者可以用 Python 读取 Java 源码把审查要求和源码拼成 Prompt再通过 Agent SDK 调用 Claude最后从ResultMessage中获取结果。代码如下所示import asyncio from claude_agent_sdk import ResultMessage, query async def review(): code open( server/src/test/java/com/sharkchili/blog/DeadlockDemo.java ).read() prompt f将以下 Java 代码当作生产代码审查只指出一个最关键问题。 按照如下格式输出 问题 论证 改法用 diff 给出修改位置并添加说明 {code} async for message in query(promptprompt): if isinstance(message, ResultMessage): print(message.result) asyncio.run(review())这个工作流可以拆成三个动作Python 读取待审查源码query()调用 Agent 并接收事件流收到ResultMessage后输出最终审查结果。如果DeadlockDemo.java中的AService和BService分别持有自己的实例锁再以相反顺序调用对方的同步方法就形成 A→B 和 B→A 的循环等待。模型负责识别锁顺序harness 负责把源码、项目规则和输出格式交给模型并决定哪些工具可以继续调用。七、Harness 在一次任务中做了什么模型负责理解输入、推理并输出文本或工具调用请求它不会直接读取本地文件、执行命令或访问外部系统。harness 负责把这些请求变成受控的执行过程。以死锁审查为例完整链路可以写成加载项目记忆和任务上下文 - 注入待审查源码与输出格式 - 模型分析锁调用链 - 模型请求读取文件或运行检查 - Harness 校验工具和权限 - 执行获准操作 - 将结果返回模型 - 模型继续判断直到输出结论如果用公式表达Agent Model Harness其中 harness 至少包含以下基础设施工具系统权限控制上下文管理会话持久化事件钩子结果验证与评测。模型像发动机提供推理和生成能力harness 像围绕发动机搭建的控制系统决定它能看到什么、能做什么、做完后如何验证以及失败后如何继续。工程实践中harness 的约束往往和模型本身同样重要。一个更强的模型如果拿不到正确上下文、没有合适工具或缺少验证闭环仍可能无法稳定完成复杂任务。八、Skills、Hooks 与 Subagents 如何组合三类扩展组件不是互相替代的关系而是分别承担知识、隔离和约束。8.1 典型组合对于需要独立上下文执行的领域任务可以让 Subagent 加载对应 Skill再由 Hook 对文件范围、工具参数和结果格式执行强制约束主 Agent - 委派 code-review Subagent - 加载代码审查 Skill - 读取指定文件 - 调用工具前触发 Hook - 输出结构化审查结果 - 汇总结果并继续主任务例如代码审查 Subagent 负责发现问题Skill 规定审查维度和输出格式Hook 检查路径并禁止修改包含prod的文件。三者组合后职责清晰Skill 负责“这类任务怎么做”Subagent 负责“在哪个上下文里做”Hook 负责“哪些操作绝对不能发生”。8.2 线上排查组合线上排查 Skill 可以定义日志读取、指标确认、根因分析和报告输出的步骤它再委派 Subagent 读取 Elasticsearch 日志、分析错误堆栈最后把结构化结论返回主会话。若任务涉及生产环境Hook 还可以限制只读工具禁止重启服务或修改配置。8.3 进度验收组合Hook 不仅能拦截工具调用也可以通过additionalContext向 Claude 或 Subagent 补充检查信息。结合SubagentStart、SubagentStop或 Agent 类型 Hook可以在任务结束时检查是否完成测试、是否生成报告条件不满足时阻止结束并要求 Agent 继续验证。九、Headless、Skills 与 Hooks 的完整执行流一次 headless 代码审查可以同时使用三者通过claude -p接收 Prompt以非交互方式启动任务Claude 理解目标判断是否命中某个 Skill命中后按需加载 Skill 的知识、步骤和支持文件Claude 发起Read、Grep或测试命令等工具调用工具执行前触发PreToolUseHook完成参数和权限校验工具执行后触发PostToolUseHook记录或验证执行结果工具结果返回 ClaudeClaude 判断是否完成如果证据不足继续下一轮工具调用任务完成后按参数输出 text、JSON 或 stream-json。这个流程把概率性的模型判断和确定性的工程检查放在了不同位置模型负责决定下一步需要什么Hook 负责判断这一步是否被允许harness 负责把结果送回模型继续推进。十、哪些内容适合 Skill哪些内容必须用 Hook一个简单的判断标准是需求更适合的组件原因代码审查步骤和关注维度Skill属于过程性知识需要模型理解上下文故障排查流程和报告模板Skill属于可复用工作流是否允许访问某个目录Hook 权限系统需要在执行前强制校验提交改动不能超过 400 行Hook条件明确可以确定性判断任务结束前必须运行测试Hook 或独立验收步骤不能只依赖模型自觉数据库只能查询不能写入资源侧权限不能把安全边界只放在 Agent 配置里对工具调用Hook 可以检查工具名和参数。校验不通过时脚本可以通过exit 2或返回hookSpecificOutput.permissionDecision: deny拒绝本次工具调用。但 Hook 不是万能的。它只能约束自己能观察到的事件不能替代操作系统权限、云资源鉴权、数据库权限和分支保护。越接近生产数据和基础设施越应该采用纵深防御Agent 配置限制一次Hook 再限制一次资源本身还要有最终权限边界。小结从“调用模型”到“设计执行系统”AI Agent 架构的核心不是把一个更强的模型接进系统而是把模型放进一条有上下文、有工具、有权限、有反馈、有验收的执行链。记忆层建立稳定的项目背景扩展层按需提供 Skill、Subagent 和 Hook集成层通过 headless 和 MCP 接入 CI/CD、监控与外部数据编程层再用 Agent SDK 把这些能力封装成可复用的自动化工作流。从分布式架构到 AI 架构核心问题其实相似都要用确定的工程手段管理系统中的不确定性。分布式系统约束的是网络、节点和流量Agent 系统约束的是模型、工具和任务执行过程。模型能力决定上限harness 决定能力能否稳定落地。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。大模型入门到实战全套学习大礼包1、大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通2、大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。3、AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。4、大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。5、大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。适用人群第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表