返回列表

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 更新

项目截图

1 1 1

相关链接