惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
月光博客
月光博客
Y
Y Combinator Blog
T
The Blog of Author Tim Ferriss
O
OpenAI News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Know Your Adversary
Know Your Adversary
Last Week in AI
Last Week in AI
S
Securelist
Engineering at Meta
Engineering at Meta
博客园 - 司徒正美
P
Privacy & Cybersecurity Law Blog
T
Tailwind CSS Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
Scott Helme
Scott Helme
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
小众软件
小众软件
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News: Ask HN
Hacker News: Ask HN
Hugging Face - Blog
Hugging Face - Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
SecWiki News
SecWiki News
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
Lohrmann on Cybersecurity
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
I
InfoQ
S
Security @ Cisco Blogs
Webroot Blog
Webroot Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Full Disclosure
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
人人都是产品经理
人人都是产品经理
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
B
Blog RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research

祝融说。

AI 辅助编程实战:从入门到团队治理 第八章:高级技能深度解析 第二册:进阶篇 第二章:方法论概览——管理者需要知道的 14 个技能 第二章:需求分析 第二章:准备工作 第九章:实战案例——完整项目拆解 第六章:常见陷阱与应对 第六章:风险控制——常见问题与预案 第七章:全自动构建——从零到部署 第七章:团队培训方案 第三册:管理篇 第三章:核心流程——六步工作法 第三章:架构设计——蓝图的艺术 第三章:团队导入路线图 第四章:第一个项目 第四章:质量治理——红线与门禁 第四章:自动工作流——从功能到交付 第五章:常用技能速查 抱朴守缺。 肩吾 huan(幻) PinConsole Terminal Hole 共识并不平均,但是基本上均衡。 权力是共识切片的曲率。 存在不是「是什么」,而是一系列极小的,从分歧到共识再到分歧的,连续的构建过程。 分歧实际上是对共识往哪个方向延伸的拉力。 分歧是尚未落实的实在,是可能性基底中尚未被锁定的在共识中相互牵引的可用余量。 权力从来不是中立的,它是带有倾向性的「牵扯力」。 过程即完备,容错即自由。 第10章 逆向投喂:用真实数据让AI做出精准诊断 第11章 测试电网:用刚性指标代替肉眼审查 第12章 定期“垃圾回收”:别让系统背负AI制造的债务 第13章 防退化契约:确保每一次修改都是在进步 第14章 全生命周期演练:从零开始用“有效约束”交付一个项目 第15章 随身工具包:即查即用的约束指令库 第1章 这不是结对编程,这是“人机共生” 第2章 你必须警惕的三个陷阱 第3章 把话说死:用 Markdown 建立 AI 的“单源真相” 第4章 负空间设计:先规定“不准做什么”,再让它写代码 第5章 模块化解耦:让AI每次只面对一个小问题 第6章 上下文断头台:善用 `/clear` 斩断错误蔓延 第7章 剥夺执行权:强制 AI 像资深工程师一样“慢思考” 第8章 角色锁定:用一句话给AI戴上“思考帽” 第9章 遥测驱动:帮AI长出“千里眼”和“顺风耳” 结语:成为系统牧马人,而不是代码搬运工 第八章 金融与科技的“禁手”:现代战争的底层收敛 第二章 认知锚点:心理战中的“强制步” 第九章 历史的单行道:那些被剥夺国运的时刻 第六章 消费主义的迷宫:在货架上剥夺选择 第七章 战略逼压:没有硝烟的“切香肠战术” 第三章 构造绝杀:逻辑闭环的艺术 第十二章 绝对零度下的生机:成为“不可测”的人 第十一章 掀翻棋盘:非对称竞争与正交化打击 第十章 识破隐形控制:第一时间嗅到危险 第四章 标准的暴政:打造“不得不”的生态 第五章 锁死阀门:关系链与供应链的囚笼 第一章 降熵法则:时空维度的隐蔽控制 结语:愿你在这个被设定的世界里,永远握有掀桌的权力。 引言:自由意志的幻觉 项羽 当前的AI工程化本质上是受限于上下文长度而采用的「以提示词约束去置换确定性」的一种妥协。 即时反应是一种不假思索,它是观念通过最简单、轻易、高效的路径寻求表达。 青衫 第九章:估值的坐标:建立“内在记分牌” 第六章:资产重估的艺术:从“硬实在”到“认知折价” 第七章:预期差交易:坍缩“概率波” 第十一章:内在博弈:克服‘评估异化’ 第十章:交易的算法:逆人性的“人之道” 第五章:空间套利:高能耗产业的跨境建构 结语:构建你的“财富多重宇宙” Code-Coder 第八章:效率革命:细分赛道的“降本增效” 第二章:评估权的博弈:商业模式的权力差序 第三章:去伪存真:穿透“符号泡沫” 第四章:能源共识:黑金的物理法则 第一章:宏观观察者:借势“国家共识” 前言:从“市场囚徒”到“清醒的观察者” Code-Ledge-X Code-Lint-X
第六章:项目编排——多功能管理
祝融 · 2026-07-26 · via 祝融说。

一个功能做对了,十个功能加在一起可能全是错的。顺序决定一切。

你手上有 4 个功能需要在一个月内完成。你决定"并行推进"——让 AI 同时写 4 个功能的代码。

一周后,你发现:功能 A 的数据库模型和功能 B 的冲突了——都用了一个叫 status 的字段,但 A 用 0/1/2 表示状态,B 用 pending/approved/rejected。功能 C 依赖的 API 还没建好,因为功能 D 的 API 接口定义改了三次。你检查功能 A 的代码,发现它把功能 B 的某个组件 import 进来用了——但那个组件本身还在开发中。

项目陷入了一种"所有功能互相等待、互相依赖"的死锁状态。你花了比写代码多一倍的时间来协调这些冲突。

这不是 AI 的问题。这是"没有编排"的问题。当多个功能同时开发时,它们不是独立的——它们共享数据库、共享 API、共享组件库。如果没有一个"交通指挥"来管理这些共享资源,冲突是必然的。

6.1 为什么需要编排

单个功能的开发流程是清晰的:拆解 → 编码 → 验收 → 固化。你已经熟悉了。但当你有 3 个、5 个、10 个功能需要实现时,问题不再是"怎么做一个功能",而是"怎么安排这些功能的顺序"。

你可能觉得:并行不就行了?让 AI 同时写 3 个功能的代码,不是效率更高吗?

这个直觉在物理世界是对的——三个工人可以同时砌三面墙。但在软件工程中,功能之间不是"独立的墙",它们是"共享地基的建筑"。功能 A 和功能 B 可能共享同一个数据库表、调用同一个 API、引用同一个组件。当 A 和 B 同时开发时,AI 可能不知道对方的存在——在 A 中改了数据库表的结构,在 B 中也改了同一个表——两个修改冲突了。

更隐蔽的问题是:功能 B 可能依赖功能 A 的输出。如果 A 还没完成,B 的 AI 会"猜"一个 A 的接口定义。这个猜测几乎一定是错的。等到 A 完成时,B 的代码需要大量重写。

这就是编排的必要性。Orchestrator 的职责不是写代码,而是回答三个问题:先做什么、后做什么、什么可以并行。它像交通指挥一样,确保所有功能在正确的轨道上推进,不会撞车,不会互相等待。

项目编排(Orchestrator) 就是解决这些问题。它不直接写代码,而是管理 Workflow 的调度:

Orchestrator
  ├── 读取蓝图 → 确定功能列表和依赖关系
  ├── 按依赖顺序调度 Workflow
  │   ├── Workflow(功能 A) → 完成 → 验收
  │   ├── Workflow(功能 B) → 完成 → 验收
  │   └── Workflow(功能 C) → 完成 → 验收
  ├── 跨功能集成验收
  └── 产出集成报告

6.2 核心原则

原则一:功能即任务

对 Orchestrator 来说,最小的执行单元不是一个文件或一行代码,而是一个完整的功能。每个功能由 Workflow 以全自动的方式完成。

Orchestrator 只问三个问题:

  1. 这个功能依赖哪些前置功能?(依赖排序)
  2. 这个功能验收通过了吗?(质量门禁)
  3. 这个功能完成后,整体项目集成测试通过吗?(集成验证)

原则二:进度即状态

Orchestrator 管理跨会话的项目状态。每次上下文重置后,能从持久化记录中恢复进度。

进度状态机:

待办(TODO) → 进行中(IN_PROGRESS) → 已完成(DONE)
                                   ↘ 阻塞(BLOCKED)

关键规则:只有验收通过的功能才能标记为 DONE。

原则三:集成即红线

每个功能单独验收通过后,Orchestrator 必须做跨功能集成检查:

  • 功能 A 的 API 输出是否能被功能 B 正确消费?
  • 功能 A 新增的数据模型是否和功能 B 的兼容?
  • 整体测试是否通过?

单个功能没问题 ≠ 整个系统没问题。

6.3 依赖树管理

Orchestrator 最核心的能力是管理功能之间的依赖关系。不是所有功能都可以并行开发。功能之间有三种依赖关系:

硬依赖:功能 B 必须等功能 A 完成才能开始。比如功能 B 调用功能 A 的 API,如果 A 的 API 还没写出来,B 的 AI 会"猜"一个接口定义——这个猜测几乎一定和实际的 A 不一致。

软依赖:功能 B 可以和功能 A 并行,但需要知道 A 的接口定义。比如功能 B 使用功能 A 的组件,如果 A 的组件接口是稳定的,B 可以提前开发,用 mock 数据代替 A 的真实输出。

无依赖:功能 B 完全不依赖功能 A,可以独立开发。比如"用户管理"和"系统配置"通常是独立的。

来看一个真实场景的依赖树推导过程。假设一个电商系统有 4 个功能:

  • 功能 A:用户认证(包含登录/注册/JWT)
  • 功能 B:订单列表(依赖用户认证,需要登录后才能查看订单)
  • 功能 C:商品管理(独立,但使用同一套 UI 组件库)
  • 功能 D:支付对接(依赖订单列表 + 用户认证)

依赖树分析:

  • A 是根节点,无依赖,最先做
  • C 独立,可以和 A 并行
  • B 依赖 A,在 A 之后做
  • D 依赖 A + B,最后做

最优顺序:A 和 C 并行 → B → D

如果不按这个顺序——比如先做 B,再做 A——B 的代码会在 A 完成后需要大量重写。因为 B 在 A 不存在时,AI 会"猜"一个认证接口的定义,而这个猜测几乎一定和实际的 A 不一致。

依赖类型

类型说明示例
数据依赖功能 B 需要功能 A 创建的数据结构先建表(A),再写查询(B)
接口依赖功能 B 调用功能 A 的 API先做登录接口(A),再做个人中心(B)
组件依赖功能 B 使用功能 A 的组件先做通用表格组件(A),再做订单列表(B)
逻辑依赖功能 B 需要在功能 A 之后执行先做订单创建(A),再做订单取消(B)

自动排序算法

Orchestrator 会读取蓝图中的里程碑定义,自动分析依赖关系,生成执行顺序:

输入:里程碑列表
  1.1 项目初始化(无依赖)
  1.2 数据库搭建(依赖 1.1)
  1.3 用户认证(依赖 1.2)
  2.1 订单列表(依赖 1.3)
  2.2 创建订单(依赖 1.3)
  2.3 订单详情(依赖 2.1)

输出:执行顺序
  Phase 1: 1.1 → 1.2 → 1.3
  Phase 2: 2.1 → 2.2(2.1 和 2.2 可并行?不,需要人工确认)
           2.3(依赖 2.1)

6.4 上下文隔离与重置

多功能开发中最大的陷阱是"在一个对话里做所有功能"。这会引发严重的上下文污染——功能 A 的调试代码、错误的尝试、废弃的方案,都会成为功能 B 生成的"背景噪音"。

Orchestrator 的解决方案是:每个功能使用独立的对话上下文。功能 A 的对话不包含功能 B 的任何信息,反之亦然。

但这里有一个矛盾:功能 B 需要知道功能 A 的 API 定义才能正确调用它。如果对话隔离了,B 怎么知道 A 的接口是什么?

答案在蓝图(CONTEXT.md)中。Orchestrator 在每个新功能开始前,都会更新蓝图,把前一个功能的 API 契约、数据模型固化到蓝图中。新功能开始时,AI 读取蓝图,就能获得所有"已完成功能"的接口定义。对话隔离了,但信息通过蓝图流通。

完整流程:

  1. Orchestrator 启动功能 A → Workflow 执行 → 完成 → 更新蓝图
  2. Orchestrator 启动功能 B → 读取最新蓝图(包含 A 的 API 契约)→ Workflow 执行 → 完成 → 更新蓝图
  3. 以此类推

这个机制确保了两个关键目标:每个功能在干净的上下文中执行(避免上下文污染),同时每个功能都能获取到所有已完成功能的接口定义(通过蓝图传递)。

6.5 跨功能集成验收

为什么需要集成验收

每个功能单独验收时,AI 只会检查这个功能本身的正确性。但多个功能组合后,可能出现以下问题:

  • 数据格式不一致:功能 A 的 API 返回 {id: 1},功能 B 期望 {id: "1"}(类型不匹配)
  • 命名冲突:功能 A 定义了 getUser(),功能 B 也定义了 getUser()(重复定义)
  • 状态冲突:功能 A 把订单状态改为"已支付",功能 B 依赖"已支付"状态做后续处理,但两者的"已支付"定义不同
  • 资源竞争:功能 A 和功能 B 同时修改了同一个配置文件

集成验收方法

集成验收步骤:

1. 编译/构建项目
   → 确保没有编译错误

2. 运行完整测试套件
   → 确保没有回归

3. 检查跨功能数据流
   → 功能 A 的输出是否能被功能 B 消费?

4. 检查配置文件
   → 是否有冲突的配置修改?

5. 检查全局状态
   → 路由、状态管理、全局样式是否有冲突?

6.6 进度持久化

Orchestrator 的一个重要能力是"即使对话中断,也能恢复进度"。

持久化机制

进度信息写入文件系统,而不是只存在于对话上下文中:

.agents/
├── job.state.json    # 机器可读的完整项目状态
└── job.progress.md   # 人类可读的追加式进度账本

job.state.json 示例:

{
  "projectName": "订单管理系统",
  "phases": [
    {
      "name": "Phase 1: 基础架构",
      "milestones": [
        { "id": "1.1", "name": "项目初始化", "status": "DONE" },
        { "id": "1.2", "name": "数据库搭建", "status": "DONE" },
        { "id": "1.3", "name": "用户认证", "status": "DONE" }
      ]
    },
    {
      "name": "Phase 2: 核心功能",
      "milestones": [
        { "id": "2.1", "name": "订单列表", "status": "DONE" },
        { "id": "2.2", "name": "创建订单", "status": "IN_PROGRESS" },
        { "id": "2.3", "name": "订单详情", "status": "TODO" }
      ]
    }
  ],
  "currentMilestone": "2.2",
  "updatedAt": "2026-07-25T10:30:00Z"
}

即使整个对话上下文丢失,从这些文件也能完全恢复项目进度。

6.7 异常处理

场景一:某个功能阻塞了

功能 B 依赖功能 A,但功能 A 验收一直不通过。

处理方式: Orchestrator 不会无限等待。它会在功能 A 失败 N 次后,将其标记为 BLOCKED,并通知用户。用户可以选择:

  • 人工介入修复功能 A
  • 调整依赖关系,先做不依赖 A 的功能
  • 降低功能 A 的验收标准

场景二:跨功能集成发现问题

功能 A 和功能 B 各自验收通过,但集成测试发现不兼容。

处理方式: Orchestrator 不尝试自动修复集成问题(涉及两个功能的修改,风险太高)。它会生成集成问题报告,等待用户决策。

场景三:项目中途变更需求

用户在第 5 个功能完成时,要求修改第 2 个功能的实现。

处理方式: Orchestrator 不会直接修改已 DONE 的功能。它会:

  1. 将受影响的功能重新标记为 TODO
  2. 更新蓝图
  3. 重新执行受影响的功能及其下游依赖

本章小结

项目编排解决的是"多功能的组织问题"。核心是依赖树管理——识别功能之间的硬依赖、软依赖和无依赖,确定正确的开发顺序。上下文隔离与重置确保每个功能在干净的对话中执行,同时通过蓝图传递接口定义。Orchestrator 不写代码,它管理 Workflow 的调度和集成验收。记住:单个功能没问题 ≠ 整个系统没问题。下一章,我们将学习全自动构建——从零到部署的完整自动化。