DaizeDong/auto-support

GitHub: DaizeDong/auto-support

一款基于 Claude Code 的 Discord 客服插件,仅依据产品公开文档回答用户问题,并通过模型外部的确定性故障关闭机制防止机密泄露,对不确定的问题自动升级给创始人。

Stars: 0 | Forks: 0

# 自动支持 仅根据公开文档回答您产品 Discord 用户的问题——故障关闭防护机制可将机密信息、算法和 PII 保留在内部,并将不确定的问题升级给创始人处理。 [![Claude Code Skill](https://img.shields.io/badge/Claude%20Code-Skill-orange?style=flat)](https://docs.anthropic.com/en/docs/claude-code) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Languages](https://img.shields.io/badge/Languages-EN%20%2F%20CN-blue?style=flat)](#languages) [![Roadmap](https://img.shields.io/badge/Roadmap-v0.1.1-purple?style=flat)](ROADMAP.md) [English](README.md) | [中文版](README_CN.md) ## ⭐ 请先阅读此部分 —— 设计哲学 一个读取您产品仓库的客服机器人,只需一个提示词的距离就可能泄露您的公司信息。因此 核心原则很直白:**它的首要任务是保守秘密,而不是回答问题。** 宁可 不回答,也绝不泄露一次。至关重要的是,*写在提示词里*的防护措施只是 模型可以忽略的建议(AWS 基线测试:仅靠提示词告诫的泄露率为 3/3;而加上一个确定性 hook -> 成功拦截 3/3)—— 因此这里的每一项保证都存在于模型之**外**:`permissions.deny` + 故障关闭的 `PreToolUse` hook + 标准库检测 + 出站 DLP 网关。模型在物理层面无法打开 机密文件,因此它不可能泄露机密。 📜 **[阅读完整设计哲学 -> PHILOSOPHY.md](PHILOSOPHY.md)** ## 它是什么(以及不是什么) **是:** 一个部署在产品仓库根目录 `.claude/` 下的 Claude Code 插件,旨在根据该产品的**公开**文档回答 其 Discord 用户的问题,具有确定性泄露防护机制,并在不确定时 升级给创始人处理。MVP 的回复是经过人工审核的草稿或中继消息,而非自动发布。 **不是:** 一个通用聊天机器人、代码解释器,或任何为了“显得乐于助人”而读取源代码/机密的东西。超出白名单的问题将被拒绝并升级处理,绝不依靠记忆强行回答。 ## 工作原理 —— 四道故障关闭网关 ``` Discord msg ─▶ entry (injection+intent, spotlighted) ─▶ retrieval (allowlist only, secret-scrubbed) ─▶ grounding (retrieval-conf × faithfulness) ─▶ egress (schema + DLP + canary + citation) ─▶ draft ─▶ founder review ─▶ approve ─▶ user (any gate fails ⇒ neutral refusal + escalate) ``` 知识边界采用**白名单优先、默认拒绝、黑名单至上**的原则:机密文件永远不会被打开, 因此无法被拼凑进回答中。状态管理(FAQ/待处理/已升级)复用 `schedule-reminder` 基础模块;升级处理复用机器人的 Discord 中继功能,并采用 SRE 风格的去重机制。 ## 安装 ``` /plugin install github:DaizeDong/auto-support ``` 或者手动克隆: ``` git clone https://github.com/DaizeDong/auto-support.git ~/.claude/plugins/auto-support ``` ## 快速开始 1. 根据 `reference/config-schema.md` 中的 schema 创建一个私有的 `auto-support-config`;设置 `product_root`、`index_allowlist`、`secret_denylist` 和创始人频道(通过 DPAPI 提供 Discord token)。 2. `apply.py` 会根据 `skills/auto-support/templates/settings.json.template` 组合成产品根目录的 `.claude/settings.json`(包含拒绝 glob 规则和 PreToolUse hook)。 3. 在启用任何非草稿回复模式之前,运行红队测试关卡:`cd skills/auto-support && python -m pytest tests/ -q`。 ## 配置 `auto-support` 是**配置驱动**的——机密和各产品的知识边界位于一个 **独立的私有**配套仓库(`auto-support-config`,模式 B)中,每个产品对应一个独立的 `policy.json`。完整契约和字段表:**[CONFIG.md](CONFIG.md)**(详细结构见 `skills/auto-support/reference/config-schema.md`)。 - **挂载(发现顺序):** `$AUTO_SUPPORT_CONFIG` → `$AUTO_SUPPORT_CONFIG_DIR` → `~/.auto-support-config/` → `~/.config/auto-support-config/`。以第一个存在的路径为准;如果都不存在 ⇒ hook 将回退到其内置的拒绝默认设置(故障关闭)。当前激活的产品由 `$AUTO_SUPPORT_POLICY`(指向 `products//policy.json` 的路径)或唯一的产品来确定。 - **首次使用:** cd skills/auto-support python scripts/init_config.py --slug # 生成符合规范的骨架(确定性) export AUTO_SUPPORT_CONFIG=~/.auto-support-config python scripts/verify_config.py # 诊断工具:显示 PASS/FAIL 并指出缺失项 - **切换配置(热插拔):** 将环境变量重新指向另一个配置目录 —— 配置是 自包含的(`product_root` 是一个占位符,没有内置硬编码路径): `export AUTO_SUPPORT_CONFIG=~/configs/product-a` ↔ `~/configs/product-b`。 - **机密:** 模式 B —— `secrets/*` 被 gitignore 忽略,永远不会进入 git;`policy.json` 中的 `@secret:...` 指针 由配置仓库的 `apply.py` 从 DPAPI 密文中注入。请在带外妥善备份。 ## 如何调用 作为插件部署;通过 `scripts/answer_pipeline.py` 针对每条 Discord 消息运行(或通过无头模式 `/auto-support `)。仅在 @提及 / 回复机器人 / 指定的客服频道中触发。 ## 示例输出 一次成功的对话会返回一份带引用且有依据的草稿(`public-faq/faq.md:4`);一次被拦截/不确定的 对话仅返回一句中性提示(`这个问题我无法确定,已转交团队跟进。`)并提醒创始人。 ## 局限性 MVP 版本为草稿/中继模式(在红队测试套件通过真实产品验证前,不会自动发布)。目前尚无向量 存储(依赖精确的 Read/Grep 溯源机制)。在纯 Windows 环境下没有 OS 沙箱层 —— 请在 WSL2/devcontainer 下运行以获得完整的防御深度。完整的保真度判断 LLM 目前还是一个集成切面。 ## 语言 English (`README.md`, 权威版本) · 中文 (`README_CN.md`) ## 路线图 · 贡献 · 许可证 参见 [ROADMAP.md](ROADMAP.md) · [CONTRIBUTING.md](CONTRIBUTING.md) · [LICENSE](LICENSE) (MIT)。
标签:AI客服机器人, Claude Code插件, Discord集成, 人工智能, 大语言模型应用, 安全规则引擎, 用户模式Hook绕过, 逆向工具