用途
ActionD 是一款面向 AI 智能体的轻量级本地 CI/CD 引擎。它监听来自 LGH(Local Git Hub)的 Git 事件,并自动触发插件执行代码检查、测试、构建等任务。
主要能力
- 动态插件发现:插件通过 manifest.json 自动发现,无需修改代码。
- MCP 集成:内置 MCP 服务器,让 AI 助手直接查询和控制 CI/CD。
- 事件驱动:响应 git.push、git.tag 等 LGH 事件。
- Web 控制台:提供实时监控面板,默认地址 http://localhost:3000。
- 实时流式输出:通过 SSE(Server-Sent Events)输出实时日志。
- 热重载:无需重启即可重新加载插件。
- 端到端工作流:dev_cycle_run 一次调用完成 commit → CI → 结果。
- 回滚:失败时自动回滚到上一个提交。
- 失败诊断:内置失败模式识别,分析常见错误并给出修复建议(Go 侧实现,位于 internal/interpreter/failure.go)。
- 审批闸门:可通过 CLI
actiond approve <job_id>或 RESTPOST /api/actions/{id}/approve批准被阻止的任务。 - 结构化结果协议:插件可返回标准 ActionResult 结构,供下游决策闸门使用(如 Policy Gate 插件读取其他插件产生的信号)。
- 分层日志:面向不同受众提供不同格式的日志,含 AI 摘要格式。
核心概念
- Job:插件响应 Git 事件时产生的一次 CI/CD 执行记录。部分工具名(actiond_action_get、actiond_actions_list)沿用旧词 action,与 actiond_job_* 工具指同一对象。
- Plugin:通过 manifest.json 注册、在触发事件(git.push、git.tag)上运行的可执行单元;一次插件运行产生一个 Job。
- Profile:CI 范围预设(fast / full / release),控制每次 push 运行哪些插件。
安装与使用方式
环境要求
- macOS / Linux(Homebrew)
- LGH 本地运行(安装方式:
brew install JoeGlenn1213/tap/lgh) - Go 1.25+(仅从源码构建时需要)
- Python 3.8+(插件使用)
内置插件包(30+ 检查插件)已嵌入二进制文件。actiond setup 会将其释放到 ~/.localgithub/plugins,因此 Homebrew 或发布包安装与源码检出运行相同的检查,无需额外下载资源。Web 控制台可选:不安装控制台 API 仍可运行(见 actiond-web 或传入 --web-dir)。
从源码构建
ActionD 使用 SQLite 存储(纯 Go 的 modernc.org/sqlite 构建),无需 CGO,make build 可自由交叉编译。make release 默认当前主机平台,可通过 RELEASE_PLATFORMS="linux/amd64 linux/arm64 darwin/arm64" 覆盖。
一键设置(推荐)
首次运行使用 setup 安装内置插件包、检查依赖、创建目录结构并验证环境: (命令内容见原文) 重复运行 setup 是安全的:已安装插件和本地修改不会被覆盖(使用 --force 可重置为捆绑版本,--skip-plugins 可完全跳过安装)。设置完成后可顺便后台启动守护进程。
启动服务并检查
(命令内容见原文)
打开 Web 控制台
默认目录与自动检测:
- 插件目录按顺序探测:<二进制目录>/plugins → <工作目录>/plugins → ~/.localgithub/plugins
- Web 静态资源自动检测常见位置;推荐目标是将 ActionD-Web 的 out/ 发布到 ~/.localgithub/actiond-web/out
- 未显式指定 --repo-root 时,ActionD 先通过 LGH 映射解析仓库,再回退到当前目录语义。
一键设置(v1.2+)
自动完成:创建目录布局(~/.localgithub/*)、检查依赖(Git、Python、Go、Node)、检测 Web 资源和插件目录、验证 LGH 连接、运行 8 类分级检查(系统环境、依赖、服务状态、端口、目录、存储、插件)。结果分三级:FATAL(系统无法工作)、WARN(部分功能受影响)、INFO(仅信息)。 若 doctor 报告 Go 插件被禁用,可直接恢复。
动态插件发现(V1.0.7+)
零代码添加新插件:只需在插件目录创建 manifest.json。插件目录扫描顺序:系统插件 ./plugins/(二进制旁)、开发插件 ./plugins/(当前工作目录)、用户插件 ~/.localgithub/plugins/。
结构化结果协议 — ActionResult(v1.2+)
插件可打印 JSON 到 stdout,ActionD 自动解析并存储;也可写入 $ARTIFACT_DIR/result.json。
失败解释器(v1.2+)
内置失败模式识别,自动分析常见错误并建议修复。AI 侧推荐接口:MCP 工具 actiond_diagnose(job_id=...),返回根因和修复建议;HTTP 侧使用 REST API。
MCP 服务器集成
ActionD 内置 MCP(Model Context Protocol)服务器,让 AI 助手(如 Claude)直接查询和控制 CI/CD。启动 MCP 服务器可让 AI 通过 MCP 启动/停止/重启 ActionD 本身(需在启动前设置环境变量)。可用资源:actiond://status、actiond://plugins、actiond://actions。ActionD 使用标准 stdio 上的 MCP,任何支持 MCP 的客户端均可使用(Claude Desktop/Code、Cursor、ZCode、Windsurf 等)。
dev_cycle_run 端到端工作流(V1.0.8+)
dev_cycle_run 是聚合工具,一次 MCP 调用完成完整开发循环。验证为三态,仅 pass 时 success 为 true(与 actiond_run_report 相同的词汇和聚合规则):
- pass — 至少运行了一个 Job 且全部通过
- fail — 观察到至少一个 Job 失败
- unknown — 零 Job、CI 查询错误或超时;绝不算 pass Job 通过 LGH 事件 ID 关联到本次运行,或(回退)通过精确仓库名加提交 sha;旧提交或相似命名仓库的绿色 Job 绝不会被采纳为当前变更的验证。
配置与日志
- 运行时配置文件:~/.localgithub/actions/config.json
- 可通过配置禁用插件、覆盖触发器、添加自定义插件(无需 manifest.json)
- 分层日志(v1.2+)面向不同受众提供不同格式,含 AI 摘要格式
适用场景
- 本地开发环境中的 AI 智能体驱动 CI/CD
- 需要 AI 助手直接查询和控制 CI/CD 流程
- 需要自动回滚、审批闸门、失败诊断的持续集成
- 快速添加自定义检查插件而不修改引擎代码
限制与说明
- 需要本地运行 LGH
- Web 控制台为可选组件
- 从源码构建需要 Go 1.25+;插件运行需要 Python 3.8+
- 审批被阻止的 Job 没有 MCP 工具,需用 CLI
actiond approve <job_id>或 RESTPOST /api/actions/{id}/approve - 失败分析在 Go 侧实现(internal/interpreter/failure.go),没有 actiond Python 包
- 许可证:MIT(见 LICENSE)
- 相关项目:LGH(Local Git Hub)、actiond-web(Web 控制台 UI)