Skip to content

iFlyCode 设置与配置系统分析

版本: 3.4.2-222 | 分析日期: 2026-05-11

1. 概述

iFlyCode 使用 IntelliJ 的 PersistentStateComponent 模式持久化插件配置。共有 4 个设置状态类,分别存储核心设置、请求设置、单测设置和批量单测设置。

2. 设置类清单

2.1 AICodeSettingsState (174 strings)

路径: com/aicode/settings/AICodeSettingsState存储: AICodeSettingsState.xml (通过 plugin.xml 注册) 职责: 核心设置 — 插件的全局配置

配置字段:

字段类型说明
autoTriggerboolean自动触发代码补全
sendKeySendKeyEnum发送消息快捷键 (ENTER/ENTER_SHIFT)
modelCodeString当前选择的模型代码
modelInfoListList<FunctionModelInfo>可用模型列表
inlineChatModelCodeString内联聊天使用的模型代码
triggerTimeint自动触发延迟时间
loginUrlString登录 URL
feedbackUrlString反馈 URL
maintainRepoUrlString维护仓库 URL
codeSearchServerUrlString代码搜索服务 URL
officialWebsiteUrlString官网 URL
codeKnowledgeWebUrlString代码知识库 Web URL
userCenterWebUrlString用户中心 Web URL
enterpriseIdString企业 ID
enterpriseNameString企业名称
testFrameworkUnitTestBaseEnumJava 测试框架 (JUNIT_FOUR/JUNIT_FIVE)
mockFrameworkUnitTestMockEnumJava Mock 框架 (POWER_MOCK/DISABLED)
modifyTestFrameString修改测试框架
modifyTestFramenNumint修改测试框架数量
pyTestFrameworkStringPython 测试框架
pyMockFrameworkStringPython Mock 框架
pyModifyTestFrameStringPython 修改测试框架
pyModifyTestFramenNumintPython 修改测试框架数量
modelListString模型列表
codeCompleteDisableLangString禁用代码补全的语言
generateUnitTestFileboolean是否生成单测文件
unitRequestIntervalint单测请求间隔
lineToolsTypeString行工具类型
lineToolsPermissionDocCommentsboolean行工具文档注释权限
lineToolsPermissionUnitTestingboolean行工具单测权限
openIFlyTestboolean是否开启 iFlyTest

2.2 AICodeRequestSettings (64 strings)

路径: com/aicode/settings/AICodeRequestSettings存储: AICodeRequestSettings.xml实现: PersistentStateComponent&lt;CodeGenerateRequestState&gt;职责: 代码补全请求设置

配置字段 (来自 CodeGenerateRequestState):

字段类型说明
inlayTextColorColor (via ColorConverter)补全文字颜色
internalDisableHttpCacheboolean内部禁用 HTTP 缓存
disableHttpCacheboolean禁用 HTTP 缓存
requestLimitNotificationShownboolean请求限制通知是否已显示

ColorConverter: 使用 ColorUtil.toHtmlColor()java.awt.Color 与 HTML 颜色字符串互转,实现 XML 持久化。

2.3 UnitTestSettingsState (73 strings)

路径: com/aicode/settings/UnitTestSettingsState存储: UnitTestSettingsPlugin.xml实现: PersistentStateComponent&lt;UnitTestSettingsState&gt;职责: 单元测试设置

配置字段:

字段类型默认值说明
testFrameworkUnitTestBaseEnumJUNIT_FOURJava 测试框架
mockFrameworkUnitTestMockEnumPOWER_MOCKJava Mock 框架
enabledGenerateByTemplateboolean-是否启用模板生成
testPrivateboolean-是否测试私有方法
testClasPathString-测试类路径

2.4 BatchUnitTestSettingsState (84 strings)

路径: com/aicode/settings/BatchUnitTestSettingsState存储: BatchUnitTestSettingsPlugin.xml实现: PersistentStateComponent&lt;BatchUnitTestSettingsState&gt;职责: 批量单元测试设置

配置字段:

字段类型默认值说明
testFrameworkUnitTestBaseEnumJUNIT_FOURJava 测试框架
mockFrameworkUnitTestMockEnum-Java Mock 框架
testGenerationProcessTestGenerationProcess-生成流程 (BUILD/BUILD_EXECUTE)
enabledGenerateByTemplateboolean-是否启用模板生成
testPrivateboolean-是否测试私有方法
testModuleDirectoryString-测试模块目录
batchTestUnitLimtBatchTestUnitLimt-批量单测限制

3. 设置持久化架构

┌─────────────────────────────────────────────────────────────┐
│                    IntelliJ IDEA                             │
│                                                              │
│  PersistentStateComponent 模式                               │
│    ├── AICodeSettingsState → AICodeSettingsState.xml         │
│    ├── AICodeRequestSettings → AICodeRequestSettings.xml     │
│    │     └── CodeGenerateRequestState                        │
│    │         └── ColorConverter (Color ↔ HTML String)        │
│    ├── UnitTestSettingsState → UnitTestSettingsPlugin.xml    │
│    └── BatchUnitTestSettingsState → BatchUnitTestSettingsPlugin.xml │
│                                                              │
│  XML 持久化路径:                                              │
│    ~/.IntelliJIdea/config/options/                           │
│      ├── AICodeSettingsState.xml                             │
│      ├── AICodeRequestSettings.xml                           │
│      ├── UnitTestSettingsPlugin.xml                          │
│      └── BatchUnitTestSettingsPlugin.xml                     │
└─────────────────────────────────────────────────────────────┘

4. 关键发现

  1. 多模型支持: modelInfoList (List<FunctionModelInfo>) 和 modelCode 表明 iFlyCode 支持多模型切换,内联聊天还有独立的 inlineChatModelCode

  2. 企业定制: enterpriseIdenterpriseName 字段表明企业版有独立的配置,与 PluginSceneEnum (SAAS/PRIVATE/INNER) 对应。

  3. 双语言测试框架: Java 和 Python 有独立的测试框架配置(testFramework/mockFramework vs pyTestFramework/pyMockFramework)。

  4. 代码补全颜色定制: inlayTextColor 使用 ColorConverterjava.awt.Color 转为 HTML 颜色字符串持久化。

  5. HTTP 缓存控制: disableHttpCacheinternalDisableHttpCache 双层缓存控制,内部版本可能有额外的缓存禁用选项。

  6. 行工具权限: lineToolsPermissionDocCommentslineToolsPermissionUnitTesting 控制行工具的功能权限,可能用于企业版功能限制。

  7. URL 集中管理: 6 个 URL 字段(loginUrl, feedbackUrl, maintainRepoUrl, codeSearchServerUrl, officialWebsiteUrl, codeKnowledgeWebUrl, userCenterWebUrl)集中管理所有外部服务地址。

  8. 默认值: Java 测试框架默认为 JUnit 4,Mock 框架默认为 PowerMock,说明插件面向的是传统 Java 项目。

本项目仅供学习研究,逆向分析内容归原厂商所有。