Repository navigation
feat(logging): 接入 litheLogging 1 结构化诊断 - #9
Merged
Merged
Conversation
- 后端改为直接编译 vendor/ 下官方 Java SDK 的生产源码(基线 lithe-plugin-docs 29b245c 加本轮日志改动),去掉远程 SDK JAR 下载、LITHE_SDK_JAR 覆盖和 shade - 新增 scripts/sdk/verify-sdk.mjs,按逐文件 SHA-256 拒绝漂移、遗漏或额外文件, CI 与打包都会先跑;安装包附带 SDK-LICENSE - backend.log 改为受控事实:无 --state 目录、快照保存失败、读取中项目变化 各记 WARN degraded;Maven 失败不再额外打印构建输出,只由 SDK 记录一次 ERROR - README 与 NOTICE 补充诊断日志和 SDK 来源说明
This was referenced Nov 4, 2026
xiaoyumuxi
marked this pull request as ready for review
November 4, 2026 10:56
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.
概要
Maven 插件接入结构化日志 v2:后端改为直接编译 vendor 的官方 Java SDK 生产源码(支持
litheLogging1),构建模型请求的成功/失败终态由 SDK 自动上报到plugins/io.github.lithe-idea.maven-build/host;原来backend.log写 stderr 的三处改为受控的 WARNdegraded事实,Maven 失败时不再额外打印构建输出。同时去掉远程 SDK JAR 下载,改为按逐文件 SHA-256 校验 vendor 源码。依赖:
litheLogging协议与目录事件;运行期需要它)诊断行为(
backend/src/…/maven/backend/)MavenBackend:没有--state目录时,backend.log("No --state directory…")改为degraded("initialize", "maven.stateUnavailable")。MavenRuns:degraded("lithe/build/model", "maven.inputsChanged")。backend.log("Maven exited with status …:\n" + output)。失败只由 SDK 在请求边界记录一次operationFailed(ERROR),构建输出属于响应,不进诊断流。Snapshots:快照保存失败改为degraded("lithe/build/model", "maven.snapshotSaveFailed"),不再拼接异常信息(可能带路径)。SDK 来源:从远程 JAR 改为 vendor 源码
backend/pom.xml:lithe-plugin-sdk-java:0.1.0(${lithe.sdk.jar})依赖和 maven-shade-plugin。sourceDirectory指向仓库根,maven-compiler-plugin 3.14.0 只编译backend/src/main/java/**和vendor/lithe-plugin-sdk-java/src/main/java/**(仍按 Java 8)。mainClass。vendor/:官方 Java SDK 的 15 个生产源码和 Apache-2.0LICENSE,不带测试、JAR 或target。sdk.lock.json改写为源码锁:29b245c0e1d77c761d9032a3144a301d1818bfc7和本轮日志改动说明。upstream、path、sha256;有本地改动的 7 个文件(Backend、CallContext、Cancellation、Diagnostics、HostChannel、PluginError、Processes)另记localChanges和upstreamSha256。scripts/sdk/verify-sdk.mjs:校验锁文件结构和每个 vendor 文件的 SHA-256,发现漂移、遗漏、非普通文件或未登记的额外文件就拒绝。scripts/package.mjs:.cache/sdk、LITHE_SDK_JAR覆盖和发布时的 SDK sha256 检查。verifySdk,不再传-Dlithe.sdk.jar。SDK-LICENSE(来自vendor/LICENSE)。verify-scripts.mjs的检查范围加入vendor。测试
scripts/backend-client.mjs:initialize 提供litheLogging: {versions:[1]},并把收到的lithe/log收集到diagnostics。scripts/test-backend.mjs:假 Maven 失败时,最后一条事实必须是operationFailed/lithe/build/model/maven.loadFailed,不包含伪造的失败输出,且 stderr 为空。scripts/test.mjs新增 “model diagnostics use one typed terminal without Maven output”:真实 Maven 读取模型后恰好一条operationFinished,字段只有durationMs、kind、operation、operationId,operationId为请求号,stderr 为空。README 新增“诊断日志”
litheLogging: 1,事实写入当前会话的plugins/io.github.lithe-idea.maven-build/host。${workspaceStateDir},不搬到会话日志目录。验证
node scripts/test-process.mjs8/8 通过。node scripts/sdk/verify-sdk.mjs通过。node scripts/package.mjs5/5 通过。node scripts/test-backend.mjs(假 Maven)16/16 通过。node scripts/test.mjs(真实 Maven)17/17 通过,包含上面新增的单条终态检查。预期的 CI 状态与合并顺序
litheLogging1,必须等宿主 #1699 进入可发布版本后才能发布本插件,否则在旧宿主上 initialize 会失败。contract/v1)→ 本 PR。vendor/和sdk.lock.json重新固定到 SDK #17 合并后的 commit。当前 vendor 副本早于 SDK #17 rebase 后加入的快捷键导入改动,Backend.java、Diagnostics.java与 SDK PR 现在的版本不同;本插件不提供快捷键导入,功能上不受影响,但发布前仍要统一重新固定。限制
配套 PR: