我自己写了一个轻量 AI Agent Runtime,欢迎来讨论

7 阅读1分钟

GitHub:https://github.com/chnynf/errand

一个轻量的个人 AI 助手 runtime,Python 实现,可以通过 Discord、CLI访问,支持工具调用、多模型切换、持久记忆。

关于AI和SAAS的看法

说AI要替代掉SAAS行业,但现在几个大厂都在卷的harness其实也是Software的一种吧。IDE卷成cursor和claude code,个人助手卷成了openclaw和hermes,manus。实际上我觉得在AI时代软件还是有很大意义的,就好比有内燃机电机,不代表车子不重要了,只是从马车变成了汽车,人还是需要一个系统去使用这个技术。

背景

但是AI时代有一个不同,就是编程的成本实实在在的降低了,很多人都能写APP,写harness,很多兴趣相同的网友都可以自己写一个自己工具,肯定是卷不过大厂,但是自己有自己对技术的品味和设计,在建的过程中学习积累也是不错的。

从我的角度讲,我想要一个能够不被一家公司框住的选择,同时能够像Openclaw和Hermes一样在手机端(我连的discord)随时访问,能调用自己的agent,自己的知识库,能记住对话上下文。同时我不想要龙虾那样巨大冗余的设计,我只要一个自己的轻量Python工具就好了。

所以我自己写了一个。就是一个练手产品,希望有一样兴趣的朋友可以一起来讨论参与。

Errand 是什么

一个练手的harness,但是已经挺好玩的了。

整个 runtime 的核心代码在几千行 Python 以内,结构如下:

errand/  agent_loop/    # think/act 主循环  brain/         # 模型路由 + 工具调用  tools/         # 工具插件(文件、email、调度、外部 agent...)  interfaces/    # Discord / CLI / Web 三个入口  sessions/      # 持久化记忆  scheduler/     # 定时任务  config/        # 配置加载

依赖关系是单向的,组件清晰,改一个不会牵连其他的。我加了一个web界面,未来想要把设置,test,状态报告都放里面。

怎么跑起来

git clone https://github.com/chnynf/errand.gitcd errandpython3 -m venv venv && source venv/bin/activatepip install -r requirements.txtcp .env.example .env        # 填入你的 API keycp config.example.json config.json   # 按注释改路径python -m errand --debug

默认启动 Discord + Web 界面(不能用来chat)。只想用命令行的话:

python -m errand --debug --interface cli

API key 支持 Gemini、DeepSeek、SiliconFlow 等,通过 LiteLLM 路由,换模型改 `config.json` 里的 `model_strategy` 就好,不动代码。

几个设计选择

知识库和 runtime 分离

agent 的"人格"和领域知识放在 repo 外部的 Markdown 文件里(叫 KB),runtime 只管执行,不包含任何个人内容。这样 KB 可以私有,runtime 可以开源,互不干扰。

"shared_soul": "~/my-kb/SOUL.md","agent_profile": "~/my-kb/generalist/INDEX.md"

模型切换不改代码

所有模型通过 LiteLLM 统一路由,`model_strategy` 是一个优先级列表,一个 model 失败自动 fallback 到下一个。新增一个模型只需要在 `config.json` 的 `models` 里加一条。

工具调用是原生的

agent loop 直接走 function calling,不做 JSON fallback 这类兼容方案。能用 native tools 的模型才会被选中。

多 agent 支持

可以配置多个 Errand 内部 agent(比如 `analyst`),也可以把外部 CLI agent(Claude Code、Cursor)配进来,主 agent 可以把任务 delegate 出去。

现在的状态

能用但还粗糙。我自己每天在用,主要通过 Discord 给它发指令回答一些日常问题(用的duckduckgo免费搜索)。

工具这方面还都没有写的很好:文件读写、邮件、Notion 任务、网页研究、命令行执行、定时任务、多 agent 委托。

测试覆盖了核心路径(brain、tools、config、sessions),但还不全。

主要是想看看有没有人有类似的兴趣,或者对某个设计有不同看法。这类轻量 agent harness 大家都可以做,做法各异,所以大家一起讨论。

如果你 clone 下来跑出了问题,或者觉得某个地方设计有问题,欢迎开issue 或者评论区说。Star当然也欢迎。下一篇我会讲讲几个关于结构的想法和下一步要加的东西。

GitHub:https://github.com/chnynf/errand