gongzhaoman

开源了一个自托管的 Agent 编排项目,不想再用拖拽画工作流了

  •  
  •   gongzhaoman · 8h 27m ago · 228 views

    最近把之前自己用的 Agent 编排项目开源了,地址在这里:

    https://github.com/gongzhaoman0426/agent

    先说背景。我折腾 Agent 有一段时间了,Dify 、LangGraph 这些都用过。能用,但有几个地方一直不太顺手:

    • 工作流要么在 UI 里拖,要么存数据库,改个逻辑不好 diff ,也不好 review
    • 工具扩展经常要改一堆配置,和代码脱节
    • 有些能力(比如定时任务、飞书表格)想接进去,得绕一圈

    所以这个项目走了一条比较「程序员向」的路:工作流、工具包、技能,全部用 TypeScript 代码定义,启动时自动同步到数据库。改逻辑就是改代码、提 PR ,和普通后端项目一样。

    它大概能干什么

    不是那种「上传文档就能聊天」的 demo ,更接近一个可自部署的小型 Agent 平台:

    • Agent 管理:配置 prompt 、挂载工具包,对话走 SSE 流式输出
    • 知识库 RAG:上传文件,pgvector 做向量检索,Agent 可以查
    • 工作流:事件链驱动(WORKFLOW_START → ... → WORKFLOW_STOP),用 @workflowId 装饰器注册,DSL 写在代码里
    • 工具包( Toolkit )@toolkitId 注册,启动时自动发现。内置了通用工具、知识库查询、工作流执行、飞书多维表格、定时任务等
    • 技能( Skill ):类似 Cursor Skill 的思路,Agent 按需 useSkill 读取指令,还能跑沙箱脚本
    • 聊天记忆:最近消息 + 跨 session 向量检索 + token 超阈值自动压缩摘要,不是简单截断历史

    技术栈

    前后端 monorepo ( pnpm ):

    • 后端:NestJS 10 + Prisma + PostgreSQL ( pgvector )
    • 前端:React 19 + Vite + Tailwind + shadcn/ui
    • LLM:LlamaIndex ,默认接 OpenAI (模型和 embedding 可配)
    • 认证:better-auth

    docker compose up -d 能起全套( Postgres + API + Web ),本地开发就 pnpm dev:api / pnpm dev:web

    几个我觉得还算有意思的设计

    1. 代码即配置

    工作流不是在前端创建的,而是在 apps/agent-api/src/workflow/workflows/*.workflow.ts 里继承 BaseWorkflow 写 DSL 。工具包、技能同理,装饰器 + 启动时 discovery ,跟 NestJS 模块注册的感觉差不多。

    2. Agent 无状态

    每次对话请求重新拉配置、实例化工具、创建 LlamaIndex agent 。不跨请求复用实例,部署和调试简单一些,代价是冷启动开销,目前还能接受。

    3. 定时任务

    Agent 可以通过工具创建 cron 任务,到点自动发消息给自己处理。比如「每天早上 9 点帮我整理待办」这种,不用另外挂个调度系统。

    现状和局限(说 honest 的)

    • 文档还在补,README 不算完善,建议直接看 CLAUDE.md 和代码结构
    • 工作流执行器用 new Function() 跑 step handler ,灵活但也要注意安全边界
    • 目前示例工作流和技能不多,飞书集成需要你自己配 token
    • 测试覆盖一般,生产用建议先自己跑一遍核心链路

    适合谁看

    • 想自托管 Agent ,又不想绑死在某个 SaaS 上的
    • 偏好「工作流/工具用代码管理、可版本控制」的
    • 已经在用 NestJS / LlamaIndex ,想找个可参考架构的

    不适合:想要零代码拖拽、开箱即用的企业级平台——这个方向不一样。

    想参与的话

    Issue 、PR 、Star 都欢迎。如果你也在做 Agent 编排,尤其是「代码优先 vs 可视化优先」这块,挺想听听你的做法和踩过的坑。

    仓库:https://github.com/gongzhaoman0426/agent

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   871 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:42 · PVG 02:42 · LAX 11:42 · JFK 14:42
    ♥ Do have faith in what you're doing.