内部技术分享 / 2026-06-03

PAS AI Harness 实践
用软件工程思维
做 AI 辅助开发

不是调 prompt,是把 AI 当成团队成员,
给它一个完整的工作环境。

PAS 项目30 min

agenda.toml

今天聊什么

01AI Coding 的三次进化Harness 背景~3min
02OpenAI 的实践:5 个月,百万行代码,0 行人工代码Harness 实践~3min
03Harness 是软件工程的嫡长子Harness 核心~2min
04Harness Engineering = 让 AI 靠谱工作的软件工程Harness 定义~3min
05多层反馈闭环Harness 反馈机制~2min
06SKILL = 开发者的经验(把运维经验封装成 AI 可调用的工具)Harness 工具层~3min
07双规格体系:SPEC 驱动开发Harness 规格层~3min
08MCP 工具链集成:AI 操控一切Harness 集成层~3min
09三套 Agent 并行 + AI Code ReviewHarness 协作层~3min
10代码规范 = AI 的工作手册Harness 规范层~2min
11实际效果:资源组模块Harness 效果~3min
12PAS-AI 需求开发全流程Harness 流程~3min
13全流程还差什么Harness 完善度~2min
14踩坑经验:这些方案我们试过,不 workHarness 实践~2min
15局限性:Human in the Loop 是必须的Harness 边界~3min
16总结Harness 总结~1min
17Q&AQ&A~5min

// background Harness 背景

AI Coding 的三次进化

Prompt Engineering

早期:怎么让模型听我的话?
核心技能:写好提示词。

2022-2023

Context Engineering

中期:怎么给模型最好的上下文?
核心技能:RAG、上下文压缩。

2023-2024

Harness Engineering

现在:怎么让 AI 靠谱地工作
核心技能:软件工程 + AI 协同。

2025 → now

Harness 的本质:不是新技术,是软件工程全流程自动化

// openai-harness-practice Harness 实践

OpenAI 的实践:
5 个月,百万行代码,0 行人工代码

实验规模

3 人团队 · 5 个月
~100 万行代码
~1500 个 PR 已合并
3.5 PRs / 工程师 / 天
吞吐量随团队规模增长 ↑
✦ Git worktree per change — 每个 change 有独立可启动的 app 实例
✦ Ralph Wiggum Loop — agent 写 PR → agent review → 迭代直到通过
✦ Agent 直接查 LogQL/PromQL 验证性能目标
✦ Custom linter 强制架构边界(Types→Config→Repo→Service→UI)
✦ Doc-gardening agent 定期扫描 + 自动开 refactoring PR

核心洞察

人类只做三件事:设计环境 · 定义意图 · 建立反馈循环。其余全部由 agent 完成。

// se-vs-harness Harness 核心

Harness 是软件工程的嫡长子

不是新技术,是成熟实践的重新排列组合

传统软件工程 LLM Harness 实际案例
测试框架(pytest) Evaluation Harness OpenAI:pytest 直接复用,验证 Codex 输出
CI/CD Pipeline Quality Gates Custom linter 强制架构边界(Types→Config→Repo→Service→UI)
代码审查(PR Review) Agent Review Pattern Ralph Wiggum Loop:Codex 写 PR → agent review → 迭代直到通过
类型系统 / Linter Constraints(约束层) Structured logging、命名规范、文件大小限制,全部自动强制
可观测性栈(ELK/PromQL) Agent 可观测性 Codex 直接查 LogQL/PromQL:推理"确保启动在 800ms 内"
技术债务管理 Entropy & GC 定期 agent 扫描 drift,开 targeted refactoring PR,automerge < 1min review
模块化 / 依赖注入 Three Engineering Primitives Git worktree 隔离 + OpenSpec 分解 + Supervisor 协调

核心洞察:Harness 工程复杂度不在"AI"里,在
约束设计 / 反馈环 / 质量闸门 / 可观测性 / 技术债务管理——全是 SE 的活儿

// what-is-harness Harness 定义

Harness Engineering =
让 AI 靠谱工作的软件工程

Harness Engineering 是围绕 AI Agent(特别是 Coding Agent)设计和构建约束机制、反馈回路、工作流控制和持续改进循环的系统工程实践。
核心问题:当 AI Agent 拥有了强大的代码生成能力后,如何确保其输出的可靠性、一致性和长期可维护性

以前:人写代码 → 人跑测试 → 人 Review → 人部署

现在:AI 写代码 → Harness 兜底 → 人 Review → 流水线打包

✓ 自动化测试(编译/单测/API/UI)
✓ CI/CD Pipeline
✓ 代码规范(lint/format)
✓ AI Code Review

Harness 五大子系统

反馈环 / Feedback Loop
编译→单测→API→CI
记忆架构 / Memory Architecture
持久化上下文
工具生态 / Tool Ecosystem
SKILL + MCP
规格约束 / Spec Constraints
OpenSpec 需求管理
隔离机制 / Isolation
Git 分支/环境隔离

三大工程原语(综合 OpenAI + Anthropic 实践)

① 隔离 Isolation

每个 Agent 独立工作空间,冲突结构上不可能发生。
git worktree per change

② 分解 Decomposition

先探索再计划最后编码,给边界 + 验收标准。
Explore → Plan → Implement

③ 协调 Coordination

Spawn(派生)专用子 Agent,Supervisor(督导/包工头)Hook 控制节奏。
Subagents + Hooks
Supervisor = 分解任务 → 派 sub-agent 并行 → 用 Hook 拦截关键节点

// feedback-loop Harness 反馈机制

多层反馈闭环

L1 LSP · AST · Linter — 代码智能三层拦截,语法/类型/架构违规实时捕获
Claude Code
Tree-sitter 静态 AST 解析
+ Shell 执行捕获动态体征
源码泄露:AST 树 + 正则预检
OpenAI Codex
沙盒运行 Runtime
隔离环境实测代码"生命体征"
重在捕获运行时行为而非静态分析
OpenCode
LSP 语义层
复用 IDE 生态(clangd/pyright/tsserver)
AI 伪装成读得懂红线报错的 IDE 插件
oh-my-openagent
nanol.nancy LSP 内置
支持 clangd/pyright/tsserver
LSP 协议直接集成
L2 编译构建 — Maven 编译、依赖解析、API 签名
L3 单元测试 — 逻辑回归、多租户隔离等边界条件
L4 API / 数据库 / UI 测试 — 多模块真实联动
L5 CI Pipeline — 全量测试/lint/构建,合并前的最后安全网

关键原则:反馈环路越短越精准,问题在第一层被拦住成本最低

// implementation · skill Harness 工具层

SKILL = 开发者的经验
把运维经验封装成 AI 可调用的工具

📋 需求 & 文档

✦ pas-SD-概要设计 — 生成架构设计文档模板
✦ pas-api-design — 创建接口、生成Controller/Service代码
✦ pas-workflow-SD-OpenSpec — 七阶段需求开发工作流
✦ pas-eolink-api — 读写Eolink API文档
✦ pas-feedback-sd — 实现细节回填SD文档

🚀 部署 & 运维

✦ pas-deploy-web-tomcat — 部署后端到Tomcat
✦ pas-deploy-web-ui — 部署前端UI到服务器
✦ pas-deploy-task — 部署后台任务发布包
✦ pas-deploy-i18n — 部署i18n多语言文件
✦ pas-ops-db — 数据库操作(MySQL)
✦ pas-ops-server-log-viewer — 查看服务器日志
✦ pas-update-package — 生成PAS增量升级包

🔧 测试 & 开发

✦ pas-api-testcase — 编写API测试脚本
✦ pas-java-web-portal-unittest — 运行单元/集成测试
✦ pas-git-commit-with-spec — 带SPEC引用的Git提交
✦ pas-i18n — 国际化开发规范与常量映射
✦ pas-workflow-jira — BUG修复端到端工作流
✦ pas-project-init — 初始化PAS项目开发环境
✦ pas-Privilege — RBAC权限模型知识库

共 25 个 SKILL,覆盖需求→设计→开发→测试→部署全流程

// implementation · specs Harness 规格层

双规格体系:SPEC 驱动开发

SPEC 1

OpenSpec — 需求规格约束

Delta 格式记录变更——不重写完整规格,只记 diff。

## ADDED Requirements
The system SHALL support Google OAuth 2.0.
## MODIFIED Requirements
Sessions SHALL be persisted in Redis.
(Original: stored in memory.)
✓ 避免规格漂移(Spec Drift)
✓ 只记变化,历史自动累积
SHALL / MUST 关键词 + Given/When/Then 场景
命令流程:
/opsx:propose 生成四件套
/opsx:explore 探索代码库
/opsx:apply 执行任务清单
/opsx:archive 归档合入主规格
SPEC 2

Superpower — 技能规格编排

把 AI 从工具变成团队成员——给它完整工作流和协调机制。

核心技能集(14个)
brainstorming writing-plans subagent-driven-dev TDD git-worktrees systematic-debugging code-review finishing-branch
SPEC 驱动开发的核心逻辑
brainstorming 澄清意图 → writing-plans 制定计划 → subagent-driven 多 Agent 并行执行 → TDD 验证交付
✓ Supervisor 协调多 Agent,分解任务并拦截关键节点
✓ 每个 Agent 独立工作空间,冲突在结构上不可能发生
先计划后编码,给边界 + 验收标准,Agent 才能高效

SPEC = 约束 + 协调 + 反馈 — 模糊需求 → AI 可执行的精确规格 → 输出可预期、可验证

// implementation · mcp Harness 集成层

MCP 工具链集成:
AI 操控一切

已接入的服务(9个)

🔧 EOLINK — API 管理
🔧 Apifox — API Hub + CLI
🔧 Jenkins — 持续集成/部署
🔧 GitLab — 代码仓库
🔧 MySQL-prod — 生产数据库(只读)
🔧 Playwright — 浏览器自动化
🔧 chrome-devtools — 页面抓取/断言
🔧 wiki-qax — 读取需求文档概要设计
🔧 Jira-qax — 读写BUG工单

MCP 的核心价值

AI 可以直接读生产数据、做 API 测试、执行部署——不需要人来回切换工具

协议层:Model Context Protocol
Anthropic 提出的工具调用标准

🧠 记忆系统 / 代码图谱

🔮 OpenViking
让 AI 记住跨会话的上下文和经验,实现持久化记忆

🗺 GitNexus
代码图谱工具,替代脚本搜索,减少 Token 占用

🚀 正在尝试的方向
利用记忆系统让 AI 在会话之间积累经验,告别「每个会话都从零开始」;
利用代码图谱替代脚本关键词搜索,降低上下文膨胀,减少 Token 消耗。

// implementation · multi-agent Harness 协作层

三套 Agent 并行
+ AI Code Review

⚙️ 各个 Agent 工具配置不同模型,各取所长

Claude Code

日常开发

MiniMax 模型
Oh My ClaudeCode
20+ 专项 Agent

OpenCode

全流程开发

Qwen 模型 · 50+ SKILL
oh-my-openagent
子 Agent 能力派发

Codex

AI Code Review

GPT-5.4 模型
SuperPower 技能
全流程覆盖

协作方式:通过 Markdown 文档传递上下文

AI Code Review 已实际运行:资源组模块 → 发现 4 个严重问题 + 3 个高/中问题
代码生成速度 >> 人 Review 速度 → 所以让 AI Review AI

// implementation · code-standards Harness 规范层

代码规范 = AI 的工作手册

AGENTS.md 定义了团队约定,让 AI 知道什么该做、什么不该做。

✦ 中文注释,禁止行尾注释
✦ 禁止 Mock 代码
✦ NPE 防护:任何 get 都必须判空
✦ 禁止伪造实现(占位符/假数据)
✦ 修改完成后必须 mvn install

📁 项目结构约定

新建仓库存放 Harness 文档/脚本,业务代码通过 Submodule 引入

📦 Submodule 引入(业务代码)
├─ pas-psm-script-sec — 脚本模块
├─ pas-ci-sec — CI 模块
├─ pas-psm-ui-portal-sec — 前端模块
├─ pas-psm-web-portal-sec — 后端模块
├─ pas-psm-proxy-sec — 代理模块
└─ pas-grpc-api-sec — gRPC API 模块
📂 主仓文档目录
├─ doc/ — 架构分析、设计文档
├─ doc/CodeReview/ — AI 审查报告
├─ doc/TestCase/ — 自动化测试
├─ doc/spec/* — API/Task 开发规范
├─ credentials/ — 服务器凭据
└─ script/ — 运维脚本

// results Harness 效果

实际效果:资源组模块

之前(纯人工)

需求分析 + 设计 + 开发 + 单测 + API 测试 + 部署预估:12 人天

现在(AI 辅助)

AI 生成 + Harness 兜底 + 人 Review
预估:4 人天

AI 实际产出的内容

✅ 概要设计文档(SDD)
✅ 资源组 CRUD API 测试(13/16 通过)
✅ 权限 API 测试(18/21 通过)
✅ 数据库一致性验证(结构/外键/索引)
✅ 前端 UI 自动化测试(截图验证)
✅ AI Code Review 报告(7个问题分级)
✅ SQL 升级脚本验证

// implementation · workflow Harness 流程

PAS-AI 需求开发全流程

1
需求提出

`/opsx:propose "添加XX功能"` → 输出概要设计文档,归档到 doc/Design/

2
任务分解

OpenSpec 生成 task 清单,每个 task 明确边界 + 验收标准

3
Agent 生成代码

Supervisor 分配任务,Claude Code / OpenCode / Codex 并行开发

4
Agent 自测 + 并行 Review

Agent 为自己生成的代码编写单元测试并通过;AI Review + 人工审阅并行

5
测试 + Review 通过后部署

Agent 执行部署 + API 测试 + UI 测试(降低 CI 成本)

6
人工拍板 merge

Human in the Loop — 最终确认后 merge 代码

📋 pas-workflow-SD-OpenSpec

需求开发流:SD文档 → OpenSpec变更 → 代码实现

Phase 0 代码探索 & SPEC提取
→ Phase 1 需求澄清(brainstorming)
→ Phase 2 SD文档生成(pas-SD skill)
→ Phase 3 OpenSpec初始化
→ Phase 4 制定实现计划(writing-plans)
→ Phase 5 subagent执行 + SPEC Commit
→ Phase 6 收尾归档

🐛 pas-workflow-jira

BUG修复流:Jira单号 → 复现 → 修复 → 关闭

Phase 1 获取Jira Issue信息
→ Phase 2 生成红灯测试(复现BUG)
→ Phase 3 更新Jira状态(NEW→已分配)
→ Phase 4 定位问题根因
→ Phase 5 修复代码 + 编译部署
→ Phase 6 绿灯测试通过
→ Phase 7 提交代码(关联Jira)
→ Phase 8 更新Jira(已修复)

// gaps Harness 完善度

全流程还差什么

🔧 已积累的 MCP

eolink — API 管理
bb-browser — 浏览器自动化
chrome-devtools — 页面抓取/断言
playwright — UI 自动化
gitlab — 代码仓库
jenkins — 持续集成
mysql-prod — 生产数据库
wiki-qax — 需求文档
jira-qax — BUG 工单

🛠 已积累的 SKILL

pas-workflow-SD-OpenSpec
pas-workflow-jira
pas-SD-概要设计
pas-jira-fix
pas-git-commit-with-spec
pas-deploy-web-tomcat
pas-deploy-web-ui
pas-api-testcase
pas-api-design
pas-ops-db · pas-ops-server-log-viewer

🤖 已积累的 Agent

deploy-agent — 前端+后端部署
frontend-deploy — 前端部署
jacoco-analyzer — 覆盖率分析
maven-build-analyzer
maven-test-analyzer
code-blind-review

⏳ 未完成 / 进行中

○ e2e 端到端测试(文档有,落地中)
○ CI Pipeline 自动串联
○ AI Review → 自动修复反馈闭环
○ 部署后自动验证
○ 多 Agent 自主协作(Supervisor 模式)
○ Jira BUG 自动修复工作流
○ OPC(一人公司):一人同时监护多任务

// lessons-learned Harness 实践

踩坑经验:
这些方案我们试过,不 work

❌ Vibekanban / MultiCA / Paperclip

用任务看板组织多个 Agent 并行开发

✕ 单需求开发 — 不需要

单一开发需求上,任务拆分反而是负担。Agent 本身就擅长处理模糊任务,不需要人先拆好。

✕ 多任务并行 — 损耗超过收益

多任务同时在跑,需要频繁切换看:任务跑到哪了?卡死了吗?跑偏了吗?收拾烂摊子的时间,往往比并行节省的时间还多。

结论:没有足够强的 Harness 基础设施之前,不要并行多任务——人成了"监工",而不是"审核者"

❌ Openclaw + Tmux

用 Tmux 监工 Claude Code 等 Agent

✕ 人无法真正脱手

Agent 执行过程中遇到问题,仍需要人介入决策。Tmux 监工变成了"人在旁边等着",并没有真正释放人的时间。

✕ 上限太低

Openclaw + Tmux 的组合适合个人开发者小规模使用,扩展到团队多人协作时,沟通成本骤增。

结论:人的介入点必须前移,在规格层约束 AI,而不是在执行层救火

⚠ 工具选型教训

工具链极度过剩,选型比开发更重要

试用了 87 个 CodingAgent 工具(WEB 终端、本地工具、任务看板、IM Bot 等),结论:

⚡ 当前现实

这些工具本质上都在利用 ClaudeCode、OpenCode 等 CLI 能力——可用可不用,最可靠的还是直接用 CLI。

🚀 未来愿景

预期形式:看板管理多个 Agent并行开发,实现团队级自主代码管理,Agent 都能自主运行。

结论:选型判断力是核心竞争力,不要被新工具带着走

核心教训:工具是为工作流服务的,不要为了用工具而用工具

// limitations Harness 边界

局限性:
Human in the Loop 是必须的

AI 代码生成速度 >> 人 Review 速度。
所以业界有了 AI Review AI。

以前:人写代码 → 人 Review → 人 merge
现在:AI 写代码 → 人审核 AI Review → 循环反馈给 AI 修复 → 人 merge
但全流程跑下来,人依然在流程里——
只是在更关键的位置。

人无法被替代的地方

🔴 业务判断 — 需求对不对、合不合理
🔴 架构决策 — 模块怎么拆、依赖怎么理
🔴 安全红线 — 权限/数据/合规问题
🔴 代码质量 — 常用方法、最优实现、可维护性
🔴 最终拍板 — merge 权限在人手里

⚡ 核心结论

人的介入点必须前移——
在规格层约束 AI
而不是在执行层救火

💡 要重新理解"完全无人干预"
完全无人干预不是一个 0/1 的状态。现阶段真正有价值的不是追求 100% 的无人化,而是把人工干预的频率和成本降到足够低——低到一个人可以同时"监护"几十个并行运行的任务,只在少数需要判断的关键节点介入。
这正是 OPC 场景下这套系统的价值所在:不是替代人,而是把一个人的产能放大到原来的几十倍

// summary Harness 总结

总结

1 Harness Engineering = 软件工程全流程自动化,不是什么新技术名词
2 PAS AI 全栈 = SKILL(工具)+ OpenSpec(分解)+ MCP(集成)+ 四层反馈(质量)+ 规范(约束)
3 全流程还没走完 — e2e、CI 自动串联、部署后验证是下一步
4 Human in the Loop 必须存在 — AI 生成 + AI Review + 人 merge,在瓶颈处用 AI 增强人
5 人的介入点必须前移 — 在规格层约束 AI,而不是在执行层救火