Repository navigation
fix(plugins): 插件的测试、功能矩阵和翻译只在插件仓库,宿主零依赖 - #1915
Merged
Merged
Conversation
- develop-lithe 新增“插件归属与宿主零依赖”一节和自查命令;create-lithe-plugin、 lithe-code-review、write-stable-tests 与 PR 模板同步改写,违反即 P1 阻断 - 删除 13 个依赖真实插件的宿主测试文件,单元测试改用 dev.lithe.test.sample - 删除 35 条插件能力矩阵条目和 plugin-provided 状态,51 条宿主条目去掉插件证据 - 资源复用清单、下载缓存校验和 docs/ci-builds.md 移除 JDT LS、JDK、JFR、Maven 等插件资源;修复 test-verify-download-cache 读取已删除 Windows 工作流的问题 - 构建配置权限说明去掉 Java、Maven 字样 - 新增 Agent Note 记录决策,历史 Note 中的已删引用加删除线或注明
xiaoyumuxi
marked this pull request as ready for review
November 14, 2026 10:22
This was referenced Nov 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联 Issue / Linked issue
PR 类型 / Type
改动说明 / What changes
背景 / Why
Java Support、Maven、Gradle、Cargo、LLDB 等插件已拆到独立仓库,宿主仓库里却还留着它们的内容:
LITHE_JAVA_PLUGIN_PACKAGE、LITHE_RAW_CARGO_PLUGIN_ARCHIVE等环境变量指向的真实插件包或插件仓库检出,没设置就跳过。CI 从不设置这些变量,所以它们在 CI 里一次都没跑过;本地结果又取决于开发者手里的插件版本。几个单元测试还拿真实插件 IDio.github.lithe-idea.*当测试数据。metadata.json还有plugin-provided状态。插件发版时宿主矩阵收不到通知,这些记录只会越来越旧。docs/ci-builds.md仍登记 JDT LS、JDK、JFR 录制、JDT Maven settings 副本等插件资源,以及 Java 反编译补丁和 Cargo、Go、PHP 插件的构建步骤。lithe_build_configure(设置一个已声明的构建选项)。本 PR 把规则写成强制要求:具体插件的代码、测试(含端到端测试)、测试夹具、功能矩阵、翻译和构建资源说明只在插件自己的仓库;宿主和 Core 对任何具体插件零依赖。同时清理现存的违规内容。
改动 / Changes
规则(Skill、PR 模板、Agent Note)
develop-lithe:rg自查命令;自查命令覆盖不到的情况。shared/两行。l10n/<语言>.json自己翻译;第十节说明宿主矩阵只记宿主能力和通用扩展点;最终交付检查加上插件归属。shared/logging/events改为rust/logging/events,references/logging.md同步。create-lithe-plugin:Plugins/mac/README.md引用,日志路径改为rust/logging。lithe-code-review:review-policy.md新增第 18 项检查、验证表一行,以及“插件归属与宿主零依赖”一节,违规按 P1 阻塞处理。local-review.md要求每次审查都读这一节并运行自查命令。output-template.md的范围说明增加“插件归属”一行。SKILL.md更新描述和链接。write-stable-tests:新增“Plugins in host tests”一节,宿主测试只用合成插件(dev.lithe.test.<名称>)、Core 契约 fixture 和插件市场索引快照。.github/pull_request_template.md:新增“插件归属 / Plugin ownership”检查组(5 项);功能矩阵和 i18n 两组的说明同步。.agents/notes/implemented/architecture/2026-11-14-plugin-owned-tests-matrix-i18n.md记录决策、被否方案(环境变量开关、子模块或 CI 下载插件包、保留plugin-provided、宿主代维护插件词条)和后果。plugin-provided状态的说明。测试
pluginservice/javae2e_test.go、javamanifest_test.goprojectgen/maven_integration_test.goworkbench/debug_native_e2e_test.go、java_binary_e2e_test.go、java_gradle_e2e_test.go、java_legacy_e2e_test.go、java_performance_e2e_test.go、java_plugin_e2e_test.go、java_unmanaged_e2e_test.go、java_web_e2e_test.go、official_cargo_test.go、official_plugins_e2e_test.godev.lithe.test.sample:core/marketplace_test.go、plugininstall_test.go、pluginpkg/extract_test.go、pluginpkg/install_test.go、plugintrust_test.go、workbench/editoractions_test.go。功能矩阵
implementationStatus或verificationStatus。其中 11 条的legacy.notes/legacy.verification也去掉了具体插件名。metadata.json删除plugin-provided状态。plugin-extension-management.json写入的“同一语言只由一个已启用插件提供语言服务器”验收步骤保留,示例插件名改为插件 A、B;Store 收录进度(Lithe-store#62、fix: improve Git log performance and graph lanes #63)删除,这属于插件的发布状态。资源与构建文档
scripts/resources/verify-download-cache.mjs:删除 JDT LS 和 JDK 下载缓存的校验。scripts/resources/test-verify-download-cache.mjs:删除对 JDT LS/JDK 的断言,以及对 Epic(0.7.0): 基于 Viva 框架的跨平台方案的迁移(#1794) #1799 已删除的 Windows 工作流、Bun 缓存、JDK 打包脚本的断言(修复 [Bug] #1791 删除插件打包步骤和 JDK 缓存后,3 个 CI 工具自测仍断言旧内容,preview 的 macOS CI 门禁持续失败 #1797 第 3 项,见下文)。scripts/resources/worktree-resources.json、reuse-worktree-resources.mjs:删除 Java、JFR、Maven 相关条目和校验路由。scripts/resources/test-reuse-worktree-resources.mjs:测试夹具改为 8 个 crate 的Cargo.lock,不再依赖插件资源。docs/ci-builds.md:删除 Java、JDT LS、Maven、JFR、反编译补丁以及 Cargo、Go、PHP 插件的构建内容,加一句“插件资源由插件仓库说明”。界面文案
desktop.ideApi.allowConfigureHelp:desktop/internal/i18n/shared.generated.go。不在本 PR 范围内 / Out of scope
git show <删除前的 commit>:shared/platform-feature-matrix/features/<id>.json取回,供插件仓库建自己的矩阵时参考。docs/ci-builds.md中的 Java/JDT/Maven/JFR 内容。以下仍未处理:official-plugin-packages条目里的LitheOfficialPluginVerifier与LITHE_OFFICIAL_PLUGIN_INDEX;shared/i18n/里还有 8633 条非 desktop 词条(只有 macOS 的 4326 条、只有 Windows 的 4222 条、两端都有的 85 条),其中 427 条带 Java 一类说法;另有 602 条 desktop 词条带macos.key/windows.key兼容字段。根因和 [Bug] scripts/i18n/test-i18n.mjs 在 preview 上卡住不退出:测试仍引用已删除的 macos/、windows/tauri 路径 #1908 相同,按规则应补充到 [Bug] scripts/i18n/test-i18n.mjs 在 preview 上卡住不退出:测试仍引用已删除的 macos/、windows/tauri 路径 #1908,等维护者确认后再补。*.java当示例的宿主文案(fileMaskPlaceholder、classFiltersHelp)和filterServerJdtls词条键名没有改。类型专属:fix
复现与根因
./scripts/desktop/desktop-go.sh test ./internal/workbench/...,13 个依赖插件的测试文件里的用例全部跳过,宿主测试实际不覆盖它们;设置环境变量后,结果随插件版本变化。期望是宿主测试只验证宿主的通用行为,结果只取决于宿主和固定的 Core 版本。7c036b3b8运行node scripts/resources/test-verify-download-cache.mjs,实际结果:scripts/ci/common/ci-workflow-gates.test.mjs已在 Epic(0.7.0): 基于 Viva 框架的跨平台方案的迁移(#1794) #1799(0faecba49)删除。0b7a2b5f1)删掉 macOS 依赖缓存的 JDK 输入,之后 Epic(0.7.0): 基于 Viva 框架的跨平台方案的迁移(#1794) #1799(0faecba49)又删除了.github/workflows/ci-windows.yml、scripts/windows/prepare/prepare-jdk.ps1等旧客户端文件,但test-verify-download-cache.mjs仍读取它们。三项合起来,本 PR 合入后 [Bug] #1791 删除插件打包步骤和 JDK 缓存后,3 个 CI 工具自测仍断言旧内容,preview 的 macOS CI 门禁持续失败 #1797 全部解决。检查项
scripts/resources/test-verify-download-cache.mjs本身,修复前的失败输出见上文 ENOENT,修复后输出 “Download cache verifier tests passed.”;插件归属的回归防护是develop-lithe自查命令,本 PR 修复后结果为空go vet和全部相关包编译、测试通过,没有遗留辅助函数引用;已在.agents/、docs/、shared/、scripts/中搜索被删测试名、矩阵 ID 和资源 ID,引用处已改为删除线或注明desktop/的同一份代码和测试,没有单独的 Windows 实现Plugins/mac/README.md引用、Epic(0.7.0): 基于 Viva 框架的跨平台方案的迁移(#1794) #1799 后残留的旧客户端断言);发现了但没有处理的旧客户端 i18n 词条见“不在本 PR 范围内”.agents/notes/implemented/bug-fix/记录:这是长期的归属规则而不是单个缺陷,Note 放在.agents/notes/implemented/architecture/2026-11-14-plugin-owned-tests-matrix-i18n.md范围检查 / Scope checks
功能矩阵 / Feature matrix
shared/platform-feature-matrix/features/<id>.json:两端的实现状态和验证状态、证据路径、owner、验证动作都如实填写;没有运行验证的保持pending:删除 35 条插件条目,51 条宿主条目只改证据和说明文字,没有改任何状态./scripts/platform-feature-matrix/verify-platform-feature-matrix.sh;改了平台实现路径的,还运行了./scripts/platform-feature-matrix/verify-platform-feature-matrix-change.sh origin/preview HEAD.artifacts/下生成的矩阵视图插件归属 / Plugin ownership
develop-lithe第三节“插件归属与宿主零依赖”的自查命令,结果为空shared/i18n/;插件的构建步骤、资源路径和补丁没有写进scripts/resources/、docs/ci-builds.md、Agent Note 或 Skill统一日志系统 / Structured logging
N/A:没有新增或改动日志事件、终态或失败路径。只修正了 Skill 里日志参考页的路径。
界面文案 / i18n
shared/i18n/补齐中英词条,运行node scripts/i18n/generate-i18n.mjs并提交生成结果,没有手改生成文件;Viva 代码通过desktop/internal/i18n/的接口读取shared/i18n/node scripts/i18n/verify-app-language-localization.mjs和node scripts/i18n/generate-i18n.mjs --check,没有放宽脚本或扩大豁免名单逻辑归属 / Logic placement
N/A:没有新增或修改业务逻辑。
性能与内存 / Performance and memory
N/A:没有改动运行时代码。
设置 / Settings
N/A:只改了一条权限说明的文字,设置项、默认值和读写行为都没变。
插件契约 / Plugin contract
N/A:没有改契约、能力版本、插件函数协议或宿主方法。
发行包与资源 / Bundle and resources
./scripts/desktop/verify/verify-runtime-bundle-immutability.sh:没有新增资源路径,已运行scripts/resources/worktree-resources.json、scripts/resources/reuse-worktree-resources.mjs的校验路由、对应测试和docs/ci-builds.md“独立工作树的本地编译”一节:删除的插件资源在这四处同步删除无用代码与重构 / Dead code and refactoring
refactor标签的 Issue,没有在本 PR 顺手处理:按维护者要求,顺手能修的过时内容当次修掉,不逐条建单;不在本次处理范围的旧客户端 i18n 词条见“不在本 PR 范围内”验证 / Verification
rg -n -i 'io\.github\.lithe-idea\.|lithe-idea/lithe-plugin-|PLUGIN_(ARCHIVE|MANIFEST|PACKAGE)\b|"plugin-provided"' desktop scripts shared .github docs/ci-builds.md -g '!desktop/internal/core/testdata/marketplace/**'./scripts/desktop/desktop-go.sh vet与test -count=1覆盖core、plugininstall、pluginpkg、plugintrust、workbench、pluginservice、projectgen、pluginmanager、pluginsettings、settingswindow、i18nb582e206a后重跑)./scripts/platform-feature-matrix/verify-platform-feature-matrix.sh./scripts/platform-feature-matrix/verify-platform-feature-matrix-change.sh origin/preview HEAD./scripts/agent-notes/verify-agent-notes.shnode scripts/i18n/generate-i18n.mjs --checknode scripts/i18n/verify-app-language-localization.mjsnode --test scripts/resources/test-reuse-worktree-resources.mjsnode scripts/resources/test-verify-download-cache.mjs./scripts/desktop/verify/verify-runtime-bundle-immutability.sh./.agents/skills/write-stable-tests/scripts/verify-test-stability.shmake -C desktop fmt-checknode --test scripts/i18n/test-i18n.mjs未能执行的检查和原因:
desktop-ci.yml的 Linux 检查(含 Linux 上的 vet 和测试),macOS、Windows 两条要等标记 ready 后才运行。提交前确认 / Final checks
preview创建;目标分支:feat、fix、docs 为preview,release 以发布流程要求为准(已 rebase 到b582e206a).build/、target/、dist/、.artifacts/等产物,没有凭据、个人路径和未脱敏的日志或截图