核心结论:Harness 化不是给对话式 AI Coding 加更多规则,而是把”一个对话窗口”升级为一套工程系统——拆上下文 + 状态文件 + 确定性编排 + DAG 并行 + 脚本化执行 + DevOps 集成;知识库是底座(800+ 文档覆盖 90+ 微服务),端到端流程沉淀 12 个专家 Agent + 30+ 业务 Skill + 10+ 流程脚本。
状态文件驱动(product-state.json + e2e-state.json):把端到端流程从”对话历史”中抽出来,持久化到两类结构化 JSON——多 Story 并行的 product-state.json(breakdown / forking / joining) + 单 Story 端到端的 e2e-state.json(Phase 0~7 / 产出 / 接口验证结果)。子 Agent 在独立上下文执行完毕后写状态文件,主调度器直接读文件判断”下一步干什么”,三件事一次解决:上下文有损压缩、流程中断无法恢复、推进缺乏可观测。配套 3 个 hook(Stop / SessionStart / SessionEnd)防止主调度器”偷懒式”提前停止。
专家 Agent 体系(12 个专家 + 5 项设计原则):每个 Agent 只做一件事——code-reviewer 只评不改、interface-verifier 只诊断不改、code-fixer 只在收到问题清单后才动手。5 项设计原则:单一职责 / 上下文隔离 / 工具最小权限(审查类不给写文件,规划类不给发布) / 确定性输入输出(不靠对话传信息,靠结构化字段) / 模型可插拔(便宜模型做状态解析,强模型做代码审查)。沉淀 12 个专家(prd-decomposer / task-planner / story-developer / unit-test-agent / codar-reviewer / galileo-root-cause / test-case-designer / code-reviewer / publisher / git-committer 等)。3 个收益:行为稳定 / 主调度器负担减少 / 单点修改不影响全局。
Worktree 隔离 + DAG 编排 + Fork-Join(从串行到并行):两层并行。第一层 task-planner 根据需求文档按接口/模块拆任务,标注依赖关系,构建 DAG 拓扑分层,同层任务并发,每个并发任务分配独立 git worktree,本轮结束后统一 merge。第二层 多 Story 场景:Phase R 产品需求拆解 → Fork 段并行跑 Phase 1~4(任务拆解→波次开发→单测→代码审查) → Join 段串行收口(合并→发布→验证→提交)。两个反直觉:① 不仅是性能优化,主流程上下文也会因并发而大幅减少 ② 多 Story 场景模拟”人协作的临时分支”,而不是”每个 Story 独立发布”。
冲突治理四象限(能事前隔离就事前隔离,必须共享就串行收口):并行多 Agent 改代码不可避免冲突,4 类冲突 4 种策略。① Merge Conflict:task-planner touches 做文件级事前隔离,真冲突正常解,绝不用 –no-verify/丢弃绕过;② Shared file(如 main.go):并行阶段禁改,统一收敛到集成收口阶段单 Agent 执行;③ Proto 协议:仅当 has_pb_change=true 时由 proto-engineer 在 Rick 平台统一变更+生成桩代码,下游基于已生成桩开发;④ DB/配置变更:全局变更一次性前置确认(task-planner 阶段汇总),落地由专门 Agent 执行。
脚本化执行(AI 负责认知,脚本负责执行):把状态文件 JSON 解析 / git worktree 创建 / 编译发布 / 知识库初始化等”确定性操作”从 AI 手里收回到脚本。核心原因:让 AI 做这些事不仅消耗 token,还引入不必要随机性(写错 shell 语法 / 用错参数 / 同需求多次跑结果不一致)。前后沉淀约 15 个脚本——e2e-dev.py 状态机解析 / worktree.sh + sub_worktree.sh 多 worktree 操作 / build-and-publish.sh 一键发布 / kb-init.sh 知识库初始化。判断标准:有明确输入输出 / 操作路径非常清晰 → 脚本化;需要判断/分析/生成 → 留给 AI。
DevOps 多平台读写集成(打通最后一公里):端到端不止写代码,还要 TAPD 建子需求 / Rick 改协议 / 123 发布服务 / 七彩石改配置 / 伽利略查日志。集成策略:公司内大部分平台都有 MCP 服务或 Skill,集成到 Knot 平台 + 03 平台,AI 经人工确认后可直接读写。两个具体方案:① tRPC-Gateway:本地 AI 调通 123 内网 idc 接口(为每个服务申请白名单不通用);② Codar CR skill:AI 写代码让 AI 来审——增量 CR 由 Codar CLI 执行,问题清单返回主调度器,FIX Agent 修复。已知例外:七彩石 mcp 不支持 tconf 集群,123 业务配置页无法通过七彩石 mcp 读写。
结构化知识库 + 渐进式加载(替代 RAG):借鉴 LLM Wiki / Obsidian-Wiki / GBrain,两层结构:自动生成(AI 读代码生成)+ 人工沉淀(custom.md + common/ 沉淀业务背景/架构决策/使用规范)。三层目录:总览层 backend/overview.md → 域层 {group}/meta.yaml + custom/ → 服务层 {service}/*.md(8 类)+ custom/。8 类自动生成文档:overview / interfaces / architecture / dependencies / storage / config / pitfalls / log.md(不可覆盖历史)。渐进式加载 3 层:第一层关键词匹配缩小到 1-2 业务域 → 第二层 grep 在 meta.yaml 精确筛选 → 第三层按查询模式只加载必要文档类型(接口搜索连 overview.md 都不读)。4 种查询模式:A PRD 拆解 / B 技术方案拆解 / C 接口搜索 / D 知识库问答。相对 RAG 的 4 个优势:精准定位 / 自顶向下按需吸收 / 主动探索 / 维护成本低。
文档新鲜度检测(过期知识比没有知识更危险)+ 核心工程原则 7 条:meta.yaml 记录 git_hash(上次生成时代码版本),与仓库当前 HEAD hash 对比,超阈值标记过期,派发 codebuddy 命令行以增量模式更新。增量模式 3 特性:① 最小改动原则(避免大改);② 人工批注保留(业务背景说明、使用示例等”高价值内容”继承);③ log.md 追加不可覆盖(可审计、可回溯)。实战教训:曾因知识库未更新,AI 调用了老接口,整个链路通了但拿不到预期结果,排查很久才发现。7 条核心工程原则(从具体场景向上抽象):① AI 负责认知,脚本负责执行;② 长链路必须状态化;③ 知识库必须结构化;④ Agent 必须职责隔离;⑤ 执行步骤必须脚本化;⑥ Workflow 比 Prompt 更重要;⑦ 终局认知——未来比拼的不是”用了多少 AI”,而是能否把 AI 当作一个工程系统来设计。
| raw:../../raw/2026-07-05-腾讯程序员-AI-Coding到Harness-Engineering-应用宝活动平台实践.md | raw-digest:../../raw/2026-07-05-腾讯程序员-AI-Coding到Harness-Engineering-应用宝活动平台实践-digest.md | wiki-digest:./腾讯程序员-AI-Coding到Harness-Engineering-应用宝活动平台实践-digest.md |