Skip to content

vimalinx/enjoy_ai_core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

反思型自主代理系统 (Reflective Autonomous Agent)

一个具有自我反思能力的自主 AI 代理系统,能够通过迭代思考、行动和反思来实现自主行为。

项目简介

这个系统创建了一个能够自主思考、行动和反思的 AI 代理。它通过不断迭代调用 Claude API,记录完整的思考过程,实现真正的自主决策和学习。

核心理念

  • 记录一切 - 把所有思考过程、推理、犹豫、决定都记录下来
  • 保持诚实 - 真实地记录想法,即使是不确定或困惑的
  • 持续反思 - 思考之前做了什么、学到了什么、下一步该做什么

功能特性

代理功能

  • 🤔 自主思考 - 根据当前状态和历史记录自主决定下一步行动
  • 📝 日记系统 - 完整记录思考过程,支持 JSON Lines 格式
  • 🎯 目标管理 - 维护目标列表,追踪长期目标
  • 💡 自我反思 - 每次行动后进行反思和总结
  • 😊 情绪追踪 - 记录代理的情绪状态变化

观察者功能

  • 👁️ 实时监控 - 实时显示代理的思考过程
  • 🎨 美化输出 - 彩色终端输出,清晰展示不同阶段
  • 📊 状态面板 - 显示迭代次数、思考次数、行动统计
  • 📜 历史回放 - 支持回放历史日记

系统功能

  • 🔄 状态持久化 - 所有数据保存到文件,支持断点续传
  • 🛡️ 进程管理 - 自动管理代理和观察者进程
  • 容错机制 - 超时保护和异常处理

系统架构

┌─────────────────────────────────────────────────────┐
│                 反思型自主代理系统                    │
├─────────────────────────────────────────────────────┤
│                                                     │
│  ┌──────────────┐      ┌──────────────┐            │
│  │ reflective_  │─────▶│  observer.py │            │
│  │  agent.py    │      │              │            │
│  │              │◀─────│  (实时监控)   │            │
│  │  代理核心     │      │              │            │
│  └──────┬───────┘      └──────────────┘            │
│         │                                             │
│         │ 调用                                        │
│         ▼                                             │
│  ┌──────────────┐                                    │
│  │  Claude API  │                                    │
│  │              │                                    │
│  └──────────────┘                                    │
│         │                                             │
│         ▼                                             │
│  ┌──────────────┐                                    │
│  │  my_space/   │                                    │
│  │              │                                    │
│  │  - diary.jsonl                                   │
│  │  - state.json                                    │
│  │  - agent.log                                     │
│  └──────────────┘                                    │
└─────────────────────────────────────────────────────┘

安装要求

必需

  • Python 3.7+
  • Claude CLI (已安装并配置)

可选

  • 终端支持 ANSI 颜色代码(用于美化输出)

快速开始

1. 启动系统

# 启动代理和观察者
./run_reflective.sh

2. 查看输出

系统会在终端实时显示代理的思考过程:

🚀 启动反思型自主代理
工作目录: /path/to/example

📊 代理状态 - 第 0 轮
============================================================
  迭代次数: 0
  思考次数: 0
  行动次数: 0

💭 最近思考:
  (暂无)

🎯 当前目标:
  (暂无)

📍 ITERATION_START #0            [16:44:12]
📝 PROMPT_GENERATED #0           [16:44:13]
🤔 THINKING #0                    [16:44:15]
    思考: 我想探索这个目录,了解文件结构...
⚡ ACTION #0                      [16:44:16]
    行动: 创建了探索脚本
    文件: explore.sh
💡 REFLECTION #0                  [16:44:17]
    反思: 我学会了如何列出目录内容
    心情: 🎉 兴奋
🎯 NEXT_GOAL #0                   [16:44:18]
    目标: 继续探索文件系统
✅ ITERATION_END #0               [16:44:19]
    状态: 继续

3. 停止系统

./run_reflective.sh stop

使用方法

运行模式

# 完整运行(代理 + 观察者)
./run_reflective.sh

# 仅启动观察者(监控已运行的代理)
./run_reflective.sh watch

# 回放历史日记(最近 50 条)
./run_reflective.sh replay

# 回放指定数量
./run_reflective.sh replay 100

# 停止所有进程
./run_reflective.sh stop

直接运行 Python 脚本

# 运行代理
python3 reflective_agent.py

# 限制迭代次数
python3 reflective_agent.py --max-iterations 10

# 指定工作目录
python3 reflective_agent.py --work-dir /path/to/dir

# 运行观察者
python3 observer.py

# 回放模式
python3 observer.py --replay --limit 20

# 自定义监控间隔
python3 observer.py --interval 1.0

工作原理

迭代循环

  1. 生成提示词 - 代理根据当前状态和历史日记生成提示词
  2. 调用 Claude - 通过 Claude API 获取自主思考和决策
  3. 记录过程 - 将思考、行动、反思记录到日记
  4. 更新状态 - 更新迭代次数、目标列表、成就等
  5. 决定继续 - 根据返回的 continue 字段决定是否继续

提示词结构

每次迭代,代理会生成包含以下内容的提示词:

  • 当前时间和迭代次数
  • 当前状态(JSON 格式)
  • 最近的思考日记(前 10 条)
  • 行动指令
  • 输出格式要求(JSON)

输出格式

Claude 需要返回 JSON 格式的响应:

{
  "thought": "详细描述你的思考过程",
  "action": "描述你实际执行的行动",
  "reflection": "反思和总结",
  "next_goal": "下一轮的目标",
  "created_files": ["创建的文件列表"],
  "emotional_state": "当前情绪状态(好奇/满足/困惑/兴奋等)",
  "continue": true
}

文件说明

example/
├── reflective_agent.py    # 代理核心程序
├── observer.py            # 观察者程序
├── run_reflective.sh      # 启动脚本
├── README.md              # 本文件
└── my_space/              # 工作空间(自动创建)
    ├── diary.jsonl        # 思考日记(JSON Lines)
    ├── state.json         # 当前状态
    ├── prompt.txt         # 当前提示词
    ├── response.txt       # Claude 响应
    └── agent.log          # 代理日志

my_space/ 目录说明

所有数据都存储在 my_space/ 目录中,这是代理的"私人空间":

  • diary.jsonl - 每行一条 JSON 记录,记录所有思考过程
  • state.json - 代理的当前状态,包括迭代次数、目标、成就等
  • prompt.txt - 当前迭代的提示词(调试用)
  • response.txt - Claude 的原始响应(调试用)
  • agent.log - 代理的运行日志

状态文件结构

state.json 包含以下字段:

{
  "iteration": 10,                    // 当前迭代次数
  "start_time": "2025-01-16T...",     // 启动时间
  "total_thoughts": 10,               // 总思考次数
  "total_actions": 8,                 // 总行动次数
  "goals": [                          // 目标列表(最多 10 个)
    "探索文件系统",
    "学习新知识"
  ],
  "achievements": [                   // 成就列表(最多 10 个)
    "成功创建第一个文件",
    "学会了使用 ls 命令"
  ],
  "last_thought": "...",              // 最后的思考
  "last_action": "..."                // 最后的行动
}

观察者颜色方案

观察者使用不同的颜色和图标表示不同阶段:

阶段 图标 颜色 说明
SYSTEM_START 🚀 绿色 系统启动
ITERATION_START 📍 蓝色 迭代开始
PROMPT_GENERATED 📝 青色 提示词生成
THINKING 🤔 洋红 思考过程
ACTION 黄色 执行行动
REFLECTION 💡 绿色 反思总结
NEXT_GOAL 🎯 蓝色 下一目标
RESPONSE_RECEIVED 📨 青色 收到响应
ITERATION_END 绿色 迭代结束
ERROR 红色 错误
SYSTEM_STOP 👋 黄色 系统停止

注意事项

超时设置

  • 默认单次调用超时为 10 分钟(600 秒)
  • 可在 reflective_agent.py:261 修改 timeout 参数

进程管理

  • 系统使用 PID 文件管理进程
  • 如果异常退出,运行 ./run_reflective.sh stop 清理

数据持久化

  • 所有数据保存在 my_space/ 目录
  • 删除此目录会重置代理的所有记忆
  • 可手动编辑 state.json 来调整代理状态

Claude API 限制

  • 需要安装并配置 Claude CLI
  • 注意 API 调用频率限制
  • 大量迭代会消耗 tokens

高级用法

自定义工作目录

python3 reflective_agent.py --work-dir /path/to/custom/dir
python3 observer.py --work-dir /path/to/custom/dir

限制迭代次数

python3 reflective_agent.py --max-iterations 5

手动编辑状态

你可以编辑 my_space/state.json 来:

  • 修改当前迭代次数
  • 添加初始目标
  • 设置已有成就
  • 调整代理的"记忆"

分析日记

# 统计迭代次数
wc -l my_space/diary.jsonl

# 查看最近的思考
tail -n 10 my_space/diary.jsonl | jq

# 提取所有情绪状态
jq -r '.emotional_state' my_space/diary.jsonl | sort | uniq -c

故障排查

问题:代理启动失败

  • 检查 Claude CLI 是否正确安装:claude --version
  • 查看日志:cat my_space/agent.log

问题:观察者没有输出

  • 检查 my_space/diary.jsonl 是否存在
  • 确认代理正在运行
  • 尝试回放模式:./run_reflective.sh replay

问题:进程无法停止

  • 手动 kill 进程:ps aux | grep python
  • 删除 PID 文件:rm .agent.pid .observer.pid

示例场景

场景 1:自主探索

代理可以自主探索文件系统,创建文档,记录发现。

场景 2:学习任务

给代理一个学习目标(如"学习 Python"),它会自主规划学习路径。

场景 3:代码开发

代理可以编写代码、测试、反思改进,实现迭代开发。

场景 4:创意写作

代理可以进行创意写作,记录创作过程,反思改进。

未来改进

  • 支持多个代理协同工作
  • 添加更多工具和命令支持
  • 实现持久化记忆系统
  • 支持更复杂的目标分解
  • 添加 Web UI 界面
  • 支持分布式运行

项目主页

更多信息请访问:vimalinx.xyz

在线体验

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

作者

Created with ❤️ by AI enthusiasts


Note: 这是一个实验性项目,用于探索自主 AI 代理的可能性。请谨慎使用,注意 API 成本。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published