[开源] 调 API 容易,做 Agent 难:轻量级 Agent 运行时底座

2 阅读4分钟

[开源] 调 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


它是什么?

image.png

你可以把它理解成一个可以独立部署的中台进程,放在 API 网关或 BFF 后面。你只要接入任意兼容 OpenAI 格式的 Chat Completions 接口,它负责接管:

  • 对话生命周期
  • 流式输出与工具编排
  • 记忆流转
  • 基础的安全护栏

它不是一个大而全的 SaaS 平台,也不是低代码拖拽工具。它是一个需要你编译、部署、调用的后端服务。


它解决了哪些具体问题?

image.png

1. ReAct 多轮工具调用

支持流式输出 + 工具循环,内置了熔断机制(最大轮次限制、连续工具失败拦截)。至少能避免模型在那儿一直转圈、一直调工具。

2. 分层记忆

image.png

  • 短期记忆(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 落地时最头疼的是哪一块?

可能下一个迭代就来自你的反馈。感谢观看。

传送门:github.com/DaoTianji/a…