软件包部署
本指南介绍如何通过软件包方式在本地机器上安装和设置 Hagicode。
对于大多数用户,我们推荐使用 Docker Compose 部署 方式,它具有以下优势:
- 环境隔离,避免依赖冲突
- 一键启动所有服务
- 更易于配置和管理
软件包部署方式适用于:
- 需要更精细控制系统配置的场景
- 不使用 Docker 的环境
- 需要生产环境原生部署
先决条件
在安装 Hagicode 之前,请确保您的系统上已安装以下软件。
PostgreSQL 数据库
Hagicode 使用 PostgreSQL 作为其数据库。运行 PostgreSQL 的推荐方式是通过 Docker。
安装 Docker
- Windows
- macOS
- Linux
下载并安装 Docker Desktop for Windows
如果您更倾向于使用原生安装程序,可以参阅 在 Windows 上安装 PostgreSQL 获取详细的 EXE 安装步骤。
下载并安装 Docker Desktop for Mac
使用您的包管理器安装 Docker
sudo apt-get update
sudo apt-get install docker.io docker-compose
使用 Docker 运行 PostgreSQL
安装 Docker 后,您可以使用以下命令运行 PostgreSQL:
docker run --name hagicode-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=hagicode \
-p 5432:5432 \
-d postgres:16
此命令:
- 创建一个名为
hagicode-postgres的容器 - 将用户名设置为
postgres - 将密码设置为
postgres - 创建一个名为
hagicode的数据库 - 将主机上的端口 5432 映射到容器
默认凭据 (postgres/postgres) 仅用于本地开发。对于生产环境,请使用强密码和唯一的密码。
Node.js 和 npm
Hagicode 需要 Node.js 18.0 或更高版本。
安装指南:请参阅 Node.js 安装指南
验证安装:
node --version
npm --version
OpenSpec CLI
OpenSpec 是一个用于管理提案和规范的工具。
安装指南:请参阅 OpenSpec 安装指南
验证安装:
openspec --version
Claude Code CLI
Hagicode 的 AI 驱动功能需要 Claude Code CLI。
安装指南:请参阅 Claude Code 安装指南
验证安装:
claude --version
从 GitHub Releases 下载
Hagicode 软件包发布在 GitHub Releases 上,您可以从那里下载最新版本或特定版本的软件包。
访问 Releases 页面
导航到 Hagicode Releases 页面 查看所有可用版本。
选择版本
- 最新版本:页面顶部默认显示最新稳定版本,推荐大多数用户使用
- 特定版本:向下滚动可以查看历史版本,适用于需要版本回退或测试的场景
下载平台特定软件包
每个版本包含针对不同平台的软件包:
- Windows
- macOS
- Linux
下载 .zip 格式的压缩包,例如:
hagicode-win-x64.zip- Windows 64 位软件包
下载 .tar.gz 格式的压缩包,例如:
hagicode-osx-x64.tar.gz- macOS Intel 64 位软件包hagicode-osx-arm64.tar.gz- macOS Apple Silicon (M1/M2) 软件包
下载 .tar.gz 格式的压缩包,例如:
hagicode-linux-x64.tar.gz- Linux 64 位软件包
下载完成后,建议验证文件的校验和(如果提供)以确保文件完整性。
部署软件包
Hagicode 以软件包的形式分发,您需要下载并解压到本地机器。
- Windows
- macOS
- Linux
- 下载 Hagicode 软件包(
.zip格式) - 将软件包解压到所需位置,例如:
D:\code\hagicode - 打开命令提示符或 PowerShell 并导航到解压目录:
cd D:\code\hagicode
- 下载 Hagicode 软件包(
.tar.gz格式) - 解压软件包:
tar -xzf hagicode-package.tar.gz
cd hagicode
或在 Finder 中双击压缩包进行解压。
- 下载 Hagicode 软件包(
.tar.gz格式) - 解压软件包:
tar -xzf hagicode-package.tar.gz
cd hagicode
或使用图形化解压工具将其解压到所需位置。
软件包结构
解压后的 Hagicode 软件包包含以下目录结构和文件:
- Windows
- macOS
- Linux
hagicode/
├── config/ # 用户配置覆盖目录
│ ├── appsettings.yml # 用户配置文件(YAML 格式,最高优先级)
│ └── README.md # 配置系统详细说明文档
├── lib/ # 应用依赖和运行时文件目录
│ ├── PCode.Web.dll # 主程序(.NET 程序集)
│ ├── appsettings.yml # 基础配置
│ ├── appsettings.Production.yml # 生产环境配置
│ └── [其他依赖库...]
├── start.bat # Windows 启动脚本
├── README.md # 软件包说明文档(中文)
└── README_en.md # 软件包说明文档(英文)
hagicode/
├── config/ # 用户配置覆盖目录
│ ├── appsettings.yml # 用户配置文件(YAML 格式,最高优先级)
│ └── README.md # 配置系统详细说明文档
├── lib/ # 应用依赖和运行时文件目录
│ ├── PCode.Web.dll # 主程序(.NET 程序集)
│ ├── appsettings.yml # 基础配置
│ ├── appsettings.Production.yml # 生产环境配置
│ └── [其他 依赖库...]
├── start.sh # macOS/Linux 启动脚本
├── README.md # 软件包说明文档(中文)
└── README_en.md # 软件包说明文档(英文)
hagicode/
├── config/ # 用户配置覆盖目录
│ ├── appsettings.yml # 用户配置文件(YAML 格式,最高优先级)
│ └── README.md # 配置系统详细说明文档
├── lib/ # 应用依赖和运行时文件目录
│ ├── PCode.Web.dll # 主程序(.NET 程序集)
│ ├── appsettings.yml # 基础配置
│ ├── appsettings.Production.yml # 生产环境配置
│ └── [其他依赖库...]
├── start.sh # macOS/Linux 启动脚本
├── README.md # 软件包说明文档(中文)
└── README_en.md # 软件包说明文档(英文)
目录说明
| 目录/文件 | 说明 |
|---|---|
| config/ | 用户配置覆盖目录。此目录中的配置文件具有最高优先级,会覆盖其他位置的配置。 |
| config/appsettings.yml | 用户配置文件(YAML 格式)。这是您应该修改的主要配置文件,具有最高优先级。 |
| config/README.md | 配置系统的详细说明文档,包含所有配置选项的完整参考。 |
| lib/ | 应用程序依赖和运行时文件目录,包含主程序和所有依赖库。 |
| lib/PCode.Web.dll | Hagicode 的主程序(.NET 程序集)。 |
| lib/appsettings.yml | 基础配置文件,包含默认配置值。 |
| lib/appsettings.Production.yml | 生产环境配置文件,包 含生产环境的默认值。 |
| start.sh / start.bat | 启动脚本(Linux/macOS 使用 .sh,Windows 使用 .bat)。 |
| README.md / README_en.md | 软件包说明文档,包含基本的使用信息和注意事项。 |
配置加载优先级
Hagicode 使用三层配置加载机制,优先级从低到高为:
- lib/appsettings.yml - 基础配置(默认值)
- lib/appsettings.Production.yml - 生产环境配置(环境特定值)
- config/appsettings.yml - 用户配置覆盖(最高优先级)
当同一配置项在多个文件中定义时,优先级更高的配置会覆盖优先级较低的配置。这种设计允许您:
- 保留默认配置不变
- 在
config/目录中仅覆盖需要修改的配置项 - 升级软件包时无需重新配置(只需保留
config/目录)
修改配置时,请在 config/appsettings.yml 中进行修改,而不是直接编辑 lib/ 目录中的文件。这样在软件包升级时,您的配置更改将被保留。
配置数据库连接
Hagicode 需要连接到您的 PostgreSQL 数据库。数据库连接在 config/appsettings.yml 文件中配置。
- 导航到 Hagicode 目录
- 在文本编辑器中打开
config/appsettings.yml - 找到连接字符串部分:
ConnectionStrings:
Default: "Host=127.0.0.1;Port=5432;Database=hagicode;Username=postgres;Password=postgres"
- 如果您使用不同的凭据,请更新连接字符串:
Host: 您的 PostgreSQL 主机(默认:127.0.0.1)Port: 您的 PostgreSQL 端口(默认:5432)Database: 您的数据库名称(默认:hagicode)Username: 您的 PostgreSQL 用户名(默认:postgres)Password: 您的 PostgreSQL 密码(默认:postgres)
如果您使用上面的 Docker PostgreSQL 命令,默认配置将无需任何更改即可工作。
配置许可证密钥
Hagicode �要许可证密钥才能激活使用。您可以在 config/appsettings.yml 文件中配置许可证。
- 在文本编辑器中打开
config/appsettings.yml - 添加或更新许可证配置:
License:
Activation:
LicenseKey: "D76B5C-EC0A70-AEA453-BC9414-0A198D-V3"
Hagicode 当前处于公测阶段,提供以下通用激活密钥:
D76B5C-EC0A70-AEA453-BC9414-0A198D-V3
您可以 直接使用此密钥激活 Hagicode。如果您有自己的许可证密钥,请将其替换为您的密钥。
启动服务
Hagicode 为不同平台提供了启动脚本。
- Windows
- macOS
- Linux
使用提供的批处理文件启动服务:
start.bat
此脚本将:
- 检查 PostgreSQL 是否正在运行
- 应用数据库迁移
- 启动 Hagicode 服务
- 显示访问 URL
使用提供的 shell 脚本启动服务:
chmod +x start.sh
./start.sh
此脚本将:
- 检查 PostgreSQL 是否正在运行
- 应用数据库迁移
- 启动 Hagicode 服务
- 显示访问 URL
使用提供的 shell 脚本启动服务:
chmod +x start.sh
./start.sh
此脚本将:
- 检查 PostgreSQL 是否正在运行
- 应用数据库迁移
- 启动 Hagicode 服务
- 显示访问 URL
启动故障排除
如果服务启动失败:
-
检查 PostgreSQL 是否正在运行:
docker ps | grep hagicode-postgres -
如果已停止则启动 PostgreSQL:
docker start hagicode-postgres -
查看日志以获取详细的错误消息:
tail -f logs/hagicode.log -
验证连接字符串在
config/appsettings.yml中 -
检查端口可用性:确保端口
34567未被其他应用程序使用
访问界面
服务运行后,您可以通过浏览器访问 Hagicode Web 界面。
在浏览器中打开
导航到:
http://127.0.0.1:34567
Hagicode 界面应该会加载,显示主仪表板。
默认访问
- URL:
http://127.0.0.1:34567 - 端口:
34567(默认) - 主机:
127.0.0.1(本地主机)
端口 34567 是 Hagicode 使用的默认端口。如果您需要更改它,可以在 config/appsettings.yml 中修改配置。
停止服务
要停止 Hagicode 服务:
- Windows
- macOS
- Linux
在运行服务的命令窗口中按 Ctrl+C
在运行服务的终端中按 Ctrl+C,或使用:
./stop.sh
在运行服务的终端中按 Ctrl+C,或使用:
./stop.sh
要停止 PostgreSQL:
docker stop hagicode-postgres
后续步骤
现在您已经安装并运行了 Hagicode,请继续创建第一个项目以开始使用 Hagicode。
故障排除
PostgreSQL 连接问题
如果您看到连接错误:
- 验证 PostgreSQL 是否正在运行:
docker ps | grep hagicode-postgres - 检查
config/appsettings.yml中的连接字符串 - 确保端口
5432未被防火墙阻止
端口已被占用
如果端口 34567 已被占用:
- 查找使用该端口的进程:
- Windows
- macOS
- Linux
netstat -ano | findstr :34567
lsof -i :34567
lsof -i :34567
- 停止冲突的进程或在配置中更改端口
迁移失败
如果数据库迁移失败:
- 删除并重新创建数据库:
docker exec -it hagicode-postgres psql -U postgres -c "DROP DATABASE IF EXISTS hagicode;"
docker exec -it hagicode-postgres psql -U postgres -c "CREATE DATABASE hagicode;" - 再次运行启动脚本
需要更多帮助?
如果您遇到此处未涵盖的问题:
- 查看 GitHub Issues 寻找类似问题
- 访问我们的社区论坛寻求帮助