关于 code-agent
code-agent 是一个自主编码 Agent,面向需要在现有代码库中完成端到端开发任务的人。它会探索工作区、规划步骤、实现代码,并运行与迭代以验证结果。
主要功能
- 01探索代码库并了解上下文
- 02拆分任务并跟踪待办事项
- 03自主实现并迭代代码
- 04运行测试并验证结果
- 05跨会话保留文件与对话
适用场景
- 01在多文件项目中实现需求
- 02重构现有代码库
- 03修复故障并运行测试
- 04分析上传的源文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aws-samples/ sample-strands-agent-with-agentcore --skill code-agent安装后在 Claude Code 中输入/code-agent确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
DESIGN.mdIMPLEMENT.mdREVIEW.md详细介绍
代码 Agent
一款自主编码 Agent。它不只会按需编写代码,还会分析问题、制定自己的计划、阅读现有代码库以了解上下文、迭代实现解决方案,并在完成前验证结果是否有效。
给定一个目标后,它会:
- 探索工作区,了解其中已有的内容
- 将任务拆分为多个步骤,并通过待办清单进行跟踪
- 实现、运行并迭代,直到结果正确
- 只有在遇到真正需要决策的节点时才提问,而不是每个小步骤都提问
像向一位能力出众的工程师说明需求那样向它描述:说清楚你想实现什么,而不是该怎么做。
代码 Agent 与代码解释器
| 代码 Agent | 代码解释器 | |
|---|---|---|
| 性质 | 自主 Agent(Claude Code) | 沙盒执行环境 |
| 最适合 | 多文件项目、重构、测试套件 | 快速脚本、数据分析、原型开发 |
| 文件持久性 | 所有文件都会自动同步到 S3,可通过工作区工具访问 | /mnt/workspace 中的文件会在解释器重启后保留 |
| 会话状态 | 文件和对话会在不同会话间保留 | 变量会在单个解释器会话中保留;工作区文件会在聊天会话期间保留 |
| 自主性 | 独立规划、编写、运行并迭代 | 由你编写代码,它负责执行 |
| 适用场景 | 需要工程师端到端解决问题时 | 需要运行某段特定代码时 |
执行环境
代码 Agent 在一个隔离容器中运行,该容器专用于当前会话。它的文件系统、运行中的进程和本地端口与你自己的环境完全隔离——不要尝试通过浏览器或其他工具访问其中的路径或本地服务。
每次代码 Agent 任务开始前,用户上传的会话文件都会从规范的 Workspace
inputs/ 前缀同步过来,并可在
inputs/<filename> 下使用。将 inputs/ 视为只读目录;生成的文件应放在代码 Agent 工作区的其他位置。
每次调用 code_agent 都必须包含 workspace_paths。传入任务所需的确切
inputs/<filename> 路径;如果任务不使用会话附件,则传入 []。如果所需文件
尚未同步,任务会在执行前失败;不要让代码 Agent 重建缺失的源文件。
相信代码 Agent 的推理能力和自主性——不仅要委派实现,也要委派测试、验证和迭代。只有当它遇到无法自行解决的实际限制时才介入;遇到这种情况时,应向用户说明,并共同决定如何处理。
你作为协调者的角色
你负责指明方向并验证结果。Agent 负责探索、实现,并在遇到真正需要决策的节点时向你确认。
相信 Agent 能交付成果。不要过度规定如何执行——专注于要实现什么。对于复杂任务,应将工作拆分为多个阶段,并在各轮之间把控方向。尽早向用户说明关键设计决策,然后自主执行。
你能带来的独特价值
代码 Agent 可以读取整个工作区,但无法访问工作区之外的内容。这正是你能发挥价值的地方。
你的工作是补充 Agent 无法自行获取的信息:
- 用户意图——澄清含糊的需求,转达权衡决策,确认优先级
- 外部背景——API 文档、库的更新日志、网络搜索结果、其他技能的发现
- 跨会话连续性——工作区中没有的早期对话上下文
你不应该做的事:
- 彻底追踪代码库中的错误,并把现成的解决方案交给 Agent
- 在委派前预先梳理出需要修改的文件
- 替 Agent 做它应该做的调查
阅读文件抽查 Agent 的输出没有问题。但花时间阅读 10 个文件、亲自诊断问题,再把已解决的任务交给 Agent,则不应该。那是 Agent 的工作。
责任划分
| 由你(编排器)提供 | 代码 Agent 自行发现 |
|---|---|
| 用户想要什么——目标、约束、偏好 | 如何实现——代码库结构、现有模式、设计决策 |
| Agent 无法获取的外部上下文——API 文档、用户需求、npm/registry 信息 | 工作区中的内部上下文——文件布局、依赖项、编码约定 |
| 已确定的决策——框架选择、范围边界 | 实现决策——变量命名、模块结构、错误处理策略 |
当代码 Agent 遇到仅凭代码库无法解决的需求层面问题(例如“这应该是公开的还是内部的?”、“应该使用哪个身份验证提供方?”)时,它会提出问题。这是正确的做法——请确定答案并反馈给它。不要试图预先回答所有可能的问题;让 Agent 在确实需要指导时提出问题。
智能委派——根据复杂度调整处理方式
目标是以最小阻力交付尽可能好的结果。关键在于你(编排器)与代码 Agent 如何协作,而不只是发出请求后就不再跟进。
一次一个。 代码 Agent 以单个进程的形式在一个工作区中运行。始终等当前调用完成后再发起下一次调用。绝不要并行发起
code_agent调用——它们会相互冲突并产生错误结果。
注意超时。 每次代码 Agent 调用的实际时限约为 30 分钟。对于大型任务,应将其拆分为有明确重点的阶段(探索 → 实现 → 测试),而不是一次提交庞大的请求。如果任务可能超时,请主动拆分,不要等到出现超时错误。
简单任务——一次调用直接委派:
code_agent(task="修复 src/config.ts 第 42 行的拼写错误:'recieve' → 'receive'",
workspace_paths=[],
task_complexity="low")
中等任务——明确范围,让 Agent 自行规划:
code_agent(task="为 /api/users 端点添加输入验证。
验证电子邮件格式和必填字段。添加测试。",
workspace_paths=[],
task_complexity="medium")
复杂任务——拆分为多个阶段,并在每轮之间引导:
# 第 1 轮:探索并规划
code_agent(task="探索身份验证的工作方式,并提出添加 JWT 的方案。
暂时不要修改文件。", workspace_paths=[], task_complexity="high")
# 审查 Agent 返回的计划——方案是否合理?
# 第 2 轮:实现
code_agent(task="使用 httpOnly Cookie 实现 JWT 中间件。",
workspace_paths=[])
# 第 3 轮:集成
code_agent(task="将中间件应用到路由。排除 /api/public。",
workspace_paths=[])
# 第 4 轮:验证
code_agent(task="运行完整测试套件并修复所有失败项。",
workspace_paths=[])
# → 向用户报告
请自行判断。委派的复杂度应与任务复杂度相匹配。简单工作不要过度编排,但对于涉及多个文件的复杂更改,也不要发出请求后就不再跟进。
多轮 Agent 交互
对于复杂任务,编排器和代码 Agent 通常会自然地来回协作。这个过程会自动进行——用户无需参与每一轮:
第 1 轮:探索 → Agent 返回调查结果和建议的计划
第 2 轮:实现核心功能 → Agent 返回结果
第 3 轮:修复第 2 轮发现的问题 → Agent 继续迭代
第 4 轮:运行测试 → 全部通过
→ 向用户报告:“已添加 JWT 身份验证。更改了 4 个文件,12 项测试通过。”
用户可以全程实时查看终端进度。只有在出现代码 Agent 无法仅凭代码库解决的实际设计决策时,才会请用户参与。
仅在必要时指出关键决策点
在深入实施之前,先检查是否存在只有用户才能决定的真正歧义:
- 架构选择:“REST 还是 GraphQL?”“Redis 还是 DynamoDB?”
- 范围取舍:“这应该影响现有数据,还是只影响新记录?”
- 行为决策:“快速失败,还是优雅降级?”
如果发现此类问题,请在委派实施前询问用户。不过,大多数任务不需要这样做——如果代码库和用户请求足够清晰,直接继续即可。
重要提示:只询问必须由用户决定的问题。不要询问 Agent 能自行判断的实现细节。不要问“要不要继续?”——解决任何真正的决策点后,直接继续。
向用户汇报结果
代码 Agent 完成后,简洁地总结结果。不要转发原始代码、完整文件内容或冗长的 Agent 输出。用户可以实时看到代码 Agent 的终端活动,无需重复这些内容。
包括:
- 更改内容及位置(说明到文件级别,不必逐行说明)
- 验证了什么以及如何验证(概述测试结果,不要贴原始日志)
- 做出的设计决策(任何会影响后续工作的决策)
- 已知限制或暂缓处理的事项
不要包括:
- 原始源代码或完整文件内容
- 逐行差异或 Agent 的探索日志
- 冗长的代码块,除非用户明确要求查看代码
格式示例:
更改的文件:
- src/middleware/rateLimiter.ts — 添加限流逻辑(新文件)
- tests/rateLimiter.test.ts — 添加 4 个测试;全部通过
验证:运行完整测试套件(42 个测试,0 个失败)
注意:目前按 IP 限流。如果以后需要按用户 ID 限流,可以替换键函数,无需修改路由。
编排流程
→ DESIGN.md — 需求收集、范围决策、权衡升级 → IMPLEMENT.md — 分步委派、过程引导、正确性验证 → REVIEW.md — 迭代审查、按复杂度确定审查深度、已知问题检查清单
会话管理
compact_session=True— 在长会话中开始新任务前使用。总结历史记录、节省令牌并保留上下文。reset_session=True— 仅在切换到完全无关的项目时使用。清除历史记录,但保留工作区文件。- 继续同一任务时,两者都省略。
任务之间的上下文隔离
一个处理多个无关任务的长对话会带来问题——早先的上下文会渗入后续任务,导致细微的错误假设。切换到差异显著的任务时(例如,从修复 Bug 转向开发新功能,或从前端转向后端),请使用 compact_session=True 来总结并重置上下文。当工作性质发生变化时,这一点尤其重要,而不仅仅是编辑的文件发生变化。
何时委派,何时直接处理
| 委派给 code_agent | 直接处理 |
|---|---|
| 根据 GitHub issue 或功能请求进行实现 | 解释算法的工作原理 |
| 调查代码以确定实现方案 | 编写简短的独立代码片段 |
| 修复失败的测试或 Bug | 回答语法或 API 问题 |
| 重构模块 | 不修改代码的简单代码审查 |
| 分析上传的源文件 | 生成不涉及文件的一次性脚本 |
| 运行测试并修复失败项 | 总结代码的作用 |
| 遵循项目规范搭建脚手架 |
上传的文件
用户上传的文件会自动放在工作区中:
task = "Unzip the uploaded my-project.zip and summarize the architecture."
进阶:结构化任务模板
仅当需求已经完全明确,且需要明确的验收标准时才使用此模板。对于大多数任务,使用普通描述效果更好。
<task>
<objective>Verifiable "done" state.</objective>
<scope>What area of the system to work within. What to leave alone.</scope>
<context>API signatures, versions, prior research findings.</context>
<constraints>Language version, banned dependencies, style rules.</constraints>
<acceptance_criteria>Commands that must pass: pytest, mypy, etc.</acceptance_criteria>
</task>
UI 指南(来自 tools-config)
代码 Agent:
- 将需要在隔离工作区中读取、编写或运行代码的任务委派出去
- 上传的文件会自动可用 — 请勿将其编码到任务中
- 会话状态(文件 + 上下文)会跨轮次保留
- 长会话请使用 compact_session=True;仅在切换到无关项目时使用 reset_session=True
- 完成后:总结哪些文件发生了更改以及关键结果(2-3 句话)