ShadowBot-FileWebHook
影刀RPA生态中间件,将HTTP请求转换为文件触发器,实现影刀社区版应用的远程触发与回调闭环。
KotlinCompose MultiplatformKtorSQLDelightSQLiteRPADesktop App
项目简介
ShadowBot-FileWebHook 是专为影刀 RPA 设计的桌面中间件应用,核心定位是解决影刀社区版应用不支持 HTTP 触发的问题。项目采用 Kotlin Multiplatform 技术栈构建,将 HTTP 请求转换为文件触发器,实现影刀应用的远程触发,并提供完整的请求-执行-回调闭环机制。
主要特性
- 🔄 HTTP 转文件触发:将外部服务的 HTTP 请求转换为影刀可识别的文件触发器
- 📡 完整回调闭环:支持影刀执行前后的回调通知,实现完整的执行生命周期追踪
- 🔐 权限控制:基于用户-触发器的权限矩阵,API Key 身份验证
- 📊 执行日志:完整的请求参数、响应参数、耗时统计记录
- 🖥️ 桌面应用:原生桌面应用体验,支持 Windows 平台
- 🛠 开发者工具:一键复制影刀框架指令到剪贴板,支持指令模板变量替换
技术栈
| 类别 | 技术 |
|---|---|
| 编程语言 | Kotlin 2.0 |
| UI 框架 | Compose Multiplatform |
| HTTP 服务端 | Ktor Server (CIO) |
| HTTP 客户端 | Ktor Client (CIO) |
| 数据库 | SQLDelight + SQLite |
| 依赖注入 | Koin |
| 序列化 | Kotlinx Serialization |
| 协程 | Kotlinx Coroutines |
| 原生调用 | JNA (Windows API) |
| 日志 | SLF4J + Logback |
技术亮点
亮点一:Kotlin 协程驱动的任务队列
项目实现了一个高性能的任务队列系统,核心特点:
- Channel 生产者-消费者模式:使用 Kotlin Channel 实现任务的生产和消费
- FIFO 串行执行:确保任务按入队顺序依次执行,避免并发冲突
- 有界队列:默认最大 50 个任务,防止内存溢出
- 状态机管理:完整的任务生命周期状态转换
- CompletableDeferred 异步等待:实现回调结果的异步等待机制
// 任务生命周期状态
REQUESTED → QUEUED → PRE_RESPONDED → FILE_WRITTEN →
EXECUTING → COMPLETED → CALLBACK_SUCCESS/FAILED
亮点二:内嵌 Ktor HTTP 服务器
在桌面应用中内嵌完整的 HTTP 服务器:
- CIO 引擎:基于协程的高性能异步 IO,无需额外容器
- RESTful API 设计:清晰的端点设计,支持 JSON 内容协商
- CORS 支持:支持跨域请求,便于外部服务调用
- 统一错误处理:全局异常捕获和标准化错误响应
API 端点:
POST /trigger/execute- 外部服务触发执行POST /triggered- 影刀开始执行回调POST /notify- 影刀执行完成回调
亮点三:SQLDelight 类型安全数据库
使用 SQLDelight 实现编译时类型安全的数据库操作:
- 编译时 SQL 检查:SQL 语句在编译时验证语法正确性
- 自动代码生成:根据 .sq 文件自动生成 Kotlin 代码
- 类型安全查询:所有查询参数和结果都有明确类型
- 多平台支持:同一套 SQL 定义可跨平台使用
// SQLDelight 查询示例
createQuery:
SELECT * FROM execution_logs
WHERE created_at BETWEEN :startTime AND :endTime
ORDER BY created_at DESC;
亮点四:跨平台剪贴板操作
实现了与影刀深度集成的剪贴板操作:
- JNA 原生调用:通过 JNA 调用 Windows 原生 API
- Python 脚本集成:执行 Python 脚本处理影刀指令格式
- 指令模板变量替换:支持动态替换指令中的变量值
- 资源自动提取:脚本资源自动提取,支持开发和打包环境
亮点五:影刀深度集成
实现了与影刀 RPA 的深度集成:
- 自动检测 Python 解释器:自动检测影刀内置 Python 解释器路径
- 元指令文件修改:动态修改影刀的 .metadata 文件
- 文件触发器监听:写入 request.json 文件供影刀监听
- 框架指令生成:一键生成并复制影刀框架指令到剪贴板
亮点六:分层架构 + MVVM 模式
采用清晰的分层架构设计:
┌─────────────────────────────────────────┐
│ UI Layer │
│ Screen Composable + ViewModel │
├─────────────────────────────────────────┤
│ Domain Layer │
│ TaskQueue / FileService / Validator │
├─────────────────────────────────────────┤
│ Data Layer │
│ Repositories + SQLDelight (SQLite) │
├─────────────────────────────────────────┤
│ Server Layer │
│ FileWebHookServer (Ktor CIO) │
└─────────────────────────────────────────┘
- Koin 依赖注入:实现组件松耦合,便于测试和维护
- Repository 模式:数据访问层抽象,统一数据操作接口
- ViewModel 驱动 UI:StateFlow 提供响应式 UI 更新
项目截图

相关链接
- 代码仓库:GitHub