用户注意到:「当前 agentmail 是在源码目录部署的,应当改为标准目录部署」。 查证后有三处实证(都不是猜测): 1. ★ **失败通知钩子执行的是仓库里的脚本** (`/home/program/agentmail/deploy/service-failure-notify.mjs`,8 处引用: 4 个 drop-in + zcode/zcode-mail-bridge 单元 + agentmail-failure-flush)。 仓库一挪/一改名,故障通知就**静默失效** —— 而那条管线正是用来报告服务故障的。 2. **opencode-serve 的 cwd 就是源码目录**(`WorkingDirectory=/home/program/agentmail`)。 3. ★ **仓库里的 `deploy/*.service` 是旧的源码目录版本**(ExecStart 指向 `/home/program/agentmail/plugins/...`),而机器上的已被改过 —— 也就是说 **谁跑一次 install.sh 就会把部署退回源码目录**。drop-in 更是只存在于 /etc 里, 仓库完全没有它们。 ## 改动 - **唯一真相**:`deploy/systemd/` 镜像 systemd 目录结构,收进全部单元与 drop-in (8 个单元 + 12 个 drop-in),路径全部改到 `/opt`。 - 运行时脚本装到 **`/opt/agentmail/bin/service-failure-notify.mjs`**(自包含, 无相对导入);`install.sh` 与 `redeploy-gateway.sh` 都会幂等地装它。 - opencode 的 cwd 改为 `/opt/agentmail`(与网关一致),已重启生效 (`/proc/<pid>/cwd` 已核)。 - 删掉 `deploy/*.service` 的旧副本,避免两个真相。 - dsh 的 `cordis.patch.yml` 注释里的安装示例也改到标准位置(运行时用的是环境变量, 那条注释是唯一残留)。 ## 判据(`deploy/check-deploy-drift.mjs` 新增「标准目录部署」四条 + 自检) ① 任何 unit/drop-in 都不得引用源码目录;② 已安装单元与 `deploy/systemd/` 逐字节一致; ③ 通知脚本在标准位置且可执行;④ 各服务的 cwd/ExecStart 不在源码目录 (homeagent/dsh/zcode 是**别的产品**的标准位置,按白名单放行)。 自检两个样本:引用源码目录的必须红、干净样本必须绿(证明不是恒真)。 顺带修掉一处**真漂移**:仓库里 dsh 的 `dist/index.js` 落后于部署件(改了 src 没重建), 重建后 `check-deploy-drift` 报「四个宿主都在跑当前代码」。 ## 复核 - `/etc/systemd/system/` 引用仓库:**0** 个文件;`/opt/agentmail` 下只剩旧二进制/备份里 的构建路径(Go 嵌的源码路径,无害)与一条注释。 - 四个宿主都在跑当前代码;标准目录四项全绿。 - 全部服务 active,opencode/网关 cwd 均已在安装根下。
32 lines
1.7 KiB
Plaintext
32 lines
1.7 KiB
Plaintext
# zcode 邮件驱动(deploy/systemd/zcode-mail-bridge.service)的 EnvironmentFile。
|
||
#
|
||
# 与 pi / opencode / dsh 三桥**同一套变量名** —— 同名同义,排障时才不用
|
||
# 每换一个平台就重新记一遍。
|
||
AGENTMAIL_GATEWAY_URL=http://127.0.0.1:8180
|
||
AGENTMAIL_AGENT_NAME=zcode
|
||
|
||
# 凭据。用注册时的 secret(X-Agent-Secret):
|
||
# 管理员密钥(AGENTMAIL_AGENT_KEY)登记后可以换成它,两者服务端都认。
|
||
# 驱动启动时会打印用的是哪一种。
|
||
# AGENTMAIL_AGENT_SECRET=<在 /root/gotmp/zcode-agent-secret.txt>
|
||
|
||
# 驱动与插件(MCP 服务器、授权钩子)共用这两个目录,**必须一致**:
|
||
# 授权表(「一直同意」)与主动发信记录都落在这里,两边解析出不同路径
|
||
# 就会出现「刚点过一直同意又问你一遍」「模型自己发过了又被自动转发一遍」。
|
||
AGENTMAIL_CONFIG_DIR=/root/.agentmail-zcode
|
||
|
||
# 没有 to_workspace 时的兜底目录根。每一轮会在它下面按会话 id 建子目录。
|
||
AGENTMAIL_WORKSPACE_ROOT=/root/.agentmail-zcode/workspaces
|
||
|
||
# 一轮的上限。ZCode 要跑模型 + 工具,比另三个桥宽一些。
|
||
# 必须**小于** systemd 的 TimeoutStopSec 无关,但与限制同一量级以免长跑占满串行队列。
|
||
AGENTMAIL_TURN_TIMEOUT_MS=1200000
|
||
|
||
# ZCode CLI 入口(纯 CLI,不是 Electron GUI 入口)。
|
||
AGENTMAIL_ZCODE_CLI=/opt/ZCode/resources/glm/zcode.cjs
|
||
|
||
# 仓库内进程固定用系统 node(/usr/bin/node v22),与官方插件硬编码的
|
||
# 工具链 node 分开,避免某天工具链升级把驱动带走。
|
||
# 注:这里不设 PATH —— 插件清单里 MCP 服务器的 `command: node`
|
||
# 由 ZCode 继承本进程的 PATH 解析,systemd 默认 PATH 含 /usr/bin。
|