Simplify instance lifecycle commands
This commit is contained in:
@@ -42,23 +42,26 @@ ${GORI_AGENT_ROOT:-$HOME/.gori-agent}/instances/<bot-id>/
|
||||
- 实例目录、`logs/`、`state/` 为 `0700`。
|
||||
- `config.json`、PID、state 为 `0600`。
|
||||
- 多实例必须使用不同 `gateway.server.port` 和平台 credentials。
|
||||
- `instance init` / `setup` 必须交互询问并校验 server host/port;扫描其他 Config v3 的声明端口,冲突时警告,新实例建议下一个未声明端口,已有配置不得静默改端口。
|
||||
- `init` / `setup` 必须交互询问并校验 server host/port;扫描其他 Config v3 的声明端口,冲突时警告,新实例建议下一个未声明端口,已有配置不得静默改端口。
|
||||
- `setup <bot-id>` 只重配已有实例:校验目录/config/PID,运行中或 foreign PID 拒绝,固定 Bot ID,保留 agent/skills/permissions/policy/runtime/secrets/publicBaseUrl,确认写入后运行 doctor。
|
||||
- setup 的声明冲突提示不替代实际 bind 检查;`start` 对缺配置、ID 不匹配、错误权限、占位符、运行 PID、端口冲突 fail closed。
|
||||
- start 只 spawn 构建后的内部 `dist/cli/instance-runner.js <config-path>`;PID identity 必须精确匹配 Node executable、runner 和唯一 config 参数。
|
||||
|
||||
日常入口:
|
||||
公开入口仅有:
|
||||
|
||||
```bash
|
||||
gori-agent instance init <bot-id>
|
||||
gori-agent instance start <bot-id>
|
||||
gori-agent instance stop <bot-id>
|
||||
gori-agent instance restart <bot-id>
|
||||
gori-agent instance status <bot-id>
|
||||
gori-agent instance logs <bot-id>
|
||||
gori-agent instance list
|
||||
gori-agent instance doctor <bot-id>
|
||||
gori-agent init <bot-id>
|
||||
gori-agent setup <bot-id>
|
||||
gori-agent start <bot-id>
|
||||
gori-agent stop <bot-id>
|
||||
gori-agent restart <bot-id>
|
||||
gori-agent status <bot-id>
|
||||
gori-agent logs <bot-id>
|
||||
gori-agent doctor <bot-id>
|
||||
gori-agent list
|
||||
```
|
||||
|
||||
保留 `start --config`、`status --config`、`doctor --config` 等用于本地调试,但运行配置不存在时不得回退 example。
|
||||
不兼容旧 `instance` 前缀;不公开 debug 命令、`--config` 或 `--json`。
|
||||
|
||||
## 3. 核心代码结构
|
||||
|
||||
@@ -91,6 +94,8 @@ gori-agent instance doctor <bot-id>
|
||||
- fail-closed 加载、example seed 与原子 `0600` 配置写入。
|
||||
- `src/cli/instance.ts`
|
||||
- 实例目录、PID/log、端口和 lifecycle 管理。
|
||||
- `src/cli/instance-runner.ts`
|
||||
- 非公开进程入口;加载单实例配置、启动 server,并处理 SIGINT/SIGTERM 优雅关闭。
|
||||
- `src/cli/doctor.ts`
|
||||
- v3、Bot、agent、platform、state、permission 和 placeholder 检查。
|
||||
- `src/agents/*`、`src/core/session-store.ts`
|
||||
@@ -213,11 +218,11 @@ QQ WebSocket 仅在 qq + websocket 模式启动。`GET /health` 只输出 config
|
||||
1. 读取本文件、`config.example.json` 和 `src/config.ts`。
|
||||
2. 明确 Bot ID、workspace、persona、平台、skills 和最小 permission policy。
|
||||
3. 确认 ACP agent executable 与 ACP 可用。
|
||||
4. 使用 `instance init` 或 Coding Agent 生成实例 `config.json`;不要把 example 当运行配置。
|
||||
4. 使用 `gori-agent init <bot-id>` 或 Coding Agent 生成实例 `config.json`;不要把 example 当运行配置。
|
||||
5. 交互确认并严格校验 `gateway.server.host/port`;对其他实例的声明端口冲突给出警告和建议,但仍由 `start` 做实际 bind 检查。
|
||||
6. 写配置必须同目录临时文件 + fsync + atomic rename,最终 `0600`;目录 `0700`。
|
||||
7. setup 的 secret/token 输入必须不回显;secrets 不在对话、日志、测试输出、diff 中回显。
|
||||
8. 运行 `instance doctor`,不发送真实平台消息。
|
||||
8. 运行 `gori-agent doctor <bot-id>`,不发送真实平台消息。
|
||||
9. 只有用户明确授权时才启动/停止真实 Bot。
|
||||
|
||||
旧仓库本地 `config.json`、备份和 state 可供人工回退;改造实例时不要删除或覆盖。
|
||||
|
||||
Reference in New Issue
Block a user