AI编程实践:从Claude Code实践到团队协作的优化思考|得物技术
核心发现: AI编程工具正在重塑开发流程,但真正的价值不在于替代开发者,而在于构建人机协作的新型开发范式。Claude Code通过精准对话流设计、模块化任务分解和专业化子代理协作,在提升开发效率的同时,也面临着上下文管理、协作边界和质量控制等实际挑战。 作为一线开发者,我们每天都在与复杂的业务逻辑和不断迭代的技术栈打交道。不知道你是否也遇到过这些场景:刚理清一个复杂业务流程,被打断后又得重新梳理思路;接手一个老项目,花了半天还没搞懂其中某个模块的设计思路;或者在不同项目间切换时,总要重新适应不同的编码规范和架构风格。 日常开发的三个"拦路虎": 这些问题不是简单的"加人"或"加班"能解决的。我们需要的是一种新的开发范式,而Claude Code这类AI编程工具正是在这样的背景下进入了我们的视野。它的价值不在于替我们写代码,而在于成为我们的"认知放大器"和"流程协作者"。 Claude Code构建了一套完整的AI辅助开发方法论。接下来将结合团队实际使用经验,从功能特性、使用场景和设计初衷三个维度,详细介绍其核心功能: 第一次用Claude Code时,就像面对一个热情但经验不足的实习生——如果不明确告诉他要做什么、怎么做、有什么要求,他很可能会给你一个"惊喜"。对话流设计就是解决这个问题的关键。 设计初衷: 对话流设计的本质是将人类的编程思维模式转化为AI可理解的结构化交互方式,通过明确的上下文管理和约束条件设置,引导AI生成符合预期的代码结果。 核心功能 对话流设计通过三个关键机制控制AI的思考过程: 使用心法 启动新功能开发时,我们会创建专用对话线程,并在初始prompt中明确四件事: 真实踩坑经验 处理跨模块依赖时,我们发现AI很容易"忘记"之前设定的约束。后来我们总结出一个技巧:每开始一个新的实现阶段,就简要回顾一下关键约束。比如:"现在我们要处理任务交接流程,请记得:1. 使用Redis分布式锁;2. 需要修改商运关系和新商成长任务;3. 异常处理要符合规范。" 面对"实现一个完整的拜访任务系统"这样的复杂需求,直接让AI生成代码就像让一个刚入行的开发者独立负责整个项目——结果往往是逻辑混乱、漏洞百出。Plan模式就是解决这个问题的"项目管理工具"。 现状与问题:我们早期使用Claude Code时,经常犯一个错误:把一个复杂需求一股脑丢给AI,然后期待它给出完美解决方案。结果通常是: 这其实不能怪AI,人在面对过于复杂的问题时也会手足无措。我们需要一种方法把大问题拆分成小问题,而Plan模式正是借鉴了项目管理中的WBS(工作分解结构)思想。 我们的解决方案:Plan模式使用三步法分解需求: 实际操作示例:拜访任务需求 拜访任务是一个简单的企业内部任务需求,在实现"拜访任务需求"时,我们通过Plan模式生成的任务清单是这样的: 这种方式不仅让AI能够有序工作,也让我们对整个开发进度有了更清晰的把控。 如果把Claude Code比作一个新加入团队的开发人员,系统提示词(CLAUDE.md)就相当于给他的"入职手册",告诉他团队的编码规范、工作流程和注意事项。 新手常犯的错误: 把系统提示词写成"百科全书",恨不得把所有项目知识都塞进去。结果AI要么忽略大部分内容,要么在生成代码时顾此失彼。我们早期的系统提示词长达5000字,包含了从架构设计到代码规范的所有内容,效果反而不好。 实践心得:有效的系统提示词应该像"护栏"而非"详尽手册"。我们发现,针对AI常见错误模式设计的针对性提示,远比全面但泛泛的规范更有效。现在我们的系统提示词控制在200字以内,只包含最关键的约束和指引。 系统提示词模板 经过多次迭代,我们总结出包含三个关键模块的系统提示词结构: 使用技巧 分享几个在实践中总结的系统提示词编写技巧: 在团队协作中,我们经常说"不要重复造轮子"。同样,在使用Claude Code时,我们也需要一种机制来沉淀和复用那些有效的Prompt和解决方案——这就是SKILL和MCP机制的价值所在。 SKILL机制: 把好经验变成"可复用组件" SKILL本质上是将单次生效的Prompt指令沉淀为可反复调用的标准化复用资产。举个例子,我们团队处理"ES数据查询"逻辑时,总结出了一个内部版本的SDK。我们把这个SDK的调用方式封装成一个SKILL,以后遇到类似场景,只需调用这个SKILL,AI就能按照我们团队的最佳实践来实现。 MCP协议: 让AI能"调用"外部工具 MCP(模型上下文协议)解决了AI与外部工具、数据源的连接问题。通过MCP,AI不再局限于静态知识,而是能够动态访问实时数据。我们集成了飞书MCP服务器,让AI能够直接操作飞书平台,如自动生成技术方案文档、读取PRD需求、同步数据到多维表格等。 最适合封装为SKILL的场景 1.复杂工具使用指南: 如"ElasticSearch接入"、"Redis缓存更新策略"等需要特定知识的场景。 2.常见错误处理模板: 如"分布式锁冲突处理"、"数据库乐观锁重试机制"等反复出现的问题解决方案。 MCP协议的典型应用场景 刚接触Claude Code时,我们采用的是简单直接的"需求-响应"模式:开发者描述需求,AI生成代码,开发者修改调整。这种模式在处理简单功能时还行,但遇到复杂场景就会出问题。 我们早期在项目中踩过的三个坑: 三大典型问题: 开发者说"实现一个商家信息查询接口",AI生成了基础的CRUD代码,但没有考虑商家数据权限、数据脱敏、缓存策略等实际业务需求 ; 实现任务时,只描述了"需要任务分配功能",结果AI生成的代码没有处理任务池、任务优先级、分配策略等核心逻辑。 一个对话持续了十几轮后,AI开始忘记我们前面确定的"使用MyBatis-Plus + BaseMapper"的设计决策,擅自改成了JPA Repository模式; 在实现相关功能时,早期确定的DTO转换规范在后续模块中被遗忘,导致代码风格不一致。 等AI生成完整的Service + Controller + Repository代码后才发现方向不对,比如数据库表设计与现有架构冲突,不得不从头再来,浪费了大量时间; 实现触达功能时,生成的飞书消息发送代码没有考虑现有的FeishuClient封装,重复造了轮子。 深入分析后,我们发现传统对话模式失败的根源在于三个核心矛盾: 语义鸿沟 自然语言描述的模糊性与代码逻辑的精确性之间的差距。我们说"这个接口要安全",AI可能理解为"需要登录校验",而我们实际想要的是: 约束衰减 随着对话推进,早期设定的技术约束在AI理解中的权重逐渐降低。就像我们记笔记时,重要的事情要反复强调。比如: 目标偏移 在多轮对话中,AI容易过度关注当前细节而忽视整体目标。比如讨论某个接口的参数设计时: 针对这些问题,我们团队总结出一套"三阶段对话模型",现在已经成为我们使用Claude Code的标准流程: 阶段一:需求定义——把"要做什么"说清楚 这个阶段的目标是确保我们和AI对需求达成共识。我们会用"用户故事+验收标准"的格式来描述需求: 示例1:新商户成长任务分配 示例2:商家数据权限查询 阶段二:边界明确——确定"怎么做"的约束条件 在这个阶段,我们会明确技术栈选择、架构设计和各种约束条件。关键是要区分"必须遵守"和"建议参考"的约束: 示例1:新商户成长任务模块 示例2:机器人问答功能 阶段三:迭代反馈——在"做的过程"中持续对齐 这个阶段的核心是增量验证,避免一次性生成大量代码后才发现方向错误。 实践要点: 1.分模块实现,逐个验证 2.关键节点主动暂停 3.持续同步技术方案 对话示例: 对话设计三原则与常见问题应对策略 这种结构化对话设计不是凭空想出来的,而是基于我们对人类认知过程的理解: 随着团队使用Claude Code的深入,我们发现单个AI助手已经难以满足复杂项目的开发需求——就像一个人再厉害也干不了一个团队的活。于是,我们开始探索让多个AI"角色"协同工作的模式,这就是子代理(SubAgent)系统的由来。 在传统开发模式中,我们有需求分析师、架构师、开发工程师、测试工程师等不同角色,他们通过文档、会议和代码审查等方式协作。这种模式虽然成熟,但在快节奏的业务迭代中,我们发现了一些问题: 协作中的三大痛点: 这些问题促使我们思考:能不能在Claude Code中模拟团队协作模式,让不同的AI角色各司其职又协同工作? 借鉴了MetaGPT等框架的思想,我们在Claude Code中构建了由多个专业化子代理组成的AI团队协作系统。每个子代理承担特定角色,通过标准化中间产物协同工作。 核心工作机制:中间产物驱动 所有子代理通过共享"技术方案文档"进行协作,这个文档就像团队的"共享白板",包含需求分析、模块划分、实现状态和接口设计等关键信息。每个子代理只负责修改文档中与自己角色相关的部分,确保信息一致性。 四个核心子代理角色 技术方案架构师 负责需求分析、技术方案设计和模块划分。相当于团队里的架构师,输出"技术方案文档"这个"施工蓝图"。 核心职责: 代码审查专家 负责代码质量审查。扮演技术负责人的角色,从架构合规性、代码规范和稳定性等角度挑毛病。 核心职责: 代码实现专家 专注于代码实现和单元测试编写。就像主力开发工程师,按照架构师设计的蓝图一块块地实现功能。 核心职责: 前端页面生成器 专门负责生成符合我们低代码平台规范的前端页面配置。这是针对我们商家域管理后台特点定制的角色。 核心职责: 协作流程 我们采用"先整体规划,再迭代实现"的工作方式,有点像敏捷开发中的Sprint规划+Daily Scrum: 1. 整体规划阶段: 2. 单模块迭代阶段: 实践中的三个显著价值 遇到的四个实际挑战 子代理协作的挑战与应对: 在设计这套协作模式时,我们有几个关键思考: 经过几个月的Claude Code实践,从最初的"试试看"到现在成为离不开的开发工具,我们积累了一些经验,也对AI编程的未来有了更清晰的认识。 人机协作的最佳平衡点: 我们发现最有效的AI编程模式是"人类主导,AI辅助",而不是反过来。我们将工作内容分为三类: 上下文管理的实用技巧 管理好对话上下文是用好Claude Code的关键,分享几个我们团队总结的技巧: 质量控制的三个关键策略 使用AI生成代码后,质量控制变得更加重要。我们的做法是: 在实践过程中,我们也清醒地认识到AI编程并非万能解决方案,它有几个明显的局限性: 基于这些实践经验,我们对AI编程工具的未来发展有几点思考: 回顾这几个月使用Claude Code的经历,我们最大的体会是:AI编程工具的价值不在于替代开发者,而在于构建人机协作的新型开发范式。在这种范式下,人类开发者从繁琐的重复劳动中解放出来,更专注于需求分析、架构设计和质量把控等高价值创造性工作,而AI则承担起代码实现、文档生成和基础验证等标准化工作。 Claude Code作为我们实践的核心工具,通过精准对话流设计、模块化任务分解和专业化子代理协作,展示了这种新型开发范式的潜力。但我们也认识到,成功的AI编程应用需要"工具+方法论+团队协作"三位一体的系统性变革,其中人的角色从"代码生产者"向"问题解决者"和"质量把控者"转变。 作为开发者,我们需要保持开放学习的心态,积极探索和适应这种新范式。未来已来,与其恐惧被AI替代,不如学会与AI协作,在人机协作中实现更高的个人价值和团队效能。毕竟,代码只是解决问题的手段,而非目的;AI只是增强我们能力的工具,而真正的创新和价值,始终源于人的智慧和创造力。 实践启示: 在AI编程时代,最有价值的开发者不是"写代码最快的人",而是"最会引导AI、最能把控质量、最能解决复杂问题的人"。掌握与AI协作的技巧,建立系统化的AI辅助开发流程,将成为未来开发者的核心竞争力。我们的经验表明,通过合理设计对话流程、明确分工协作和严格质量控制,AI编程工具能够显著提升团队效能,但这需要整个团队在思维方式和工作流程上的共同转变。 1.入选AAAI-PerFM|得物社区推荐之基于大语言模型的新颖性推荐算法 2.Galaxy比数平台功能介绍及实现原理|得物技术 3.得物App智能巡检技术的探索与实践 4.深度实践:得物算法域全景可观测性从 0 到 1 的演进之路 5.前端平台大仓应用稳定性治理之路|得物技术 关注得物技术,每周更新技术干货 要是觉得文章对你有帮助的话,欢迎评论转发点赞~ 未经得物技术许可严禁转载,否则依法追究法律责任。一、开发痛点:为什么我们需要AI编程辅助?
二、Claude Code核心功能解析:从工具到方法论
精准对话流设计:控制AI思考的艺术
Plan模式:复杂任务的系统化分解
---
拜访任务线上化 - 模块清单
M1: 任务创建模块
- 功能: 创建拜访任务,包含基本信息、拜访对象、参与人员
- 复杂度: Medium (需要处理多表关联和事务)
M2: 任务审批模块
- 功能: 飞书审批流程集成,支持任务提交、审批、驳回
- 复杂度: High (涉及飞书审批接口集成和状态流转)
M3: 日程同步模块
- 功能: 将拜访任务同步到飞书日历
- 复杂度: Medium (飞书API调用和异常处理)
M4: 任务列表查询模块
- 功能: 分页查询任务列表,支持多维度筛选
- 复杂度: Medium (ES聚合查询和数据转换)
M5: 任务详情查询模块
- 功能: 查询任务详情,包括拜访对象、参与人员、商家信息
- 复杂度: Low (简单的关联查询)
M6: 任务统计模块
- 功能: 统计不同类型、不同状态的任务数量
- 复杂度: Low (聚合统计)
M7: 拜访结果提交模块
- 功能: 提交拜访记录,上传附件,记录拜访内容
- 复杂度: Medium (文件上传和多表操作)
M8: 任务分配模块
- 功能: 批量分配任务给运营人员
- 复杂度: High (涉及分配策略和定时任务)
M9: 任务触达模块
- 功能: 任务开始、结束、上传提醒通知
- 复杂度: Medium (飞书消息卡片模板)
M10: ES数据同步模块
- 功能: 将任务数据同步到ES,支持全文检索
- 复杂度: Medium (事件驱动和ES批量操作)
M11: 任务导入模块
- 功能: Excel批量导入拜访任务
- 复杂度: High (Excel解析、数据校验、批量插入)
M12: 任务状态变更模块
- 功能: 定时更新任务状态(未开始→进行中→已结束)
- 复杂度: Low (定时任务和批量更新)
---
第二步:技术方案设计
| 模块 | 数据存储 | 查询方案 | 外部集成 |
|------------|------------------------|------------------|-------------------|
| M1-任务创建 | MySQL (事务) | - | - |
| M2-任务审批 | MySQL + 审批记录表 | - | 飞书审批API |
| M3-日程同步 | - | - | 飞书日历API |
| M4-任务列表 | ES (主) + MySQL (辅) | ES聚合查询 | - |
| M5-任务详情 | MySQL | 联表查询 | 商家信息API |
| M6-任务统计 | ES | ES聚合统计 | - |
| M7-结果提交 | MySQL + OSS | - | OSS文件上传 |
| M8-任务分配 | MySQL | 分配算法 | - |
| M9-任务触达 | - | - | 飞书消息卡片 |
| M10-ES同步 | ES | Spring Event | - |
| M11-任务导入 | MySQL | Excel 解析 | - |
| M12-状态变更 | MySQL | JOB定时任务 | - |
---
第三步:任务优先级排序
P0 核心流程(必须先实现)
1. M1-任务创建 (基础功能)
2. M5-任务详情 (数据展示)
3. M4-任务列表 (核心查询)
4. M7-结果提交 (闭环流程)
P1 审批与通知(核心功能增强)
5. M2-任务审批 (依赖M1)
6. M3-日程同步 (依赖M2审批通过)
7. M9-任务触达 (依赖M1、M7)
P2 运营功能(效率提升)
8. M8-任务分配 (依赖M1)
9. M11-任务导入 (依赖M1)
10. M6-任务统计 (依赖M4)
P3 技术优化(性能优化)
11. M10-ES同步 (依赖M1、M4)
12. M12-状态变更 (独立模块)
---
实现建议
阶段一:基础能力
- 先实现 M1、M5、M4,打通任务创建→查询→详情的基本链路
- 使用 MySQL 实现,暂不接入 ES
阶段二:审批流程
- 实现 M2、M3,接入飞书审批和日历
- 完成任务的完整生命周期管理
阶段三:结果闭环
- 实现 M7,完成拜访结果提交
- 实现 M9,添加任务触达通知
阶段四:运营优化
- 实现 M8、M11、M6
- 提升运营效率
阶段五:性能优化(按需)
- 实现 M10,将查询迁移到 ES
- 实现 M12,优化任务状态管理系统提示词:给AI立"规矩"的艺术

SKILL与MCP:知识沉淀与外部能力扩展
三、对话流设计方法论:让AI"懂"你的真实需求
现状分析:传统对话模式的局限性
核心问题:为什么AI总是"听不懂"?
解决方案:结构化对话设计方法

【用户故事】
作为新商户运营,我需要一个任务分配功能,以便将成长任务高效分配给运营人员
【验收标准】
- 支持从任务池中按优先级(P0/P1/P2)筛选待分配任务
- 支持指定运营人员进行任务分配,需校验运营人员是否有权限
- 分配时需检查运营人员当前任务负载,超过上限时提示"当前任务数已达上限"
- 分配成功后需发送飞书消息通知运营人员,消息内容包含任务详情和截止时间
- 操作需记录到表,包含操作人、操作时间、任务ID、分配对象【用户故事】
作为商家运营,我需要一个商家信息查询接口,查询结果需要根据我的数据权限进行过滤
【验收标准】
- 支持按商家ID、商家名称、商家状态进行查询
- 支持分页查询,默认每页20条,最大100条
- 查询结果需要根据当前用户的数据范围进行过滤
- 商家敏感信息(手机号、身份证号)需脱敏处理
- 接口需要权限校验,至少具有"商家查看"权限
- 查询条件需记录到操作日志,便于审计【技术约束】
必须遵守:
- 使用SpringBoot标准分层架构,所有Service继承OcsBaseServiceImpl
- 数据库操作使用MyBatis-Plus,实体类继承BaseEntity,Mapper继承BaseMapper
- 接口返回统一使用Result<T>格式,错误码使用ErrorCode
- 权限校验使用@Permission注解,参数校验使用@Valid + ValidatorUtil
- 飞书消息发送必须使用FeishuClient,不要重复实现
建议参考:
- 任务状态流转参考TaskServiceImpl中的状态机模式
- 批量分配操作参考AssignImportHandler中的异步处理方式
- 运营人员权限校验参考OperatorRelationServiceImpl
- 数据权限过滤参考ScopeServiceImpl中的范围查询逻辑
【数据库约束】
- 新增表必须包含created_at, updated_at, is_deleted字段
- 表名使用ocs_前缀,字段名使用蛇形命名法
- 索引设计需考虑查询场景,高频查询字段必须建立索引
- 外键约束通过代码层面维护,不在数据库层面创建【技术约束】
必须遵守:
- Controller层使用@RestController + @RequestMapping,路径遵循/api/v1/{module}/{action}格式
- Service层业务逻辑必须有事务控制,使用@Transactional(rollbackFor = Exception.class)
- DTO转换使用项目中的ConvertUtil,不要手动赋值
- 第三方API调用(如Dify)必须有重试机制和降级策略
- 敏感配置(API Key)必须从配置中心读取,不要硬编码
建议参考:
- 对话上下文管理参考RobotServiceImpl中的会话ID生成逻辑
- 消息发送失败重试参考FeishuMessageHandler中的重试策略
- 错误处理参考GlobalExceptionHandler中的统一异常处理
【集成约束】
- Dify API调用统一通过DifyClient,响应格式需转换为项目标准格式
- 飞书机器人回调处理需实现签名校验,参考FeishuEventHandler
- 所有外部API调用需记录请求日志到integration_log表 开发者: "实现新商户成长任务分配功能"
AI: "我将分三步实现:
1. 先设计数据库表结构(ocs_task_assignment表)
2. 实现核心分配逻辑(NewMerchantTaskAssignService)
3. 实现Controller层接口
现在开始第一步,设计的表结构如下:
[展示表结构]
请确认表结构是否符合需求?"
开发者: "字段没问题,但索引需要加上(operator_id, status)"
AI: "已更新索引设计,现在开始实现Service层核心逻辑...
[生成Service代码]
核心逻辑已实现,包含:
- 任务池查询(按优先级过滤)
- 运营人员负载检查
- 任务分配和状态更新
- 飞书消息发送
请验证业务逻辑是否正确?"
开发者: "逻辑正确,继续实现Controller"
AI: "开始实现Controller层...
[生成Controller代码]
已完成模块M1实现,更新技术方案状态为implemented"
为什么这样设计:背后的认知科学原理
四、AI团队协作模式:子代理系统的实践与思考
团队协作的现状与挑战
Claude Code的子代理协作模式
子代理协作的价值与局限
子代理协作的设计思考
五、实践经验与未来展望
实践经验总结
AI编程的局限性认知
未来发展方向思考
六、结语:人机协作的新型开发范式
往期回顾
文 /稚归














