Files
danghuangshang/docs/faq.md
wanikua 23f64069da docs: 防止 Bot 触发 @everyone 通知的完整方案
- setup-discord.md: Bot Permissions 明确不勾 Mention Everyone + 新增第五步
- faq.md: 新增 Q&A 说明如何禁止 Bot @everyone ping 全员
- doctor.sh: 自动检测服务器角色是否有 Mention Everyone 权限并告警
- install*.sh: 部署完成提示中增加关闭 @everyone 权限的步骤
- README/README_EN: FAQ 区新增对应条目

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 16:40:09 +00:00

7.5 KiB
Raw Blame History

常见问题 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 是本项目的英文企业版,使用相同的 OpenClaw 框架和架构只是将朝廷角色换成了现代企业角色CTO、CFO 等)。


技术问题

Q: @everyone 不触发 Agent 回复?

Discord Developer Portal 里每个 Bot 要开启 Message Content IntentServer Members Intent,服务器里 Bot 角色要有 View Channels 权限。

Q: Bot 回复中的 @everyone 会 ping 全服务器吗?怎么禁止?

会,如果 Bot 角色有 "Mention Everyone" 权限。推荐做法:在 Discord 服务器设置 → 角色 → @everyone 角色中,关闭「提及 @everyone、@here 和所有角色」权限。服务器 Owner 不受此限制,仍可正常 @everyone。详见 Discord 配置 - 禁止 Bot 触发 @everyone

Q: Agent 报「只读文件系统」「apt 失败」?

sandbox mode 设成了 all 导致 Agent 跑在 Docker 容器里,文件系统只读。

最简单的解法: 不写代码的部门直接关掉沙箱:

"sandbox": { "mode": "off" }

如果必须开沙箱但需要更多权限:

"sandbox": {
  "mode": "all",
  "workspaceAccess": "rw",
  "docker": {
    "network": "bridge",
    "env": { "LLM_API_KEY": "你的LLM_API_KEY" }
  }
}

详细说明见 安全须知

Q: 多人同时 @ 同一个 Agent 会冲突吗?

不会。OpenClaw 为每个用户 × Agent 组合维护独立会话。多人同时 @兵部,各自的对话互不干扰。

Q: Agent 之间能互相调用吗?

能。通过 sessions_spawn 产生子任务给其他 Agent通过 sessions_send 发消息给其他 Agent 的会话。

Q: 怎么自定义 Skill

每个 Skill 是一个包含 SKILL.md + 脚本 + 资源的目录。放到 skills/ 目录下即可。也可以从 OpenClaw Skill 生态 获取社区 Skill。

Q: 怎么接入私有模型Ollama 等)?

openclaw.jsonmodels.providers 中添加 OpenAI API 格式的 provider指定 baseUrl 到 Ollama 地址。零 API 费用。

Q: 启动时报 "workspace does not exist"

这通常是因为 defaults.workspace 配置了但目录未创建,或者个别 Agent 覆盖了自己的 workspace 路径。

推荐做法:所有 Agent 共用一个工作区(在 defaults 里配,不要在每个 agent 里单独配):

"agents": {
  "defaults": { "workspace": "/home/你的用户名/clawd" },
  "list": [
    { "id": "silijian", "name": "司礼监" },
    { "id": "bingbu", "name": "兵部" }
  ]
}

然后确保目录存在:

mkdir -p ~/clawd

⚠️ 不要在每个 agent 里写不同的 workspace(如 workspace-silijianworkspace-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 启动失败?

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 配置中:

"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 -ExecutionPolicy Bypass -File (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/wanikua/danghuangshang/main/install.ps1')

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

方式二WSL2推荐高级用户

详见 Windows WSL2 安装指南。WSL2 是完整的 Linux 环境,功能更完整,但需要额外配置。


对比:

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

返回 README

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

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

解决方法:在司礼监的 identity.theme 中写入每个 Bot 的 Discord User ID 和正确格式。详见 Discord 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 是否已开启