Communitygithub.com

actonos/actonos

ActonOS 是一款专为特定用途设计的设备操作系统,作为一个可定制且自主运行的 AI 代理内核,全天候持续工作。

actonos 是什么?

ActonOS Build 技能旨在指导开发者构建 ActonOS 的各个组件,包括前端、Go 二进制文件、Docker 镜像以及裸机 ISO。该技能提供了一个完整的构建流水线,涵盖依赖安装、代码检查、测试、前端构建、Go 编译、Docker 镜像打包以及 ISO 生成。它支持多种平台(如 Linux amd64 和 arm64)的交叉编译,并利用 `go:embed` 将前端资产嵌入 Go 二进制文件中,同时通过分层文件系统支持运行时 UI 自定义。构建过程中使用版本、Git 提交和构建时间等元数据通过链接器标记嵌入,确保生成的产物是静态链接的,适合在容器或裸机环境中部署。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add actonos/actonos

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

ActonOS 构建技能

在构建 ActonOS 产物时使用此技能:前端、Go 二进制文件、Docker 镜像或裸机 ISO。

构建流水线概览

make deps → make lint → make test → make test-race (Linux CI) → make build-web → make build → make docker → make iso
目标功能输出
make deps安装 Go + Node 依赖—
make lint运行 Go vet、gofmt、golangci-lint、ESLint—
make test运行所有测试(单元测试 + 集成测试)build/coverage.out
make test-race运行 Linux CGO 竞态检测器必需的 CI 门控
make build-web构建 React 前端(Vite 生产模式)web/dist/
make build构建完整的 actond 二进制文件(包含前端)build/actond
make build-only仅构建 Go 二进制文件(跳过前端重建)build/actond
make docker构建 Docker 镜像actonos/actonos:VERSION
make iso构建裸机安装 ISObuild/ActonOS-vVERSION.iso
make all完整流水线:lint → test → buildbuild/actond

构建变量

Go 二进制文件通过链接器标志(-ldflags)嵌入版本元数据:

LDFLAGS := -s -w \
    -X main.Version=$(VERSION) \
    -X main.GitCommit=$(GIT_COMMIT)$(GIT_DIRTY) \
    -X main.BuildTime=$(BUILD_TIME)

这些值从以下来源读取:

  • VERSION 文件 → main.Version
  • git rev-parse --short HEAD → main.GitCommit
  • date -u → main.BuildTime

分步指南:完整生产构建

1. 构建前端

make build-web
# 运行:cd web && npm run build
# 输出:web/dist/(压缩的静态资源)

前端使用 Vite 构建并生成 gzip/brotli 压缩资源,这些资源通过 go:embed 嵌入到 Go 二进制文件中。

2. 构建 Go 二进制文件

make build
# 运行:CGO_ENABLED=0 go build -trimpath -ldflags '...' -o build/actond ./cmd/actond/

关键:始终使用 CGO_ENABLED=0 构建完全静态的二进制文件。

3. 交叉编译

# Linux AMD64(MiniPC/Docker 的默认目标)
GOOS=linux GOARCH=amd64 make build

# Linux ARM64(适用于 ARM 设备)
GOOS=linux GOARCH=arm64 make build

4. 构建 Docker 镜像

make docker
# 输出:actonos/actonos:VERSION 和 actonos/actonos:latest

Dockerfile 使用多阶段构建:

  1. 阶段 1:构建 Go 二进制文件
  2. 阶段 2:构建前端
  3. 阶段 3:Alpine 最小运行时镜像(<35 MB)

5. 构建 ISO(裸机)

# 需要:Debian/Ubuntu 主机,已安装 live-build 和 debootstrap
make iso
# 运行:bash scripts/build-iso.sh
# 输出:build/ActonOS-vVERSION.iso

go:embed 集成

构建好的前端资源嵌入到 Go 二进制文件中:

// internal/server/static.go
//go:embed all:../../../web/dist
var embeddedAssets embed.FS

layered_fs.go 模块实现了一个分层文件系统,在回退到嵌入资源之前会先检查 /data/overrides/,从而允许运行时 UI 自定义。

验证构建

# 检查二进制文件版本
./build/actond --version

# 检查二进制文件大小
ls -lh build/actond

# 确认它是完全静态的(无动态链接)
file build/actond
# 预期输出:

相关技能