gitagent
将 AI Agent 本身变成一个 Git 仓库,身份、规则、记忆、工具全部版本化管理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将 AI Agent 本身变成一个 Git 仓库,身份、规则、记忆、工具全部版本化管理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你正在开发一个复杂的多智能体 AI 系统,团队里每个成员对"AI 应该如何表现"都有自己的理解——有人希望 AI 保持专业克制,有人希望它更加主动积极,还有人要求它严格遵守安全边界。结果呢?Prompt 被分散写在几十个地方,规则改动靠聊天记录传递,每次换环境都要重新配置一遍。open-gitagent/gitagent 正是为解决这个痛点而生:它将 AI Agent 本身变成一个 Git 仓库,身份、规则、记忆、工具、技能全部以文本文件形式受版本控制——改一行 SOUL.md 就能切换人格,推一个 commit 就能同步团队所有人的 Agent 状态。
GitAgent 由 Shreyas Kapale(Lyzr Research Labs)主导开发,是一个将"AI Agent 版本化管理"理念落地的开源框架。它的核心洞察是:现有 Agent 框架(LangChain、AutoGPT、CrewAI 等)都将配置视为"代码中的散落常量",而 GitAgent 反其道而行——让 Agent 本身就是一个 Git 仓库。这一设计思路深受 GitOps 运动启发:如同 Terraform 用代码管理基础设施,GitAgent 用 Git 管理 AI Agent 的"灵魂"。
项目当前版本 2.0.0,TypeScript 开发,依赖 Node.js >= 20,采用 MIT 许可证。截至分析时 GitHub Stars 556 个,主题标签覆盖 ai-agents、anthropic、llm、openclaw 等,展现出明确的 Anthropic Claude API 集成方向。
每个 GitAgent 实例对应一个 Git 仓库,目录结构高度规范化:
agent.yaml # 模型选择、工具列表、运行时参数
SOUL.md # Agent 人格与身份定义(Markdown 格式)
RULES.md # 行为约束规则(如"修改前先读"、"危险命令需确认")
memory/ # 带时间戳的记忆存储,每次保存生成一个 git commit
tools/ # YAML 声明式工具定义
skills/ # 可组合的技能模块
agents/ # 子 Agent 定义(支持多 Agent 协作)
hooks/ # 生命周期钩子(脚本或程序化)
config/ # 环境配置(default.yaml + 环境覆盖)
这套结构的精妙之处在于:git log 就是记忆历史,git diff 就是规则变更记录,branch 就是人格分支。团队成员 fork 一个 Agent,就像 fork 一个微服务配置一样简单自然。
GitAgent 的代码分为两层:
CLI 入口层(src/index.ts):命令行参数解析(--dir、--model、--prompt、--voice、--sandbox 等),加载 Agent 配置,初始化内置工具集(cli、read、write、memory),注册生命周期 hooks,最终启动 REPL 或执行单次 prompt。
SDK 编程层(src/sdk.ts):提供 query() 流式调用接口,支持事件通道(Channel)推送 Agent 思考过程和工具调用结果,供上层应用(如 Web UI)消费。SDK 通过 OpenTelemetry 集成自动记录分布式追踪和 LLM 调用成本。
两层共享同一个核心加载器(src/loader.ts)和工具工厂(src/tool-factory.ts),确保 CLI 和 SDK 行为一致。
GitAgent 的工具加载采用声明式 + 编程式双轨制:
记忆系统(memory/)是该项目的亮点之一。Agent 与用户的每次交互结果可以持久化到 memory/MEMORY.md,保存操作触发一个 git commit。长期记忆压缩(src/compact.ts)模块负责定期合并历史记忆,防止上下文无限膨胀。这一机制让 Agent 具备"持续学习"能力——每次对话后学到的信息会固化为仓库历史,可在任何时候回溯。
src/agents.ts 实现了子 Agent 发现机制:从 agents/ 目录扫描 agent.yaml 或 .md 文件,解析 frontmatter 中的元数据,构建可用子 Agent 列表。父 Agent 可通过 CLI 工具调用子 Agent,形成类似CrewAI 的多 Agent 协作工作流,但配置方式完全是文件级的。
核心依赖方面,GitAgent 基于 @mariozechner/pi-agent-core 和 @mariozechner/pi-ai 构建,这是其底层 Agent 运行时。YAML 解析使用 js-yaml 和 yaml 两个库实现配置文件加载。@sinclair/typebox 提供运行时类型验证,替代 JSON Schema 的更轻量方案。
可观测性方面集成了完整的 OpenTelemetry 套件:SDK、OTLP 导出器(traces + metrics)、undici HTTP instrumentation,实现全链路追踪。node-cron 驱动定时任务(schedules/),支持 Cron 表达式调度 Agent 行为。
安装体验是 GitAgent 最被低估的优势。一条命令完成所有配置:
curl -fsSL https://raw.githubusercontent.com/open-gitagent/gitagent/main/install.sh | bash
安装脚本输出精心设计的 ASCII 图形 banner(用 bash 脚本绘制像素风图标),支持四种模式:Lyzr 云服务接入、语音 + 文本模式、纯文本模式、高级自定义。安装后默认启动 Web UI(localhost:3333),支持浏览器对话。CLI 模式也极其简洁——gitagent --dir ~/assistant 即可启动交互 REPL。
无 Docker 支持,也不提供容器化部署,这是目前最大的部署局限。但考虑到其定位是"个人/团队 AI 助手"而非服务端 API,install.sh 的体验已足够优雅。
GitAgent 的设计哲学也有其局限性需要注意:
无内置向量数据库:记忆系统基于纯文本文件,适合小规模对话记忆,但无法支撑 RAG(检索增强生成)场景。如果需要向量化知识库检索,需要自己扩展工具。
强依赖 Git:整个系统建立在 Git 之上,团队成员必须熟悉 Git 工作流。好处是版本控制能力极强,坏处是对非技术用户有较高门槛。
CLI-first 而非 API-first:虽然提供了 SDK,但主要使用场景还是 CLI。对需要构建生产级 HTTP API 的场景,需要自行包装 SDK。
多 Agent 协调依赖手工配置:子 Agent 的调用链路、任务分发策略都需要手动定义,不像 CrewAI 有内置的 Manager Agent 机制。
GitAgent 代表了 AI Agent 框架的一种新兴范式——"配置即代码"的 Agent 版本。随着 AI Agent 在企业场景落地,如何管理 Agent 的配置、记忆、规则将成为工程化挑战。GitAgent 用成熟的 Git 工具链来解决这个新兴问题,思路简洁但有效。它的增长轨迹(556 stars,持续维护)说明开发者社区对"Agent 可版本化管理"这一理念有真实需求。
该项目与 Hermes Agent 在架构理念上有高度共鸣:同样强调用文件定义 Agent 身份(SOUL.md vs 提示词工程),同样支持 CLI 和 SDK 双入口。可以预见,未来这类"Agent 即仓库"的框架会越来越多,形成 AI 时代的 GitOps 运动。