# Norma：基于PDCA循环的自主代理工作流编排器

> 一款用Go语言编写的智能代理编排工具，通过Plan-Do-Check-Act循环实现任务规划、执行、验证和提交的自动化工作流管理。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-09T16:42:08.000Z
- 最近活动: 2026-04-09T16:46:50.731Z
- 热度: 161.9
- 关键词: AI代理, 工作流编排, PDCA, Go语言, Git工作流, Beads, ACP协议, 自动化, 任务管理
- 页面链接: https://www.zingnex.cn/forum/thread/norma-pdca
- Canonical: https://www.zingnex.cn/forum/thread/norma-pdca
- Markdown 来源: ingested_event

---

## 背景：AI代理编排的挑战

随着AI编程助手和自主代理的快速发展，如何有效管理和编排这些代理的工作流程成为了一个新的技术挑战。现有的解决方案往往存在以下问题：工作目录混乱、任务状态难以追踪、代理执行结果不可预测、缺乏标准化的验证和提交流程。

开发团队需要一种能够确保代理工作透明、可靠且可恢复的工具——不仅要管理代理的执行，还要保证每个变更都被正确隔离、验证和记录。

## Norma简介

Norma是一款由NormaHQ团队开发的自主代理工作流编排器，使用Go语言编写。它通过严格的Plan → Do → Check → Act（PDCA）循环，在高级任务管理和底层代码执行之间架起桥梁。

Norma的设计理念强调透明度和可靠性：每个代理操作都被记录、每个变更都被隔离在Git工作树中，整个运行状态直接持久化到任务 backlog 中。这种设计使得代理工作流变得可审计、可恢复、可协作。

## 核心设计理念：PDCA循环

Norma的核心是经典的PDCA质量管理循环，将其应用于AI代理的工作流编排：

### Plan（计划）

将高层目标细化为具体的工作计划和可验收标准。Norma会分析任务描述，生成结构化的执行计划，明确每个步骤的预期输出。

### Do（执行）

代理在隔离的工作空间中执行计划。Norma为每个任务创建独立的Git工作树，确保代理的修改不会污染主工作目录。

### Check（检查）

根据验收标准评估工作空间的内容，生成PASS/FAIL verdict。这一步骤确保只有符合质量标准的变更才能进入下一阶段。

### Act（行动）

如果检查通过，Norma自动使用Conventional Commits规范将变更合并并提交到主分支；如果失败，则循环继续或准备重新规划。

## 关键技术特性

### 隔离的Git工作空间

Norma为每个运行创建专用的Git工作树，位于任务专属分支（norma/task/）上。这种设计彻底解决了代理执行过程中可能出现的目录污染和意外提交问题。

### 权威Backlog集成（Beads）

Norma深度集成Beads任务管理系统。任务状态、结构化工作计划和完整运行日志都被持久化为Beads笔记，通过Git同步。这种设计使得任务状态可以在不同机器间无缝恢复。

### 智能恢复机制

通过细粒度的标签（如norma-has-plan、norma-has-do），Norma能够在中断的运行中恢复，或跳过已完成的步骤。这对于长时间运行的代理任务尤为重要。

### 纯Go实现

Norma使用纯Go编写，不依赖CGO。权威运行状态通过SQLite管理，使用modernc.org/sqlite驱动。这种设计保证了跨平台的可移植性和构建的简单性。

### 可插拔代理生态系统

Norma支持多种AI代理，通过标准ACP（Agent Control Protocol）协议通信。支持的代理包括：

- **generic_acp**：运行任何实现ACP协议的本地二进制文件或脚本
- **gemini_acp**：原生支持Gemini CLI，具备工具调用和代码阅读能力
- **opencode_acp**：与OpenCode深度集成，用于高性能编码任务
- **codex_acp**：通过Norma的Codex ACP桥接器支持OpenAI Codex风格工具
- **copilot_acp**：通过copilot --acp运行Copilot CLI
- **claude_code_acp**：通过npx运行Claude Code ACP

## 配置与使用

Norma的配置采用YAML格式，支持多配置文件和环境变量覆盖。默认配置使用gemini_acp代理，但用户可以自定义运行时核心：

```yaml
norma:
  agents:
    gemini_acp_agent:
      type: gemini_acp
      gemini_acp:
        model: gemini-3-flash-preview
  cli:
    pdca:
      plan: gemini_acp_agent
      do: gemini_acp_agent
      check: gemini_acp_agent
      act: gemini_acp_agent
    budgets:
      max_iterations: 5
```

### 基本工作流程

1. 使用`norma init`初始化项目，自动创建.beads目录和默认配置
2. 使用`bd create`创建任务
3. 使用`norma loop <task-id>`编排任务执行
4. Norma自动完成PDCA循环，直到任务完成或达到最大迭代次数

### 交互式规划

Norma提供TUI和REPL两种交互式规划模式：

```bash
norma plan tui  # 交互式TUI
norma plan repl # 基于行的REPL
```

这些工具帮助将高层史诗分解为Beads的epic/feature/task层级结构。

## 开发者工具

Norma还提供了一系列开发者工具：

- **acp-dump**：检查任何stdio ACP服务器命令，输出能力信息和工具模式
- **mcp-dump**：检查stdio MCP服务器，输出能力和MCP工具模式
- **acp-repl**：针对任何stdio ACP服务器的交互式终端REPL
- **codex-acp-bridge**：将codex mcp-server作为ACP over stdio暴露

这些工具使得开发者可以调试和实验不同的代理配置，而无需修改主配置文件。

## 零数据丢失设计

Norma通过多层持久化确保数据安全：

1. **权威运行状态**：存储在.norma/norma.db（SQLite）
2. **权威任务状态**：作为TaskState JSON对象序列化在Beads笔记中
3. **执行产物**：每个步骤的input.json、output.json和logs/保存在.norma/runs/<run-id>/
4. **代理输出可见性**：代理的stdout/stderr始终被捕获到步骤日志中

这种设计确保了即使在意外中断的情况下，任务状态也不会丢失。

## 项目生态与分发

Norma使用Omnidist进行跨平台构建和分发，支持npm发布。所有命令行工具都有对应的npm包（@normahq/norma、@normahq/acp-dump等），方便JavaScript/TypeScript生态系统的用户安装使用。

## 总结

Norma代表了一种工程化的AI代理管理思路——不是简单地将任务扔给代理，而是通过严格的PDCA循环、隔离的执行环境和完整的审计日志，确保代理工作的可靠性和可恢复性。对于需要在生产环境中使用AI代理的团队来说，Norma提供了一个值得考虑的编排框架。
