本文档面向 AI Agent / CC 执行。阅读后可直接调用以下命令完成一键安装,无需人工干预。
| 依赖 | macOS Apple Silicon | macOS Intel | Ubuntu 24.04 | Windows 10/11 |
|---|---|---|---|---|
| Python 3.10+ | ✅ 系统自带或官网安装 | ✅ 系统自带或官网安装 | ✅ 系统自带 | ✅ python.org 安装 |
| git | ✅ Xcode CLT | ✅ Xcode CLT | ✅ apt 自带 | ✅ git-scm.com |
| curl | ✅ 系统自带 | ✅ 系统自带 | ✅ 系统自带 | ✅ Win10 1803+ 自带 |
| VC++ 2015-2022 Redistributable | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 | |
| Docker | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 |
| Homebrew | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 | ❌ 不需要 |
网络要求:
- GitHub(用于 clone 仓库 + 下载 Release 包)
- gbrain Release 包 85MB(含 node_modules,下载后无需联网)
- 如 GitHub 不通,可配置代理:
export https_proxy=http://127.0.0.1:7897
首次部署 Win11 必读:实测纯净 Win11 安装 CoPaw 需要 4 个前置依赖,缺一不可。
安装顺序(管理员 PowerShell):
# 1. Python 3.10+(推荐 3.12.10)
# 国内镜像:https://mirrors.huaweicloud.com/python/3.12.10/python-3.12.10-amd64.exe
# 或 winget:
winget install --id Python.Python.3.12 -e --accept-package-agreements --accept-source-agreements
# 2. Git for Windows
# 国内镜像:https://cdn.npmmirror.com/binaries/git-for-windows/v2.45.2.windows.1/Git-2.45.2-64-bit.exe
# 或 winget:
winget install --id Git.Git -e --accept-package-agreements --accept-source-agreements
# 3. VC++ 2015-2022 Redistributable(关键!否则 ujson 报 DLL 错误)
# 官方下载:https://aka.ms/vs/17/release/vc_redist.x64.exe
# 或 winget:
winget install --id Microsoft.VCRedist.2015+.x64 -e --accept-package-agreements --accept-source-agreements
# 4. pip 国内镜像(可选但强烈推荐,否则 pip install 268 包要 30+ 分钟)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn验证前置条件:
python --version # 应显示 Python 3.10+
git --version # 应显示 git 2.x
where msvcp140.dll # 应显示 C:\Windows\System32\msvcp140.dll
pip config list # 应显示清华源 URL常见 Windows 部署问题:
| 现象 | 原因 | 解决 |
|---|---|---|
ImportError: DLL load failed while importing ujson |
缺 VC++ Redistributable | 装 vc_redist.x64.exe |
bootstrap.ps1 解析报错 TerminatorExpectedAtEndOfString |
PowerShell 5.x 读无 BOM UTF-8 ps1 乱码 | 已修复(仓库所有 ps1 已加 BOM) |
pip install 极慢或超时 |
默认 PyPI 在中国大陆访问慢 | 配置清华镜像 |
stdio MCP client requires non-empty command |
Windows 平台 MCP 配置畸形(偶发) | 已修复(copaw-import-seed.ps1 末尾自动检测+修复) |
CC/Agent 执行安装前,必须先向用户收集以下参数,写入
~/.copaw_PORT/.env后再执行 bootstrap。 详细参数说明见底部章节 🤖 LLM / Embedding Provider 配置。
GBrain 需要两类模型:
| 类型 | 用途 | 关键点 |
|---|---|---|
| Chat Model | dream 知识提炼 / synthesize / subagent 调度 | 推理能力强的模型 |
| Embedding Model | 向量化(语义搜索基础) |
这两类可以用同一套 provider(一个 key)也可以各用一套。支持 openai / anthropic / ollama / google / voyage / dashscope / deepseek / zhipu 等。
方案 A:纯云端,一套 key(openai / ARK 兼容)
OPENAI_API_KEY=your-key
OPENAI_BASE_URL=https://api.openai.com/v1 # 第三方兼容 API 改这里
GBRAIN_DEFAULT_MODEL=openai:gpt-4o
GBRAIN_THINK_MODEL=openai:gpt-4o
GBRAIN_SUBAGENT_MODEL=openai:gpt-4o-mini
GBRAIN_EMBEDDING_MODEL=openai:text-embedding-3-small
GBRAIN_EMBEDDING_DIMENSIONS=1536方案 B:Chat + Embedding 各一套(常见组合)
ANTHROPIC_API_KEY=your-key
ANTHROPIC_BASE_URL=https://api.anthropic.com
OPENAI_API_KEY=your-key
OPENAI_BASE_URL=https://api.openai.com/v1
GBRAIN_DEFAULT_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_THINK_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_SUBAGENT_MODEL=anthropic:claude-haiku-4-5-20251001
GBRAIN_EMBEDDING_MODEL=openai:text-embedding-3-small
GBRAIN_EMBEDDING_DIMENSIONS=1536方案 C:本地 Ollama(无需 API key,无需独立 GPU)
# 前提:ollama serve 已运行 + 拉好模型
# ollama pull qwen3:8b && ollama pull qwen3-embedding:4b
OLLAMA_BASE_URL=http://localhost:11434/v1
GBRAIN_DEFAULT_MODEL=ollama:qwen3:8b
GBRAIN_THINK_MODEL=ollama:qwen3:8b
GBRAIN_SUBAGENT_MODEL=ollama:qwen3:4b
GBRAIN_EMBEDDING_MODEL=ollama:qwen3-embedding:4b
GBRAIN_EMBEDDING_DIMENSIONS=2560方案 D:混合(Chat 云端 + Embedding 本地,推荐)
ANTHROPIC_API_KEY=your-key
ANTHROPIC_BASE_URL=https://api.anthropic.com
OLLAMA_BASE_URL=http://localhost:11434/v1
GBRAIN_DEFAULT_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_THINK_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_SUBAGENT_MODEL=anthropic:claude-haiku-4-5-20251001
GBRAIN_EMBEDDING_MODEL=ollama:nomic-embed-text
GBRAIN_EMBEDDING_DIMENSIONS=768# 方式 A:直接执行(自动 clone 仓库 + 部署)
curl -fsSL https://raw.githubusercontent.com/crazybin5848/CoPaw-Deploy/main/install.sh | bash -s -- --full-stack --port 8083irm https://raw.githubusercontent.com/crazybin5848/CoPaw-Deploy/main/install.ps1 | iex网络不稳定、或需要观察每步日志时,推荐手动逐步执行。
# 目标机执行(后台 clone,避免 SSH 超时)
nohup git clone --depth 1 https://github.com/crazybin5848/CoPaw-Deploy.git ~/copaw-deploy > /tmp/clone.log 2>&1 &
echo "PID=$!"
# 30 秒后查看结果
sleep 30 && cat /tmp/clone.log && ls ~/copaw-deploy/cd ~/copaw-deploy
# 标准全栈部署(PGLite 模式,无需 Docker)
nohup bash bootstrap.sh --full-stack --port 8083 > /tmp/bootstrap.log 2>&1 &
echo "PID=$!"
# 实时监控(另开 SSH 窗口)
tail -f /tmp/bootstrap.logbash bootstrap.sh [选项]
选项:
--full-stack 安装完整技术栈(CoPaw + GBrain + PGLite)
--port PORT CoPaw 监听端口(默认 8083)
--config CONFIG_DIR 指定配置目录(默认按端口自动推导)
--db pglite|pg 数据库模式(默认 pglite,个人推荐;pg 需要 Docker)
--dry-run 只打印不执行,用于预检
--force 强制重装(跳过检查点,从头来)
--low-memory 内存 < 4GB 时跳过内存警告
--enable-dream-cron 注册每日 dream cron(默认已开启)
示例:
bash bootstrap.sh --full-stack --port 8083 # 标准安装
bash bootstrap.sh --full-stack --port 8083 --force # 全新重装
bash bootstrap.sh --full-stack --port 8083 --dry-run # 预检bootstrap 完整流程如下:
[1/7] 检查文件完整性
[2/7] 停止旧实例
[3/7] gbrain 全链路(含以下子步骤):
├── 00-prereq 前置检查(OS、Python、磁盘、内存、端口)
├── 01-bun-gbrain 安装 bun + gbrain(从 Release 下载全量包)
├── 02-start-pg PGLite 模式跳过;PG 模式启动 Docker 容器
├── 03-init-brain gbrain init(初始化知识图谱数据库)
├── 04-register-source 注册 CoPaw memory source
├── 05-register-oauth 启动 gbrain serve + 获取 admin token
├── 06-inject-config 注入 gbrain Bearer token 到 CoPaw config.json
├── 06.5-apply-patch 应用 gbrain 补丁(gateway/cycle/synthesize 等)
├── 06.7-runtime-config 渲染 dream-cron 脚本 + 自动发现所有 CoPaw 实例 + 注册 cron
├── 06.8-install-worker 安装 minion worker systemd service(Linux,dream synthesize 阶段必需)
└── 07-verify 健康检查(HTTP 200 验证)
[4/7] 安装 CoPaw(创建 venv + pip install wheel)
[5/7] 初始化配置(config.json + .env + PROFILE.md + channel 配置清空)
[5.5/7] 导入 agent + skills + pipelines(从 data/seed 内置的 16 个 agent + 11 个 pipeline)
[6/7] 启动 CoPaw(launchd / systemd / 直接后台)
[7/7] 健康检查(/api/agents 200 OK)
检查点机制:每步成功后写入 ~/.copaw_PORT/.checkpoint.json。中断后可直接重跑,已完成步骤自动跳过。
| 端口 | 配置目录 | 说明 |
|---|---|---|
| 8083 | ~/.copaw_8083 |
标准部署(推荐) |
| 8084 | ~/.copaw_8084 |
备用实例 |
| 8085 | ~/.copaw_dev_fork |
开发实例 |
| 8086 | ~/.copaw_dev_fork_gray |
灰度实例 |
| 其他 | ~/.copaw_PORT |
自动推导 |
# CoPaw 健康检查
curl http://localhost:8083/api/agents
# GBrain 健康检查
curl http://localhost:3131/health
# 运行 verify 脚本(8 项完整检查)
bash ~/copaw-deploy/darwin/apple/copaw-verify.sh --port 8083
# Linux:
bash ~/copaw-deploy/linux/ubuntu/copaw-verify.sh --port 8083http://localhost:8083
安装完成后飞书/钉钉等渠道均已禁用(防止继承源机器账号)。
手动填写 API Keys(首次必须):
# 编辑 .env 文件
nano ~/.copaw_8083/.env
# 填写以下内容:
ARK_API_KEY=ark-YOUR_KEY_HERE
OPENAI_API_KEY=ark-YOUR_KEY_HERE
OPENAI_BASE_URL=https://ark.cn-beijing.volces.com/api/v3
ANTHROPIC_API_KEY=ark-YOUR_KEY_HERE
ANTHROPIC_BASE_URL=https://ark.cn-beijing.volces.com/api/v1填写后重启 CoPaw:
# macOS
bash ~/copaw-deploy/darwin/apple/copaw-restart.sh --port 8083
# Linux
bash ~/copaw-deploy/linux/ubuntu/copaw-restart.sh --port 8083DEPLOY=~/copaw-deploy/darwin/apple
bash $DEPLOY/copaw-start.sh --port 8083 # 启动
bash $DEPLOY/copaw-stop.sh --port 8083 # 停止
bash $DEPLOY/copaw-restart.sh --port 8083 # 重启
bash $DEPLOY/copaw-status.sh --port 8083 # 状态
bash $DEPLOY/copaw-logs.sh --port 8083 -f # 实时日志DEPLOY=~/copaw-deploy/linux/ubuntu
bash $DEPLOY/copaw-start.sh --port 8083
bash $DEPLOY/copaw-stop.sh --port 8083
bash $DEPLOY/copaw-status.sh --port 8083
bash $DEPLOY/copaw-logs.sh --port 8083 -fLinux 平台额外有两个 systemd user service(bootstrap 自动安装):
# gbrain HTTP server(端口 3131 或按 --port 指定)
systemctl --user status gbrain.service
systemctl --user restart gbrain.service
journalctl --user -u gbrain.service -f
# minion worker(消费 dream cycle 的 subagent 任务,写知识页面)
systemctl --user status gbrain-worker.service
systemctl --user restart gbrain-worker.service
tail -f ~/.gbrain_8083/gbrain-worker.log注意:没有 worker,dream cycle 会卡在 synthesize 阶段(参见下方 FAQ)。
$D = "$HOME\copaw-deploy\windows"
& "$D\copaw-start.ps1" -Port 8083
& "$D\copaw-stop.ps1" -Port 8083
& "$D\copaw-status.ps1" -Port 8083
& "$D\copaw-logs.ps1" -Port 8083 -Followcd ~/copaw-deploy
# soft:只停服务,保留配置和数据
bash cleanup.sh --level soft --port 8083
# normal:停服务 + 删配置目录 + 删 venv(保留 PGLite 数据)
bash cleanup.sh --level normal --port 8083
# nuke:全删(含 PGLite 数据)
bash cleanup.sh --level nuke --port 8083
# 重装(nuke 后重新部署)
bash cleanup.sh --level nuke --port 8083 && \
bash bootstrap.sh --full-stack --port 8083安装时已自动配置,每天 12:00 运行。
前置依赖:dream cycle 的 synthesize 阶段将"写知识页面"任务投递到 minion_jobs 表,
由 gbrain-worker.service(Linux systemd)异步执行。没有 worker,dream 会永久卡住。
步骤 06.8-install-worker 已自动安装。验证:systemctl --user status gbrain-worker.service。
脚本位置:~/.gbrain_8083/runtime-config/dream-multi-source.sh
功能:
- 自动发现机器上所有 CoPaw 实例(
~/.copaw_NNNN/目录) - 每个实例执行:git commit → sync → extract → embed
- 完整 dream cycle(17 个 phase:synthesize/patterns/consolidate 等)
- 日志:
~/.gbrain_8083/dream-multi-source.log
手动触发:
bash ~/.gbrain_8083/runtime-config/dream-multi-source.sh查看日志:
tail -100 ~/.gbrain_8083/dream-multi-source.logdream cycle 涉及三类 LLM 调用,可独立配置(写到 gbrain DB config 表):
| 配置 key | 用途 | 推荐模型 | 说明 |
|---|---|---|---|
models.dream.synthesize |
主流程(写知识页面) | sonnet 或 haiku | 影响产出质量,多轮 tool loop |
models.dream.synthesize_subagent |
subagent minion job | haiku | 写一个个 wiki page,量大但单次任务简单 |
models.dream.synthesize_verdict |
判断 transcript 是否值得处理 | haiku | 二分类轻量任务 |
⚠️ synthesize_subagent是 PATCH-synthesize-subagent-model 引入的新 key(gbrain v0.41 原版 subagent 直接复用 synthesize 主模型)。未设置时自动 fallback 到synthesize的值(向后兼容)。
设置示例:
docker exec gbrain-pg env PGPASSWORD=$PG_PASS psql -U gbrain -d gbrain -p 5433 \
-c "INSERT INTO config (key, value) VALUES
('models.dream.synthesize', 'anthropic:claude-sonnet-4-6'),
('models.dream.synthesize_subagent', 'anthropic:claude-haiku-4-5-20251001'),
('models.dream.synthesize_verdict', 'anthropic:claude-haiku-4-5-20251001')
ON CONFLICT (key) DO UPDATE SET value=EXCLUDED.value;"成本对比(每月 30 次 cron × 9 个 transcript / 次):
- 全 sonnet:约 $24/月
- 主流程 sonnet + subagent/verdict 都用 haiku:约 $4/月(6 倍便宜)
- 全 haiku:约 $2/月(12 倍便宜,质量稍降但够用)
worker 并发:06.8-install-worker.sh 默认配置 --concurrency 3,配合 haiku 让 dream cycle 总耗时降低 6-12 倍。
A:Release 包 85MB,首次下载需要时间。如果 GitHub 网络不通:
# 方式 1:配置代理
export https_proxy=http://127.0.0.1:7897
bash bootstrap.sh --full-stack --port 8083
# 方式 2:用 --resolve 绕过 DNS(适合 Tailscale 网络)
# 脚本内已内置自动检测代理,无需手动设置A:bun 会自动安装到 ~/.bun/bin/,check PATH:
export PATH="$HOME/.bun/bin:$PATH"
bun --version
gbrain --versionA:
# 查看占用
lsof -iTCP:8083 -sTCP:LISTEN # macOS
ss -tlnp | grep 8083 # Linux
# 停止旧进程
bash ~/copaw-deploy/cleanup.sh --level soft --port 8083A:kill gbrain 时 lock 会自动清除(cleanup 脚本已处理)。如果手动 kill:
rm -f ~/.gbrain_8083/.gbrain/cycle.lockA:synthesize 阶段将"写知识页面"任务委托给 minion worker 异步执行。如果 worker 没在跑,dream 会永久阻塞等待。
# 1. 检查 worker 是否运行
systemctl --user status gbrain-worker.service
# 2. 如果没跑,启动它
systemctl --user start gbrain-worker.service
# 3. 检查积压的 subagent job 数量
docker exec gbrain-pg-8083 env PGPASSWORD=xxx psql -U gbrain -d gbrain \
-c "SELECT status, COUNT(*) FROM minion_jobs GROUP BY status;"
# 4. 如果有 dead/failed 状态的 job,查看失败原因
docker exec gbrain-pg-8083 env PGPASSWORD=xxx psql -U gbrain -d gbrain \
-c "SELECT id, LEFT(error_text, 200) FROM minion_jobs WHERE status='dead' ORDER BY id DESC LIMIT 5;"常见原因:
- worker 未安装(首次部署时漏了
06.8-install-worker) → 手动执行该步骤 - 旧 job 用了错误的 model(如
openai:claude-xxx而非anthropic:claude-xxx)→ 清理后重跑 - worker 进程被 OOM kill → 检查内存,重启 service
A:直接重跑 bootstrap,已完成步骤自动跳过:
bash ~/copaw-deploy/bootstrap.sh --full-stack --port 8083如需强制从头来:
bash ~/copaw-deploy/bootstrap.sh --full-stack --port 8083 --forceA:bootstrap 步骤 [5.5/7] 会从仓库内置的 data/seed/ 导入 16 个 agent + 11 个 pipeline。如果没导入:
- 检查仓库完整性:
ls ~/copaw-deploy/data/seed/workspaces/应有 16 个子目录 - 手动补跑导入:
cd ~/copaw-deploy
bash darwin/apple/copaw-import-seed.sh \
--config ~/.copaw_8083 --port 8083 \
--source data/seed- 重启后验证:
curl http://localhost:8083/api/agents | python3 -m json.tool | grep '"id"'
如需使用自定义 seed(如从另一台机器导出),设置环境变量
COPAW_SEED_SOURCE=/path/to/export再跑 bootstrap。
全量重装会丢失数据(除
cleanup.sh --level soft)。优先用增量升级:根据改动的部分挑选对应脚本。
CoPaw 升级最常见的场景。本仓库 packages/ 下的 wheel 是定制 fork(含 gbrain 集成、飞书、browser 控制等),不是 pypi 官方版。
cd ~/copaw-deploy && git pull # 1. 拉最新 wheel + 脚本
bash linux/ubuntu/copaw-stop.sh --port 8083 # 2. 停服务(macOS/Windows 改对应路径)
bash linux/ubuntu/copaw-backup.sh --port 8083 # 3. 备份配置(可选但推荐)
# 4. 强制重装 wheel(保留 venv,只升级 copaw 包)
source ~/.copaw_venv_8083/bin/activate
pip install --force-reinstall ~/copaw-deploy/packages/qwenpaw-*.whl
# 5. 重启
bash linux/ubuntu/copaw-start.sh --port 8083
⚠️ linux/ubuntu/copaw-upgrade.sh脚本是从 pypi 拉官方上游 copaw(非 fork 版),如果你跑的是 CoPaw-Deploy 定制版,不要用它,按上面的步骤手动重装本地 wheel。
今天打的 PATCH-title-toLowerCase / PATCH-strip-provider-prefix 等就是这种场景。改了 *.ts 补丁后:
cd ~/copaw-deploy && git pull # 拉最新补丁
bash linux/ubuntu/gbrain-patch.sh --port 8083 # 重新应用 7 个 .ts 补丁
systemctl --user restart gbrain.service # 重启 gbrain HTTP 让代码生效
systemctl --user restart gbrain-worker.service # worker 同样要重启(dream subagent 也走同份代码)common/runtime-config/dream-multi-source.sh.template 或 sessions-to-transcripts.py 改了:
cd ~/copaw-deploy && git pull
bash linux/ubuntu/gbrain/06.7-runtime-config.sh --force # --force 强制重新渲染渲染产物在
$GBRAIN_HOME/runtime-config/,不会动 cron 注册。
common/runtime-config/gbrain-worker.service.template 改了:
cd ~/copaw-deploy && git pull
bash linux/ubuntu/gbrain/06.8-install-worker.sh --force # 重新渲染 + reload + restart复杂度最高,因为补丁可能与新版上游冲突。建议步骤:
cd ~/copaw-deploy && git pull # 拉最新 release tag
# 1. 备份当前 gbrain 数据库
docker exec gbrain-pg-8083 pg_dump -U gbrain gbrain | gzip > ~/gbrain_backup_$(date +%Y%m%d).sql.gz
# 2. 重新下载 gbrain 全量包(覆盖 ~/gbrain)
bash linux/ubuntu/gbrain/01-install-bun-gbrain.sh --force
# 3. 重新应用全部补丁(如果新版 gbrain 与补丁冲突会报错,需手动调整)
bash linux/ubuntu/gbrain-patch.sh --port 8083
# 4. 重启所有 gbrain 服务
systemctl --user restart gbrain.service gbrain-worker.service升级前务必先在测试机验证补丁兼容性。如果遇到
*.tspatch 应用失败,可能上游已修复同类问题,对比common/patches/gbrain/*.ts与~/gbrain/src/core/*.ts决定是否保留补丁。
如果 CoPaw 服务多个飞书用户,每个用户需要独立的 GBrain OAuth 凭据:
# 1. 复制凭据模板
cp ~/copaw-deploy/data/user_credentials.template.json \
~/.copaw/user_credentials.json
# 2. 为每个用户注册 OAuth client
gbrain auth register-client --source "user-<USER_NAME>"
# 或:
curl -X POST http://localhost:3131/api/v1/auth/register-client \
-H "Content-Type: application/json" \
-d '{"source_id": "user-<USER_NAME>"}'
# 3. 编辑 ~/.copaw/user_credentials.json,填入 client_id/secret 和 飞书 open_id
# 4. 重启 CoPaw(无需重启 gbrain)
copaw-dev --port 8083 restart详见 docs/GBRAIN_USER_CREDENTIALS.md
⚠️ 重要:user_credentials.json含敏感凭据,绝对不要提交到 git!只有模板文件user_credentials.template.json可以提交。
cd ~/copaw-deploy && git pull
# 下次跑 bootstrap.sh 自动用新版(已部署机器一般不需要重跑 bootstrap)| 改了什么 | 用什么命令 |
|---|---|
packages/*.whl |
§12.1 重装 wheel |
common/patches/gbrain/*.ts |
§12.2 gbrain-patch.sh |
common/runtime-config/*.template 或 *.py |
§12.3 06.7-runtime-config.sh --force |
common/runtime-config/gbrain-worker.service.template |
§12.4 06.8-install-worker.sh --force |
common/scripts/gbrain/*.py(dream cron 调的辅助脚本) |
无需重跑(cron 直接读最新文件) |
| gbrain 大版本号变了 | §12.5 全流程 |
| 新增/修改飞书用户 | §12.6 配置 user_credentials.json + 重启 CoPaw |
bootstrap.sh 或子脚本 |
§12.7 仅 git pull |
# CoPaw wheel 回退(用上一次备份)
ls ~/.copaw_8083_backups/ # 找最近备份
pip install --force-reinstall <旧版 wheel 路径>
bash linux/ubuntu/copaw-restart.sh --port 8083
# gbrain 补丁回退(自动备份在 .patch_backups/)
ls ~/gbrain/.patch_backups/ # 找最近一次备份目录
cp -r ~/gbrain/.patch_backups/<时间戳>/src/* ~/gbrain/src/
systemctl --user restart gbrain.service gbrain-worker.service
# gbrain 数据库回退
docker exec -i gbrain-pg-8083 psql -U gbrain -d gbrain < ~/gbrain_backup_<日期>.sql所有大文件通过 GitHub Releases 分发,安装时自动下载。
| Release | 包名 | 大小 | 说明 |
|---|---|---|---|
v1.1.11.post2-fullstack |
qwenpaw-1.1.11.post2-py3-none-any.whl |
11MB | CoPaw wheel(含前端 dist) |
v0.41.14.0-gbrain |
gbrain-v0.41.14.0-full.tar.gz |
85MB | gbrain 全量包(含 node_modules) |
v0.41.14.0-gbrain |
bun-darwin-aarch64.zip |
22MB | bun macOS ARM64 离线包 |
wheel 包含本地增强代码(gbrain 集成、飞书频道、browser 控制等),非官方 qwenpaw。
CoPaw-Deploy/
├── bootstrap.sh # 主入口(macOS/Linux)
├── bootstrap.ps1 # 主入口(Windows)
├── cleanup.sh # 清理脚本(soft/normal/nuke)
├── install.sh # 一行安装入口(curl | bash)
├── install.ps1 # 一行安装入口(Windows)
├── packages/
│ └── qwenpaw-1.1.11.post2-py3-none-any.whl # CoPaw wheel(11MB)
├── common/
│ ├── patches/gbrain/ # gbrain 源码补丁(7 个 .ts + PATCH 文档)
│ ├── scripts/gbrain/ # dream cycle 辅助 Python 脚本(compensate/inbox/probe)
│ └── runtime-config/ # dream cron 脚本模板
│ ├── dream-multi-source.sh.template
│ ├── gbrain-worker.service.template # minion worker systemd unit 模板(Linux)
│ ├── sessions-to-transcripts.py
│ └── README.md
├── darwin/
│ ├── apple/ # macOS Apple Silicon 脚本
│ │ ├── gbrain/ # gbrain 10 步链路
│ │ │ ├── 00-prereq.sh
│ │ │ ├── 01-install-bun-gbrain.sh
│ │ │ ├── 02-start-pg.sh
│ │ │ ├── 03-init-brain.sh
│ │ │ ├── 04-register-source.sh
│ │ │ ├── 05-register-oauth.sh
│ │ │ ├── 06-inject-config.sh
│ │ │ ├── 06.5-apply-patch.sh
│ │ │ ├── 06.7-runtime-config.sh
│ │ │ ├── 06.8-install-worker.sh # 安装 minion worker(Linux only,macOS 跳过)
│ │ │ ├── 07-verify.sh
│ │ │ └── cleanup-gbrain.sh
│ │ ├── copaw-install.sh
│ │ ├── copaw-configure.sh
│ │ ├── copaw-verify.sh
│ │ ├── copaw-start.sh / copaw-stop.sh / copaw-restart.sh
│ │ ├── copaw-status.sh / copaw-logs.sh
│ │ └── copaw-cleanup.sh
│ └── intel/ # macOS Intel(结构同 apple)
├── linux/
│ └── ubuntu/ # Ubuntu 24.04(结构同 darwin/apple)
└── windows/ # Windows 10/11(PowerShell)
├── gbrain/ # gbrain 7步链路(ps1)
├── copaw-install.ps1
├── copaw-configure.ps1
├── copaw-verify.ps1
├── copaw-start.ps1 / copaw-stop.ps1 / copaw-restart.ps1
└── cleanup.ps1
# 从源码构建 wheel 并更新 deploy/packages/
bash deploy/build-wheel.sh脚本做的事:
- 清理旧构建产物(
dist/,build/,*.egg-info/) - 用
python3 -m build --wheel构建 wheel - 删除
deploy/packages/下旧 wheel - 复制新 wheel 到
deploy/packages/
前置条件:
- Python 3.10+
pip install build(脚本会自动检查并安装)
# 清理旧环境
bash deploy/copaw-dev.sh --port 8087 stop
rm -rf ~/.qwenpaw ~/.copaw_venv_8087
# 重新部署(使用新 wheel)
bash deploy/bootstrap.sh --port 8087# 使用 utils/copaw-export-agents.py 导出
python deploy/utils/copaw-export-agents.py
# 生成的 export 包放到 deploy/ 目录
mv /tmp/copaw_8086_export_*.tar.gz deploy/同一台机器运行多个 CoPaw 实例(不同端口、不同配置):
# 生产环境(8085)
bash bootstrap.sh --port 8085 --config ~/.copaw_prod
# 灰度环境(8086)
bash bootstrap.sh --port 8086 --config ~/.copaw_gray
# 测试环境(8084)
bash bootstrap.sh --port 8084 --config ~/.copaw_test管理多实例:
# 查看所有实例状态
bash deploy/copaw-dev.sh --port 8085 status
bash deploy/copaw-dev.sh --port 8086 status
bash deploy/copaw-dev.sh --port 8084 status
# 停止所有实例
bash deploy/copaw-dev.sh --port 8085 stop
bash deploy/copaw-dev.sh --port 8086 stop
bash deploy/copaw-dev.sh --port 8084 stop症状:bootstrap.sh 显示"启动失败"
排查步骤:
# 1. 查看日志
bash deploy/copaw-dev.sh --port 8085 logs 100
# 2. 检查端口占用
lsof -i :8085
# 3. 检查 venv 是否正常
ls ~/.copaw_venv_8085/bin/copaw
# 4. 手动启动测试
source ~/.copaw_venv_8085/bin/activate
COPAW_WORKING_DIR=~/.copaw_dev_fork copaw app --port 8085症状:控制台只有 2 个 agent(default + 自动生成)
原因:bootstrap.sh 未找到 export 包
解决:
# 确认 export 包存在
ls deploy/copaw_8086_export_*.tar.gz
# 手动导入
bash deploy/darwin/apple/copaw-import.sh --config ~/.copaw_dev_fork deploy/copaw_8086_export_*.tar.gz症状:安装时提示"本地 wheel 未找到,尝试 PyPI..."
原因:deploy/packages/ 下的 wheel 版本与脚本期望的版本不一致
解决:
# 检查 wheel 版本
ls deploy/packages/*.whl
# 检查脚本期望的版本
grep COPAW_VERSION deploy/darwin/apple/copaw-install.sh
# 重新构建 wheel
bash deploy/build-wheel.sh症状:Permission denied
解决:
# 给脚本添加执行权限
chmod +x deploy/bootstrap.sh
chmod +x deploy/copaw-dev.sh
chmod +x deploy/build-wheel.sh
chmod +x deploy/darwin/apple/*.sh症状:agent 日志显示 MCP gbrain: 401 Unauthorized 或 agent 说"找不到 gbrain MCP 工具"
原因:agent.json 里的 Bearer token 与 gbrain serve 实际生效的 token 不一致。可能由于:
- seed-agent.json 历史上硬编码了开发环境的 token,新部署后 token 不匹配
- 重新部署 gbrain 时生成了新 token,但 agent.json 没同步更新
- 16 个 agent.json 中 token 占位符 (
__GBRAIN_ACCESS_TOKEN__/gbrain_PLACEHOLDER_TOKEN) 未被替换
修复:
# 1. 跑 token 修复脚本(从 config.json 读真实 token,批量替换 agent.json)
bash ~/copaw-deploy/darwin/apple/gbrain/06.9-fix-agent-gbrain-tokens.sh --force
# 2. 重启 copaw 加载新 agent.json
launchctl kickstart -k gui/$(id -u)/com.copaw.app.8083
# 3. 跑验证脚本(5 项检查)
bash ~/copaw-deploy/verify-gbrain-token-fix.sh验证脚本检查项:
- config.json 含真实 Bearer token(非占位符)
- 所有 agent.json 不含占位符
- agent.json token 与 config.json 一致
- gbrain
/health端点 200 - 用 token 调 MCP
tools/list200
症状:cleanup nuke 后再次 bootstrap 报"端口已占用"
原因:旧脚本只 launchctl unload 没 launchctl remove,service 定义残留在 launchd 注册表,KeepAlive 配置反复拉起僵尸进程
已修复:从 96225a6 起,cleanup/uninstall 4 个脚本都增加了 launchctl remove 调用
手动清理残留(如果遇到旧版残留):
# 查看 launchd 注册表中所有 copaw service
launchctl list | grep copaw
# 强制移除
launchctl remove com.copaw.app.8083
launchctl remove com.copaw.gbrain-8083
launchctl remove com.copaw.dream-8083症状:gbrain serve 启动时报 Embedding dim mismatch: model returned 2560 but schema expects 768
原因:早期 ollama recipe 写死 default_dims=768(适配 nomic-embed-text),qwen3-embedding:4b 实际返回 2560 维
已修复:从 4e8b7eb 起,ollama.ts patch 把 default_dims 改为 2560,并加入 model_dims 映射支持多种 ollama embedding 模型
手动重新初始化(如果是旧 brain 库):
# 备份
mv ~/.gbrain_8083 ~/.gbrain_8083.bak-$(date +%Y%m%d)
# .env 设置正确维度
echo "GBRAIN_EMBEDDING_DIMENSIONS=2560" >> ~/copaw-deploy/data/.env
# 重新跑 init(仅 gbrain 部分)
bash ~/copaw-deploy/darwin/apple/gbrain/03-init-brain.sh~/.copaw_dev_fork/ (或其他配置目录)
├── workspaces/
│ └── default/
│ ├── agent.json # Agent 配置
│ ├── skill.json # 技能配置
│ ├── skills/ # 技能文件
│ ├── pipelines/ # 编排配置
│ └── active_skills/ # 激活的技能
├── config.yaml # 全局配置
├── .env # 环境变量
├── copaw.log # 运行日志
└── copaw.pid # 进程 PID
| 变量 | 说明 | 示例 |
|---|---|---|
COPAW_WORKING_DIR |
配置目录路径 | ~/.copaw_dev_fork |
QWENPAW_WORKING_DIR |
旧版配置目录(向后兼容) | ~/.copaw_dev_fork |
部署完成后,默认使用 remelight(轻量本地记忆)。如需开启 GBrain 知识图谱检索 + 自动记忆:
编辑 ~/.copaw_<PORT>/workspaces/default/agent.json,修改 running 字段:
{
"running": {
"memory_manager_backend": "composite",
"auto_memory_interval": 20,
"composite_memory_config": {
"enabled_providers": ["agent_file", "gbrain"]
},
"reme_light_memory_config": {
"summarize_when_compact": true,
"auto_memory_search_config": {
"enabled": true,
"max_results": 5,
"min_score": 0.3
}
}
}
}| 字段 | 值 | 说明 |
|---|---|---|
memory_manager_backend |
"composite" |
多源记忆管理器(替代默认的 remelight) |
composite_memory_config.enabled_providers |
["agent_file", "gbrain"] |
启用本地文件 + GBrain 双源 |
auto_memory_search_config.enabled |
true |
每次对话自动召回相关记忆 |
auto_memory_interval |
20 |
每 20 轮对话自动提取记忆 |
reme_light_memory_config.summarize_when_compact |
true |
上下文压缩时自动写入 memory |
bootstrap --full-stack 已自动配置 mcp.clients.gbrain(streamable HTTP + Bearer token)。如需手动确认:
// agent.json → mcp.clients.gbrain
{
"name": "gbrain",
"enabled": true,
"transport": "streamable_http",
"url": "http://127.0.0.1:3131/mcp",
"headers": {
"Authorization": "Bearer <自动生成的 token>"
}
}
⚠️ 重要:dream cycle 依赖 minion worker 异步写知识页面。bootstrap 部署时步骤06.8-install-worker已自动安装gbrain-worker.service(Linux)。若未安装,dream 会卡在 synthesize 阶段。
如需每天自动执行 dream(记忆优化 + 知识提取):
bash bootstrap.sh --full-stack --port 8083 --enable-dream-cron详见 common/runtime-config/README.md。
CoPaw 通过 data/.env 配置所有 LLM 和 embedding provider。完整模板见 data/env.template,配置场景速查:
ARK 火山方舟一个 key 路由 OpenAI + Anthropic 协议 + Ollama 本地 embedding:
# data/.env
ARK_API_KEY=ark-xxxxx
OPENAI_API_KEY=ark-xxxxx
OPENAI_BASE_URL=https://ark.cn-beijing.volces.com/api/coding/v3
ANTHROPIC_API_KEY=ark-xxxxx
ANTHROPIC_BASE_URL=https://ark.cn-beijing.volces.com/api/coding/v1
# Ollama 本地 embedding(先 ollama pull qwen3-embedding:4b)
OLLAMA_BASE_URL=http://localhost:11434/v1
# GBrain 模型路由
GBRAIN_DEFAULT_MODEL=Doubao-Seed-2.0-pro
GBRAIN_THINK_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_SUBAGENT_MODEL=anthropic:claude-haiku-4-5-20251001
GBRAIN_EMBEDDING_MODEL=ollama:qwen3-embedding:4b
GBRAIN_EMBEDDING_DIMENSIONS=2560OpenAI / Anthropic 真身 + Voyage embedding:
OPENAI_API_KEY=sk-xxxxx
OPENAI_BASE_URL=https://api.openai.com/v1
ANTHROPIC_API_KEY=sk-ant-xxxxx
ANTHROPIC_BASE_URL=https://api.anthropic.com
VOYAGE_API_KEY=pa-xxxxx
GBRAIN_DEFAULT_MODEL=gpt-4o
GBRAIN_THINK_MODEL=anthropic:claude-sonnet-4-5
GBRAIN_SUBAGENT_MODEL=anthropic:claude-haiku-4-5
GBRAIN_EMBEDDING_MODEL=voyage:voyage-3
GBRAIN_EMBEDDING_DIMENSIONS=1024Ollama 全栈:
OLLAMA_BASE_URL=http://localhost:11434/v1
# 先 ollama pull 这些模型
GBRAIN_DEFAULT_MODEL=ollama:qwen2.5:14b
GBRAIN_THINK_MODEL=ollama:qwen2.5:32b
GBRAIN_SUBAGENT_MODEL=ollama:qwen2.5:7b
GBRAIN_EMBEDDING_MODEL=ollama:qwen3-embedding:4b
GBRAIN_EMBEDDING_DIMENSIONS=2560DASHSCOPE_API_KEY=sk-xxxxx
OPENAI_API_KEY=sk-xxxxx # DashScope 走 openai-compat
OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
GBRAIN_DEFAULT_MODEL=qwen-max
GBRAIN_THINK_MODEL=qwen-max
GBRAIN_EMBEDDING_MODEL=dashscope:text-embedding-v3
GBRAIN_EMBEDDING_DIMENSIONS=1024| Provider | Chat | Embedding | base_url 默认 |
|---|---|---|---|
| OpenAI | gpt-4o, gpt-4.1 | text-embedding-3-small/large | api.openai.com/v1 |
| Anthropic | claude-sonnet-4-5, claude-haiku-4-5 | ❌ | api.anthropic.com |
| ARK 火山 | Doubao 系列, anthropic:claude-* | text-embedding-v3 | ark.cn-beijing.volces.com/api/coding/v3 |
| DashScope | qwen-max, qwen-plus | text-embedding-v3/v4 | dashscope.aliyuncs.com/compatible-mode/v1 |
| DeepSeek | deepseek-chat, deepseek-reasoner | ❌ | api.deepseek.com/v1 |
| gemini-2.5-pro | ❌ | (SDK 内置) | |
| Zhipu | glm-4-plus | embedding-3 | open.bigmodel.cn/api/paas/v4 |
| MiniMax | abab6.5 | embo-01 | api.minimaxi.com/v1 |
| Voyage | ❌ | voyage-3, voyage-multilingual-2 | api.voyageai.com/v1 |
| Ollama | qwen2.5, llama3.2 | qwen3-embedding, nomic-embed-text, bge-m3 | localhost:11434/v1 |
| Groq | llama-3.3-70b-versatile | ❌ | api.groq.com/openai/v1 |
| OpenRouter | 聚合多家 | ❌ | openrouter.ai/api/v1 |
| Together | 多家开源 | ❌ | api.together.xyz/v1 |
| Azure OpenAI | (深度覆盖) | text-embedding-3-* | (需自建 deployment) |
| Embedding Model | 维度 |
|---|---|
ollama:qwen3-embedding:4b |
2560 |
ollama:nomic-embed-text |
768 |
ollama:bge-m3 |
1024 |
ollama:mxbai-embed-large |
1024 |
openai:text-embedding-3-small |
1536 |
openai:text-embedding-3-large |
3072 |
dashscope:text-embedding-v3 |
1024 |
dashscope:text-embedding-v4 |
2048 |
voyage:voyage-3 |
1024 |
voyage:voyage-multilingual-2 |
1024 |
zhipu:embedding-3 |
2048 |
minimax:embo-01 |
1536 |
⚠️ 维度不匹配会导致 gbrain init 失败或检索结果错位。ollama的维度由模型本身决定,建议先ollama pull <model>后用ollama show <model>验证。
- 编辑
data/.env(或运行中的实例的~/.copaw_<port>/.env) - 取消对应段的注释,填上 API Key
- 重新跑 init 或重启服务:
# 全新部署 bash bootstrap.sh --full-stack --port 8083 --force # 或仅重启已部署实例(embedding 改了需要 re-embed) copaw-dev --port 8083 restart
-
查看脚本帮助:
bash deploy/copaw-dev.sh --help
-
查看日志:
# 最近 50 行 bash deploy/copaw-dev.sh --port 8085 logs # 最近 200 行 bash deploy/copaw-dev.sh --port 8085 logs 200 # 实时跟踪 bash deploy/copaw-dev.sh --port 8085 follow
-
检查服务状态:
bash deploy/copaw-dev.sh --port 8085 status
-
macOS 平台:
- 仅支持 Apple Silicon(M1/M2/M3/M4)
- Intel 芯片暂不支持(
darwin/intel/为占位) - 需要 Homebrew 安装在
/opt/homebrew
-
端口冲突:
- 确保端口未被占用:
lsof -i :8085 - 多实例部署时使用不同端口
- 确保端口未被占用:
-
配置隔离:
- 不同端口使用不同配置目录
- 不同端口使用不同 venv(
~/.copaw_venv_8085)
-
wheel 更新:
- 修改源码后必须运行
bash deploy/build-wheel.sh - 否则 bootstrap 安装的是旧版本
- 修改源码后必须运行
-
Agent 导入:
- export 包必须放在
deploy/目录 - 文件名格式:
copaw_8086_export_*.tar.gz
- export 包必须放在
- CoPaw 官方仓库:https://github.com/agentscope-ai/CoPaw
- 部署脚本源码:
deploy/ - 开发环境管理:
cmd/copaw-dev(源码模式,与 deploy 不同)
最后更新:2026-06-10