# ❓ 常见问题 FAQ

---

## 基础问题

### Q: 需要会写代码吗？
不需要。一键脚本搞定安装，配置文件填几个 Key 就行。所有交互都是在 Discord 里用自然语言。

### Q: 和直接用 ChatGPT 有什么区别？
ChatGPT 是一个通才，对话结束就失忆。这套系统是多个专家——每个 Agent 有自己的专业领域、持久记忆和工具权限。能自动写代码提交 GitHub、自动写文档到 Notion、定时执行任务。

### Q: 能用其他模型吗？
能。OpenClaw 支持 Anthropic、OpenAI、Google Gemini 等主流服务商，也可接入兼容 OpenAI API 格式的服务商。在 `openclaw.json` 里改 model 配置就行。不同部门可以用不同模型。

### Q: 每月 API 费用大概多少？
看使用强度。轻度使用 $10-15/月，中度 $20-30/月。省钱技巧：重活用强力模型，轻活用快速模型（便宜约 5 倍），简单任务可接入经济模型进一步降本。

### Q: 和 Become CEO 项目有什么关系？
[Become CEO](https://github.com/wanikua/become-ceo) 是本项目的英文企业版，使用相同的 OpenClaw 框架和架构，只是将朝廷角色换成了现代企业角色（CTO、CFO 等）。

---

## 技术问题

### Q: @everyone 不触发 Agent 回复？
Discord Developer Portal 里每个 Bot 要开启 **Message Content Intent** 和 **Server Members Intent**，服务器里 Bot 角色要有 View Channels 权限。

### Q: Bot 回复中的 @everyone 会 ping 全服务器吗？怎么禁止？
会，如果 Bot 角色有 "Mention Everyone" 权限。**推荐做法**：在 Discord 服务器设置 → 角色 → @everyone 角色中，关闭「提及 @everyone、@here 和所有角色」权限。服务器 Owner 不受此限制，仍可正常 @everyone。详见 [Discord 配置 - 禁止 Bot 触发 @everyone](./setup-discord.md#第五步禁止-bot-触发-everyone推荐)。

### Q: Agent 报「只读文件系统」「apt 失败」？
sandbox mode 设成了 `all` 导致 Agent 跑在 Docker 容器里，文件系统只读。

**最简单的解法：** 不写代码的部门直接关掉沙箱：
```json
"sandbox": { "mode": "off" }
```

**如果必须开沙箱但需要更多权限：**
```json
"sandbox": {
  "mode": "all",
  "workspaceAccess": "rw",
  "docker": {
    "network": "bridge",
    "env": { "LLM_API_KEY": "你的LLM_API_KEY" }
  }
}
```

> 详细说明见 [安全须知](./security.md)

### Q: 多人同时 @ 同一个 Agent 会冲突吗？
不会。OpenClaw 为每个用户 × Agent 组合维护独立会话。多人同时 @兵部，各自的对话互不干扰。

### Q: Agent 之间能互相调用吗？
能。通过 `sessions_spawn` 产生子任务给其他 Agent，通过 `sessions_send` 发消息给其他 Agent 的会话。

### Q: 怎么自定义 Skill？
每个 Skill 是一个包含 `SKILL.md` + 脚本 + 资源的目录。放到 `skills/` 目录下即可。也可以从 [OpenClaw Skill 生态](https://github.com/openclaw/openclaw) 获取社区 Skill。

### Q: 怎么接入私有模型（Ollama 等）？
在 `openclaw.json` 的 `models.providers` 中添加 OpenAI API 格式的 provider，指定 `baseUrl` 到 Ollama 地址。零 API 费用。

### Q: 启动时报 "workspace does not exist"？
这通常是因为 `defaults.workspace` 配置了但目录未创建，或者个别 Agent 覆盖了自己的 workspace 路径。

**推荐做法**：所有 Agent 共用一个工作区（在 `defaults` 里配，不要在每个 agent 里单独配）：
```json
"agents": {
  "defaults": { "workspace": "/home/你的用户名/clawd" },
  "list": [
    { "id": "silijian", "name": "司礼监" },
    { "id": "bingbu", "name": "兵部" }
  ]
}
```

然后确保目录存在：
```bash
mkdir -p ~/clawd
```

> ⚠️ **不要在每个 agent 里写不同的 workspace**（如 `workspace-silijian`、`workspace-bingbu`），这会导致 SOUL.md / IDENTITY.md 等文件需要在每个目录里单独维护。共享工作区 + `defaults.workspace` 是最佳实践。

### Q: Agent 不知道自己是谁 / SOUL.md 和 IDENTITY.md 是空的？
安装脚本会自动生成包含有意义内容的 SOUL.md 和 IDENTITY.md。如果你的文件是空的，说明可能是早期版本安装的，手动补充即可：

- **SOUL.md** — 朝廷行为准则（铁律、沟通风格、部门架构等）
- **IDENTITY.md** — 身份信息（名字、定位、Emoji 等）

参考最新安装脚本生成的模板内容，或直接重新运行安装脚本。

### Q: subagent 用的 workspace 不是自己的而是继承了父 agent 的？
这是正常行为。OpenClaw 的 subagent 默认继承父 agent 的 workspace。如果你希望所有 agent 共享同一个工作区，在 `defaults.workspace` 配置统一路径即可。

### Q: Gateway 启动失败？
```bash
journalctl --user -u openclaw-gateway --since today --no-pager
openclaw doctor
```
常见原因：API Key 未填、JSON 格式错误、Bot Token 无效。

### Q: 报 "Failed to resolve Discord application id"？
每个 Discord Bot 需要在配置中添加 `applicationId` 字段。在 Discord Developer Portal → 你的 Application → General Information 页面复制 Application ID（一串数字），填入对应 account 配置中：
```json
"silijian": {
  "name": "司礼监",
  "token": "你的Bot Token",
  "applicationId": "你的Application ID",
  "groupPolicy": "open"
}
```

### Q: 报 "Unrecognized key: botName"？
新版 OpenClaw 已将 `botName` 字段改为 `name`。把配置中所有 `"botName"` 替换为 `"name"` 即可，或运行 `openclaw doctor --fix` 自动修复。

### Q: 报 config invalid 错误？
新版 OpenClaw 移除了过期字段（如 `runTimeoutSeconds`），运行 `openclaw doctor --fix` 自动修复。

### Q: Windows 能用吗？
可以！有两种方式：

**方式一：原生 Windows（推荐新手）**

以管理员身份打开 PowerShell，运行：
```powershell
powershell -ExecutionPolicy Bypass -File (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/wanikua/danghuangshang/main/install.ps1')
```

会自动安装 Node.js 22 + OpenClaw，生成配置文件和快速开始指南。

**方式二：WSL2（推荐高级用户）**

详见 [Windows WSL2 安装指南](./windows-wsl.md)。WSL2 是完整的 Linux 环境，功能更完整，但需要额外配置。

---

**对比：**

| 方式 | 优点 | 缺点 |
|------|------|------|
| 原生 Windows | 一键安装，无需额外配置 | 部分 Linux 命令需要用 PowerShell 替代 |
| WSL2 | 完整 Linux 环境，与服务器一致 | 需要学习 WSL2 基本操作 |

---

← [返回 README](../README.md)

### Q: Bot 之间互相 @ 不触发回复？

这是多 Bot 模式最常见的坑。Discord 的 @mention 必须用 `<@用户ID>` 格式（如 `<@1482327799279652974>`），纯文本 `@兵部` 只是普通字符串，不会触发任何通知。

**解决方法**：在司礼监的 `identity.theme` 中写入每个 Bot 的 Discord User ID 和正确格式。详见 [Discord Bot 配置 - @mention 格式](./setup-discord.md#重要bot-互相-mention-的格式)。

### Q: 日志显示 `no-mention` 但我确实 @ 了 Bot？

`no-mention` 是正常行为 — 当一条消息 @司礼监 时，其他 6 个 Bot 都会报 `no-mention`（因为确实没 @ 它们）。只要被 @ 的那个 Bot 显示 `explicitlyMentioned=true` 就说明 mention 检测正常。

如果被 @ 的 Bot 也报 `no-mention`，检查：
1. 是否用了 `<@用户ID>` 格式（不是纯文本 `@名字`）
2. `allowBots: "mentions"` 是否已配置（Bot 间互相触发需要，且防止无限循环）
3. Bot 的 Message Content Intent 是否已开启
