Skip to content

zhangmumu-star/long-running-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Long Running Agent Framework

License: MIT AI Tool: opencode

English | 中文

A universal framework for AI agents to work continuously across multiple sessions with auto-run, triple protection, and multiple task templates.

Based on Anthropic's Engineering Blog.

Features

  • 🔄 Auto-Run - Automatic task execution loop without manual intervention
  • 🛡️ Triple Protection - Layer protection + Sandbox + Git validation
  • 📝 Multiple Templates - Web development, data analysis, research, documentation, etc.
  • 📋 Problem Recording - Automatically avoid known issues in future sessions
  • 🎯 One Task Per Session - Prevent context overflow

Quick Start

# Copy framework
cp -r long-running-agent my-project && cd my-project

# Initialize (first time)
opencode
> 请阅读 prompts/initializer.md 并按照指示开始工作。

# Auto-run
./scripts/auto-run.sh

中文文档

长时间运行代理框架

基于 Anthropic 的工程博客 实现,用于支持 AI 代理在多个会话中持续工作的通用框架。

特性

  • 🔄 自动运行 - 无需手动干预,自动循环执行任务
  • 🛡️ 三重保护 - 分层保护 + 沙盒隔离 + Git 变更检测
  • 📝 多任务模板 - Web开发、数据分析、研究、文档等
  • 📋 问题记录 - 自动记录已知问题,下次会话规避
  • 🎯 一次一个 - 防止上下文溢出

核心问题

AI 代理在多个上下文窗口工作时面临挑战:

问题 描述
无记忆 每个新会话没有之前的记忆
上下文溢出 一次性做太多导致上下文耗尽
过早完成 容易过早宣布项目完成
状态混乱 会话间可能留下破损的代码状态

解决方案

采用双代理模式 + 严格边界限制 + 三重保护机制


完整工作流程

总览

┌─────────────────────────────────────────────────────────────┐
│                        项目生命周期                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  阶段 1: 初始化(仅首次)                                    │
│  ─────────────────────                                      │
│  Initializer Agent → 创建任务配置和功能列表                  │
│                                                             │
│  阶段 2: 工作循环(重复执行)                                │
│  ─────────────────────                                      │
│  Worker Agent × N 次 → 逐个实现功能                          │
│                                                             │
│  阶段 3: 完成                                               │
│  ─────────────────────                                      │
│  所有功能 passes: true → 项目完成                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

阶段 1:初始化(Initializer Agent)

触发方式:首次使用,手动输入提示词

请阅读 prompts/initializer.md 并按照指示开始工作。

执行流程

┌─────────────────────────────────────────────────────────────┐
│                 Initializer Agent 执行流程                   │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1: 检查现有配置                                        │
│  ├── 检查 core/config.json 是否存在                         │
│  └── 如果存在 → 跳过初始化                                   │
│                                                             │
│  步骤 2: 选择任务模板                                        │
│  ├── 展示可用模板列表                                        │
│  ├── 用户选择或创建自定义模板                                │
│  └── 加载模板配置                                            │
│                                                             │
│  步骤 3: 填写任务规格                                        │
│  ├── 引导用户描述任务需求                                    │
│  └── 保存到 prompts/task_spec.md                            │
│                                                             │
│  步骤 4: 创建功能列表                                        │
│  ├── 基于任务规格拆解功能                                    │
│  ├── 生成 100-200+ 功能项                                   │
│  └── 保存到 core/feature_list.json                          │
│                                                             │
│  步骤 5: 初始化进度文件                                      │
│  └── 创建 core/progress.md                                  │
│                                                             │
│  步骤 6: 创建任务配置                                        │
│  └── 保存到 core/config.json                                │
│                                                             │
│  步骤 7: Git 提交                                            │
│  └── git commit -m "初始化..."                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

输出文件

  • core/config.json - 任务配置
  • core/feature_list.json - 功能列表(100-200+项)
  • core/progress.md - 进度记录
  • core/known_issues.md - 已知问题(空文件)
  • prompts/task_spec.md - 任务规格说明

阶段 2:工作循环(Worker Agent)

触发方式:每次新会话,手动输入或自动运行

请阅读 prompts/worker.md 并按照指示继续工作。

执行流程(9步)

┌─────────────────────────────────────────────────────────────┐
│                 Worker Agent 单次会话流程                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  步骤 1: 了解状态 ────────────────────────────────────────── │
│  ├── 读取 core/config.json(任务配置)                       │
│  ├── 读取 prompts/task_spec.md(任务规格)                  │
│  ├── 读取 core/feature_list.json(功能列表)                │
│  ├── 读取 core/progress.md(进度记录)                      │
│  ├── 读取 core/known_issues.md(已知问题,重要!)          │
│  └── 检查 git log(最近提交)                               │
│                                                             │
│  步骤 2: 验证已有功能 ────────────────────────────────────── │
│  ├── 选择 1-2 个 passes: true 的功能                        │
│  ├── 按步骤验证                                              │
│  └── 如有问题 → 标记 passes: false + 修复                   │
│                                                             │
│  步骤 3: 选择一个功能 ────────────────────────────────────── │
│  ├── 找到 passes: false 的功能                              │
│  ├── 按 priority 排序(high > medium > low)                │
│  └── 选择最高优先级                                          │
│                                                             │
│  步骤 4: 实现功能 ────────────────────────────────────────── │
│  ├── 理解需求                                                │
│  ├── 编写/修改代码                                           │
│  └── 初步测试                                                │
│                                                             │
│  步骤 5: 验证功能 ────────────────────────────────────────── │
│  ├── 端到端测试(单元测试不够)                              │
│  └── 验证通过才能继续                                        │
│                                                             │
│  步骤 6: 更新功能列表 ────────────────────────────────────── │
│  └── 只改 passes: false → passes: true                     │
│                                                             │
│  步骤 7: Git 变更检测 ────────────────────────────────────── │
│  ├── git diff --name-only                                   │
│  ├── 检查是否修改了保护文件                                  │
│  └── 违规则回滚                                              │
│                                                             │
│  步骤 8: 提交进度 ────────────────────────────────────────── │
│  └── git commit                                             │
│                                                             │
│  步骤 9: 更新进度文件 ────────────────────────────────────── │
│  ├── 更新 core/progress.md                                  │
│  └── 如有问题 → 更新 core/known_issues.md                   │
│                                                             │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
                     ┌─────────────────┐
                     │  还有未完成功能?│
                     └────────┬────────┘
                              │
               ┌──────────────┴──────────────┐
               │ Yes                         │ No
               ▼                             ▼
         开启新会话                      项目完成!
         继续执行 Worker Agent

阶段 3:自动运行(可选)

使用 scripts/auto-run.sh 自动循环执行 Worker Agent。

执行流程

┌─────────────────────────────────────────────────────────────┐
│                  auto-run.sh 执行流程                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 检查环境                                                 │
│     ├── 检查 core/feature_list.json                         │
│     └── 检查 prompts/worker.md                              │
│                                                             │
│  2. 循环执行 ┌──────────────────────────────────────────┐   │
│            │                                          │   │
│            │  a. 检查剩余任务 → 为 0 则退出             │   │
│            │                                          │   │
│            │  b. 设置 AUTO_RUN_MODE=true               │   │
│            │                                          │   │
│            │  c. 运行 opencode(执行 worker.md)        │   │
│            │                                          │   │
│            │  d. 检查进度变化                           │   │
│            │     ├── 有进展 → 重置计数器               │   │
│            │     └── 无进展 → 增加计数器               │   │
│            │                                          │   │
│            │  e. 连续 3 次无进展 → 停止并警告           │   │
│            │                                          │   │
│            └──────────────────────────────────────────┘   │
│                                                             │
│  3. 退出条件                                                 │
│     ├── 所有任务完成                                         │
│     ├── 达到最大迭代次数(默认 300)                         │
│     └── 连续 3 次无进展                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

使用方式

# 基本使用
./scripts/auto-run.sh

# 自定义参数
MAX_ITERATIONS=100 DELAY_SECONDS=10 ./scripts/auto-run.sh

三重保护机制

确保 AI Agent 不会违反边界:

┌─────────────────────────────────────────────────────────────┐
│                    三重保护机制                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  第一层:分层保护(预防)                                    │
│  ─────────────────────                                      │
│  🔴 红色层:core/config.json, prompts/, templates/          │
│     → 绝对禁止修改                                          │
│  🟡 黄色层:core/feature_list.json                          │
│     → 只能修改 passes 字段                                  │
│  🟢 绿色层:src/, output/, 其他                             │
│     → 自由操作                                              │
│                                                             │
│  第二层:沙盒操作(隔离)                                    │
│  ─────────────────────                                      │
│  AI 创建的脚本必须在 .sandbox/ 中执行                        │
│  即使脚本有 bug,也不会直接破坏核心文件                      │
│                                                             │
│  第三层:Git 变更检测(检测)                                │
│  ─────────────────────                                      │
│  在 git commit 前检查修改的文件                              │
│  如果违规 → git checkout 回滚                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

详细说明边界保护实现


核心文件说明

文件 作用 谁可以修改 分层
core/config.json 任务配置 仅 Initializer Agent 🔴 红色
prompts/task_spec.md 任务规格说明 仅 Initializer Agent 🔴 红色
prompts/*.md 代理提示词 用户手动 🔴 红色
templates/ 任务模板 用户手动 🔴 红色
core/feature_list.json 功能列表 Worker Agent 只能改 passes 🟡 黄色
core/progress.md 进度记录 Worker Agent 每次会话更新 🟢 绿色
core/known_issues.md 已知问题记录 Worker Agent 遇到问题时更新 🟢 绿色
src/, output/ 项目文件 Worker Agent 自由操作 🟢 绿色

问题记录机制

遇到问题时记录到 core/known_issues.md,下次会话自动规避:

┌─────────────────────────────────────────────────────────────┐
│                    问题记录流程                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  会话开始时:                                                │
│  ───────────                                               │
│  1. 读取 core/known_issues.md                              │
│  2. 了解之前遇到的问题                                      │
│  3. 规避已知问题                                            │
│                                                             │
│  遇到新问题时:                                              │
│  ───────────                                               │
│  1. 记录到 core/known_issues.md                            │
│  2. 描述问题和原因                                          │
│  3. 提供规避方法                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

记录格式

## [ISS-001] 问题标题

**状态**:open / resolved
**发现时间**:YYYY-MM-DD
**发现于功能**:F001
**影响范围**:描述影响

### 问题描述
详细描述问题

### 问题原因
分析原因

### 规避方法
1. 具体步骤
2. 注意事项

如何使用

第一步:复制框架

cp -r lrf-test-template-01 my-project
cd my-project

第二步:启动 AI 工具

opencode

第三步:首次会话 - 初始化

请阅读 prompts/initializer.md 并按照指示开始工作。

第四步:后续会话 - 工作

手动运行

请阅读 prompts/worker.md 并按照指示继续工作。

自动运行

./scripts/auto-run.sh

预置模板

模板 用途 功能数建议
web-development 前后端 Web 应用开发 200+
data-analysis 数据处理、分析、可视化 100+
research 文献调研、实验分析 80+
documentation 技术文档、教程编写 60+
product-requirements 产品需求拆解、技术方案 80+
custom 自定义任务 用户定义

边界限制(重要!)

核心规则

规则 说明
只改 passes 只能将 passes: false 改为 passes: true
一次一个 每次会话只完成一个功能
先验证后标记 必须验证通过后才能标记完成
干净退出 会话结束时代码必须可工作
必须提交 每次会话必须 git commit
记录问题 遇到问题记录到 known_issues.md

禁止行为

  • ❌ 删除功能列表中的任何功能
  • ❌ 修改功能的描述或步骤
  • ❌ 跳过验证就标记完成
  • ❌ 一次尝试多个功能
  • ❌ 修改红色层文件

目录结构

lrf-test-template-01/
│
├── core/                       # 框架核心(任务运行时数据)
│   ├── config.json             # 任务配置 🔴
│   ├── feature_list.json       # 功能列表 🟡
│   ├── progress.md             # 进度记录 🟢
│   └── known_issues.md         # 已知问题 🟢
│
├── prompts/                    # 代理提示词 🔴
│   ├── initializer.md          # 初始化代理
│   ├── worker.md               # 工作代理(9步流程)
│   ├── template_wizard.md      # 模板创建向导
│   └── task_spec.md            # 任务规格模板
│
├── templates/                  # 任务模板 🔴
│   ├── web-development/        # Web 开发
│   ├── data-analysis/          # 数据分析
│   ├── research/               # 研究任务
│   ├── documentation/          # 文档编写
│   ├── product-requirements/   # 产品需求拆解
│   └── _custom/                # 自定义模板
│
├── scripts/                    # 脚本
│   └── auto-run.sh             # 自动化运行脚本
│
├── docs/                       # 文档
│   ├── theory/                 # 理论文档
│   │   └── 长时间运行代理框架翻译.md
│   └── guides/                 # 使用指南
│       ├── quick-start.md      # 快速开始
│       ├── create-template.md  # 创建自定义模板
│       ├── best-practices.md   # 最佳实践
│       ├── boundaries.md       # 边界限制详解
│       ├── protection-implementation.md # 边界保护实现
│       └── auto-run.md         # 自动化运行指南
│
└── .sandbox/                   # 沙盒目录(AI 脚本执行)
    ├── scripts/                # AI 创建的脚本
    ├── temp/                   # 临时文件
    └── output/                 # 脚本输出

文档指南

文档 内容 适合谁
快速开始 详细的使用步骤 新用户
创建自定义模板 如何创建自己的任务模板 需要自定义任务的用户
最佳实践 使用技巧和常见问题 所有用户
边界限制详解 为什么需要边界、如何遵守 所有用户
边界保护实现 三重保护机制的技术实现 想了解技术细节的用户
自动化运行指南 自动化脚本使用方法 想要自动运行的用户
理论翻译 Anthropic 原文翻译 想深入了解的用户

迭代开发指南

如果你想对框架进行迭代,以下是各功能的实现位置:

功能 实现位置 说明
初始化流程 prompts/initializer.md 修改初始化步骤
工作流程 prompts/worker.md 修改 9 步流程
分层保护 prompts/worker.md → "三重保护机制" 修改文件分层
沙盒规则 prompts/worker.md → "第二层:沙盒操作" 修改沙盒规则
Git 检测 prompts/worker.md → "步骤 7:Git 变更检测" 修改检测规则
自动运行 scripts/auto-run.sh 修改自动运行逻辑
问题记录 core/known_issues.md 问题记录文件
新增模板 templates/ 创建新模板目录

参考资料

About

长时间运行代理框架 - 让 AI 代理跨多个会话持续工作的通用框架,支持自动运行、三重保护、多任务模板 | A universal framework for AI agents to work continuously across multiple sessions with auto-run, triple protection, and multiple task templates.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors