acornops/acornops
GitHub: acornops/acornops
AcornOps 是一个开源自托管的 AI 辅助运维平台,通过出站 Agent 和受控的 LLM 工作流帮助运维团队在 Kubernetes 和 Linux 环境中进行引导式调查、受控修复和运维自动化。
Stars: 11 | Forks: 1
AcornOps
开源、自托管的 AI 辅助运维平台,适用于 Kubernetes 集群和 Linux/systemd 虚拟机。
体验在线演示 · 自托管 AcornOps · 阅读文档 · 构建集成
AcornOps 通过出站目标 Agent 将中央运维平台连接到 Kubernetes 集群和 Linux/systemd 虚拟机。运维人员可以在单一管理控制台中检查实时目标上下文、运行引导式调查、协调受控修复,并自动化可重复的运维工作。 该平台确保运维人员始终拥有控制权: - AgentK 和 AgentV 发起到控制平面的出站连接。 - Linux/systemd 内置工具为只读模式。 - Kubernetes 写入操作需要显式的 RBAC、Agent 授权、运行许可和工具访问权限。 - 默认情况下需要进行写入确认,并在执行特定支持写入的工具调用之前暂停当前运行。 - LLM 网关强制执行基于运行范围的模型与工具访问权限、运行时限制和预算。 - 远程 MCP 服务器基于目标范围且采用发现优先原则;发现的工具在经过审查和启用之前将保持禁用状态。 从[公开演示](https://console.demo.acornops.dev/)开始,遵循[快速入门](https://docs.acornops.dev/quickstart),或查看[系统架构](docs/system-architecture.md)。 ## 仓库结构 AcornOps 被拆分为多个独立版本的组件,它们之间具有明确的契约。 | 仓库 | 职责 | | --- | --- | | [`management-console`](https://github.com/acornops/management-console) | 面向工作区、目标、运行、Agent、工作流、审批和工具的浏览器界面 | | [`control-plane`](https://github.com/acornops/control-plane) | 身份验证、工作区 API、目标注册、运行状态、webhooks 和 Agent 协调 | | [`execution-engine`](https://github.com/acornops/execution-engine) | 持久化运行执行、流式事件、重试、取消和工具协调 | | [`llm-gateway`](https://github.com/acornops/llm-gateway) | 模型提供商路由、MCP 代理、密钥和策略执行 | | [`agentk`](https://github.com/acornops/agentk) | 出站 Kubernetes 发现、快照、日志和受控的工具执行 | | [`agentv`](https://github.com/acornops/agentv) | 出站 Linux/systemd 快照、日志和只读内置工具 | | [`acornops-deployment`](https://github.com/acornops/acornops-deployment) | Docker Compose 和 Kubernetes 部署轨道、兼容性元数据和 runbook | | [`charts`](https://github.com/acornops/charts) | 用于打包平台和 Agent chart 的公共 Helm 仓库镜像 | | [`docs-website`](https://github.com/acornops/docs-website) | 公共的运维、部署、集成、架构和 API 文档 | ## 开发 AcornOps 本仓库也是跨独立版本 AcornOps 仓库进行工作的开发者入口。它管理工作区清单、设置助手、共享技能、共享 GitHub 模板以及跨仓库文档。产品仓库作为被忽略的子目录检出,并保持独立版本控制。 ## 工作区模型 AcornOps 使用三层结构: 1. 本仓库中的工作区测试框架 (harness)。 2. 提交到每个独立产品仓库的本地仓库测试框架。 3. 验证跨仓库契约的平台和集成检查。 设置工作区或检查仓库状态时请从这里开始。 特定于 Agent 的操作规则位于 [AGENTS.md](AGENTS.md);`CLAUDE.md` 导入了该文件,因此面向 Agent 的指令集中在一处。 ## Agent 辅助开发 该工作区结构专为人类和 Agent 辅助开发而设计。使用 Codex、Claude Code 或其他编程 Agent 时,为获得最佳效果,请从工作区根目录启动 Agent。根目录包含工作区清单、共享 Agent 指南、验证助手以及帮助 Agent 协调子仓库变更的跨仓库工作流规则。 对于单一仓库的工作,Agent 在编辑文件之前,仍应阅读该子仓库的 `AGENTS.md`。 ## 归属此处的内容 - 工作区设置助手 - AcornOps 仓库中使用的共享 Agent 技能 - 工作区清单和仓库能力摘要 - 用于共享技能、GitHub 模板和 Git hook 的同步工具 - 跨仓库测试框架和契约检查 - 中立于供应商的交接和 Conventional Commit 策略 ## 保留在各产品仓库中的内容 - 服务源代码和测试 - 特定于仓库的 `AGENTS.md` - 架构和产品文档 - 该仓库拥有的契约清单 - CI 工作流和本地验证入口点 - `.agents/skills/local` 下特定于仓库的本地技能 - 特定于服务的 runbook、迁移和发布说明 - 特定于仓库的标签和 GitHub 工作流密钥 ## 仓库布局 ``` acornops/ AGENTS.md CLAUDE.md workspace.yaml .githooks/ .github/ ISSUE_TEMPLATE/ PULL_REQUEST_TEMPLATE/ .agents/skills/shared/ docs/ agent-harness/ scripts/ docs-maintenance/ harness/ sync/ workspace/ *.mjs lib/ change-sets/ acornops-deployment/ # ignored child repo for deployment and operations control-plane/ # ignored child repo for the control plane API docs-website/ # ignored child repo for public Mintlify docs execution-engine/ # ignored child repo for run execution agentk/ # ignored child repo for the Kubernetes AgentK runtime agentv/ # ignored child repo for Linux/systemd AgentV work llm-gateway/ # ignored child repo for model and MCP brokering management-console/ # ignored child repo for the browser console platform-admin-console/ # ignored child repo for platform governance charts/ # ignored child repo for the public Helm chart repository ``` 此父仓库故意忽略子仓库。请勿从工作区仓库暂存或提交产品仓库的内容。 ## 快速入门 克隆工作区: ``` git clone https://github.com/acornops/acornops.git cd acornops ``` 设置工作区: ``` task setup ``` `task setup` 通过 HTTPS 从 `workspace.yaml` 克隆缺失的子仓库,将现有的匹配 GitHub 远程仓库标准化到工作区清单,然后检查本地工具、子仓库远程链接、工作区状态和共享 Git hook 配置。 了解平台: - [系统架构](docs/system-architecture.md) 解释了 AcornOps 组件、运行时流和仓库所有权是如何组合在一起的。 - [`workspace.yaml`](workspace.yaml) 列出了每个子仓库、本地路径、远程链接、默认分支和验证命令。 在运行设置之前预览克隆操作: ``` task workspace:bootstrap -- --dry-run ``` 如果尚未安装 Task,请直接使用底层脚本: ``` ./scripts/workspace/bootstrap.mjs ./scripts/workspace/doctor.mjs ``` 依赖项安装和服务启动仍保留在本地仓库中,因为每个产品仓库都有自己的运行时。引导完成后,请阅读受影响子仓库的 README 和 `workspace.yaml` 中的验证命令。 更多详情:[开发者快速入门](docs/developer-getting-started.md)。 ## 日常维护 检查父仓库和子仓库状态: ``` task workspace:status ``` 获取远程引用而不更改本地分支: ``` task workspace:fetch ``` 仅对默认分支上干净的仓库进行快进 (fast-forward) 合并: ``` task workspace:update ``` `task workspace:update` 会跳过有本地更改的仓库、不在默认分支上的仓库、有未推送提交的分支以及具有分歧历史的仓库。 为父仓库和子仓库配置由工作区管理的 Git hook: ``` task hooks:setup ``` 共享 hook 会运行确定性的本地检查,并在失败时打印相关的修复建议。Hook 行为记录在[同步](docs/agent-harness/sync.md)中。 ## 验证 ``` task validate ``` `task validate` 运行工作区测试框架和跨仓库检查。 提交主题和 Pull Request 标题遵循 [Conventional Commits](docs/agent-harness/conventional-commits.md)。 ## 协调变更 对于涉及多个产品仓库的变更: - 从 `workspace.yaml` 中确定受影响的仓库 - 将产品代码更改保留在子仓库中 - 当工作跨越多个仓库时,将协调工作记录在 `change-sets/` 中 - 为每个受影响的仓库准备验证证据 - 链接相关的 PR,并在更改相互依赖时包含合并顺序 面向 Agent 的工作流细节和助手脚本的使用应包含在 [AGENTS.md](AGENTS.md) 和共享技能工作流中,而不是此开发者 README 中。 更多详情: - [变更集](change-sets/README.md) - [仓库能力摘要](docs/agent-harness/repository-capability-summary.md) - [Agent 交接策略](docs/agent-harness/agent-handoff-policy.md) - [文档维护](docs/agent-harness/docs-maintenance.md) - [跨仓库技能工作流](.agents/skills/shared/cross-repo-change/workflow.md) ## 共享技能 共享技能在此工作区中进行维护,并在共享 Agent 指南发生更改时同步到子仓库中。 首先预览更改: ``` ./scripts/sync/shared-skills.sh --dry-run ``` 有意应用更改: ``` ./scripts/sync/shared-skills.sh ``` 同步命令仅更新已配置子仓库中的 `.agents/skills/shared` 和 `.agents/skills/README.md`。它从不覆盖 `.agents/skills/local`。 父工作区不保留 `.agents/skills/local` 目录。工作区技能默认共享;子仓库保留其各自的本地技能。 ## Claude 设置 共享的 `.claude/settings.json` 在此工作区中进行维护,并在发生更改时同步到子仓库中: ``` ./scripts/sync/claude-settings.sh --dry-run ./scripts/sync/claude-settings.sh ``` 同步仅复制 `.claude/settings.json`。它从不同步特定于机器的 `.claude/settings.local.json`,也从不删除子级拥有的 `.claude` 文件。 ## GitHub 模板 工作区拥有的 Pull Request 和 Issue 模板位于 `.github/` 下,以便父仓库可以直接使用它们。它们也可以同步到已配置的子仓库中: ``` ./scripts/sync/github-templates.sh --dry-run ./scripts/sync/github-templates.sh ``` GitHub 模板同步仅复制白名单中的 Issue 和 Pull Request 模板文件。它不会触及子仓库的工作流,也不会删除子级拥有的 `.github` 文件。共享的 Issue 模板有意不设置默认标签;标签是特定于仓库的,应在需要时在每个子仓库内部进行配置。标签:AIOps, Linux运维, 人工智能, 子域名突变, 日志审计, 用户模式Hook绕过, 自定义脚本, 自托管, 请求拦截, 运维平台