# Jscm-Core-FrameWork **Repository Path**: SnailcatMall/Jscm-Core-FrameWork ## Basic Information - **Project Name**: Jscm-Core-FrameWork - **Description**: Jscm框架是一个基于Java JNI的Windows系统操作框架,提供了丰富的Windows API封装,包括窗口操作、进程线程管理、内存操作、注册表操作、热键驱动等功能。本框架集成了三大模块进行处理,参考了精易模块、超级模块、乐易模块的设计思想,为Java开发者提供了强大的Windows系统底层操作能力。 框架支持X86和X64平台,包含DD键鼠驱动、幽灵键鼠驱动等硬件抽象层功能,同时提供了 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.snailcatmall.com/ - **GVP Project**: No ## Statistics - **Stars**: 17 - **Forks**: 3 - **Created**: 2026-02-21 - **Last Updated**: 2026-09-14 ## Categories & Tags **Categories**: utils **Tags**: Jscm-Core框架, JNI开源框架 ## README # Jscm-Core — Java 系统级原生操作框架(JNI 封装库) > **项目名称**:`Jscm-Core` 框架 > **GroupID**:`com.scm` · **ArtifactID**:`Jscm-Core` · **Version**:`1.0-SNAPSHOT` > **JDK**:Java 8+ · **平台**:Windows 7+(x86 / x64) · **构建**:Maven > **技术路线**:**JNI(Java Native Interface)**,**不是 JNA** --- ## ⚠️ 重要说明:本框架基于 JNI,非 JNA Jscm-Core 使用 **Java Native Interface(JNI)** 技术,通过配套的原生动态链接库 `Jscm.dll`(C/C++ 编写)暴露底层能力,**不使用 JNA(Java Native Access)**。两者的关键区别如下,请勿混淆: | 维度 | JNI(本项目) | JNA | |:---|:---|:---| | 调用方式 | `native` 方法声明 + `System.load("Jscm.dll")` | 运行时反射 + `Library` 接口映射 | | 原生入口 | `ModuleOperationUtilsJNI` 集中声明全部 `native` 方法 | 通过 `Native.load()` 动态代理 | | 性能 | 静态绑定、直接调用,开销更低 | 运行时动态映射,略有额外开销 | | 结构体映射 | 手工维护 `Tag*` / `*_struct` Java 类,字段顺序与 C 结构体一一对应 | 依赖 `Structure` 运行时计算内存布局 | | 回调 | 继承 `com.scm.all.pfunc.*` 空实现接口(虚方法回调) | `Callback` 动态代理 | > 因此本项目所有 `pfunc` 回调类、`struct` 结构体、`ModuleOperationUtilsJNI` 方法均服务于 **JNI** 静态绑定,编写代码时请勿套用 JNA 的 `Structure`/`Native.load` 用法。 --- ## 项目规模一览 | 指标 | 数值 | |:---|:---| | Java 源文件数 | **300+** | | 总代码行数 | **~110,000+** | | JNI `native` 方法数 | **4,963** | | XCGUI 封装方法数 | **1,648**(29 个类) | | JadeView 封装方法数 | **98+**(WebView2 引擎) | | Report_Table 封装方法数 | **2,842**(26 个类) | | Photoshop 自动化方法数 | **582** | | UI 组件引擎(component) | **97 个 `XC*ComponentUI` 组件** | | 回调接口(pfunc) | **47 个**(含 `Nonvirtual` 子包) | | AI 集成 | Ollama / Coze / RunningHub / 云端 LLM 四大平台 | | 现代 Web 服务 | Netty HTTP/WebSocket + RBAC 鉴权 + 阿里云 OSS | --- ## 目录 - [一、项目简介](#一项目简介) - [二、GUI 界面预览](#二gui-界面预览) - [三、功能特性与优势](#三功能特性与优势) - [四、技术栈与依赖](#四技术栈与依赖) - [五、系统架构](#五系统架构) - [六、快速开始](#六快速开始) - [七、模块详解](#七模块详解) - [八、数据结构、枚举与回调体系](#八数据结构枚举与回调体系) - [九、构建与部署](#九构建与部署) - [十、技能库(Skills)使用与提问指南](#十技能库skills使用与提问指南) - [十一、许可](#十一许可) --- ## 一、项目简介 Jscm-Core 是一个 **Java Native Interface(JNI)封装框架**,通过配套的 `Jscm.dll` 原生动态链接库,将 Windows 系统级 API、XCGUI 炫彩界面库、JadeView WebView2 引擎、锐浪报表 Grid++、Adobe Photoshop COM 自动化等底层能力,暴露为 Java 可直接调用的 `native` 静态方法集合。同时内置了纯 Java 实现的现代应用层能力:AI 大模型客户端、Netty 高性能 HTTP/WebSocket 服务、RBAC 鉴权、对象存储、邮件收发、拼多多云打印等,形成「底层原生 + 高层服务」的一体化开发框架。 ### 核心能力一览 | 领域 | 技术底层 | 封装规模 | |:---|:---|:---| | Windows 系统 API | Win32 API(窗口/进程/线程/内存/注册表/句柄) | 400+ | | XCGUI 炫彩界面库 | Direct2D 渲染引擎,29 个控件类 | 1,648 | | JadeView WebView2 | Microsoft Edge WebView2 引擎 | 98+ | | 锐浪报表 Grid++ | COM 报表引擎,26 个功能类 | 2,842 | | Adobe Photoshop | PowerShell COM → JavaScript 自动化 | 582 | | AI 集成 | Ollama / Coze / RunningHub / 云端 LLM | 50+ | | 现代 Web 服务 | Netty HTTP 静态服务器 + WebSocket + 分片传输 | 80+ | | 安全鉴权 | Sa-Token + RBAC + BCrypt + Druid 连接池 | 20+ | | 对象存储 | 阿里云 OSS(上传/下载/分片/进度) | 30+ | | 邮件收发 | SMTP / IMAP / 群发 / 转发 / 重试 | 20+ | | 拼多多云打印 | WebSocket 协议封装 | 15+ | | 键鼠硬件驱动 | DD / Ghost / Md 三种驱动方案 | 100+ | | 内存调试 | 内存读写 / 特征码搜索 / 硬件断点 / API Hook | 80+ | | 反汇编引擎 | CapStone 反汇编 | 10+ | | UI 组件引擎 | 97 个链式组件(基础/表单/数据/反馈/导航/图表等) | 97 类 | | 数据结构 & 枚举 | Tag 结构体 / 枚举常量 / 回调接口 | 150+ | --- ## 二、GUI 界面预览 以下截图展示了框架的实际界面效果,来源于项目内置示例程序 `ComponentShowcase`(JSCM 全组件展示,9 大分类)与 JadeView WebView2 桌面应用。 ### 2.1 XCGUI 炫彩组件展示(ComponentShowcase) `ComponentShowcase` 以顶部选项卡 + 分类面板的形式,集中展示了框架全部 97 个链式组件的真实渲染效果: | 分类 | 说明 | 预览 | |:---|:---|:---| | 基础控件 | 按钮 / 单选 / 复选 / 开关 / 滑块 / 评分等 | ![基础控件](GUI界面/1.png) | | 表单输入 | 输入框 / 数字输入 / 下拉 / 级联 / 日期选择 / 上传等 | ![表单输入](GUI界面/2.png) | | 数据展示 | 表格 / 列表 / 树 / 卡片 / 描述列表 / 时间轴 / 日历 / 进度等 | ![数据展示](GUI界面/3.png) | | 反馈交互 | 消息 / 通知 / 对话框 / 抽屉 / 加载 / 气泡 / 弹出确认等 | ![反馈交互](GUI界面/4.png) | | 导航 | 页签 / 菜单 / 面包屑 / 侧边菜单 / 锚点 / 步骤条等 | ![导航](GUI界面/5.png) | | 数据容器 | 表格 / 列表 / 树 / 穿梭框 / 无限滚动等 | ![数据容器](GUI界面/6.png) | | 图表 | 折线 / 柱状 / 饼图 / 漏斗 / 仪表盘 / 热力图 / K线 / 散点 / 金融图 | ![图表](GUI界面/7.png) | | 图标库 | 内置 200+ SVG 图标 | ![图标库](GUI界面/8.png) | | 头部菜单 | 头部导航 / 下拉菜单 / 菜单栏 | ![头部菜单](GUI界面/9.png) | ### 2.2 JadeView WebView2 桌面应用 基于 Chromium 内核的 HTML/CSS/JS 桌面应用,支持无边框、透明、圆角等现代 UI 能力: | 场景 | 预览 | |:---|:---| | JadeView 桌面应用窗口 | ![JadeView 窗口](GUI界面/10.png) | | JadeView 交互效果 | ![JadeView 交互](GUI界面/11.png) | --- ## 三、功能特性与优势 ### 3.1 底层原生能力(JNI) - **全量 Win32 API 封装**:窗口、进程、线程、内存、注册表、句柄、模块枚举等系统级操作均可直接以 `native` 静态方法调用。 - **双架构自适应**:通过 `sun.arch.data.model` 自动检测 32/64 位,自动加载对应的 `Jscm.dll`,API 签名按 `long`/`int` 地址宽度对称设计。 - **硬件级键鼠模拟**:DD / Ghost / Md 三种驱动方案,支持绝对/相对移动、按键、滚轮、文本输入,可绕过应用层检测。 - **内存调试三件套**:跨进程内存读写 + 特征码搜索、硬件断点(DR0-DR3)、API Hook,覆盖逆向与自动化场景。 - **CapStone 反汇编**:内嵌反汇编引擎,支持 x86/x64 指令流解析。 ### 3.2 界面与报表 - **XCGUI 炫彩界面库**:基于 Direct2D 硬件加速,29 个控件类、1,648 个方法,提供现代扁平化 / 圆角 / 透明窗口等 UI 能力。 - **JadeView WebView2**:基于 Chromium 内核,支持透明窗口、无边框、自定义 UA、预加载 JS、CORS 白名单、IPC 跨进程通信,可用 HTML/CSS/JS 构建桌面应用界面。 - **锐浪报表 Grid++**:COM 报表引擎完整封装,支持设计器、打印预览、PDF/Excel/Word/HTML 导出、图表、条形码、交叉表等企业级报表能力。 ### 3.3 现代应用服务层(纯 Java) - **Netty 高性能服务**:内置静态文件 HTTP 服务器、WebSocket 服务器(文本/二进制/文件分片)、断点续传、分片传输协议(`ChunkedTransfer`)、代理路由、压测工具(`PressureTest`)。 - **RBAC 安全鉴权**:基于 Sa-Token,内置登录限流防暴力破解、BCrypt 密码散列、MySQL 用户数据源(Druid 连接池)、角色权限接口抽象、验证码。 - **对象存储**:阿里云 OSS 客户端单例封装,支持上传/下载、分片、进度回调、预签名 URL、缩略图,配置写入统一配置中心。 - **邮件收发**:SMTP 发信(含反垃圾邮件头、群发连接复用、失败追踪、SMTP 返回码智能重试)、IMAP 收信(递归 MIME 解析、心跳保活、自动重连)、转发功能。 - **拼多多云打印**:完整封装拼多多打印组件 WebSocket 协议(打印机管理 / 打印任务 / 任务状态查询 / 结果通知),提供链式 Builder 数据模型。 - **AI 大模型集成**:本地 Ollama、云端 LLM、Coze 工作流、RunningHub 平台四大 AI 能力,支持流式输出、多模态(图片)、技能系统。 ### 3.4 UI 组件引擎(纯 Java · 无 Swing 依赖) - 97 个 `XC*ComponentUI` 链式组件,覆盖基础控件、表单输入、数据展示、反馈交互、导航、数据容器、图表、图标库等完整分类。 - 内置全局事件分发器(`XCUIEventDispatcher`)、全局资源回收系统(`XCUIResourceManager`,类似 Java GC)、主题令牌(`ElementTheme`)、动画引擎(`AnimationEngine`/`Easing`)。 - 流光边框动画引擎、图像编辑工具(贴纸/透视变换)等高级工具。 ### 3.5 架构优势 - **统一日志**:全项目基于 slf4j + logback,统一日志规范。 - **链式 / Fluent API**:AI 工具包、JadeViewApp、打印数据模型、组件 Builder 等均采用 Builder + 链式调用,代码简洁易读。 - **线程安全**:并发控制使用 `CopyOnWriteArrayList`、`ConcurrentHashMap`、`AtomicLong` 等,避免竞态。 - **资源自动管理**:ShutdownHook 自动清理、`AutoCloseable` 释放连接池、`XCUIResourceManager` 自动回收句柄,避免资源泄漏。 - **泛型化与类型安全**:消除 raw type 与 unchecked cast,编译期类型检查更严格。 --- ## 四、技术栈与依赖 | 依赖 | 版本 | 用途 | |:---|:---|:---| | `commons-lang3` | 3.12.0 | 字符串/对象通用工具 | | `javax.mail` | 1.6.2 | SMTP/IMAP 邮件收发 | | `junit` | 4.13.2 | 单元测试 | | `slf4j` + `logback` | 内置 | 统一日志 | | `fastjson2` | 内置 | JSON 序列化(snake_case 映射) | | `OkHttp` | 内置 | HTTP/WebSocket 客户端(拼多多打印) | | `Netty` | 内置 | HTTP/WebSocket 服务器与客户端 | | `Sa-Token` | 内置 | RBAC 鉴权 | | `Druid` | 内置 | MySQL 连接池 | | `aliyun-sdk-oss` | 内置 | 阿里云对象存储 | | `lucene-core` 等 | 8.11.4 | 全文检索(Java 8 最后兼容版) | > 原生依赖(JNI 动态库):`Jscm.dll` / `grdes6x64.dll` / `ghost_x64.dll` / `md_x64.dll` / `jawt.dll` 等,位于 `src/main/resources/init_/x64` 与 `x86`。 --- ## 五、系统架构 ``` ┌─────────────────────────┐ │ App.java (入口层) │ └────────────┬────────────┘ │ 调用 ┌──────────────────────────┼──────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────────────┐ ┌───────────────────┐ ┌──────────────────┐ │ AI 集成层 │ │ 业务组件层 │ │ 高级工具层 │ │ ClaudeCode │ │ 97 个 XC*组件 │ │ PhotoshopTool │ │ CozeAI │ │ XCChainedUI │ │ PowerShell │ │ RunNingHubAI │ │ AnimationEngine │ │ EMailUtils │ │ CloudLLM │ │ XCUIResourceMgr │ │ PddPrintUtils │ └────────┬────────┘ │ XCUIEventDispatch│ │ CaptchaGenerator│ │ └────────┬──────────┘ │ CapStone │ ▼ ▼ └────────┬─────────┘ ┌──────────────────────────────────────────────────────────────────────┐ │ 服务层 (Netty / 鉴权 / 存储) │ │ NettyDirectoryServer NettyHttpClient SaTokenUtil(RBAC) │ │ JadeViewApp(门面) JadeViewOss ChunkedTransfer(分片) │ └─────────────────────────────────┬────────────────────────────────────┘ │ 调用 ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ 高级封装层 (High-Level Wrappers) │ │ XC_GUI (29类) JadeViewGUI (WebView2) Report_Table (26类) │ │ WindowOperationUtils ProcessAndThreadUtils SystemUtils │ └─────────────────────────────────┬────────────────────────────────────┘ │ 调用 ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ 基础设施层 (Infrastructure) │ │ ModuleOperationUtilsJNI (4,963 native) pfunc(47接口) struct(枚举) │ └─────────────────────────────────┬────────────────────────────────────┘ │ System.load("Jscm.dll") ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ Jscm.dll (原生 C/C++ 动态链接库) │ │ XCGUI 引擎 · JadeView · Grid++ · Win32 API · CapStone · 键鼠驱动 │ └──────────────────────────────────────────────────────────────────────┘ ``` ### 完整目录结构 ``` src/main/java/ │ ├── App.java # 应用入口 & 使用示例 ├── ComponentShowcase.java # JSCM 全组件展示(97 组件,9 大分类) ├── META-INF/MANIFEST.MF │ └── com/scm/ ├── all/ # ════════ 平台无关模块 ════════ │ │ │ ├── AI/ # AI 集成模块 │ │ ├── ClaudeCode/ # 本地 Ollama 大模型工具包 │ │ │ ├── ClaudeCodeToolkit.java # 主工具入口(链式 API) │ │ │ ├── client/OllamaClient.java # Ollama HTTP 客户端 │ │ │ ├── cloud/CloudLLMClient.java # 云端 LLM 客户端 │ │ │ ├── cloud/CloudLLMConfig.java # 云端配置(Provider/Presets) │ │ │ ├── config/ConfigManager.java # 配置管理器(.env) │ │ │ ├── config/OllamaConfig.java # Ollama 配置(Builder) │ │ │ ├── model/ # ChatRequest/ChatResponse/Message │ │ │ ├── skills/ # Skill/SkillManager/CloudReviewSkill │ │ │ ├── agent/ # AgentLoop(ReAct 工具调用) │ │ │ ├── tool/ # 内置工具(fs/shell/web/todo) │ │ │ └── utils/ # ImageProcessor/UrlHandler │ │ ├── CozeAI/ # Coze 工作流平台 │ │ └── RunNingHubAI/ # RunningHub AI 平台 │ │ │ ├── component/ # UI 组件引擎(纯 Java,97 个组件) │ │ ├── XCChainedUI.java # ★ 链式 API 唯一入口 │ │ ├── XCUIEventDispatcher.java # 全局元素事件分发器 │ │ ├── XCUIResourceManager.java # 全局资源回收系统(GC) │ │ ├── XC*ComponentUI.java # 97 个组件实现 │ │ ├── AnimationEngine.java # 通用动画引擎 │ │ ├── anim/ # Anim/AnimateCSS/CubicBezier/Easing/Keyframes │ │ ├── chart/ # ChartTooltip/ChartUtil │ │ ├── layout/ # Responsive/ResponsiveGrid │ │ ├── paint/ # Graphics2DBridge/PaintCallback │ │ ├── theme/ElementTheme.java # 主题设计令牌 + 明暗监听 │ │ ├── pfunc/BannerCallBack.java │ │ └── Utils/ # AnimatedBorderEngine/ImageEditorTool │ │ │ ├── export/ # 核心导出模块 │ │ ├── ModuleOperationUtilsJNI.java # ★ JNI 总入口(~4,963 native) │ │ ├── WindowOperationUtils.java # 窗口操作封装 │ │ ├── ProcessAndThreadUtils.java # 进程线程操作 │ │ ├── SystemUtils.java # 系统工具集 │ │ ├── ByteUtils.java # 字节编码转换 │ │ ├── ColorUtils.java # 颜色处理 │ │ ├── PathFileJSCM.java # DLL 路径管理(强制初始化) │ │ ├── SearchLucene.java # Lucene 全文检索 │ │ │ │ │ ├── XC_GUI/ # XCGUI 炫彩界面(29 类) │ │ ├── JadeViewGUI/ # JadeView WebView2 + 服务层 │ │ │ ├── JadeViewApp.java # ★ 应用门面(Builder 启动) │ │ │ ├── JadeViewConfig.java # 统一配置中心 │ │ │ ├── JadeViewOss.java # 阿里云 OSS 客户端 │ │ │ ├── NettyDirectoryServer.java # HTTP 静态服务器 + WebSocket │ │ │ ├── NettyHttpClient.java # HTTP 客户端 + 分片 + WebSocket │ │ │ ├── PressureTest.java # 压测工具 │ │ │ ├── auth/ # RBAC 鉴权(Sa-Token) │ │ │ └── core/ # WebView2 核心封装(8 类) │ │ │ │ │ ├── Report_Table/ # 锐浪报表 Grid++(26 类) │ │ ├── EmailUtils/ # 邮件收发(EMailUtils/CallBack) │ │ ├── Print/ # 拼多多云打印(PddPrintUtils) │ │ ├── VerificationCodeUtils/ # 验证码(CaptchaGenerator) │ │ ├── capstone/ # 反汇编引擎(CapStone) │ │ ├── hotkey/ # 键鼠驱动(DD/Ghost/Md) │ │ └── powerUtils/ # PowerShell/CMD/Photoshop │ │ │ ├── pfunc/ # 回调函数接口(47 个) │ │ └── Nonvirtual/ # 非虚回调变体(10 个) │ │ │ └── struct/ # 数据结构 │ ├── Enum/ # 枚举常量 │ │ ├── JadeView_Enum/ ReportGrid_Enum/ XC_Enum/ │ ├── JadeView_struct/ # JadeView 结构体(6 个) │ └── Tag*.java # 基础数据结构(38 个) │ ├── x64/export/ # 64 位专用模块(4 个) └── x86/export/ # 32 位专用模块(4 个) ``` --- ## 六、快速开始 ### 6.1 Maven 依赖 ```xml com.scm Jscm-Core 1.0-SNAPSHOT ``` ### 6.2 JNI 初始化(强制起始头) > **硬性要求**:任何 JNI 调用之前,必须先执行 `PathFileJSCM` 三连初始化,否则 `Jscm.dll` 无法加载。 ```java import com.scm.all.export.PathFileJSCM; public class App { public static void main(String[] args) { // ===== JSCM 框架初始化(强制,必须放最前面)===== PathFileJSCM.setDebugFile32(PathFileJSCM.getJarPath() + "sdk\\x86\\"); PathFileJSCM.setDebugFile64(PathFileJSCM.getJarPath() + "sdk\\x64\\"); PathFileJSCM.setIsDebug(false); // 生产 false / 开发 true } } ``` ### 6.3 最小示例(XCGUI 窗口) ```java import com.scm.all.export.XC_GUI.*; import com.scm.all.export.PathFileJSCM; // 起始头三连(见 6.2) XCGUI_Core.XInitXCGUI(true); // true=D2D,false=GDI int hWindow = XCGUI_Window.XWnd_Create(0, 0, 600, 400, "我的窗口", 0, WindowStyle.window_style_default.getValue()); int hButton = XCGUI_Button.XBtn_Create(10, 10, 100, 30, "按钮", hWindow); XCGUI_Window.XWnd_Show(hWindow, true); XCGUI_Core.XRunXCGUI(); // 消息循环(阻塞) XCGUI_Core.XExitXCGUI(); // 退出 ``` ### 6.4 现代 Web 应用(JadeViewApp 门面) ```java import com.scm.all.export.JadeViewGUI.JadeViewApp; JadeViewApp app = JadeViewApp.builder("我的应用", "myapp123") // appSignature ≥ 6 字符 .rootPath(JadeViewApp.getJarDirectory()) .htmlEntry("index.html") .devMode(true) .httpPort(0) // 自动分配端口 .subscribe(-1, "app-ready", (wid, data) -> { app.windowBuilder("主窗口", 1200, 800).build(); return 0; }) .launch(); app.runMessageLoop(); // 阻塞;退出时自动清理 ``` ### 6.5 链式组件(XCChainedUI) ```java import com.scm.all.component.XCChainedUI; XCChainedUI.app() .window("链式组件示例", 800, 600) .button(20, 20, 120, 40, "点击我") .onClick(id -> System.out.println("按钮被点击")) .end() .show() .run(); ``` --- ## 七、模块详解 ### 7.1 ModuleOperationUtilsJNI — JNI 总入口 > **文件**:`com/scm/all/export/ModuleOperationUtilsJNI.java` > **规模**:约 4,963 个 `native` 方法声明 > **职责**:DLL 加载、系统架构检测、所有原生 API 的 Java 侧入口 ```java static { if (systemIs32()) { System.load(tileDir() + "Jscm.dll"); } if (systemIs64()) { System.load(tileDir() + "Jscm.dll"); } } ``` | 分类 | 代表方法 | 说明 | |:---|:---|:---| | 窗口操作 | `FindWindowW`, `ShowWindow`, `SetWindowPos`, `SendMessageW` | Win32 窗口 API | | 进程线程 | `CreateToolhelp32Snapshot`, `OpenProcess`, `CreateRemoteThread` | 进程/线程管理 | | 内存操作 | `ReadProcessMemory`, `WriteProcessMemory`, `VirtualQueryEx` | 跨进程内存读写 | | XCGUI | `XInitXCGUI`, `XWnd_Create`, `XBtn_Create`, `XRunXCGUI` | 炫彩 UI 全量封装 | | JadeView | `JadeView_Init`, `JadeView_Create_Webview_Window_` | WebView2 引擎 | | Report_Table | `report_Table_SetComPointer`, `report_Chart_SetChart3D` | 锐浪报表 COM | | 键鼠驱动 | `DDBtn`, `DDMov`, `M_Delay` | DD/Ghost/Md 驱动 | | 反汇编 | `CapStone_cs_open`, `CapStone_cs_disasm` | CapStone 引擎 | | 硬件断点 | `RunHardwareBreakpointX86/X64` | 硬件调试断点 | | 注册表 | `RegOpenKeyExW`, `RegSetValueExW`, `RegDeleteKeyW` | 注册表 CRUD | ### 7.2 核心工具类 #### ByteUtils — 字节 / 编码 / 进制 / 算法 ```java import com.scm.all.export.ByteUtils; // 基础类型 ↔ 字节数组 byte[] b = ByteUtils.intToBytesArray(12345); int i = ByteUtils.bytesArrayToInt(b); // 字符串编码(与 Windows API 交互务必使用,避免乱码) byte[] utf8 = ByteUtils.utf8ToBytesArray("中文"); String text = ByteUtils.bytesArrayToUtf8WideString(utf8); // 进制转换 String hex = ByteUtils.bytesToHexString(b); byte[] back = ByteUtils.hexStrToBytes(hex); // 特征码搜索(?? 通配) ByteUtils.hexToMd5BytesMatches("48 8B ?? ??", data); ``` #### ColorUtils — 颜色转换 ```java import com.scm.all.export.ColorUtils; // RGBA 格式:(alpha<<24)|(b<<16)|(g<<8)|r long red = ColorUtils.RGBA(255, 0, 0, 255); long blue = ColorUtils.RGBA("#0088FF", 255); // 必须带 # 前缀 int[] hsv = ColorUtils.rgbToHsv(255, 0, 0); ``` ### 7.3 XC_GUI — XCGUI 炫彩界面库封装 > **包**:`com.scm.all.export.XC_GUI` · **规模**:29 类 · 1,648 方法 · **引擎**:Direct2D | 类名 | 方法数 | 功能 | |:---|:---|:---| | `XCGUI_Window` | 149 | 窗口创建/显示/调整/消息循环 | | `XCGUI_Core` | 120 | 初始化/退出/布局加载/全局设置 | | `XCGUI_Edit` | 119 | 编辑框/富文本编辑器 | | `XCGUI_Element` | 116 | 通用元素操作 | | `XCGUI_Draw` | 114 | 绘图引擎 | | `XCGUI_List` | 111 | 列表控件 | | `XCGUI_Adapter` | 107 | 数据适配器 | | `XCGUI_Image` | 107 | 图像对象操作 | | `XCGUI_ListView` | 82 | 列表视图 | | `XCGUI_ListBox` | 78 | 列表框 | | `XCGUI_Tree` | 69 | 树形控件 | | `XCGUI_Shape` | 63 | 形状控件 | | `XCGUI_ComboBox` | 52 | 组合框 | | `XCGUI_Menu` | 46 | 菜单 | | `XCGUI_Animation` | 45 | 动画引擎 | | `XCGUI_Background` | 44 | 背景对象 | | `XCGUI_ScrollView` | 28 | 滚动视图 | | `XCGUI_TabBar` | 26 | 标签栏 | | `XCGUI_Button` | 26 | 按钮 | | `XCGUI_Layout` | 22 | 布局管理器 | | `XCGUI_Pane` | 22 | 面板/分组框 | | `XCGUI_Table` | 21 | 表格 | | `XCGUI_Font` | 20 | 字体管理 | | `XCGUI_ScrollBar` | 18 | 滚动条 | | `XCGUI_DateTime` | 18 | 日期时间选择器 | | `XCGUI_ToolBar` | 11 | 工具栏 | | `XCGUI_ProgressBar` | 10 | 进度条 | | `XCGUI_PropertyGrid` | 4 | 属性网格 | > **句柄类型铁律**:`XWnd_*` 只接受**窗口句柄**;`XEle_*`/`XLayout_*`/`XDraw_*` 接受**元素/布局句柄**。混用会触发 `Jscm.dll` 空指针崩溃。 ### 7.4 component — UI 组件引擎(纯 Java) > **包**:`com.scm.all.component` · **规模**:97 个 `XC*ComponentUI` · **无 Swing 依赖** 核心四件套: | 文件 | 职责 | |:---|:---| | `XCChainedUI.java` | 链式 API 唯一入口(App/Window/Element/各组件 Builder) | | `XCUIEventDispatcher.java` | 全局唯一元素事件分发器 | | `XCUIResourceManager.java` | 全局资源回收系统(类似 Java GC) | | `XC*ComponentUI.java` | 单个组件真正实现(97 个) | #### 97 个组件清单 - **基础控件**:`XCButtonComponentUI`、`XCInputComponentUI`、`XCInputNumberComponentUI`、`XCRadioComponentUI`、`XCCheckboxComponentUI`、`XCSwitchComponentUI`、`XCSelectComponentUI`、`XCMultiSelectComponentUI`、`XCAutocompleteComponentUI`、`XCSearchComponentUI`、`XCSliderComponentUI`、`XCRateComponentUI`、`XCUploadComponentUI`、`XCTagComponentUI`、`XCDatePickerComponentUI`、`XCTimePickerComponentUI`、`XCDateRangePickerComponentUI`、`XCDateTimePickerComponentUI`、`XCCascaderComponentUI`、`XCTransferComponentUI`、`XCInputOtpComponentUI`、`XCInputTagComponentUI`、`XCColorPickerComponentUI`、`XCSegmentedComponentUI`、`XCTreeSelectComponentUI`。 - **数据展示**:`XCTableComponentUI`、`XCListBoxComponentUI`、`XCListViewComponentUI`、`XCTreeComponentUI`、`XCCardPanelComponentUI`、`XCCardTabsComponentUI`、`XCDescriptionsComponentUI`、`XCEmptyComponentUI`、`XCAvatarComponentUI`、`XCBadgeComponentUI`、`XCStatisticComponentUI`、`XCTimelineComponentUI`、`XCCalendarComponentUI`、`XCProgressComponentUI`、`XCProgressGaugeComponentUI`、`XCAnimatedNumberBoxUI`、`XCDynamicNumberComponentUI`、`XCCountdownComponentUI`、`XCSkeletonComponentUI`、`XCResultComponentUI`、`XCWatermarkComponentUI`、`XCDividerComponentUI`、`XCSpaceComponentUI`、`XCRowColComponentUI`。 - **反馈**:`XCMessageComponentUI`、`XCMessageBoxComponentUI`、`XCNotificationComponentUI`、`XCAlertComponentUI`、`XCDialogComponentUI`、`XCDrawerComponentUI`、`XCLoadingComponentUI`、`XCTooltipComponentUI`、`XCPopoverComponentUI`、`XCPopconfirmComponentUI`、`XCTourComponentUI`。 - **导航/容器**:`XCMenuComponentUI`、`XCMenuBarComponentUI`、`XCContextMenuComponentUI`、`XCBreadcrumbComponentUI`、`XCPaginationComponentUI`、`XCStepBarComponentUI`、`XCTabsComponentUI`、`XCToolBarComponentUI`、`XCHeaderComponentUI`、`XCPageHeaderComponentUI`、`XCAffixComponentUI`、`XCAnchorComponentUI`、`XCBacktopComponentUI`、`XCInfiniteScrollComponentUI`、`XCCarouselComponentUI`、`XCBannerCarouselComponentUI`、`XCBannerComponentUI`、`XCCollapseComponentUI`、`XCContainerComponentUI`、`XCSideMenuLayoutComponentUI`、`XCSplitButtonComponentUI`、`XCSplitterComponentUI`、`XCScrollBarComponentUI`、`XCScrollViewComponentUI`、`XCIconComponentUI`、`XCLinkComponentUI`、`XCFormComponentUI`、`XCDropdownComponentUI`。 - **图表**:`XCLineChartComponentUI`、`XCBarChartComponentUI`、`XCPieChartComponentUI`、`XCFunnelChartComponentUI`、`XCGaugeChartComponentUI`、`XCHeatmapChartComponentUI`、`XCKLineChartComponentUI`、`XCScatterChartComponentUI`、`XCFinancialChartComponentUI`。 - **其他**:`XCButtonAnimateComponentUI`、`XCButtonEffectsComponentUI`、`XCImageComponentUI`、`XCImageEditComponentUI`、`XCSpreadsheetComponent`、`XCResponsiveComponentUI`、`AnimationEngine`、`BannerEffect`。 #### 链式 Builder 用法示例 ```java p.button(20, 20, 120, 40, "点击我") .onClick(id -> System.out.println("点击")) .end(); p.timeline(260, 300, 260, 300, items) .onItemClick((index, item) -> System.out.println("第 " + index + " 项:" + item.title)) .end(); p.calendar(240, 180, 240, 180).end(); ``` #### 事件分发器(XCUIEventDispatcher) 炫彩 `XEle_RegEventC1` 原生只保留**最后一次**注册回调的 `Class`。若每个组件各写匿名子类,会互相覆盖导致事件错乱/不触发。因此全部事件统一走全局分发器: ```java XCUIEventDispatcher.bind(hEle, XE_BNCLICK.getMessageCode(), "OnBtnClick", callback); XCUIEventDispatcher.clear(hEle); // 销毁时清理事件处理器 ``` #### 资源回收(XCUIResourceManager) 类似 Java GC 的全局资源回收系统,解决句柄泄漏: ```java // 窗口销毁时自动回收注册的清理动作 XCUIResourceManager.instance().register(window.handle(), () -> XCButtonComponentUI.destroy(ins)); // 弱引用跟踪,对象不可达时自动清理 XCUIResourceManager.instance().track(referent, cleanup); ``` --- ### 7.5 JadeViewGUI — WebView2 引擎 + 现代服务层 > **包**:`com.scm.all.export.JadeViewGUI` · **底层**:Microsoft Edge WebView2(Chromium) 该模块分为三个层次: | 层次 | 类 | 职责 | |:---|:---|:---| | **应用门面** | `JadeViewApp` | Builder 启动、HTTP 服务器、协议路径、窗口创建、事件订阅 | | **服务层** | `NettyDirectoryServer` / `NettyHttpClient` | 静态文件服务、WebSocket、分片传输、代理、压测 | | **鉴权/存储** | `SaTokenUtil` / `JadeViewOss` / `JadeViewConfig` | RBAC 鉴权、对象存储、配置中心 | | **核心封装** | `core/JadeView_*`(8 类) | WebView2 窗口/系统/对话框/托盘/菜单/IPC | #### JadeViewApp 应用门面 ```java JadeViewApp app = JadeViewApp.builder("应用名", "签名≥6字符") .rootPath(JadeViewApp.getJarDirectory()) .htmlEntry("index.html") .devMode(true) .httpPort(0) .singleInstance(true) .fileCache(true) .enableRbac(new InMemoryRbacUserProvider().addUser("admin", "123", null, null)) .subscribe(-1, "app-ready", callback) // Init 前预订阅,不丢早期事件 .addApiRoute("/api/db/", handler) // 注册 API 路由 .launch(); int winId = app.windowBuilder("主窗口", 1200, 800) .theme("Dark").alwaysOnTop(true).borderless().transparent(true) .disableRightClick().ua("MyApp/1.0").build(); ``` #### NettyDirectoryServer — HTTP 静态服务器 + WebSocket ```java int port = NettyDirectoryServer.start(8080, "./www"); NettyDirectoryServer.addApiRoute("/api/", (method, body, headers, path) -> json); NettyDirectoryServer.addProxyRoute("/api/", "http://localhost:3000/"); NettyDirectoryServer.setWebSocketListener(listener); NettyDirectoryServer.broadcastText("hello"); NettyDirectoryServer.broadcastFile(file); // 自动分片 ``` #### NettyHttpClient — HTTP 客户端 + 分片 + WebSocket ```java NettyHttpClient.get(url, callback); NettyHttpClient.downloadResumable(url, file, (recv, total) -> { }); // 断点续传 NettyHttpClient.chunkedUpload(url, data, callback); // 分片上传 NettyHttpClient.connectWebSocket(url, callback); // WebSocket 客户端 ``` #### RBAC 鉴权(Sa-Token) ```java SaTokenUtil.init(provider); String token = SaTokenUtil.login("admin", "123456"); boolean isAdmin = SaTokenUtil.isAdmin(SaTokenUtil.getLoginIdByToken(token)); // MySQL 数据源(Druid + BCrypt) try (MySqlRbacUserProvider mysql = new MySqlRbacUserProvider(url, user, pass)) { SaTokenUtil.init(mysql); } ``` #### JadeViewOss — 阿里云对象存储 ```java JadeViewOss oss = JadeViewOss.getInstance(); oss.init(endpoint, ak, sk, bucket); String url = oss.upload("dir/file.txt", new File("C:\\file.txt")); oss.download("dir/file.txt", new File("C:\\download.txt")); oss.shutdown(); ``` --- ### 7.6 Report_Table — 锐浪报表 Grid++ 封装 > **包**:`com.scm.all.export.Report_Table` · **规模**:26 类 · 2,842 方法 · **底层**:COM | 类名 | 方法数 | 功能 | |:---|:---|:---| | `Report_Table` | 298 | 报表主表(COM 初始化) | | `Report_Chart` | 208 | 图表(柱状/饼图/折线/3D) | | `Report_Column` | 206 | 列对象 | | `Report_Export` | 172 | 导出(PDF/Excel/Word/HTML/图片) | | `Report_TableSelect` | 147 | 选择集 | | `Report_Control` | 132 | 报表控件 | | `Report_TextBox` | 130 | 文本框 | | `Report_Section` | 123 | 节/段落 | | `Report_Graphics` | 123 | 图形绘制 | | `Report_Printer` | 120 | 打印机管理 | | `Report_Group` | 113 | 分组 | | `Report_Utility` | 99 | 工具方法 | | `Report_TableDesign` | 98 | 设计器 | | `Report_Field` | 96 | 字段 | | `Report_DetailGrid` | 94 | 明细网格 | | `Report_FreeGrid` | 84 | 自由网格 | | `Report_Image` | 79 | 图像对象 | | `Report_Recordset` | 69 | 记录集 | | `Report_Parameter` | 69 | 参数 | | `Report_TablePrint` | 67 | 打印控制 | | `Report_Font` | 64 | 字体 | | `Report_CrossTab` | 60 | 交叉表 | | `Report_CellBase` | 48 | 单元格基类 | | `Report_Barcode` | 48 | 条形码 | | `Report_Border` | 24 | 边框 | | `Report_BinaryObject` | 20 | 二进制对象 | ```java Report_Table.report_Table_RegisterComSilent("GridppReport.dll"); Report_Table.report_Table_SetComPointer(Report_Table.report_Table_InitPointer()); Report_Column.report_Column_SetWidth(columnHandle, 120); Report_Export.report_Export_ExportToPDF("C:\\output.pdf"); ``` --- ### 7.7 窗口与进程工具 ```java // WindowOperationUtils WindowOperationUtils.enumWindowClose("Notepad", null); WindowOperationUtils.windowTop(hwnd, true, 0); WindowOperationUtils.windowSetAlpha(hwnd, 128); // ProcessAndThreadUtils List procs = ProcessAndThreadUtils.processEnumInfo(); int pid = ProcessAndThreadUtils.processNameGetPid("chrome.exe"); ``` --- ### 7.8 EmailUtils — 邮件收发子系统 ```java EMailUtils.send("to@qq.com", "主题", "

正文

", "from@139.com", "password"); EMailUtils.sendBatch(session, transport, recipients, "主题", "正文"); EMailUtils.forward(message, "forward@qq.com", "转发备注"); EMailUtils.getEmailDataSafe(session, host, user, pass, "imap", "INBOX", store, callback); ``` --- ### 7.9 Print — 拼多多云打印 ```java PddPrintUtils pdd = new PddPrintUtils(); // ws://127.0.0.1:5000 pdd.connectBlocking(5000); List printers = pdd.getPrinters(); PddPrintUtils.PrintResult result = pdd.print(task); pdd.close(); ``` --- ### 7.10 hotkey — 键鼠驱动子系统 ```java // DD 驱动 DdDriver.btn(1); // 左键按下 DdDriver.mov(500, 300); // 绝对移动 DdDriver.key(30, 1); // 按键 // Ghost 驱动 GhostDriver.getDeviceListByModel(); GhostDriver.selectDeviceBySerialNumber("SN12345"); // Md 驱动 MdDriver.m_Delay(100); ``` --- ### 7.11 Adobe Photoshop 自动化 ```java PhotoshopTool.openDocument("C:\\photo.psd"); PhotoshopTool.resizeImage(1920, 1080); PhotoshopTool.applyGaussianBlurFilter(5.0); PhotoshopTool.saveDocumentAs("C:\\out.jpg", "JPEG"); ``` --- ### 7.12 AI 集成模块 > **包**:`com.scm.all.AI` · **四大平台**:ClaudeCode / CloudLLM / CozeAI / RunNingHubAI #### ClaudeCodeToolkit — Ollama 本地大模型(链式 API) ```java import com.scm.all.AI.ClaudeCode.ClaudeCodeToolkit; // 最简单用法 ClaudeCodeToolkit toolkit = new ClaudeCodeToolkit(); String reply = toolkit.chat("你好,请介绍一下自己"); // 链式调用 String reply2 = ClaudeCodeToolkit.create() .model("qwen3:8b") .stream(true) .system("你是一个专业的 Java 程序员") .skill("JSCM 全栈开发技能") // 激活内置技能 .chat("帮我写一个单例模式"); // 流式输出 toolkit.chatStream("写一首诗", chunk -> System.out.print(chunk.getContent())); // 多轮对话 toolkit.user("我叫张三").chat(); System.out.println(toolkit.user("我叫什么名字?").chat()); ``` #### 技能系统(Skill / SkillManager) 框架内置 **JSCM 全栈开发技能**(`src/main/resources/skills/SKILL.md`),整合了项目初始化、工具类、炫彩 UI、链式组件、JadeView、报表、AI、Lucene 等全部开发知识。`ClaudeCodeToolkit` 启动时自动加载并激活。 ```java SkillManager manager = new SkillManager(); manager.loadBundledSkills(); Skill skill = manager.findByName("JSCM 全栈开发技能"); manager.setActiveSkill(skill); ``` #### CloudLLMClient — 云端 LLM ```java CloudLLMConfig config = CloudLLMConfig.presets().deepSeek("sk-xxx", "deepseek-chat"); CloudLLMClient client = new CloudLLMClient(config); String reply = client.chat("你好"); // 推理内容(DeepSeek-R1 等思考模型) CloudLLMClient.ChatResult result = client.chatDetailed("9.11 和 9.8 哪个大?"); System.out.println("正文: " + result.getContent()); if (result.hasReasoning()) System.out.println("推理: " + result.getReasoning()); ``` #### CozeAI / RunNingHubAI ```java CoZeWorkflowClient.setAccessToken("your-token"); String fileId = CoZeWorkflowClient.uploadFile("C:\\data.csv"); RunningHubClient client = RunningHubClient.builder().apiKey("...").build(); ``` --- ### 7.13 SearchLucene — 全文检索 ```java import com.scm.all.export.SearchLucene; SearchLuceneChain.create("D:/index", SearchLuceneChain.smartChineseAnalyzer()) .add(SearchLuceneChain.document().string("id","1").text("title","你好").build()) .commit().close(); ``` --- ### 7.14 capstone — 反汇编引擎 ```java CapStone.CapStone_cs_open(TAG_CS_ARCH.CS_ARCH_X86, TAG_CS_MODE.CS_MODE_32); CapStone.CapStone_cs_disasm(opcode, 0x401000, (mnemonic, opStr, size) -> System.out.println(mnemonic + " " + opStr)); CapStone.CapStone_cs_free(); ``` --- ### 7.15 x64/x86 — 平台专用模块 > **区别**:地址类型不同(`long` vs `int`),API 签名对称 ```java byte[] data = MemoryOperationUtilsX64.readMemoryBytes(hProcess, addr, 256); MemoryOperationUtilsX64.writeMemoryInt(hProcess, addr, 0xDEADBEEF); DebugBreakPointX64.runHardwareBreakpointX64(hProcess, threadId, addr, BreakpointType.breakpoint_type_read.getValue(), 1, callback); ApiHookOperationUtilsX64.installHook("user32.dll", "MessageBoxW", hookCallback, originalCallback); ``` --- ## 八、数据结构、枚举与回调体系 ### 8.1 Tag* 结构体(38 个) | 类别 | 结构体 | 用途 | |:---|:---|:---| | 几何 | `TagPoint`/`TagPointF`/`TagPointD` | 整数/浮点/双精度坐标点 | | 几何 | `TagRect`/`TagRectF`/`TagRectSize` | 矩形区域 | | 几何 | `TagSize`/`TagPosition` | 尺寸与位置 | | 间距 | `TagBorderSize`/`TagPadDingSize`/`TagMarginSize_` | 边框/内边距/外边距 | | 窗口 | `TagWinInfo`/`TagMyWindwInfo` | 窗口信息 | | 进程 | `TagProcessenTry32`/`TagThreadEntry32` | 进程/线程快照 | | 模块 | `TagModuleenTry32`/`X64`/`X86` | 模块快照 | | 内存 | `TagMemoryDataX64`/`X86`、`TagPmemory_Basic_InfoRmationX64`/`X86` | 内存数据/页属性 | | 系统 | `TagINPUT`/`TagFontInfo`/`TagLOGFONTW` | 输入事件/字体 | | 系统 | `TagHotKeyInfoTow`/`TagTokenPrivileges`/`TagLuid` | 热键/令牌 | > **JNI 结构体铁律**:字段顺序必须与 C 结构体一一对应,**不可增删/调换**,否则破坏 JNI 内存布局。 ### 8.2 JadeView_struct 结构体(6 个) | 结构体 | 用途 | |:---|:---| | `WebViewWindowOptions` | WebView 窗口选项 | | `WebViewSettings` | WebView 运行设置 | | `FileDialogParams` | 文件对话框参数 | | `MessageBoxParams` | 消息框参数 | | `NotificationParams` | 系统通知参数 | | `TrayMenuItemDesc` | 托盘菜单项描述 | ### 8.3 枚举常量 覆盖 XCGUI 全部控件状态、标志、类型定义:`WindowStyle`、`ButtonState`、`EditType`、`ImageDrawType`、`AnimationMove`、`BreakpointType`、`FontStyle`、`XcObjectType`、`CompleteWindowMessageEvent`(WM_*/XWM_*/XE_*)等。 ### 8.4 回调接口体系(pfunc · 47 个) | 接口 | 触发场景 | |:---|:---| | `IpcCallback` | JadeView IPC 事件(43 个 `*_callback`) | | `IpcHandlerCallback` | IPC Handler(`Message01~Message100_callback`) | | `JscmCallBack` | 通用 JNI 回调 | | `WindowEventCallBack` | XCGUI 窗体事件(返回 `false`=未处理) | | `XEleEventCallBack` | XC 元素事件(约 110 个 `On*`,返回 `true`=已处理) | | `MemoryCallBack` | 内存搜索结果 | | `ModuleCallBack` | 模块枚举回调 | | `BreakpointCallBackX64`/`X86` | 硬件断点命中 | | `CGridppReportEventHandler` | Grid++ 报表事件 | | `CGRDesignerEventHandler` | 设计器事件 | | `CGRDisplayViewerEventHandler`/`CGRPrintViewerEventHandler` | 显示/打印视图事件 | | `JadeViewMsgBox` | 异步消息框/文件对话框回调 | | `PermissionCallback` | 网页权限请求 | | `Tag_cs_insnCallBack` | CapStone 反汇编指令 | | `KeyCodeCallBack` | 键盘钩子 | | `TokenCall` | 授权校验回调 | | `ResponseEventCallBack` | 响应事件回调 | > **回调防 GC 铁律**:所有 JNI 回调对象必须被 `static` 或长生命周期容器(如 `List`)持有,否则会被 GC 回收导致回调失效。 --- ## 九、构建与部署 ```bash # 编译(需 JDK 8+) mvn clean compile # 打包 mvn clean package # 运行测试 mvn test ``` ### 原生库部署 将 `src/main/resources/init_/x64` 或 `x86` 下的 DLL 文件放到运行时目录(通常为 Jar 包同目录),框架会在类加载时自动检测架构并加载对应的 `Jscm.dll`。 > **注意**: > - 锐浪报表 Grid++ 需要在目标机器注册 COM 组件,可执行 `init_/reportRegisterX86_X64/Register_X64.bat`(或 X86 版本)完成注册。 > - 若报 `Can't find dependent libraries`,请将 jar 内对应系统的 `jawt.dll` 放到 `java.exe` 运行目录。 --- ## 十、技能库(Skills)使用与提问指南 项目内置一套 **AI 编码技能库**,位于 `src/main/resources/skills/` 目录(13 个 Markdown 技能文档)。它们不是运行时依赖,而是给 AI 编码助手(如 TraeCode 等)阅读的「领域知识库」:当你的提问命中某个技能的关键字时,助手会自动加载对应技能,按其中的规范、约束与示例生成代码,从而**一次写对、贴合项目约定**。 ### 10.1 技能清单与精准命中关键词 | 技能文件 | 技能名 | 作用 | 命中关键词(提问时带上其一) | |:---|:---|:---|:---| | `jscm核心技能-SKILL.md` | JSCM 全栈开发技能 | 全栈总纲(初始化 / 工具类 / XCGUI / 链式组件 / JadeView / 报表 / AI / Lucene) | `炫彩`、`XCGUI`、`链式`、`组件`、`JadeView`、`报表`、`资源回收`、`GC` | | `jscm-project-init.md` | JSCM 项目初始化 | `PathFileJSCM` 强制起始头与 SDK 路径配置 | `PathFileJSCM`、`初始化`、`setDebugFile`、`SDK 路径` | | `jscm-core-knowledge.md` | JSCM 框架知识库 | 全模块 API 一览与示例 | `框架`、`模块`、`API`、`Photoshop` | | `jscm-core-utils.md` | JSCM 核心工具集 | `ByteUtils` / `ColorUtils` / INI / 进程线程 / 窗口 / 热键 / 授权 / 时间等工具 | `ByteUtils`、`ColorUtils`、`进程`、`线程`、`窗口`、`热键`、`INI` | | `jscm-pfunc-callbacks.md` | JSCM 回调函数库 | `com.scm.all.pfunc` 全部回调接口 | `回调`、`pfunc`、`事件`、`WindowEventCallBack`、`XEleEventCallBack` | | `jscm-struct-types.md` | JSCM 枚举与结构体 | `com.scm.all.struct` 枚举与 `Tag*` 结构体 | `枚举`、`结构体`、`XC_Enum`、`TagRect`、`Tag*` | | `xc-chained-ui.md` | XC 链式开发工具 | `XCChainedUI` 链式(Fluent)快速搭 UI | `XCChainedUI`、`链式`、`Fluent`、`Builder` | | `XCGUI_SKILL.md` | scm-chained-ui-component | 创建/修改 `XC*ComponentUI` 组件 | `XC*ComponentUI`、`组件开发`、`XCGUI` | | `jadeview-gui.md` | JadeView 桌面应用框架 | `JadeViewGUI` 门面与三层 API | `JadeView`、`JadeViewApp`、`WebView2` | | `JadeView_SKILL.md` | jadeview-app-development | JadeView 应用/窗口/IPC/托盘/对话框/RBAC/OSS/邮件 | `JadeView`、`窗口`、`IPC`、`托盘`、`RBAC`、`OSS`、`邮件` | | `report-table.md` | 锐浪报表开发 | Grid++ 报表完整开发 | `报表`、`Grid++`、`Report_Table`、`ReportChain` | | `search-lucene.md` | Lucene 全文检索 | `SearchLucene` / `SearchLuceneChain` | `Lucene`、`全文检索`、`SearchLucene`、`SearchLuceneChain` | | `ai-integration.md` | AI 集成开发 | Ollama / CloudLLM / Coze / RunningHub | `AI`、`ClaudeCode`、`Ollama`、`Coze`、`RunningHub`、`DeepSeek` | ### 10.2 如何使用技能库(三种方式) **方式一:让助手自动命中(推荐,最省事)** 在问题里自然带上模块关键字、类名或包名,助手会自动加载对应技能。例如: - 「用 `XCChainedUI` 写一个带登录按钮的窗口」→ 命中 `xc-chained-ui.md` + `jscm核心技能-SKILL.md` - 「`ByteUtils` 怎么把 int 转字节数组?」→ 命中 `jscm-core-utils.md` - 「用 `ReportChain` 导出 PDF」→ 命中 `report-table.md` **方式二:明确指定技能文件或技能名** 当需求跨多个模块、或想强制加载某个权威规范时,直接给出路径或技能名: - 「按 `src/main/resources/skills/jscm核心技能-SKILL.md` 的规范,写一个自绘组件」 - 「参考 `XCGUI_SKILL` 技能,新增一个 `XCxxxComponentUI` 组件」 **方式三:点名类名 / 方法名精准定位** 给出具体类名或方法名,是最精准的命中方式(比泛泛描述强得多): - 「`WindowOperationUtils` 怎么枚举窗口并关闭?」 - 「`SaTokenUtil.init` 的执行顺序和约束是什么?」 ### 10.3 精准命中的提问模板(正反例) | 场景 | 推荐提问(精准命中) | 不推荐提问(易跑偏) | |:---|:---|:---| | 写 UI | 「用 `XCChainedUI` 链式写一个窗口,含 `button` 和 `text`,每个控件 `end()` 回窗口」 | 「帮我写个界面」 | | 写组件 | 「按 `XCGUI_SKILL` 规范新增 `XCTagComponentUI` 组件并注册到 `XCChainedUI`」 | 「做个标签组件」 | | 报表 | 「用 `ReportChain` 加载模板、绑定记录集、导出 PDF,给出完整示例」 | 「弄个报表」 | | 初始化 | 「`PathFileJSCM.setDebugFile32/64` 的正确调用顺序是什么?」 | 「怎么启动」 | | 回调 | 「`XEleEventCallBack` 怎么绑定按钮点击事件并防 GC?」 | 「按钮点了没反应」 | | 鉴权 | 「`JadeViewApp` 怎么用 `enableRbac` + `addProtectedApiRoute` 做登录鉴权?」 | 「加个登录」 | ### 10.4 提问技巧(提高命中率) 1. **带「类名 / 包名 / 模块名」**:`ByteUtils`、`XCChainedUI`、`Report_Table`、`JadeViewApp`、`PathFileJSCM` 等,命中率最高。 2. **说清「意图 + 目标」**:不是「写个工具」,而是「`ByteUtils` 把 int 转 4 字节大端数组,用于写入内存」。 3. **一次只问一个主题**:跨模块时分成多句或点明多个技能,避免助手只命中一个技能。 4. **指定输出形式**:如「给出可运行示例」「追加说明到某个文件」「只讲约束不要代码」。 5. **涉及「改代码」时给出文件路径**:如「给 `c:\...\XCResponsiveComponentUI.java` 加句柄校验」,助手能直接定位源码核对。 6. **需要权威规范时点名总纲**:涉及项目约定/避坑/一次性写对,直接点名 `jscm核心技能-SKILL.md`(全栈总纲)。 ### 10.5 技能方法的引用机制(两层) 技能库有两层「引用」方式:**AI 助手侧靠提问命中**,**Java 代码侧靠 `SkillManager` / `ClaudeCodeToolkit` 调用**。 #### 一、AI 助手侧(TraeCode 等)—— 靠 frontmatter 命中引用 `skills/` 下每个 `.md` 文件头部都有 YAML frontmatter(`name` / `description` / `tags`)。助手在收到提问后,会拿提问内容去匹配这些元数据,命中即自动加载对应技能——这就是 §10.2/§10.3 说的「提问式引用」,**无需写代码**。因此 frontmatter 里的 `description` 和 `tags` 越具体,命中越准。 #### 二、Java 代码侧 —— `SkillManager` + `ClaudeCodeToolkit` 引用 底层 `com.scm.all.AI.ClaudeCode.skills.SkillManager` 负责加载/查找/激活,高层 `ClaudeCodeToolkit` 在构造时自动装配: | 方法 | 归属 | 作用 | |:---|:---|:---| | `loadBundledSkills()` | SkillManager | 加载内置技能(代码审查/生成/调试/文档/重构 + JSCM 全栈技能) | | `loadSkillFromResource("/skills/xxx.md", id)` | SkillManager | 从 **classpath** 加载单个 `.md` 技能(对应 `src/main/resources/skills/`) | | `loadUserSkills("./skills")` | SkillManager | 从 **文件系统目录** 批量加载 `.md` 技能 | | `findByName/findById/findByTag/search` | SkillManager | 按名称/ID/标签/关键词查找技能 | | `setActiveSkill/getActiveSkill/clearActiveSkill` | SkillManager | 激活/读取/清除当前技能 | | `useSkill(name)` / `skill(name)` / `useSkill(Skill)` | ClaudeCodeToolkit | 激活技能(`skill` 是 `useSkill` 简写别名) | | `clearSkill()` / `listSkills()` / `getSkillManager()` | ClaudeCodeToolkit | 清除技能 / 列出所有 / 取管理器 | **frontmatter 解析规则**:文件首行 `---` 开头才视为 frontmatter;其中 `name` / `description` / `tags` / `prompt` 被解析为技能元数据,正文(frontmatter 之后的全部 Markdown)整体作为技能的 `prompt`;未声明 `name` 时回退用文件名或 `defaultId`。 **完整示例**: ```java import com.scm.all.AI.ClaudeCode.ClaudeCodeToolkit; import com.scm.all.AI.ClaudeCode.skills.Skill; import com.scm.all.AI.ClaudeCode.skills.SkillManager; // 方式一:高层门面(推荐)—— 构造时自动 loadBundledSkills 并激活「JSCM 全栈开发技能」 ClaudeCodeToolkit toolkit = new ClaudeCodeToolkit(); toolkit.skill("锐浪报表开发"); // 切换技能(= useSkill 别名) String reply = toolkit.chat("用 ReportChain 加载模板并导出 PDF"); // 方式二:底层 SkillManager —— 手动加载/查找/激活 SkillManager mgr = new SkillManager(); mgr.loadBundledSkills(); // 内置技能 mgr.loadUserSkills("src/main/resources/skills"); // 从目录批量加载 .md Skill s = mgr.findByName("锐浪报表开发"); mgr.setActiveSkill(s); ``` > **注意**:`loadSkillFromResource` 走 classpath,因此 `src/main/resources/skills/*.md` 需先随项目打包(Maven 默认会把 `src/main/resources` 打进 jar/target/classes);`loadUserSkills` 则直接读磁盘目录,适合运行时动态加载用户自定义技能。 --- ## 十一、许可 详见 [LICENSE](LICENSE)。