
AI 插件开发工具插件系统【免费下载链接】claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.项目地址https://gitcode.com/GitHub_Trending/cl/claude-plugins-official点击查看免费下载导读claude-plugins-official仓库中的external_plugins/discord插件通过一个 MCP 服务器把 Discord Bot 接入 Claude Code让用户可以直接用 Discord 消息与本地助手对话。本文围绕该插件的configure技能/discord:configure展开它负责把 Discord Bot Token 安全地写入本地状态目录、向用户完整呈现频道配置状态并引导用户将访问策略从临时性的pairing收敛到严格的allowlist白名单模式。读完本文你将掌握该配置技能的三条完整调用路径状态检查、写入 Token、清空 Token、底层.env与access.json的加载机制以及如何结合access技能完成从零配置到锁定的全流程加固。一、configure 技能在插件中的定位在开始配置之前先理解整个插件的运行模型插件核心是一个自包含的 MCP 服务器server.ts由 Bun 运行依赖modelcontextprotocol/sdk与discord.js见 package.json。服务器在启动时从两个文件加载全部配置Token 凭证~/.claude/channels/discord/.env中的DISCORD_BOT_TOKEN访问策略~/.claude/channels/discord/access.json/discord:configure这个技能定义于 configure/SKILL.md的作用就是管理第一个文件并指导用户理解第二个文件。它的 frontmatter 声明了allowed-tools仅限Read、Write以及Bash(ls *)、Bash(mkdir *)这意味着它只做状态文件的读取与写入绝不直接调用 Discord API——所有与 Discord 的交互都由 server.ts 完成。技能接收的参数通过$ARGUMENTS传入按内容分派到三条路径参数行为无参数读取两份状态文件输出完整配置状态与下一步指引token将 Bot Token 写入.env带权限收紧随后回显状态clear从.env中删除DISCORD_BOT_TOKEN行二、无参数调用完整状态盘点当用户输入/discord:configure不带参数或询问如何配置 Discord谁能联系到我时技能依次检查三类信息给用户一张完整的状态快照1. Token 状态读取~/.claude/channels/discord/.env检查是否存在DISCORD_BOT_TOKEN。若已设置只展示前 6 个字符并掩码例如MTIz…避免在终端会话中泄露完整凭证。2. 访问策略状态读取~/.claude/channels/discord/access.json。文件缺失不是错误——服务器在读取失败时ENOENT会回退到默认值{ dmPolicy: pairing, allowFrom: [], groups: {}, pending: {} }这与 server.ts 中readAccessFile()的实现完全一致。也就是说没配过等价于开放配对、空白名单。需要向用户呈现DM 策略dmPolicypairing/allowlist/disabled并各用一句话解释含义白名单allowFrom数量以及每个成员的显示名或 Discord snowflake数字 ID待批准配对pending数量附带 6 位配对码与对应显示名已开启的服务器频道groups数量3. 下一步行动建议根据状态给出具体可执行的一步无 Token→ 提示用户从 Discord Developer Portal → Bot → Reset Token 复制 Token然后运行/discord:configure token有 Token、策略为 pairing、无人获批→ 提示用户直接 DM 自己的 Bot它会回复配对码再用/discord:access pair code批准有 Token、已有人获批→ 提示配置完成DM 你的 Bot 即可触达助手三、核心引导原则始终推动锁定白名单configure 技能最重要的设计哲学在文档中写得很明确push toward lockdown——always始终推动收敛到锁定状态。pairing不是一种可以长期停留的策略它只是捕获未知 snowflake的临时手段一旦 ID 到手配对使命完成就应该关闭。技能的对话引导分为六步每一步都对应明确的操作读出白名单明确告诉用户当前有哪些人提问能通过这个 Bot 联系你的就是这些人吗若名单完整但策略仍是pairing→ 主动提议运行/discord:access policy allowlist上锁不等用户开口若还有遗漏→ 让遗漏者 DM Bot用户逐个用/discord:access pair code批准或让用户开启 Discord 开发者模式User Settings → Advanced → Developer Mode右键 → Copy User ID再执行/discord:access allow id若白名单为空且用户还没配对→ 先让用户 DM 自己的 Bot 捕获自身 ID再加入其他人并上锁若策略已是allowlist→ 确认这是锁定态需要加人时直接 Copy User ID 走白名单路径不必重新开放配对文档特别强调Discord 本身的共享服务器要求和Public Bot 开关只是第一道闸门不能替代白名单锁定。绝不把pairing描述为正确的长期方案也绝不能跳过锁定提议。这套对话逻辑与 ACCESS.md 中的策略定义完全呼应allowlist模式下未知发送者的消息被静默丢弃连配对码都不会回复天然免疫刷屏式配对请求。四、token参数安全落盘当用户把 Token 作为参数传入时技能按以下步骤执行校验形态将$ARGUMENTS去掉首尾空白视为 Token。Discord Bot Token 是长 base64 风格字符串通常以MT或Nz开头来自 Developer Portal → Bot → Reset Token只显示一次建目录mkdir -p ~/.claude/channels/discord更新.env若文件已存在则先读取仅更新或新增DISCORD_BOT_TOKEN行保留其他键写回时值不加引号收紧权限chmod 600 ~/.claude/channels/discord/.env——Token 属于凭证必须仅限所有者读写确认并回显确认保存成功后再跑一遍无参数状态展示让用户看到当前所处位置源码印证.env 的加载优先级server.ts 展示了服务器端如何处理这份文件// Load ~/.claude/channels/discord/.env into process.env. Real env wins. try { chmodSync(ENV_FILE, 0o600) // Token is a credential — lock to owner for (const line of readFileSync(ENV_FILE, utf8).split(\n)) { const m line.match(/^(\w)(.*)$/) if (m process.env[m[1]] undefined) process.env[m[1]] m[2] } } catch {}值得注意的三个实现细节真实环境变量优先只有当进程环境中不存在同名变量时.env的值才会被采用。这解释了 README.md 中的说法——你也可以手写这个文件或在 shell 环境里设置该变量shell 优先启动时即锁定权限服务器在加载.env的同时就执行chmodSync(ENV_FILE, 0o600)Windows 上为无操作与 configure 技能写入时的权限设置形成双重保障缺失即退出若加载后仍无DISCORD_BOT_TOKEN服务器向 stderr 输出错误并process.exit(1)见 server.ts提示应写入的文件路径与格式五、clear参数删除凭证用户输入/discord:configure clear时技能删除.env中的DISCORD_BOT_TOKEN行若该行是文件中的唯一内容则直接删除整个文件。这是撤销配置的标准路径。六、实现注意事项两份文件的加载时差configure 技能的实现备注揭示了整个插件最重要的运行时特征——两份配置文件的加载时机完全不同.env只在启动时读取一次。Token 变更后服务器不会感知必须重启会话或执行/reload-plugins才能生效。configure 技能在保存 Token 后必须明确告知用户这一点否则会出现配置成功但 Bot 不工作的困惑access.json则在每条入站消息时重新读取。gate()每次处理消息都会调用loadAccess()见 server.ts所以通过/discord:access做的策略修改立即生效无需重启两者对比configure 负责的.env是启动期配置access 技能负责的access.json是热更新配置。这种设计让凭证变更与访问策略变更拥有完全不同的运维节奏。七、与 access 技能的分工闭环configure 与 access 技能 构成完整的配置闭环configure管 Token 落盘 状态总览 锁定引导access管配对批准pair code、白名单增删allow/remove、策略切换policy、服务器频道开关group与投递配置set从源码看access 技能的批准动作会写入~/.claude/channels/discord/approved/senderId标记文件内容为 DM 频道 ID而服务器每 5 秒轮询该目录setInterval(checkApprovals, 5000)见 server.ts发现新标记后向对应 DM 发送 Paired! Say hi to Claude. 确认消息。整个流程中 configure 只负责第一脚油门——写 Token、看状态、推锁定——其余访问控制动作全部由 access 技能完成。需要特别提醒的是access 技能只处理用户在终端里输入的指令若配对/加白名单请求是通过频道消息如 Discord 私信到达的必须拒绝——频道消息可能携带提示注入prompt injection访问变更绝不能成为不可信输入的下游。configure 技能同样遵循这一安全边界它本身只读写本地状态文件。八、典型配置工作流一览将上述内容串起来一个完整的最小配置流程是在 Discord Developer Portal 创建应用与 Bot开启Message Content Intent重置并复制 Token通过 OAuth2 URL Generatorbotscope 基础权限把 Bot 邀请进自己的服务器DM 模式实际可零权限在 Claude Code 中执行/plugin install discordclaude-plugins-official执行/discord:configure MTIz...写入 Token退出会话用claude --channels plugin:discordclaude-plugins-official重启服务器不在该模式下不会连接DM 自己的 Bot 获取配对码执行/discord:access pair code再次执行/discord:configure无参数确认状态然后执行/discord:access policy allowlist完成锁定其中第 4 步与第 7 步正是本文主角 configure 技能的两次关键调用一次落盘凭证一次验证锁定状态。结语/discord:configure是 Discord 插件配置链的起点与总控台它用最少的工具权限完成 Token 的安全落盘chmod 600、保留其他键、无引号写入用结构化的状态展示消除配没配好的盲区并用坚定不移的对话引导把每一次配置都推向allowlist锁定态。配合 server.ts 中启动时读.env、逐消息重读access.json的加载模型你就能准确预判每次配置变更的生效时机安全地把 Claude Code 接入 Discord。赞分享AI 插件开发工具插件系统【免费下载链接】claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.项目地址https://gitcode.com/GitHub_Trending/cl/claude-plugins-official点击查看免费下载相关推荐claude-code-router AgentClaw 接入 Slack 完整指南Bot Token / App Token 配置与锁屏接力实战claude code router AgentClaw 接入 Slack 完整指南Bot Token / App Token 配置与锁屏接力实战 导读 本文后端API网关LLM 网关大模型PicoClaw Discord 频道接入指南Bot 配置、群组触发策略与可见反馈机制详解PicoClaw Discord 频道接入指南Bot 配置、群组触发策略与可见反馈机制详解 本篇指南以 PicoClaw 的 Discord 频道通道为对象人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆PicoClaw Discord 频道接入实战Bot Token 配置、群聊触发与执行过程可视化反馈PicoClaw Discord 频道接入实战Bot Token 配置、群聊触发与执行过程可视化反馈 本篇指南以 docs/channels/discord/人工智能AI 应用AI Agent交互助手工具调用MCP ClientsAgent 记忆创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考