Files
heicode-mananger/heicode/docker-compose.azure-vm.yml
T
chenchenandClaude Opus 4.8 699fa5ef44 docs(swarm): refresh HM-side swarm docs to current agent_swarm state
HM 端文档里的蜂群描述还是旧的(错仓名 + 旧模型),据实更新为当前 agent_swarm:

- 仓名:`HeiCode-Swarm` → `agent_swarm`(GitHub xmindlab-heicode/agent_swarm;产品名 HeiCode Swarm)。
- 模型:旧「HM 主导编排 / 仅 /tasks」→ 当前 Master-Agent 编排(分解→派发专家并行→协作/移交→评审/重做→汇总;Orchestrator FastAPI + Redis + WebSocket + Prometheus)。
- 契约:agent_swarm 已起草正式契约 docs/integration/runtime-contract.md(对齐 heicode-am-contract),待 Manager Runtime Team 评审冻结;已实现 create/status/tasks/logs/events/metrics/workflow/diagnostics/stop/approvals(带 deployment_id)。
- issue 引用:`agent_swarm#1`(执行面缺口,已关闭)→ 活动 EPIC `agent_swarm#2`(主链路接入契约冻结);HM 侧前置 #45/#46。

文件:
- docs/integration/heicode-swarm-deferred.md:勘误抬头 + §1 模型/接入状态 + §2 归属表(仓名/契约/接口) + §4 收尾据实更新。
- heicode/docker-compose.azure-vm.yml:SWARM_RUNTIME_* 注释更正(agent_swarm,deferred,当前关闭)。
- Heicode-Manager-生产配置与账号交接清单.md §7 + Orchestrator 地址标签:加勘误 banner,保留 env 历史记录但标注为旧模型/当前关闭。
- docs/deployment/Heicode-Manager-更换部署服务配置清单.md §2.2:加勘误 banner。

HM 不实现 swarm runtime 的裁定不变;仅把"蜂群现状"事实对齐。未改 env 变量名/行为(SWARM_RUNTIME_* 仍 disabled),未动 legacy-teardown 历史记录。Docs/注释 only。

Affects: 文档/注释 only。无代码、无计费/审计/部署行为改动。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 12:15:57 +08:00

86 lines
4.3 KiB
YAML

# Azure VM:只跑 heicode 容器;PostgreSQL / Redis 使用 Azure 托管实例。
# 代码更新:在 VM 上对完整 heicode 仓库 git pull,勿用 scp 同步源码(见仓库根 CLAUDE.md)。
# 容器产生的数据(/data 上传与持久文件、/app/logs)绑定到 VM 本地磁盘,避免仅用匿名卷导致难备份或重建丢失。
#
# 1. 在 VM 上准备目录(示例)
# export HEICODE_DATA_ROOT=/var/lib/heicode/heicode
# sudo mkdir -p "$HEICODE_DATA_ROOT"/{data,logs}
# sudo chown -R "$USER":"$USER" "$HEICODE_DATA_ROOT"
#
# 2. 在本目录放置 .env(勿提交仓库),至少包含由运维注入的:
# SQL_DSN=postgresql://...@heicode.postgres.database.azure.com:5432/heicode?sslmode=require
# REDIS_CONN_STRING=rediss://:...@heicode.redis.cache.windows.net:6380
# SESSION_SECRET=...
# AZURE_KEY_VAULT_URL=https://<vault-name>.vault.azure.net
# (以及项目要求的其它密钥,见官方 heicode 文档)
#
# 3. 构建 Heicode 定制镜像时与本地 override 一致:
# docker compose -f docker-compose.azure-vm.yml -f docker-compose.override.yml --env-file .env up -d --build
# 4. 构建完成后删除悬空旧镜像层:sudo docker image prune -f
#
# 若只用上游镜像、无 override,可去掉第二个 -f 文件,并把下方 image 改为 calciumion/heicode:latest。
version: '3.4'
services:
heicode:
image: ${IMAGE_TAG:-heicode-manager:local}
build:
context: .
dockerfile: Dockerfile
container_name: heicode
restart: always
command: --log-dir /app/logs
ports:
- "3000:3000"
volumes:
- ${HEICODE_DATA_ROOT}/data:/data
- ${HEICODE_DATA_ROOT}/logs:/app/logs
env_file:
- ${ENV_FILE:-.env}
environment:
- TZ=Asia/Shanghai
- ERROR_LOG_ENABLED=true
- BATCH_UPDATE_ENABLED=true
- NODE_NAME=heicode-node-1
# 默认与 docs/integration/Heicode-登录接口对接文档.md §2.1 一致;覆盖仅用于非标准网关。
- HEICODE_AUTH_BASE_URL=${HEICODE_AUTH_BASE_URL:-https://apimtaiji.azure-api.net/api/mcp}
# Agent 登录后 JIT 同步:邮箱命中以下白名单则自动提权
- HEICODE_ROOT_EMAILS=${HEICODE_ROOT_EMAILS:-}
- HEICODE_ADMIN_EMAILS=${HEICODE_ADMIN_EMAILS:-}
# Long-lived resource credentials are written to Azure Key Vault via
# the VM managed identity. No static secret-store token is required.
- AZURE_KEY_VAULT_URL=${AZURE_KEY_VAULT_URL:-}
- AZURE_CLIENT_ID=${AZURE_CLIENT_ID:-}
# Agent Manager Runtime: use the current production IP directly.
# The public domain is not used until DNS/HTTPS is fixed.
- AGENT_RUNTIME_ENABLED=${AGENT_RUNTIME_ENABLED:-false}
- AGENT_RUNTIME_BASE_URL=${AGENT_RUNTIME_BASE_URL:-http://20.212.121.126}
- AGENT_RUNTIME_CREATE_PATH=${AGENT_RUNTIME_CREATE_PATH:-/api/agent/deployments}
- AGENT_RUNTIME_HEALTH_PATH=${AGENT_RUNTIME_HEALTH_PATH:-/api/agent/health}
- AGENT_RUNTIME_STOP_PATH=${AGENT_RUNTIME_STOP_PATH:-/api/agent/deployments/{deployment_id}/stop}
- AGENT_RUNTIME_SERVICE_TOKEN=${AGENT_RUNTIME_SERVICE_TOKEN:-}
- AGENT_RUNTIME_CALLBACK_SIGNING_SECRET_REF=${AGENT_RUNTIME_CALLBACK_SIGNING_SECRET_REF:-}
# agent_swarm (product: HeiCode Swarm) Runtime — separate from the single
# template-agent Runtime (AM). Currently DEFERRED/disabled (SWARM_RUNTIME_ENABLED=false):
# HM does not orchestrate swarm; pending agent_swarm runtime-contract.md freeze (agent_swarm#2).
# See docs/integration/heicode-swarm-deferred.md.
- SWARM_RUNTIME_ENABLED=${SWARM_RUNTIME_ENABLED:-false}
- SWARM_RUNTIME_BASE_URL=${SWARM_RUNTIME_BASE_URL:-}
- SWARM_RUNTIME_CREATE_PATH=${SWARM_RUNTIME_CREATE_PATH:-/api/swarms}
- SWARM_RUNTIME_HEALTH_PATH=${SWARM_RUNTIME_HEALTH_PATH:-/api/agent/health}
- SWARM_RUNTIME_STOP_PATH=${SWARM_RUNTIME_STOP_PATH:-/api/swarms/{swarm_id}/stop}
- SWARM_RUNTIME_APPROVAL_DECISION_PATH=${SWARM_RUNTIME_APPROVAL_DECISION_PATH:-/api/swarms/{swarm_id}/approvals/{approval_id}}
- SWARM_RUNTIME_SERVICE_TOKEN=${SWARM_RUNTIME_SERVICE_TOKEN:-}
networks:
- heicode-network
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"]
interval: 30s
timeout: 10s
retries: 3
networks:
heicode-network:
driver: bridge