2 月份的朋友圈都被 OpenClaw 霸榜了,全世界都在“养虾”,各种玩法、各种接入、各种工作流分享刷屏。
看着 TypeScript 生态里各种“养虾底座”层出不穷;反观 Python 社区,大家要么在手搓一堆 if/else ,要么在和过度封装的沉重框架搏斗,实在有点冷清。
于是,我决定在开工第一天,正式开启 Python 圈的“养猪”事业——搞了个叫 pig-mono (🐷) 的开源项目。你可以把它理解成 pi-mono ( OpenClaw 的底座)在 Python 生态的对应版本。
GitHub 地址: https://github.com/kangkona/pig-mono (欢迎感兴趣朋友 Star 、提 Issues 、PR )
在我眼里,Agent 应用的核心早就不只是“写 prompt”了,而是要把它当成一个可迭代、可测试、可部署的工程系统。
这也是 pig-mono 最核心的设计理念:为 Python 开发者提供一套标准的 Agent Harness (智能体运行与测试底座)。
不搞黑盒魔法,而是像传统的测试/运行底座一样,把不可控的 LLM “大脑”,与可控的工具( Hands )、记忆( State )、环境( Environment )彻底解耦。它的目标是:
统一 LLM 访问层:同一套 API 接 14 家 Provider (含 OpenRouter 、Bedrock 、DeepSeek 等)。 提供完整的 Agent 运行时:工具注册、工具参数校验、消息历史、状态管理、异步执行……能跑、好调、可复用。 打通真实世界的“入口”:CLI Coding Agent 、Web Chat UI 、多平台消息机器人( Slack/飞书/TG 等)。 Monorepo 模块化沉淀:按需安装、按需组合,绝不强买强卖。 未来扩展更多可直接插拔的、框架无关的 Agent 能力组件
pig-mono 目前包含多个可独立安装的包(就像乐高积木): 包名
你会用它来做什么
pig-llm:统一 LLM API:complete/stream 、用量统计、失败重试/兜底等
pig-agent-core:Agent 运行时:工具系统、消息历史、状态保存/恢复、异步等
pig-coding-agent:交互式 Coding Agent CLI:读写文件、执行命令、重构、分析
pig-web-ui:Web Chat UI ( FastAPI )
pig-tui:终端 UI (更友好地交互/展示)
pig-messenger:多平台 Bot 框架:同一个 agent 接多消息平台
如果你只想要一个“好用、能换、支持流式”的 LLM 客户端,这是最轻量的入口。
安装:
pip install pig-llm
最小示例:
from pig_llm import LLM
llm = LLM(provider="openai", api_key="sk-...", model="gpt-4o-mini")
resp = llm.complete("What is the meaning of life?")
print(resp.content)
# 支持丝滑的流式输出
for chunk in llm.stream("Tell me a story"):
print(chunk.content, end="", flush=True)
支持 OpenAI / Anthropic / Google / DeepSeek / OpenRouter / xAI 等 14 家,也可自定义。
很多 Agent 写到最后变成了:一堆手写 JSON schema ,外加“不知道为什么又忘了上下文”的玄学 bug 。更可怕的是——根本没法做自动化 Evals 。
说实话,要在 Python 生态里做一个 100% 完美的 Harness 还有很长的路要走,但 pig-agent-core 从第一天的底层设计,就是奔着这个愿景去的。它帮你把“大模型的文字接龙”包装成一个输入输出高度确定、随时可以打断/恢复的状态机:
解耦执行:LLM 只负责思考,Harness 负责安全的工具调度和参数校验(基于 Pydantic )。
状态与记忆分离:对话历史和内部状态支持序列化存取,随时可以 dump 成 JSON 恢复。这使得针对 Agent 的单测和回归测试终于成为可能。
安装:
pip install pig-agent-core
定义工具(装饰器注册):
from pig_agent_core import Agent, tool
@tool(description="Get current weather for a location")
def get_weather(location: str) -> str:
return f"Weather in {location}: Sunny, 72°F"
把工具塞进 Agent 然后跑起来:
from pig_llm import LLM
agent = Agent(
name="WeatherBot",
llm=LLM(provider="openai"),
tools=[get_weather],
system_prompt="You are a helpful weather assistant.",
)
response = agent.run("What's the weather in Paris?")
print(response.content)
它还支持: 消息历史:多轮对话追踪 异步:async/await 状态保存/恢复:例如把会话存成 JSON ,之后继续跑 参数校验:也支持用 Pydantic 定义工具参数模型
这是我个人最想补齐的一块:入口的多样性。 很多团队的 Agent 不是给“网页用户”用的,而是要进入消息平台,成为团队协作流的一部分。pig-messenger 提供一个统一的 MessengerBot ,再通过 Adapter 连接不同平台: 安装:
pip install pig-messenger # 基础
pip install pig-messenger[slack] # 带 Slack
pip install pig-messenger[all] # 全平台
Slack Bot 示例:
import os
from pig_messenger import MessengerBot
from pig_messenger.adapters import SlackAdapter
from pig_agent_core import Agent
from pig_llm import LLM
agent = Agent(
llm=LLM(
provider="openrouter",
model="moonshotai/kimi-k2.5",
api_key=os.environ["OPENROUTER_API_KEY"],
),
)
bot = MessengerBot(agent)
bot.add_platform(
SlackAdapter(
app_token=os.environ["SLACK_APP_TOKEN"],
bot_token=os.environ["SLACK_BOT_TOKEN"],
)
)
bot.start()
多平台并行跑(示意):
from pig_messenger.adapters import SlackAdapter, DiscordAdapter, TelegramAdapter
bot = MessengerBot(agent)
bot.add_platform(SlackAdapter(...))
bot.add_platform(DiscordAdapter(bot_token=os.environ["DISCORD_BOT_TOKEN"]))
bot.add_platform(TelegramAdapter(bot_token=os.environ["TELEGRAM_BOT_TOKEN"]))
bot.start()
如果你想体验“Agent 在本地真实干活”,可以从 pig-coding-agent 开始。
安装:
pip install pig-coding-agent
启动交互式会话:
$ pig-code
你可以把它当作一个“会读写文件、能执行命令、会分析和重构”的编程助手。项目 README 里给了一些典型用法,例如:
pig-code gen "Create a FastAPI hello world app"
pig-code analyze main.py
pig-code refactor main.py "Add type hints"
5 分钟上手:从源码开发( Monorepo ) 如果你想参与开发或直接从源码跑起来:
git clone
cd pig-mono
# 安装开发依赖
pip install -e ".[dev]"
# 安装所有 packages (可编辑模式)
./scripts/install-dev.sh
# 跑测试
./scripts/test.sh
其实一开始想叫 py-mono (直白好懂,Python 版 pi-mono )。结果准备发包时发现名字在 PyPI 被占用了。
于是顺势改成了 pig-mono ,不仅顺理成章地开启了我的“养猪”事业,最重要的是,可以光明正大玩个谐音梗:
虾仁猪心( xiā rén zhū xīn )“
“虾人不是人,猪心却走心”, 就是这么离谱、但又很好记。 适合谁用? 我会把 pig-mono 推荐给三类人:
Python 主力军:想把类似 OpenClaw 的内核能力移植到自己业务系统里的人。
“反”重型框架者:不想被太重、太黑盒的 Agent 框架绑架,希望能像乐高一样自由扩展。
多端部署需求者:要把同一个 Agent 塞进飞书、Slack 、Discord ,甚至自研 IM 的团队
如果你觉得这个思路对你的胃口,欢迎去 GitHub 逛逛。领养一头你的专属赛博小猪(感兴趣朋友可以 Star 、提 Issues 、PR )!
项目地址: https://github.com/kangkona/pig-mono
也欢迎在评论区聊聊:你最想用 Agent 解决的“真实工作流”是什么?呼声高的场景,我直接用 pig-mono 写个可复用的示例发出来!