使用Python打造一个极简OpenClaw Agent

 更新时间:2026年03月18日 09:17:50   作者:robot_learner  
如果你关注过 OpenClaw 这个项目,可能会觉得它功能完整但结构相对复杂,而且不是用 Python 实现,很多开发者想用全 Python 实现,因此本文给大家介绍了如何使用Python打造一个极简OpenClaw Agent,需要的朋友可以参考下

如果你关注过 OpenClaw 这个项目,可能会觉得它功能完整但结构相对复杂,而且不是用 Python 实现。

对于很多想快速搭建一个 本地运行的 Discord AI 助手 的开发者来说,可能更希望有一个:

  • 架构更简单
  • 全 Python 实现
  • 不需要自己封装 OpenAI API
  • 本地运行即可

这时候,我非常推荐看看这个项目:

openclaw-mini
Repo: https://github.com/robotlearner001/openclaw-mini

它是一个 OpenClaw 风格的“极简版本”,专注在一个清晰的路径上:
Discord + 本地 Codex CLI + Markdown 驱动的行为定义。

openclaw-mini 是什么?

openclaw-mini 是一个最小可用的 OpenClaw 风格 Agent,专注做三件事:

  • ✅ 使用 Discord 作为输入输出通道
  • ✅ 使用本地 Codex CLI 执行模型推理
  • ✅ 使用 SOUL.md + skills/*.md 定义行为

没有复杂的多 Agent 管理,没有庞大的中间层抽象。

它的核心目标是:

做一个你能在一个下午完整读懂的 AI Agent 架构。

它的运行机制:非常干净的一条主线

读过代码之后,你会发现整个控制流非常清晰。

1️⃣ 启动入口:main.py

  • 加载环境变量
  • 启动 Discord 客户端

没有额外框架,没有复杂生命周期管理。

2️⃣ bot.py:处理消息

当收到 Discord 消息时:

  • 过滤 bot 自己发的消息
  • 处理内置命令:
    • /help
    • /skills
    • /soul

如果不是命令,则进入模型处理流程。

3️⃣ 构造提示词(Prompt 拼接)

普通消息会被封装为一个完整 instruction,包含:

  • SOUL.md 的内容(Agent 的人格和行为原则)
  • skills/*.md 的所有技能卡片内容
  • 用户原始消息

它的思路是:

用 Markdown 驱动行为,而不是在代码里写大量逻辑。

这是一种非常干净的“提示工程驱动架构”。

4️⃣ llm.py:调用本地 Codex CLI

这里是最有意思的设计。

不在 Python 里直接调用 OpenAI API
而是调用:

codex exec --json --output-last-message

然后读取模型的最终输出。

也就是说:

  • Python 只负责 I/O 和流程
  • 模型会话由 Codex CLI 管理
  • 对话状态由 Codex CLI 线程维护

本地 Codex 会话的设计:非常聪明

每一个 Discord 会话会映射到一个:

✅ 持久化 Codex thread ID

线程信息保存在:

.codex-discord-sessions.json

并支持:

  • TTL 过期控制(CODEX_SESSION_TTL_SEC
  • 超时自动重建
  • 会话持续上下文

这样做的好处是:

✅ 不需要自己实现对话历史拼接
✅ 不需要维护 token 限制逻辑
✅ 不需要管理复杂的 API session

全部交给 Codex CLI。

为什么这个设计很实用?

对于个人开发者或小团队,这种架构有几个明显优势:

✅ 1. 可读性极高

整个代码量很小,逻辑线性。

你可以在一个晚上完全理解:

  • 消息如何进来
  • Prompt 如何构造
  • 模型如何调用
  • 会话如何持久化

✅ 2. 本地迭代极快

你只需要:

  1. 安装 openAI Codex CLI
  2. 配置 Discord Token
  3. 修改 Markdown 文件

改完 SOUL.md 或某个 skill 文件,重启即可生效。

✅ 3. 运维非常轻量

项目已经包含:

  • systemd 模板
  • launchd 模板
  • 环境变量控制参数:
    • CODEX_SANDBOX
    • approval 策略
    • 超时时间
    • 模型选择

这意味着:

它是“最小可生产部署”的结构。

它适合什么人?

如果你想做:

  • 🎯 一个 Discord 专用 AI 助手
  • 🧠 一个本地可控的 Agent
  • 🛠 一个可以完全理解其内部机制的系统
  • 🐍 一个纯 Python 技术栈项目

那么 openclaw-mini 是非常合适的起点。

和完整 OpenClaw 的区别

对比项OpenClawopenclaw-mini
架构复杂度
语言非 Python✅ Python
多 Agent 支持简化
上手难度偏高✅ 非常友好
适合人群进阶构建者✅ 快速原型开发者

如果你觉得 OpenClaw 太重、太抽象、太工程化,
openclaw-mini 是一个非常好的“轻量入口”。

总结

openclaw-mini 做了一件很聪明的事情:

把复杂性留给 Codex CLI,把结构简化到最小。

Discord 负责输入输出,
Markdown 负责行为定义,
Codex 负责推理,
Python 负责连接。

这是一种非常“Unix 哲学”的设计方式:
每个组件做好一件事。

如果你正在考虑做一个本地 AI Discord Agent,
我建议从它开始,而不是一上来就搭一个复杂框架。

Repo

https://github.com/robotlearner001/openclaw-mini

如果你已经在用 OpenClaw 或在做自己的 Agent 框架,也欢迎交流思路。
极简架构,有时候反而是最强的起点。

以上就是使用Python打造一个极简OpenClaw Agent的详细内容,更多关于Python打造OpenClaw Agent的资料请关注脚本之家其它相关文章!

相关文章

  • python对RabbitMQ的简单入门使用教程

    python对RabbitMQ的简单入门使用教程

    RabbitMq是实现了高级消息队列协议(AMQP)的开源消息代理中间件,下面这篇文章主要给大家介绍了关于python对RabbitMQ的简单入门使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 如何解决.cuda()加载用时很长的问题

    如何解决.cuda()加载用时很长的问题

    这篇文章主要介绍了如何解决.cuda()加载用时很长的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python进程池和线程池的区别

    python进程池和线程池的区别

    本文主要介绍了python进程池和线程池的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • python实现xml转json文件的示例代码

    python实现xml转json文件的示例代码

    这篇文章主要介绍了python实现xml转json文件的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • python将文本分每两行一组并保存到文件

    python将文本分每两行一组并保存到文件

    这篇文章主要介绍了python将文本分每两行一组并保存到文件,需要的朋友可以参考下
    2018-03-03
  • Python面向对象封装操作案例详解 II

    Python面向对象封装操作案例详解 II

    这篇文章主要介绍了Python面向对象封装操作,结合案例形式详细分析了Python面向对象在游戏中封装角色的属性、动作相关原理与使用技巧,需要的朋友可以参考下
    2020-01-01
  • Pytorch中求模型准确率的两种方法小结

    Pytorch中求模型准确率的两种方法小结

    这篇文章主要介绍了Pytorch中求模型准确率的两种方法小结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 安装python时MySQLdb报错的问题描述及解决方法

    安装python时MySQLdb报错的问题描述及解决方法

    这篇文章主要介绍了安装python时MySQLdb报错的问题描述及解决方法,需要的朋友可以参考下
    2018-03-03
  • Python并发编程之进程间通信原理及实现解析

    Python并发编程之进程间通信原理及实现解析

    这篇文章主要为大家介绍了Python并发编程之进程间通信原理及实现解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python3.8中如何使用print打印变量

    Python3.8中如何使用print打印变量

    这篇文章主要介绍了Python3.8中如何使用print打印变量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论