Archon 深度解析:当 AI 编码进入「工程化 Harness」时代——首个开源工作流引擎如何让 AI 编程从玄学变科学
写在前面
作为程序员,你一定有过这样的经历:
让 AI 修一个 Bug,它可能跳过了测试直接提交;让它实现一个新功能,它可能写出来的 PR 描述完全不符合规范;让它做代码审查,它可能连你没写完的测试用例都没看见。
每次运行结果都不一样。不是因为 AI 傻,而是因为根本没有人在管住它的边界。
Archon 做的事情,就是给 AI 编码套上 Harness——就像 Docker 定义了基础设施的交付方式、GitHub Actions 定义了 CI/CD 的交付方式,Archon 正在定义 AI 编码的交付方式。
本文从工程视角深度解析 Archon 的设计理念、架构实现,以及它为什么可能是 2026 年 AI 编程领域最重要的开源项目之一。
一、背景:为什么 AI 编程「不稳定」是个工程问题
1.1 AI 编程的本质是「概率生成」,而非「确定性执行」
大语言模型的本质是概率补全。给定一个 prompt,它每次可能生成不同的 token 序列。这不是 bug,这是模型的物理特性。
传统软件工程建立在确定性之上:
- 同样的输入 → 同样的输出
- 同样的构建流程 → 同样的产物
- 同样的测试套件 → 同样的结果
但 AI 编程打破了这个契约:
- 同样的 prompt → 不同的代码(风格不同、边界处理不同、甚至实现思路不同)
- 同样的功能要求 → 不同的 PR 描述
- 同样的 review 要求 → 不同的审查深度
这不是 AI 的错——这是我们还没来得及给 AI 编程建立工程规范。
1.2 现有工具的局限
在 Archon 出现之前,我们尝试过几种「管住 AI」的方式:
方式一:系统 Prompt 约束
你是一个严格的 Go 工程师。
所有代码必须通过 go vet、gofmt、golint。
每次提交前必须运行完整测试套件。
PR 描述必须包含:动机、方法、影响、测试计划。
问题:系统 Prompt 太脆弱,AI 可能在长对话中逐渐漂移,超出 token 窗口后就失效。
方式二:固定 Agent 框架(如 AutoGPT、LangChain Agent)
问题:这些框架通常面向通用场景,没有针对代码开发流程做专门设计。Loop 的终止条件、上下文管理、产物验证都不够精细。
方式三:Claude Code / Cursor 等 IDE 集成
问题:IDE 集成的体验很好,但它是本地工具,不具备跨项目、跨团队复用的能力。每次在新项目里都要重新配置一遍。
Archon 的出现,填补了**「将 AI 编码流程标准化、可复用化、工程化」**这一空白。
1.3 一个直击灵魂的问题
当你让 AI Agent 去「修这个 Bug」,你到底希望它做什么?
一个完整的 Bug 修复流程应该是:
- 理解 → 读懂代码,理解 Bug 的成因
- 计划 → 制定修复方案,考虑边界情况
- 实现 → 写出修复代码
- 验证 → 运行测试,确保测试通过
- 审查 → 代码审查,确保没有引入新问题
- 提交 → 创建 PR,描述清晰
现有 AI 工具可能跳过了其中任何一步。而 Archon 的答案是:流程由你定义,AI 只负责在每个节点填入智能,但流程本身是确定性的。
二、Archon 是什么:工作流引擎的核心定位
2.1 官方定义
Archon 是一个面向 AI 编码 Agent 的工作流引擎(Workflow Engine)。
它让你用 YAML 文件定义软件开发流程的每个阶段(计划、实现、验证、审查、PR 创建),然后在 AI Agent 中可靠地执行这些流程。每次运行的结构都是确定的,但每个节点内部的内容由 AI 生成。
2.2 类比:为什么 Archon 对 AI 编程的意义,相当于 Docker 对基础设施的意义
| 时代 | 工具 | 解决的问题 |
|---|---|---|
| 基础设施 | Docker + Dockerfile | 「在我机器上能跑」的终结 |
| CI/CD | GitHub Actions | 「手动部署」的终结 |
| AI 编码 | Archon | 「AI 行为不可预测」的终结 |
就像 Dockerfile 让基础设施交付变得可复现一样,Archon 让 AI 编程的交付变得可复现。
2.3 核心哲学:结构归你,智能归 AI
Archon 的设计哲学可以用一句话概括:
The workflow defines the phases, validation gates, and artifacts. The AI fills in the intelligence at each step, but the structure is deterministic and owned by you.
这句话非常关键——Archon 不是在替代 AI,而是在约束 AI。它把 AI 从一个「想怎么干就怎么干」的野生 Agent,变成了一个「按照你定义的流程行事的工程工具」。
三、核心特性:深入解析 Archon 的六大能力
3.1 Repeatable(可重复性)——让每次运行都走同一条路
传统 AI 编码的最大问题是随机性。同一条指令,这次可能生成了 A 方案,下次可能生成了 B 方案。
Archon 的 YAML 工作流确保:
# .archon/workflows/fix-bug.yaml
nodes:
- id: understand
prompt: "阅读相关代码,理解 Bug 的根本原因"
- id: plan
depends_on: [understand]
prompt: "制定修复方案,考虑边界情况"
- id: implement
depends_on: [plan]
prompt: "根据计划实现修复"
- id: test
depends_on: [implement]
bash: "bun run test" # 确定性验证
- id: review
depends_on: [test]
prompt: "代码审查,发现并修复问题"
无论你什么时候运行、工作量多大,这个流程的顺序和结构永远不会变。这对于团队协作至关重要——每个工程师都知道 AI 会做什么,做事的顺序是什么。
3.2 Isolated(隔离性)——并行执行无冲突
Archon 使用 Git Worktree 实现每次工作流运行的隔离。
main branch
├── archon/task-feature-a (worktree 1)
├── archon/task-feature-b (worktree 2)
└── archon/task-hotfix-c (worktree 3)
这意味着:
- 你可以同时启动 5 个 AI 工作流,分别处理 5 个不同的任务
- 每个工作流有自己独立的 Git 分支和文件系统视图
- 完全不存在分支冲突或文件覆盖的问题
- 「Fire and forget」——提交任务后去干别的,回来直接看 PR
代码示例:worktree 的创建过程
# Archon 内部自动完成类似这样的操作:
git worktree add archon/task-dark-mode -b archon/task-dark-mode
cd archon/task-dark-mode
# AI 在这里工作...
git push origin archon/task-dark-mode
gh pr create --title "feat: add dark mode to settings" --body "$(cat .archon/pr-template.md)"
git worktree remove archon/task-dark-mode
为什么这个设计很聪明? 因为 Git Worktree 是 Git 的原生功能,不需要额外的虚拟化或容器化。开销极低,创建和销毁几乎是瞬时的。
3.3 Fire and Forget(异步执行)——从同步阻塞到后台运行
传统的 AI 交互是同步阻塞的:你发一条指令,等 AI 回复,再发下一条。
Archon 把 AI 编码变成了异步任务:
# 启动一个工作流,立即返回
$ archon run fix-critical-bug --issue 1234
→ Creating isolated worktree on branch archon/fix-1234...
→ Planning...
→ [工作流已在后台运行]
你可以同时启动多个工作流,然后去做 code review、开会、写文档。等你忙完回来,PR 已经创建好了。
3.4 Composable(可组合性)——确定性节点 + AI 节点混合编排
Archon 的工作流节点分为两类:
确定性节点(Deterministic):
- id: lint
bash: "bun run lint" # 纯 bash,无 AI
- id: test
bash: "bun run test:ci" # 运行 CI 测试
- id: check-format
bash: "bun run prettier --check"
AI 节点(AI):
- id: plan
prompt: "分析代码库,制定实现计划"
- id: implement
prompt: "根据计划实现功能代码"
- id: review
prompt: "审查代码变更,发现潜在问题"
这种设计的精妙之处在于:AI 只在真正需要智能的地方运行,而标准的验证步骤(测试、lint、format check)由确定性脚本完成。
这带来了几个工程优势:
- 成本可控 —— 不需要每个步骤都调 LLM API
- 速度更快 —— bash 脚本的执行是毫秒级的
- 更可靠 —— 确定性节点不会因为 AI 模型的更新而改变行为
3.5 Portable(可移植性)——一次定义,多处运行
Archon 工作流定义在 .archon/workflows/ 目录下,跟随代码仓库一起管理:
my-project/
├── .archon/
│ ├── workflows/
│ │ ├── build-feature.yaml
│ │ ├── fix-bug.yaml
│ │ └── hotfix.yaml
│ └── pr-template.md
├── src/
├── tests/
└── package.json
这意味着:
- 工作流定义是项目的一部分,有版本控制
- 每个工程师在本地运行的工作流完全一致
- 可以通过 Git 分享、review、协作改进工作流
跨平台运行:Archon 支持 CLI、Web UI、Slack、Telegram、GitHub Actions —— 同一个工作流定义,从任何入口触发行为都一致。
3.6 Approval Gate(人工审批门)——把关键决策交回给人类
Archon 支持在关键节点暂停,等待人类审批:
- id: approve
depends_on: [review]
loop: # Human approval gate
prompt: "展示变更内容,等待审批"
until: APPROVED
interactive: true # 暂停并等待人类输入
这是一个被严重低估的特性。在 AI 编程场景中,人类审批的价值不仅是安全把关,更是一种知识传递:
- AI 在实现之前,人类审批计划 → 确保方向正确
- AI 在创建 PR 之前,人类审批变更 → 确保代码质量
- AI 在发布之前,人类审批版本 → 确保发布合规
四、架构深度解析:Archon 的技术实现
4.1 整体架构
Archon 的架构可以分为四层:
┌─────────────────────────────────────┐
│ Interface Layer(接口层) │
│ CLI | Web UI | Slack | Telegram │
├─────────────────────────────────────┤
│ Workflow Engine(工作流引擎) │
│ YAML Parser → Node Scheduler │
│ Dependency Graph → State Machine │
├─────────────────────────────────────┤
│ Execution Layer(执行层) │
│ Claude Code | Bash | Git Worktree │
├─────────────────────────────────────┤
│ Integration Layer(集成层) │
│ GitHub CLI | VCS | LLM Provider │
└─────────────────────────────────────┘
4.2 工作流引擎的核心:节点调度器
Archon 的工作流引擎基于**有向无环图(DAG)**实现节点调度:
// Archon 的节点调度逻辑(伪代码)
class WorkflowEngine {
async execute(workflow: Workflow) {
// 1. 构建依赖图
const dag = this.buildDAG(workflow.nodes);
// 2. 找出所有入度为 0 的节点(无依赖节点)
const ready = dag.getNodesWithZeroIndegree();
// 3. 并行执行所有就绪节点
const results = await Promise.all(
ready.map(node => this.executeNode(node))
);
// 4. 移除已完成的节点,更新图
dag.removeNodes(results.completed);
// 5. 重复直到图为空
if (!dag.isEmpty()) {
await this.tick();
}
}
}
为什么选择 DAG 而不是线性执行? 因为工作流中有大量可以并行的步骤。例如「运行测试」和「生成文档」没有依赖关系,可以同时执行。Archon 自动识别可并行的节点,最大化执行效率。
4.3 AI 节点的上下文管理
AI 节点中有一个关键特性:fresh_context: true
- id: implement
depends_on: [plan]
loop:
prompt: "读取计划,实现下一个任务,运行验证"
until: ALL_TASKS_COMPLETE
fresh_context: true # 每次迭代使用新的会话上下文
fresh_context: true 意味着每次循环迭代,AI 都会开启一个新的会话,而不是累积越来越长的上下文窗口。
这个设计解决了两个问题:
- 上下文长度限制 —— 避免上下文超过模型的 token 上限
- 上下文膨胀导致的推理质量下降 —— 大量无关的历史信息会稀释模型的注意力
4.4 循环节点的终止条件
Archon 的 loop 节点支持多种终止条件:
loop:
prompt: "实现功能并运行测试"
until:
- ALL_TASKS_COMPLETE # 所有任务完成
- APPROVED # 人类审批通过
- MAX_ITERATIONS: 5 # 最多迭代 5 次
- TESTS_PASSING # 测试全部通过
这是一个非常实用的设计——对于「实现功能」这类任务,「所有任务完成」是最合理的终止条件;对于「生成 PR 描述」这类任务,「人类审批通过」是必需的。
4.5 与 Claude Code 的集成方式
Archon 并不是从零实现一个 AI Agent。它选择了集成 Claude Code 的策略:
# Archon 内部执行 AI 节点时,实际调用 Claude Code
claude --print --permission-mode bypassPermissions \
--system "You are an expert software engineer following the Archon workflow" \
--prompt "Read the plan. Implement the next task. Run validation."
这种集成方式的优势:
- 不需要重新实现 Agent 能力 —— Claude Code 本身就是一个成熟的 AI 编程工具
- 利用现有能力 —— Claude Code 的代码编辑、bash 执行、git 操作都已经过大量用户验证
- 快速迭代 —— Archon 专注于工作流编排,Claude Code 的模型能力升级自动受益
五、实战:从零搭建一个 Archon 工作流
5.1 场景设定
假设你维护一个 TypeScript 项目,团队定义了一套开发规范:
- 每个 PR 必须有完整的测试覆盖
- 代码必须通过 ESLint 和 Prettier 检查
- PR 描述必须包含变更说明和测试计划
- 每次发布前必须更新 CHANGELOG
现在用 Archon 把这套流程自动化。
5.2 步骤一:安装依赖
# 安装 Archon CLI
curl -fsSL https://get.archon.diy | bash
# 安装 Claude Code
npm install -g @anthropic-ai/claude-code
# 安装 GitHub CLI
brew install gh
gh auth login
5.3 步骤二:初始化项目
archon init
这会在项目中创建:
.archon/
├── workflows/
│ └── default.yaml
├── prompts/
│ └── system.md
└── config.yaml
5.4 步骤三:定义工作流
创建 .archon/workflows/build-feature.yaml:
name: Build Feature
description: 完整的功能开发工作流
config:
default_branch: main
worktree_dir: .archon/worktrees
model: claude-opus-4-5
max_cost_per_run: 10 # 防止无限循环,最大花费 $10
nodes:
# 阶段1:理解需求
- id: understand
prompt: |
理解当前工作项的需求。查看以下文件了解项目结构:
- README.md
- package.json
- src/ 目录结构
总结:项目技术栈、功能范围、以及你理解的本次需求。
ai_model: claude-sonnet-4-5
timeout: 5m
# 阶段2:制定计划(带人类审批)
- id: plan
depends_on: [understand]
prompt: |
基于对需求的理解,制定详细的实现计划。
计划应包含:
1. 需要修改/新增的文件列表
2. 实现的步骤分解
3. 需要添加的测试用例
4. 潜在的边界情况和错误处理
格式化为清晰的 Markdown 计划文档。
ai_model: claude-sonnet-4-5
timeout: 10m
# 人工审批计划
- id: approve-plan
depends_on: [plan]
loop:
prompt: |
以下是 AI 制定的实现计划,请审批:
${plan.output}
回复 APPROVE 继续执行,
或描述需要修改的内容让 AI 重新规划。
until: APPROVED
interactive: true
# 阶段3:实现代码(循环直到任务完成)
- id: implement
depends_on: [approve-plan]
loop:
prompt: |
读取计划文档,实现下一个待办事项。
实现完成后:
1. 运行相关测试确保功能正确
2. 运行 linter 检查代码风格
3. 运行 format 格式化代码
4. 将已完成的实现提交到 worktree
完成后报告:完成了什么、测试结果、是否还有待办事项。
until: ALL_TASKS_COMPLETE
fresh_context: true # 每次迭代使用新上下文
max_iterations: 20
# 阶段4:运行完整验证
- id: verify
depends_on: [implement]
bash: |
echo "=== Running Tests ==="
bun run test:ci
echo "=== Running Lint ==="
bun run lint
echo "=== Running Format Check ==="
bun run prettier --check .
echo "=== Build Check ==="
bun run build
echo "=== Type Check ==="
bun run typecheck
echo "All verifications passed!"
timeout: 15m
# 阶段5:代码审查
- id: review
depends_on: [verify]
prompt: |
作为资深工程师,审查本次变更:
1. 代码质量和设计模式
2. 错误处理和边界情况
3. 安全问题(SQL注入、XSS、敏感信息泄露等)
4. 性能问题
5. 测试覆盖率和测试质量
6. 与项目整体架构的一致性
发现问题后直接修复,不要只是报告。
timeout: 10m
# 阶段6:创建 PR
- id: create-pr
depends_on: [review]
prompt: |
基于本次变更创建 Pull Request:
PR 要求:
1. 标题:简洁描述本次变更(50字以内)
2. 描述模板:
- ## 动机:为什么做这个变更
- ## 方法:具体做了什么
- ## 影响:有什么影响,是否需要升级文档
- ## 测试计划:如何在部署前验证
3. 关联相关 Issue
bash: |
# 推送到远程
git push -u origin $(git branch --show-current)
# 创建 PR
gh pr create \
--title "feat: $(git log -1 --pretty=%B)" \
--body "$(cat .archon/.pr-template.md)" \
--reviewer "@me"
timeout: 5m
# 阶段7:最终审批
- id: final-approve
depends_on: [create-pr]
loop:
prompt: |
PR 已创建:${create-pr.pr_url}
请审查 PR 内容,包括变更文件列表、diff、CI 状态。
回复 APPROVE 表示可以合并,
或描述需要修改的内容。
until: APPROVED
interactive: true
5.5 步骤四:运行工作流
# 启动工作流
archon run build-feature --title "Add dark mode support"
# 输出示例
→ Creating isolated worktree on branch archon/feat-dark-mode...
→ Planning...
→ Implementing (task 1/4)... ✓
→ Tests passing ✓
→ Implementing (task 2/4)... ✓
→ Tests passing ✓
→ Running full verification...
→ Code review complete - 2 issues found and fixed
→ PR ready: https://github.com/you/project/pull/247
→ Review requested: @you
5.6 步骤五:自定义 PR 模板
创建 .archon/.pr-template.md:
## 动机
<!-- 为什么做这个变更?解决了什么问题? -->
## 变更内容
<!-- 具体改了什么? -->
## 技术细节
<!-- 实现方案的关键点,是否有替代方案? -->
## 影响
<!-- 对现有功能的影响?需要更新文档吗? -->
## 测试计划
- [ ] 单元测试覆盖率 >= 80%
- [ ] E2E 测试通过
- [ ] 手动验证场景:...
## 截图(如涉及 UI)
六、与现有工具的对比
6.1 Archon vs. Claude Code 直接使用
| 维度 | Claude Code 直接使用 | Archon |
|---|---|---|
| 流程确定性 | 低(依赖 prompt 质量) | 高(YAML 硬编码流程) |
| 人工审批 | 无(或需要手动加 prompt) | 原生支持 approval gate |
| 隔离性 | 无(共享工作目录) | Git Worktree 完全隔离 |
| 并行执行 | 无 | 支持多个工作流并行 |
| 团队标准化 | 依赖每人各自配置 | 仓库级别的标准化 |
| 跨项目复用 | 差(需要复制配置) | 好(YAML 随仓库管理) |
6.2 Archon vs. Shannon(AI 渗透测试工具)
Archon 和 Shannon 都做 AI 自动化,但定位完全不同:
| 维度 | Archon | Shannon |
|---|---|---|
| 领域 | 通用软件开发 | 安全渗透测试 |
| 核心机制 | YAML 工作流引擎 | 多 Agent 协作(侦察→利用→报告) |
| 验证方式 | 测试套件 + lint | 漏洞发现 |
| 隔离性 | Git Worktree | 独立容器环境 |
| 适用场景 | 功能开发、Bug 修复、重构 | 安全审计、渗透测试 |
Archon 解决的是「如何让 AI 按流程做事」,Shannon 解决的是「如何让 AI 自动完成特定领域的专业任务」。
6.3 Archon vs. GitHub Copilot Workspace
GitHub Copilot Workspace 的目标是用自然语言驱动整个开发过程。Archon 的目标是让你定义 AI 的行为边界。
两者并不冲突——Copilot Workspace 适合探索性开发(还不确定要做什么),Archon 适合工程化开发(需求明确,需要规范执行)。
七、局限性:Archon 不是什么
7.1 Archon 不是银弹
任何一个工程工具都有其适用范围。Archon 的局限性:
局限性一:工作流设计本身需要工程经验
一个烂的工作流定义会导致 AI 在错误的方向上跑得更快。你需要深刻理解软件开发流程,才能设计出好的 YAML 工作流。
局限性二:初始配置成本不低
需要安装 Archon CLI、Claude Code、GitHub CLI,理解工作流 YAML 语法。对非技术用户有一定门槛。
局限性三:对非代码任务的处理能力有限
Archon 的节点主要是为代码开发场景设计的。对于数据分析、文档写作等任务,工作流设计需要重新思考。
局限性四:AI 节点的成本不可忽视
每个 AI 节点都会调用 LLM API。复杂工作流可能产生较高的 token 消耗。Archon 的 max_cost_per_run 配置是必要的保护措施。
7.2 Archon 适合的场景 vs. 不适合的场景
适合的场景:
- 团队有明确的开发流程规范,需要 AI 严格遵守
- 需要 AI 同时处理多个独立任务(并行)
- 需要在关键节点有人工介入审批
- 需要将 AI 编程流程标准化为团队资产
不太适合的场景:
- 探索性开发(还不确定需求是什么)
- 一次性的小任务(配置成本大于节省的时间)
- 对成本极度敏感的环境
八、性能优化与最佳实践
8.1 工作流设计原则
原则一:尽早验证,及时失败
# 好的设计:在实现早期就验证
nodes:
- id: plan
prompt: "制定计划"
- id: verify-plan
depends_on: [plan]
bash: "archon-validate-plan ${plan.output}" # 早期验证
- id: implement
depends_on: [verify-plan]
prompt: "实现"
原则二:AI 节点与确定性节点合理分配
- 任何可以写成脚本的步骤 → 用 bash 确定性节点
- 需要判断力、创造力的步骤 → 用 AI 节点
原则三:Loop 节点设置合理的上限
- id: implement
loop:
prompt: "实现下一个功能"
until: ALL_TASKS_COMPLETE
max_iterations: 20 # 防止失控
timeout: 60m # 防止长时间空转
8.2 成本优化
config:
model: claude-sonnet-4-5 # 不是所有节点都需要 Opus
nodes:
- id: understand
ai_model: claude-sonnet-4-5 # 简单理解,用 Sonnet
- id: plan
ai_model: claude-sonnet-4-5
- id: review
ai_model: claude-opus-4-5 # 复杂审查,用 Opus
8.3 团队协作最佳实践
实践一:工作流定义纳入 Code Review
# .archon/workflows/ 是代码的一部分,需要 review
git add .archon/workflows/
git commit -m "chore(workflow): update build-feature workflow"
实践二:定期回顾工作流效果
每月回顾一次工作流执行数据:
- 哪个节点失败率最高?
- 平均执行时间是多少?
- 有哪些步骤可以进一步自动化?
实践三:建立工作流模板库
.archon/
├── workflows/
│ ├── build-feature.yaml # 功能开发标准流程
│ ├── fix-bug.yaml # Bug 修复流程
│ ├── hotfix.yaml # 热修复流程(更短的验证链)
│ └── refactor.yaml # 重构流程(更严格的审查)
九、源码解析:Archon 的核心模块
9.1 项目结构
archon/
├── src/
│ ├── cli/ # 命令行接口
│ ├── engine/ # 工作流引擎核心
│ │ ├── parser.ts # YAML 解析器
│ │ ├── scheduler.ts # DAG 调度器
│ │ ├── executor.ts # 节点执行器
│ │ └── state.ts # 状态管理
│ ├── nodes/ # 内置节点类型
│ │ ├── ai.ts # AI 节点
│ │ ├── bash.ts # Bash 节点
│ │ ├── loop.ts # 循环节点
│ │ └── approval.ts # 审批节点
│ ├── integrations/ # 第三方集成
│ │ ├── claude-code.ts
│ │ ├── github.ts
│ │ └── git.ts
│ └── utils/
│ ├── worktree.ts # Git Worktree 管理
│ └── cost.ts # 成本追踪
├── tests/
└── package.json
9.2 DAG 调度器核心实现
// src/engine/scheduler.ts(简化版)
export class DAGScheduler {
constructor(private workflow: Workflow) {}
async execute(): Promise<WorkflowResult> {
// 构建节点依赖图
const graph = this.buildGraph(this.workflow.nodes);
const results = new Map<string, NodeResult>();
while (!graph.isEmpty()) {
// 1. 获取所有可执行的节点(入度为0且未被执行)
const executable = graph.getExecutableNodes();
if (executable.length === 0 && !graph.isEmpty()) {
throw new Error('Circular dependency detected or deadlocked workflow');
}
// 2. 并行执行所有可执行节点
const promises = executable.map(node =>
this.executeNode(node, results)
);
const nodeResults = await Promise.all(promises);
// 3. 收集结果并更新图
for (const result of nodeResults) {
results.set(result.nodeId, result);
graph.markCompleted(result.nodeId);
}
}
return { success: true, results };
}
private buildGraph(nodes: WorkflowNode[]): DependencyGraph {
const graph = new DependencyGraph();
for (const node of nodes) {
graph.addNode(node.id);
// 添加依赖边
if (node.depends_on) {
for (const depId of node.depends_on) {
graph.addEdge(depId, node.id);
}
}
}
return graph;
}
private async executeNode(
node: WorkflowNode,
results: Map<string, NodeResult>
): Promise<NodeResult> {
// 检查终止条件
if (node.loop) {
return this.executeLoopNode(node, results);
}
// 根据节点类型执行
switch (node.type) {
case 'bash':
return this.executeBashNode(node);
case 'ai':
return this.executeAINode(node);
case 'approval':
return this.executeApprovalNode(node);
default:
throw new Error(`Unknown node type: ${node.type}`);
}
}
}
9.3 AI 节点的执行逻辑
// src/nodes/ai.ts(简化版)
export class AINodeExecutor {
async execute(
node: AINode,
context: ExecutionContext
): Promise<NodeResult> {
// 1. 构建 prompt(注入上下文)
const fullPrompt = this.buildPrompt(node.prompt, context);
// 2. 估算成本
const estimatedCost = this.estimateCost(fullPrompt, node.ai_model);
context.checkBudget(estimatedCost);
// 3. 调用 Claude Code
const response = await claudeCode.execute({
model: node.ai_model,
prompt: fullPrompt,
timeout: node.timeout,
systemPrompt: context.systemPrompt,
});
// 4. 提取产物
const artifacts = this.extractArtifacts(response);
// 5. 存储结果供后续节点使用
context.setNodeOutput(node.id, {
text: response.text,
artifacts,
model: node.ai_model,
tokens: response.usage,
});
return { nodeId: node.id, success: true, output: response.text };
}
private buildPrompt(template: string, context: ExecutionContext): string {
// 支持 ${nodeId.output} 语法注入前面节点的输出
return template.replace(/\$\{(\w+)\.output\}/g, (match, nodeId) => {
const output = context.getNodeOutput(nodeId);
return output?.text || `[No output from ${nodeId}]`;
});
}
}
9.4 Worktree 管理器
// src/utils/worktree.ts(简化版)
export class WorktreeManager {
constructor(private repoRoot: string) {}
async createWorktree(branchName: string): Promise<string> {
const worktreePath = path.join(
this.repoRoot,
'.archon',
'worktrees',
branchName
);
// 创建 worktree 目录
await execAsync(`git worktree add ${worktreePath} -b ${branchName}`);
// 初始化子模块(如果有)
await execAsync(`git submodule update --init`, { cwd: worktreePath });
return worktreePath;
}
async cleanupWorktree(branchName: string): Promise<void> {
await execAsync(`git worktree remove .archon/worktrees/${branchName}`);
}
async withWorktree<T>(
branchName: string,
fn: (worktreePath: string) => Promise<T>
): Promise<T> {
const worktreePath = await this.createWorktree(branchName);
try {
return await fn(worktreePath);
} finally {
// 自动清理
await this.cleanupWorktree(branchName);
}
}
}
十、总结与展望
10.1 Archon 的核心价值
Archon 解决了一个根本性问题:AI 编程的工程化。
在 Archon 出现之前,我们对 AI 编程的管理方式是「祈祷式」的——祈祷 AI 理解我们的需求、祈祷它不会做出格的事、祈祷它的输出质量稳定。
Archon 带来的是一种范式转变:从「祈祷」到「定义」。你不再祈祷 AI 会做正确的事,而是明确定义它应该做什么、按什么顺序做、在什么条件下停止。
10.2 对行业的意义
Archon 代表了 AI 编程工具发展的一个新方向:工具层的完善。
2024-2025 年,AI 编程的主旋律是模型能力的提升——更强的推理、更长的上下文、更好的代码生成。
2026 年开始,主旋律正在转向工程化——如何让 AI 编程具备传统软件工程的可靠性、可复现性、可审计性。
Archon 是这个趋势的标志性项目。
10.3 未来展望
几个值得关注的演进方向:
方向一:工作流市场
未来可能出现一个 Archon Workflow Marketplace,开发者可以分享、发现、组合工作流。就像 npm 之于包,GitHub Actions 之于 CI/CD。
方向二:跨 LLM 支持
目前 Archon 主要集成 Claude Code。未来可能支持更多 AI Provider(GPT、 Gemini、Grok 等),工作流可以针对不同模型优化。
方向三:智能工作流推荐
基于代码库分析和历史执行数据,AI 自动推荐合适的工作流模板。这将大幅降低入门门槛。
方向四:企业级功能
审计日志、访问控制、合规报告——这些企业级特性将是 Archon 进入大型开发团队的必要条件。
10.4 给工程师的建议
如果你对 Archon 感兴趣,现在是最好的入场时机:
- 先用起来 —— 在自己的 side project 里跑几个工作流,感受工具的能力边界
- 贡献工作流模板 —— 把你团队的开发流程整理成 Archon 工作流,开源分享
- 参与社区 —— Archon 的生态还在早期,你的反馈和需求会直接影响项目方向
- 关注演进 —— 工作流引擎的架构演进值得关注,YAML DSL 可能会逐渐演进得更强大
最后一句话:Archon 让我想起 Docker 刚出现时的感觉——很多人觉得「不就是跑个容器吗」,但真正理解它的人才知道这是一个时代的开始。
AI 编程的工程化浪潮才刚刚开始,而 Archon 正在定义这场浪潮的游戏规则。
参考资料:Archon GitHub 仓库 | Archon 官网 | Claude Code