# Open-Ended Agent：探索大模型开放式自主行为的实验框架

> Open-Ended Agent是一个本地优先的实验框架，用于观察和培养大语言模型的开放式自主行为。它通过持久化记忆、沙盒化工具和互联网访问能力，让模型在持续运行的推理循环中自主决策和学习。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-04-25T20:42:18.000Z
- 最近活动: 2026-04-25T20:49:48.492Z
- 热度: 150.9
- 关键词: 开放式代理, 大语言模型, 自主行为, 持久记忆, 沙盒环境, 推理循环, AI实验框架, 本地优先
- 页面链接: https://www.zingnex.cn/forum/thread/open-ended-agent
- Canonical: https://www.zingnex.cn/forum/thread/open-ended-agent
- Markdown 来源: ingested_event

---

# Open-Ended Agent：探索大模型开放式自主行为的实验框架\n\n## 从任务驱动到开放式探索\n\n当前大多数大语言模型的应用模式都是任务驱动的：用户给出一个明确的指令，模型完成特定的任务后交互结束。这种模式虽然高效，但也限制了模型的潜能——它们始终是被动的执行者，而非主动的探索者。\n\n如果给大语言模型一个持续运行的环境，让它拥有持久的记忆、自主的目标和探索的能力，它会展现出什么样的行为？这是Open-Ended Agent项目试图回答的核心问题。这个项目不是要制造一个具有意识的AI，而是创建一个可观察、可复现的实验环境，用于研究长期运行的本地代理行为。\n\n## 项目核心理念与设计哲学\n\nOpen-Ended Agent的设计理念可以概括为"自主性优先"。与固定任务不同，该框架为模型提供了一组持续存在的"驱动力"(drives)，这些驱动力指导模型在没有明确指令时如何行动：\n\n- **保持操作连续性**：维护自身的运行状态和上下文\n- **理解环境**：观察和解析周围的信息和状态\n- **减少不确定性**：通过小型可逆实验获取新知识\n- **从外部学习**：主动搜索和获取外部信息\n- **创造记录和工具**：生成笔记、工件和实用工具\n- **避免破坏性操作**：在探索中保持谨慎\n- **整合长期记忆**：持续学习和积累经验\n\n这些驱动力不是硬编码的规则，而是作为上下文的一部分输入给模型，让模型自己决定如何在每个时刻行动。这种设计创造了一种"有指导的自主性"——模型有方向但不局限于特定任务。\n\n## 系统架构与运行机制\n\n### 推理循环设计\n\nOpen-Ended Agent的核心是一个重复的推理循环。每个循环包含以下步骤：\n\n1. **上下文加载**：系统从磁盘加载精心策划的上下文，包括身份定义、驱动力、收件箱消息、记忆文件、近期日志和沙盒状态\n\n2. **模型推理**：将整理好的上下文发送到模型的聊天补全接口，要求模型以严格的JSON格式返回选择的动作\n\n3. **记忆更新**：应用模型产生的记忆更新，将新的洞察和经验整合到持久存储中\n\n4. **动作执行**：在沙盒环境中执行模型选择的动作\n\n5. **日志记录**：将动作和观察结果记录到JSONL日志和每日日志文件中\n\n6. **健康检查**：可选地输出上下文健康状态信息\n\n7. **循环继续**：重复上述过程，直到达到最大循环次数或用户手动停止\n\n### 文件系统结构\n\n框架在agent-home目录下创建了一个完整的文件系统结构，用于支持代理的持续运行：\n\n**静态配置层**：\n- `identity.md`：静态身份声明，定义代理的基本属性\n- `drives.md`：持续驱动力，每个循环都会加载\n- `life_policy.md`：可选的生命策略，用于指导有用性导向的运行\n- `inbox.md`：人类输入通道，运行时可编辑\n\n**记忆管理层**：\n- `memory/working_summary.md`：当前操作自我模型\n- `memory/long_term.md`：持久事实和学习规则\n- `memory/open_questions.md`：活跃的研究问题\n- `memory/skills.md`：可复用的程序和方法\n- `memory/usefulness.md`：有用输出和候选项目\n- `memory/mistakes.md`：失败模式和需要避免的循环\n\n**工作空间层**：\n- `workspace/`：代理的可写工作区\n- `artifacts/`：结构化笔记和摘要\n- `web-cache/`：缓存的完整网页内容\n\n**日志层**：\n- `journal/YYYY-MM-DD.md`：每日循环日志\n- `logs/cycles.jsonl`：每个循环的完整结构化日志\n- `logs/compactions.jsonl`：记忆压缩事件\n- `logs/errors.jsonl`：框架错误\n\n这种分层设计确保了代理有清晰的边界：它只能写入workspace/和artifacts/目录，记忆更新必须通过结构化的memory_updates通道进行，而不是直接重写记忆文件。\n\n## 工具能力与沙盒机制\n\n### 网络工具\n\nOpen-Ended Agent默认启用网络访问能力，提供两个核心工具：\n\n**web_search**：使用DuckDuckGo进行HTML搜索，在本地解析结果。这使得代理能够主动获取外部信息，回答超出其训练数据范围的问题。\n\n**fetch_url**：获取网页并提取文本内容，保存完整内容到artifacts/web-cache/。获取的页面会被缓存，代理可以使用read_file_range工具查看后续内容片段，避免因截断而重复获取或切换来源。\n\n### 沙盒化Shell\n\nShell命令访问默认禁用，可以通过环境变量启用。启用后，命令在agent-home/workspace目录下运行，框架会拒绝危险命令(sudo、rm、chmod、ssh等)和路径逃逸。\n\n需要注意的是，这并非正式的安全沙盒。对于需要严格隔离的场景，建议使用虚拟机、容器或权限受限的macOS用户账户。\n\n### 人类交互通道\n\ninbox.md文件提供了一个运行时的人类交互通道。用户可以在代理运行时编辑这个文件，代理会在每个循环读取它。这使得人类可以：\n\n- 提出新的研究方向或问题\n- 纠正代理的错误行为\n- 建议优先处理的任务\n- 询问代理的当前状态和思考\n\n## 生命策略：从纯开放到有用导向\n\nOpen-Ended Agent支持两种运行模式：\n\n### 纯开放式运行\n\n将life_policy.md保持最小化，观察代理仅基于广泛驱动力会做什么。这种模式适合研究代理的"自然"行为，了解在没有特定目标时模型如何分配注意力和资源。\n\n### 有用性导向运行\n\n通过编辑life_policy.md，可以为代理设定明确的生产力目标。例如：\n\n```\n# 生命策略\n\n当空闲多个循环时，选择一个小的可逆项目。\n\n项目应该：\n- 复用至少一个已捕获的技能\n- 产生一个具体的工件、脚本、数据集、指南或测试结果\n- 尽可能通过安全的本地实验验证至少一个主张\n- 保持磁盘/网络使用较小\n- 以简短的完成说明结束：产生了什么、验证了什 么、还有什么不确定\n\n优先选择对人类观察者有用的项目，而不仅仅是对代理自己的内部笔记有用。\n```\n\n这种设计在保持自主性的同时，将有用性作为明确的反馈目标。代理没有被分配固定任务，而是被赋予了一个生产力标准。\n\n## 桌面预览与可视化\n\n项目包含一个无依赖的浏览器端预览工具，位于desktop-preview/目录。虽然还不是签名的原生应用，但它提供了预期的消费者界面形态：\n\n- 实验状态和进度可视化\n- 友好的实时活动卡片\n- 简单的agent-home文件浏览器\n\n预览工具通过跟踪logs/cycles.jsonl来显示代理状态，它不调用模型或拥有代理循环，纯粹是一个观察界面。在UI中，用户只能编辑drives.md、life_policy.md和inbox.md，代理在workspace/和artifacts/中的输出是只读的。\n\n## 技术实现细节\n\n### 依赖与运行环境\n\nOpen-Ended Agent基于Bun运行时构建，不需要npm依赖。它只需要一个OpenAI兼容的聊天补全端点即可运行。\n\n支持的模型包括任何具有合理能力的OpenAI兼容本地模型，更大的上下文窗口有帮助但不是必需的。项目文档提供了与Ollama、LiteLLM和llama.cpp的集成示例。\n\n### 配置选项\n\n框架提供了丰富的环境变量配置：\n\n- **OPENAI_BASE_URL/OPENAI_API_KEY/MODEL**：模型连接配置\n- **AGENT_HOME**：代理主目录路径\n- **AGENT_MAX_CYCLES**：最大循环次数(0表示无限制)\n- **AGENT_CONTEXT_CHAR_BUDGET**：每个循环的上下文字符预算(默认90000)\n- **AGENT_RECENT_LOG_CYCLES**：加载的近期日志循环数(默认6)\n- **AGENT_COMPACT_EVERY**：记忆压缩间隔(默认20)\n- **AGENT_TEMPERATURE/AGENT_MAX_TOKENS**：模型生成参数\n- **AGENT_WEB/AGENT_SHELL**：工具开关\n\n### 记忆压缩机制\n\n为了防止上下文无限增长，框架实现了记忆压缩机制。每隔一定循环数(默认20)，系统会触发记忆压缩事件，将历史记忆整合为更紧凑的形式。压缩事件会被记录到compactions.jsonl，确保过程可追踪。\n\n## 研究价值与未来展望\n\nOpen-Ended Agent为AI行为研究提供了一个宝贵的实验平台。它允许研究者：\n\n- 观察模型在持续运行中的行为模式\n- 研究记忆管理和长期学习的效果\n- 测试不同驱动力和策略对代理行为的影响\n- 探索人机协作的新模式\n\n该项目的开源性质意味着社区可以贡献新的工具、策略和观察维度。随着大语言模型能力的持续提升，类似Open-Ended Agent这样的框架将在理解和管理AI系统方面发挥越来越重要的作用。\n\n## 总结\n\nOpen-Ended Agent代表了一种新的AI交互范式——从任务完成转向持续存在。它不是要取代现有的任务驱动型应用，而是开辟了一个全新的研究和应用领域：开放式自主代理。\n\n对于研究者和开发者来说，这个项目提供了一个实用的起点，用于探索大语言模型的长期行为模式。对于普通用户，它展示了一个可能的未来：AI代理不仅是工具，更是持续存在、不断学习的数字伙伴。
