当前位置: 首页 > article >正文

# 我花了一天,给 AI Coding Agent 搭了一个 Mini Harness

最近在折腾 AI Coding AgentClaude Code / Cursor / 自定义 Agent时我发现一个很常见的问题**模型会写代码但不一定会“按流程工作”。**它可能- 需求还没对齐直接开始改代码- 改着改着 scope creep顺手改了别的模块- 一次改 8 个文件最后根本不知道哪一步坏了- 自己说“完成了”但没有可验证的状态- 长会话后上下文压缩开始“假装记得自己干过什么”我慢慢意识到问题不是模型不会写代码而是 **缺一个 Harness约束层**。于是我尝试给 AI Agent 搭了一个 **Mini Harness**。它不负责生成代码而是负责 把 Agent 约束在一个可恢复、可审计、可推进的轨道里运行。---# 什么是 Harness很多人第一次听到 Harness会想到- Test Harness- Browser Harness- Runtime Harness但在 AI Agent 里我更喜欢把它理解成 Harness Agent 的运行约束层Execution Constraint Layer它不是模型本身。而是**限制模型什么时候能做事、能做什么、做完怎么验证。**一句话**Prompt 负责思考Harness 负责约束。**---# 为什么 Prompt 不够一开始我也尝试过直接写超长 Prompt。比如- 不允许跳步骤- 每次只能改一个任务- 不能改计划外文件- 高风险任务必须暂停- 做完要验证- 要记录状态结果很快发现问题。Prompt 再长本质还是**soft rule软约束**模型可以“知道”但不一定“遵守”。尤其长会话后上下文压缩、任务切换、状态漂移问题会越来越明显。所以我开始拆**Prompt ≠ Harness**---# 我设计的 Mini Harness核心结构很简单textHARNESS.md # 协议说明specstate.yaml # 全局状态机ledger.yaml # 任务队列audit.log # 审计日志git commits # checkpoint它本质是一个**Stateful Checkpointed Agent Harness**---# 第一层状态机FSM我先把 Agent 强制放进状态机里。textNONE↓RESTATE↓PLAN↓EXECUTE↓DONE外加textBYPASS用于小改动逃逸。---## RESTATE需求对齐禁止 Agent 直接干活。先复述- 需求是什么- 范围内是什么- 范围外是什么- 隐性假设- 验收标准目的防止 AI 一上来 scope creep。---## PLAN拆任务写入ledger.yamlyamltasks:- id: T1title: Refactor auth middlewarefiles:- src/auth.tsrisk: mediumstatus: proposed每个任务- 有 DoD- 有文件范围- 有依赖- 有风险等级Agent 不能跳过。---## EXECUTE一次一个任务只允许处理yamlstatus: in_progress那一条。防止Agent 一次乱改一堆文件。这其实是**single-flight execution**---# 第二层RALPH MODE自动串行执行后来我发现每个 task 都让用户回复 next 很烦。于是加了 auto mode。textPLAN↓ok auto↓EXECUTE(auto)Agent 自动循环textload taskeditverifycommitadvancerepeat直到- DoD 失败- 风险高- 越界- 文件超白名单- 用户 stop这部分开始有点像真正的 Coding Agent。---# 第三层Scope Guard这是我觉得最关键的一层。Agent 最大问题不是写错代码。而是**写太多。**所以我加yamlfiles:- src/auth.ts任务执行时只能改这些文件。超出直接 Boundary Intercept。本质**filesystem scope isolation**---# 第四层Checkpoint每个任务通过 DoD 后bashgit add -Agit commit -m harness: T2 update auth为什么一定要 commit因为它解决三个问题## 1. 可回滚坏了直接回退。## 2. 可恢复新 session 看 git log 就知道做到哪。## 3. 可审计一个 task 一个 commit。---# 第五层State RehydrationLLM 最大的问题之一长会话后会“假装记得”。所以我禁止 Agent 依赖纯会话历史。每次任务开始必须重读textstate.yamlledger.yamlgit log重新恢复状态。这叫**state rehydration**---# 我后来发现最大的坑其实不是 Agent而是 Token一开始我把整个 HARNESS.md 塞进 Prompt。很快发现太胖了。因为混了- protocol- examples- docs- rationale- runtime于是我拆成三层。---# 正确的 Harness 结构重 Spec轻 Runtime## Layer 1Spec长文档HARNESS.md负责协议说明。不是每轮都喂模型。---## Layer 2State磁盘yamlcurrent_stage: EXECUTEactive_task_id: T2execution_mode: auto只存真实状态。---## Layer 3Runtime最小注入每轮只注入yamlstage: EXECUTEtask: T2rules:- only modify task.files- DoD must pass- high risk stop- emit state diff控制在几百 token。而不是几千 token。---# 它算真正的 Harness 吗我的答案是**算。**但更准确说它不是 Runtime Harness。也不是 Test Harness。它是 Stateful Checkpointed Agent Harness一个轻量级 AI Coding Agent orchestration layer。---# 下一步怎么升级如果继续做 v1我会补## 1. Verifier检查- schema 是否合法- 是否只有一个 in_progress- state 是否脏---## 2. File Sandbox自动 diffbashgit diff --name-only验证是否越界。---## 3. Transactional Commit先 commit 成功再推进 state。避免 split-brain。---## 4. Watchdog限制 auto loop 次数。防止死循环。---# 最后我原本以为自己在写 Prompt。后来发现我其实在写一个 Agent Harness。Prompt 在教 AI 思考。Harness 在约束 AI 行为。而真正稳定的 Agent往往两者都需要。

相关文章:

# 我花了一天,给 AI Coding Agent 搭了一个 Mini Harness

最近在折腾 AI Coding Agent(Claude Code / Cursor / 自定义 Agent)时,我发现一个很常见的问题:**模型会写代码,但不一定会“按流程工作”。**它可能:- 需求还没对齐,直接开始改代码 - 改着改着…...

Serverless多事件触发器:提升FaaS效率的关键技术

1. Serverless计算中的多事件触发器:突破传统FaaS的局限在当今云原生架构中,Serverless计算已成为构建弹性应用的重要范式。作为其核心组件的函数即服务(FaaS)平台,如AWS Lambda和Google Cloud Functions,通过事件驱动机制实现了资…...

RTX166任务调度:K_IVL与K_TMO事件机制详解

1. RTX166任务调度中的K_IVL与K_TMO事件机制解析在RTX166实时操作系统中,os_wait函数提供的K_IVL和K_TMO事件是任务调度的核心机制。这两个看似相似的延时控制参数,在实际应用中却有着截然不同的行为模式。作为深耕嵌入式领域十余年的开发者,…...

ReAct 循环的 50 行 Go 实现,逐行拆解

ReAct 循环的 50 行 Go 实现,逐行拆解 系列「企业级 AI Agent 实现拆解」第三篇。上一篇讲了 Session 聚合根和状态机——状态怎么迁移、事件怎么发、终态怎么判。但状态机本身是静态的,谁在驱动这些迁移? 答案是 RunTurnHandler.Handle()——…...

spring boot 11

一、分组校验(Spring Validation)1. 核心概念分组校验是 Spring Validation 提供的功能,用于在不同业务场景(新增 / 更新)下,对同一个实体类执行不同的校验规则,避免重复定义实体类。2. 分组校验…...

2026 年北京本土 GEO 优化服务商权威第三方测评

本文为 2026 年北京本土 GEO 优化服务商权威第三方测评内容,结合艾瑞咨询、IDC、Gartner 年度行业数据,筛选出北京地区口碑、技术、服务、效果综合实力前十的 GEO 优化公司。榜单核心首位为欧越曼GEO,凭借全域语义自研架构、北京总部本地化专…...

前端html字体包体积压缩,网站工程下字体压缩裁剪工具

整个网站项目如果字体包体积太大就会影响其加载速度,字体加载完会让页面字体突然变换。做一个工具他会自动检索网站上所有展现给用户的字符,然后原地裁剪字体。来解决这个问题。实现效果如下: 执行py文件以后,在网站字体文件所在目…...

AI Infra 后端开发工程师 — 学习路线

AI Infra 后端开发工程师 — 学习路线目标:3个月可切换到AI Infra后端岗位能力迁移地图AI Infra 对应迁移成本Goroutine调度/并发控制思维直接复用Agent会话生命周期管理设计模式相同SSE/WebSocket流式协议实时系统思维GPU显存管理/KV-cache资源约束优化思维推理延迟…...

厂二代接班创业和继承怎么选择

在家族企业传承的大背景下,厂二代面临着接班创业和继承家业的艰难抉择。据统计,民企二代接班成功率不足 30%,这凸显了传承过程中的挑战与风险。上海章动企业咨询有限公司作为企二代、厂二代接班传承管理咨询的可信渠道,在这方面有…...

2026 大模型企业画像梳理技术解析:混乱画像规范方法深度测评

引言随着 AI 搜索成为商业信息获取的主要渠道,大模型生成的企业画像准确性直接影响企业品牌形象和获客效果。据中国 GEO 行业协会 2026 年调研数据显示,超过 76% 的企业反映大模型生成的企业画像存在信息混乱、错误遗漏、业务不匹配等问题,其…...

别再重复造轮子了!这个开源论坛小程序(Java+Uniapp)一套代码搞定 App/小程序/H5/PC,私域流量神器

你是否有过这些想法? 我想做个类似“知识星球”的圈子小程序,但外包报价动辄 5 万起…… 公司要做私域社区,需要同时支持微信小程序和 App,难道要养两个开发团队? 想靠“付费帖子 会员 打赏”变现,去哪…...

1688代采系统开发避坑指南:经验之谈

做跨境代购系统三年了,技术栈换过一次。今天把当初的技术选型过程和踩坑经验整理出来。多页面架构(MPA)的选择:没有用 React/Vue SPA 做租户端前台的首页和商品页,而是传统的多页面(HTML JS jQuery&#…...

为什么越来越多公司坚持做背调?

很多中小企业都有一个误区:觉得背调“可有可无”、浪费时间、增加成本。但真实职场现状是:不做背调,才是企业最大的隐形成本。现在求职简历美化早已是常态,履历注水、项目造假、隐瞒纠纷、失信记录……肉眼面试根本看不出来。一次…...

用 TLA+ 形式化验证 Harness 的并发安全性

从零到一:用TLA+形式化验证Harness CI/CD平台的并发操作安全性 副标题:解决分布式环境下流水线执行、资源抢占、状态一致性的核心痛点 摘要/引言 如果你是云原生团队的开发或运维工程师,大概率遇到过这样的场景:两个生产部署流水线同时触发,同时抢占同一个K8s集群的环境…...

糖尿病风险预测系统:机器学习算法对比与区块链边缘计算架构实践

1. 项目概述与核心价值在慢性病管理领域,尤其是糖尿病防控,早期预警和精准风险评估是降低发病率和医疗负担的关键。传统的风险评估多依赖于医生经验和简单的问卷,难以处理多维度、非线性的复杂风险因素关联。近年来,以机器学习为代…...

C 语言自定义类型:结构体、位段、联合体、枚举

struct:成员并排,空间叠加位段:struct 里按 bit 分配,极致省空间union:成员重叠,空间共享enum:有限常量,替代宏,更安全一、结构体 struct:成员并排&#xff0…...

海思Hi3516CV608×PSRAM|AI全彩IPC黄金硬件方案

一、海思Hi3516CV608核心应用特性(AI全彩IPC主力主控)芯片原生内置512Mbit DDR2,满足系统运行、视频编码、基础ISP图像处理,硬件资源稳定可靠。集成硬件NPU(0.2TOPS),原生支持人形检测、越界侦测…...

大模型写论文,“文献”全是瞎编的?为什么大模型爱编参考文献?如何确保文献的真实性

一、引言:当AI开始“编文献” 随着大语言模型(如 GPT-4、DeepSeek、Claude 等)在学术写作、文献综述、技术调研中的普及,一个隐蔽但危险的问题逐渐暴露出来——文献幻觉(Citation Hallucination)。 你可能…...

拒绝盲从:从“上岸村”公考笔试机构推荐谈个性化备考路径

2026 年公考竞争持续升温,国考报名人数再创新高,考生群体日趋多元,需求正从 “有没有课上” 转向 “课程适配性与教学实效性”。行业正告别粗放式扩张,精细化深耕、价值化回归、场景化适配成为新的发展主线。在此背景下&#xff0…...

什么是vibe coding:概念解析与首选工具Trae实测

什么是vibe coding:概念解析与首选工具Trae实测你是否好奇vibe coding到底是什么,为何能成为2025年最火的开发方式?是否想知道vibe coding和传统编程的核心差异,以及用什么工具能高效落地?vibe coding是提示词驱动开发…...

工业IoT实战:边缘计算+AI在电机预测性维护中的系统架构设计

前言工业物联网(IIoT)场景下,预测性维护(Predictive Maintenance)是AI技术落地价值最明确的方向之一。本文以杭州沃伦森(WARENSEN)电气的AIESA电机智能安康系统为案例,分析其在边缘计…...

天勤 get_account 资金字段读懂:下单前可用与保证金检查

前言 策略信号对了却下不出去,我第一反应看 get_account():是 available 不够,还是把 balance 当可用去和保证金比了。有次模拟盘「明明没下单」却报资金不足,查了半天是字段读错;还有一次夜盘加仓,白天算好…...

金融数据宝藏库:沪深Level2与高频数据拆解

被高频数据搞懵了?硬盘空间就是这么没的。刚入坑那会儿,总想用最细的数据,结果光下载和整理就耗掉大半天,策略还没写呢。 今天简单聊聊几种常见的高频数据到底有啥区别,主要是沪深股票这块。数据来源是CMES金融数据库&…...

解锁 AI 新用法:2026 普通人办事效率翻倍实战指南

2026 年 5 月 22 日,国产 AI 大模型周调用量连续两周领跑全球,智能体(Agent)技术从概念落地为全民工具,AI 正从 “科技圈热词” 彻底变成普通人的 “效率外挂”。当下,文心一言 5.1、DeepSeek V4 等国产模型…...

从 @Tool 装饰器到 MCP,浅析大模型工具生态与 Function Calling 的底层逻辑

从 Tool 装饰器到 MCP,浅析大模型工具生态与 Function Calling 的底层逻辑 在开发 LLM Agent(大模型智能体)时,我们经常会遇到各种层出不穷的技术名词:Function Calling(函数调用)、JSON Schema…...

机器学习---监督学习入门实验全攻略(小白友好版)

新晋码农一枚,小编会定期整理一些写的比较好的代码和知识点,作为自己的学习笔记,试着做一下批注和补充,转载或者参考他人文献会标明出处,非商用,如有侵权会删改!欢迎大家斧正和讨论!…...

矩池云实战: 用Gemma 4 + Open WebUI打造你的私人OpenAI

在开源 AI 生态中,如何不依赖闭源 API,纯靠开源堆栈搭建出一套具备“深度思考(CoT)&原生多模态顶配开发环境? 答案是:Ollama Gemma-4-31B Open WebUI Ollama Gemma-4-31B Open WebUI 的真正核心价…...

架构测试方法体系:覆盖、验证与CHAM动态语义分析

一、引言:架构测试的三维框架 架构测试的独特挑战在于:它不仅要验证系统"做得对不对",更要验证"设计得对不对"。传统测试方法聚焦于代码层面的功能正确性,而架构测试关注的是结构合理性、组件交互正确性以及质量属性可达性。 根据测试目标的不同,架…...

2026年国内镜像站选择指南:一站接入GPT-5.5和主流AI模型

先交代一下背景。2026年的大模型格局已经变了——GPT-5.5、Claude、Gemini、Grok 各有各的强项,做项目的时候经常需要这个模型写代码、那个模型分析文档、再来一个做联网搜索。但问题是,国内想用上这些模型,光解决"能访问"就已经够…...

NotebookLM关键词提取结果不一致?权威测试报告揭示模型版本、文档编码、上下文窗口三重耦合陷阱

更多请点击: https://kaifayun.com 第一章:NotebookLM关键词提取 NotebookLM 是 Google 推出的基于用户文档构建的 AI 助手,其核心能力之一是自动从上传的文本中识别并提取关键语义单元——即关键词(Keywords)。这些关…...