50行代码vs3000行:我用Claude Code的Harness思维省下6个月开发时间

张开发
2026/4/7 3:22:55 15 分钟阅读

分享文章

50行代码vs3000行:我用Claude Code的Harness思维省下6个月开发时间
花了3个月写3000行代码的智能框架被同事用50行代码吊打。这不是段子是我去年真实的经历。本文用3个问题帮你识别伪Agent附赠Harness工程3阶段路线图看完你就能写出真正的Agent系统。我的惨痛经历3000行代码 vs 50行代码去年我接到一个任务给公司开发一个AI编程助手。作为资深工程师我信心满满# 我的企业级Agent框架节选classAIProgrammer:def__init__(self):self.intent_classifierIntentClassifier()# 500行self.prompt_templatesPromptTemplateManager()# 800行self.workflow_engineWorkflowEngine()# 1200行defprocess(self,user_input):# 意图识别 - 选择模板 - 执行流程 - 返回结果intentself.intent_classifier.classify(user_input)# 100行templateself.prompt_templates.get(intent)# 200行resultself.workflow_engine.execute(template)# 1500行returnresult3000行代码15个类8个设计模式。结果遇到帮我重构这个函数但要保持向后兼容还要更新测试用例这种需求直接崩溃——因为它无法被归类到单一意图。同事的方案# 同事的最小Agent完整版defagent_loop(messages):whileTrue:responseclient.messages.create(modelclaude-3-sonnet,messagesmessages,tools[read_file,write_file,bash],# 只有3个原子工具)messages.append({role:assistant,content:response.content})ifresponse.stop_reason!tool_use:return# 模型说我完成了# 执行工具结果反馈给模型results[execute_tool(block)forblockinresponse.content]messages.append({role:user,content:results})50行代码。没有意图分类没有工作流引擎没有Prompt模板库。但它能处理我那个无法归类的需求因为它让模型自己决定做什么。核心洞察Agent是模型Harness是载具我犯的错误是用确定性代码模拟不确定性智能。就像用算盘模拟计算机——外表相似本质完全不同。真正的Agent架构感知层文件/错误/日志推理层LLM模型决策行动层原子工具调用反馈层执行结果关键认知Agent模型决定做什么读文件运行测试写代码Harness代码决定怎么做如何读文件如何执行命令我的3000行代码在做什么我在替模型做决定——这是伪Agent。同事的50行代码在做什么他让模型自己做决定——这是真Agent。3个问题识别伪Agent维度伪Agent我的方案真Agent同事方案决策方式硬编码if-else规则意图分类模型自主决策Agent Loop工具设计业务流程化粗粒度原子化细粒度可组合扩展方式修改框架代码加意图、加模板添加工具描述不改循环逻辑代码行数3000行复杂到难以维护50行简单到一眼看懂适应能力遇到未预设场景直接崩溃能处理任意复杂组合需求代表产品早期智能脚本、简单Prompt链Claude Code、GitHub Copilot Chat一句话区分伪Agent代码替模型做决定if-else编排真Agent代码给模型提供做决定的环境Harness给你的团队Harness工程3阶段路线图如果你要为自己的场景构建Agent系统遵循这个路径阶段1最小Harness验证可行性1-2天目标用50行代码验证Agent在你的领域是否work# 最小Agent Loop阶段1defminimal_harness():tools[{name:read_doc,description:读取文档内容},{name:search_kb,description:搜索知识库},{name:send_email,description:发送邮件通知}]# 验证模型能否在你的领域自主完成任务agent_loop(toolstools)关键产出确认模型能否理解你的业务场景确定需要哪些原子工具验证Agent Loop是否work阶段2增强Harness提升能力1-2周目标在最小Harness基础上增加能力但不改变核心循环# 增强Harness阶段2classEnhancedHarness:def__init__(self):self.toolsself.load_tools()# 扩展工具集self.skill_loaderSkillLoader()# 知识按需加载self.subagentSubagentManager()# 子Agent支持defrun(self,task):# Agent Loop保持不变returnagent_loop(messagestask,toolsself.tools,# 新增能力通过参数注入不改循环逻辑skill_loaderself.skill_loader,subagentself.subagent)关键产出工具集扩展到10-20个原子工具实现知识按需加载节省66%成本添加Subagent支持处理复杂任务阶段3生产Harness工程化1-2月目标让Agent从玩具升级为生产系统# 生产级Harness阶段3classProductionHarness:def__init__(self):self.task_systemTaskSystem()# 任务持久化self.context_managerContextManager()# 上下文压缩self.team_busMessageBus()# 多Agent协作self.worktree_managerWorktreeManager()# 环境隔离defrun_long_task(self,project):# 支持跨天任务、断点续传、崩溃恢复# 支持多Agent并行、环境隔离pass关键产出上下文压缩支持50轮对话任务持久化断点续传、崩溃恢复多Agent协作团队协议、任务分配资源隔离Worktree/Docker避坑指南别让框架思维害了你❌ 坑1过度设计# 不要一开始就这么做classEnterpriseAgentFramework:def__init__(self):self.plugin_managerPluginManager()# 插件系统self.config_managerConfigManager()# 配置管理self.event_busEventBus()# 事件总线✅ 正确做法# 从最小开始逐步演进defagent_loop(messages,tools):whileTrue:responsellm.call(messages,tools)ifresponse.stop_reason!tool_use:returnresultsexecute_tools(response)messages.append(results)❌ 坑2混淆Agent和Harness# 错误在Harness层做决策ifdeployinuser_input:force_run_tests()# 强制先跑测试# 正确让模型决定要不要跑测试# Harness只提供run_tests工具模型自己决定何时调用❌ 坑3工具设计过于粗粒度# 错误业务流程化工具{name:refactor_code,description:重构代码并更新测试}# 模型无法灵活组合只能按你预设的流程执行# 正确原子化工具{name:read_file,description:读取文件内容}{name:edit_file,description:编辑文件}{name:run_tests,description:运行测试}# 模型可以自主组合读文件→编辑→测试→再编辑总结造好HarnessAgent会完成剩下的Agent是模型。Harness是载具。你的工作是构建一个高质量的栖居环境——让Agent能看得清楚Observation、想得明白Reasoning、动得精准Action、学得持续Learning。不要试图用代码编写智能。智能已经在模型里了。你只需要给它一个能发挥的世界。造好Harness。Agent会完成剩下的。 互动投票你当前的项目中有伪Agent痕迹吗A. 大量使用if-else编排业务流程意图分类B. 工具设计过于粗粒度如重构代码作为一个工具C. 新增功能需要修改框架核心代码而非添加工具描述D. 已经是Harness思维模型自主决策恭喜你思考题你当前的项目中有哪些伪Agent的痕迹如果让你重构哪些决策应该交给模型哪些应该保留在Harness层你的领域需要什么特殊的感知和行动能力特定的工具集

更多文章