rvaghela20/Agentforce-Edge-Proxy
GitHub: rvaghela20/Agentforce-Edge-Proxy
该项目是一个构建于 Cloudflare Workers 的 Salesforce Agentforce 边缘代理层,解决 API 调用延迟、成本控制以及 Prompt/SOQL 注入防护问题。
Stars: 0 | Forks: 0
# Agentforce 智能边缘代理
这是一个处于 **Salesforce Agentforce**、**Cloudflare Workers**、**Upstash Redis** 和 **Slack** 之间先进的 serverless 集成层,旨在控制 API 成本、缓解 prompt injection 攻击、实现亚毫秒级缓存、动态使过期数据失效,并使用后台 CRON 任务预热关键表。
## 🏗️ 架构

## ⚡ 核心功能
1. **智能边缘缓存**:
- 拦截来自 Agentforce 的搜索查询,并在 Cloudflare 边缘将其与 **Upstash Redis** 缓存进行匹配。
- 在缓存命中时以**毫秒级**速度提供响应,避免缓慢的 Salesforce API 调用。
2. **AI Prompt 与 SOQL Injection 防火墙**:
- 在边缘通过实时正则表达式 WAF 扫描仪过滤输入。
- 在它们触及 Salesforce 之前,检测并阻止 prompt 覆盖脚本(例如 `Ignore previous instructions`)和恶意的 SOQL payload 片段,将攻击者的 IP 写入黑名单,并自动对来自黑名单 IP 的任何后续请求强制执行 `403 Forbidden` 响应拦截。
3. **遥测与成本分析仪表板**:
- 将执行时间、缓存命中/未命中状态、预估的 token 数量/成本以及用户反馈(来自 Slack 的 👍/👎)记录到 Redis。
- 将这些统计数据汇总成实时管理员报告。
4. **智能缓存失效**:
- 集成 Apex/Flow 触发器 webhook,每当 Salesforce 内部的记录被修改时,清除 Upstash Redis 中的缓存条目。
5. **AI 驱动的缓存预热**:
- Cloudflare Cron Triggers 运行后台作业以分析搜索流行度(Sorted Sets),并主动预取热门的 Salesforce 记录,确保用户在开始新的一天时能获得即时的缓存命中。
6. **Slack ChatOps 命令室**:
- 将防火墙拦截卡片、缓存失效警报和诊断指标直接流式传输到 Slack。
- 具有交互式 Slack 按钮,可清除缓存键、运行系统诊断或模拟自定义 prompt injection 攻击。
## 🛠️ 高级性能与安全优化
采用边缘计算的最佳实践设计,以确保高性能和低运营成本:
- **本地隔离内存缓存**:在 Cloudflare Worker 全局内存中缓存数据库版本 namespace,TTL 为 15 秒。这避免了在缓存未命中时按顺序调用 Redis `get`,从而将请求延迟降低 10-30ms。
- **Redis 写入流水线**:将指标写入(用于流行度跟踪的 sorted sets、成本日志、总请求指标)分组到单个 Redis pipelining 数据包中,在后台(`ctx.waitUntil`)通过一次网络往返执行它们。
- **非阻塞式遥测执行**:将成本报告和分析跟踪延迟到客户端响应刷新之后,避免给最终用户带来延迟开销。
## 📁 仓库结构
```
├── cloudflare-worker/ # Wrangler project folder
│ ├── index.js # ES Module edge application containing routing & logic
│ ├── wrangler.toml # Cloudflare Worker configuration & Cron triggers
│ └── package.json # Worker dependencies
│
├── force-app/main/default/ # Salesforce DX Project Source
│ ├── classes/ # Invocable Apex (Callouts, Telemetry Logging, and Invalidation Services)
│ ├── externalCredentials/ # External Credentials metadata
│ ├── namedCredentials/ # Named Credentials metadata
│ ├── permissionsets/ # Salesforce permission sets
│ ├── permissionsetgroups/ # Salesforce permission set groups
│ └── aiAuthoringBundles/ # Agentforce Agent Script definition
│
└── README.md # Project documentation
```
## 🚀 设置项目
### 前置条件
1. **Salesforce Developer Edition Org**:在 [developer.salesforce.com/signup](https://developer.salesforce.com/signup) 注册一个免费的组织。
2. **Cloudflare 账户**:在 [cloudflare.com](https://www.cloudflare.com/) 注册一个免费账户。
3. **Upstash 账户**:在 [upstash.com](https://upstash.com/) 注册免费的 Redis serverless 数据库。
4. **Slack App 集成**:在 [api.slack.com/apps](https://api.slack.com/apps) 的 Slack 工作区中创建一个自定义应用。
### 部署 Cloudflare Worker
1. 导航到 `/cloudflare-worker` 并安装依赖项:
npm install
2. 配置 Wrangler secrets。将以下密钥绑定到您的 Cloudflare Worker 环境:
wrangler secret put UPSTASH_REDIS_REST_URL
wrangler secret put UPSTASH_REDIS_REST_TOKEN
wrangler secret put SLACK_WEBHOOK_URL
3. 配置本地环境变量以进行测试:
在 `cloudflare-worker/` 目录中创建一个 `.dev.vars` 文件(参见 [cloudflare-worker/.dev.vars](file:///home/rohit/Documents/Practice_projects/Agent/Exp/cloudflare-worker/.dev.vars) 模板),以在本地提供您的 API 凭证和配置,而无需将它们提交到 Git。
4. 在本地测试您的 Worker:
npm run dev
5. 将 Worker 部署到 Cloudflare 的边缘:
npm run deploy
### 部署到 Salesforce
1. 使用 Salesforce CLI 授权您的目标 Salesforce Org:
sf org login web -a MyDevOrg -s
2. 使用 SFDX 部署元数据(Apex 类、Named Credentials 和 Agent 定义):
sf project deploy start
3. 将权限集组 `AFDX_User_Perms` 分配给您的集成用户。
4. 在 Salesforce UI 中的 **Setup > Named Credentials > External Credentials** 下填充自定义凭证密钥,使其与您的 worker 环境中 `PROXY_SHARED_SECRET` 的值相匹配。
标签:AppImage, ChatOps, Salesforce集成, Web应用防火墙, 大语言模型安全, 数据可视化, 机密管理, 程序员工具, 缓存中间件, 自定义脚本, 边缘计算