别再把 Python Agent 写成 Demo 了!开源了一个能管理插件、记忆、事件、监控、取消的框架
本文是「Regnexe Python 实战系列」开篇(共 10 篇),系列文章会把 regnexe-py 仓库里 9 个可直接运行的示例(
examples/readme/01~09)逐一拆解。建议收藏,跟着代码一篇一篇跑下来。
先问自己一个问题
你现在写 Python Agent,是不是大概长这样:
agent = create_deep_agent(
model=model,
tools=[get_weather, get_air_quality, search_docs, query_order],
subagents=[travel_advisor, contract_checker],
)
原型阶段这样很好用:工具能调,模型能回,Demo 很快就能演示。
但只要它开始变成业务应用,问题就会一起冒出来:
- 工具越来越多,谁负责注册、分组、查询?
- 同一个用户的不同会话怎么区分?
- 上一次任务的结果,下一次能不能复用?
- 前端要展示“正在调用哪个工具”,事件从哪里来?
- 用户点了“停止”,后端 Agent 还在跑怎么办?
- DeepSeek、通义、OpenAI、Ollama 怎么统一切换?
问题不在于底层编排库不够好,而是 Demo 只证明“能跑”,业务应用还要继续解决插件、记忆、事件、身份、取消这些工程问题。
这就是我写 regnexe-py 的原因。
regnexe-py 是什么
一句话:regnexe-py 是一个面向应用落地的 Python Agent 框架。
它的重点不是再造一个 Demo,而是补齐 Agent 应用真正会用到的工程层:
业务插件 / Tool / Skill / Sub-Agent
│
▼
Marketplace 能力市场
│
▼
RegnexeAgentBuilder
│
▼
deepagents / LangGraph 运行时
│
▼
AgentResult + 事件 + 记忆 + 取消控制
你仍然可以用 LangChain 的 @tool,仍然可以用 deepagents 的能力模型;区别是 regnexe-py 会把这些能力放进一个更适合应用开发的结构里。
先看一个最简例子
安装:
pip install regnexe-py
配置模型 Key:
export DEEPSEEK_KEY=sk-...
export ALIYUN_KEY=sk-...
export OPENAI_API_KEY=sk-...
然后直接注册一个 LangChain tool,发起一次最简单的调用:
import asyncio
from langchain_core.tools import tool
from regnexe import ConsoleEventListener, RegnexeAgentBuilder, Vendor
@tool
def get_weather(city: str) -> str:
"""Get today's weather for a city."""
return "Beijing: sunny, 22 C, excellent air quality."
async def main() -> None:
agent = (
RegnexeAgentBuilder()
.with_default_model(Vendor.DEEPSEEK, "deepseek-v4-flash")
.with_tool(get_weather)
.with_event_listener(ConsoleEventListener())
.build()
)
result = await agent.ainvoke(
"Check today's weather in Beijing. Is it good for outdoor running?"
)
print(result.status)
print(result.final_text)
asyncio.run(main())
接上 ConsoleEventListener 之后,控制台能直接看到 Agent 在做什么:
[AGENT ▶] RegnexeAgent
goal: Check today's weather in Beijing. Is it good for outdoor running?
[TOOL ▶] mcp_tool:get_weather input={"city": "Beijing"}
[TOOL ■] mcp_tool:get_weather output=Beijing: sunny, 22 C, excellent air quality.
[AGENT ■] status=completed
这就是开篇想强调的核心:regnexe-py 不是让你多写一层包装,而是把工具、模型、事件和结果收进同一个应用入口里。多工具协作、工具选择和结果合并,下一篇再展开。
这套框架到底有什么能力?
接下来 9 篇文章,会按这个顺序拆仓库里的 examples/readme/:
| # | 主题 | 一句话 |
|---|---|---|
| 01 | with_tool 多工具入门 |
不建插件类,直接把 LangChain tool 接进 Agent |
| 02 | Skill vs Sub-Agent | Skill 借工具、继承模型;Sub-Agent 拥有私有工具和独立模型 |
| 03 | PluginDescriptor 打包 | Tool、Skill、Sub-Agent 统一变成能力描述符 |
| 04 | @plugin 装饰器 |
普通 Python 类一次注册工具、Skill、Sub-Agent |
| 05 | 目录加载 | plugin.yaml + SKILL.md 让能力脱离发版流程 |
| 06 | Marketplace | 能力市场可以替换成 DB / 配置中心 |
| 07 | 会话记忆机制 | 用 session_id 接住 LangGraph 上下文,跨 session 只做轻量任务摘要 |
| 08 | 可观测性 | LLM 调用、工具调用、Token 用量都能通过事件暴露 |
| 09 | 取消与继续 | acancel() 真的取消后端任务,不只是停前端流 |
每一篇都不是空对空讲概念,代码都来自仓库里的真实示例。
为什么不是“又一个 Agent Demo”
Demo 看的是“模型能不能调工具”。应用看的是“这套东西能不能长期维护”。
regnexe-py 解决的不是一次工具调用,而是这些更工程化的问题:
- 能力怎么注册、打包、查询、替换
- 用户、会话、应用身份怎么贯穿一次运行
- 任务结果怎么沉淀到后续会话
- 执行过程怎么暴露给日志、前端和监控
- 运行中的任务怎么被用户主动取消
- 多模型厂商怎么统一路由
小实验可以直接用 deepagents。只要 Agent 开始接业务插件、用户系统、审计日志、前端流式界面,regnexe-py 就有意义。
📌 项目地址:https://github.com/flower-trees/regnexe-py ,顺手点个 ⭐ 不迷路
📌 下一篇:01. 10 行代码跑通 LLM 多工具调用!不用插件、不建类,with_tool 直接上手
更多推荐




所有评论(0)