[开源] 调 API 容易,做 Agent 难:我用 Go 写了一个轻量级 Agent 运行时底座
做 Agent 应用时,调通大模型 API 往往是最简单的一步。真正费时间的是:
- 多轮工具调用怎么不死循环?
- 上下文和账单怎么不爆炸?
- 多租户怎么不串车?
- 记忆怎么不只是「把历史拼进 prompt」?
这些问题我思考了一阵子,最后用 Go 写了一个偏工程化的 Agent 运行时 —— Ascentia-Core。
👉 GitHub 仓库:github.com/DaoTianji/a…
说明:GitHub 默认展示英文 README,中文总览见
README.zh-CN.md,文档索引在docs/README.md。
它是什么?
你可以把它理解成一个可以独立部署的中台进程,放在 API 网关或 BFF 后面。你只要接入任意兼容 OpenAI 格式的 Chat Completions 接口,它负责接管:
- 对话生命周期
- 流式输出与工具编排
- 记忆流转
- 基础的安全护栏
它不是一个大而全的 SaaS 平台,也不是低代码拖拽工具。它是一个需要你编译、部署、调用的后端服务。
它解决了哪些具体问题?
1. ReAct 多轮工具调用
支持流式输出 + 工具循环,内置了熔断机制(最大轮次限制、连续工具失败拦截)。至少能避免模型在那儿一直转圈、一直调工具。
2. 分层记忆
- 短期记忆(STM) :基于 Redis 或内存,管理当前会话上下文。
- 长期记忆(LTM) :基于 PostgreSQL,支持每次对话前的旁路召回(Side Query)注入提示词。
- 异步后处理:回合结束后用小模型异步抽取关键信息,还有定时 Dream 任务对记忆碎片做合并、去噪。
- 细节可以看
docs/zh-CN/CAPABILITIES.md。
3. 上下文截断
按 Token 预算自动压缩历史对话,对过长的工具返回结果做截断。目的很直接:别把内存撑爆,也别收到天价账单。
4. Thinking 流剥离
含思维链的这类模型会输出 <thinking>...</thinking>,引擎可以在流式数据中把它剥离出来,方便前端把“思考过程”和“正式回复”分开展示。
5. 多租户隔离
数据流按 user_id + agent_id + session_id 维度隔离,不会串。
6. 上线相关
WebSocket 接入侧支持鉴权、Origin 校验、限流等配置。生产环境请务必读 docs/zh-CN/WS_SECURITY.md。
架构上坚持引擎与适配器分离
pkg/agent_core 里放的是纯状态机、Token 预算管理器、记忆管道等逻辑,零 HTTP / 零 DB 依赖。
所有网络入口、Redis、PG、NATS 等基础设施适配器都放在 internal/。
这样做的好处是:可读、可测,你也可以很干净地把核心逻辑 fork 出来换自己的存储层,而不是面对一堆胶水代码。
诚实说:它「不是」什么
避免预期错位,也节省大家时间:
- 不是开箱即用的 SaaS:没有完整前端、注册登录、计费后台。
- 不是 LangChain / Dify 那种低代码编排替代品:它需要你写代码调用、编译部署。
- 不是完整的企业级 API 网关:复杂的 IdP、OIDC、WAF 等建议还是放在边缘网关处理。
快速启动
git clone <https://github.com/DaoTianji/ascentia-core.git>
cd ascentia-core
cp .env.example .env
# 配置 ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_MODEL 等
go run ./cmd/ascentia-core/
默认 WebSocket 端点:ws://127.0.0.1:8080/ws(可用环境变量改端口与路径)。
调试阶段可以用 WS_AUTH_MODE=none,通过 query 参数带 user_id / agent_id 等连接;生产环境请务必按安全文档配置鉴权。
发帖原因
当前代码和文档,已经是我能稳定维护、负责任开源的一版。但它距离“生态成熟”还有明显距离:
- 测试覆盖不够
- 协议入口目前主要是 WebSocket(SSE/gRPC 在路线图里)
- 鉴权相关、评测 harness、MCP 协议支持等还未开发
我非常希望有经验的大佬,同志一起共建。你可以做的事包括但不限于:
- 补测试、修边界 case、性能与并发 review、安全 review
- 写教程、记录部署踩坑、文档润色(英文也行)
- 提真实业务场景里“难用 / 缺什么”的 issue
哪怕只是指出文档里某一句没说明白,也是很好的贡献。
参与方式见仓库里的 CONTRIBUTING.zh-CN.md,安全问题请走 SECURITY.md。
相关文档索引
| 内容 | 路径 |
|---|---|
| 中文首页 | README.zh-CN.md |
| 文档索引 | docs/README.md |
| 能力详解(记忆、反思等) | docs/zh-CN/CAPABILITIES.md |
| 架构与数据流 | docs/zh-CN/ARCHITECTURE.md |
| WebSocket 安全配置 | docs/zh-CN/WS_SECURITY.md |
也欢迎在评论区留言:你在 Agent 落地时最头疼的是哪一块?
可能下一个迭代就来自你的反馈。感谢观看。