[Feature] 日志 v2 未覆盖的来源:Monaco 控制台、远端 lithe-remote-server、Windows 仍是 v1

Đang mở
#1,680 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
14/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
rust, swift, typescript
Lĩnh vực
devtools, observability

Hướng nghiên cứu

This spans three separate areas: the Monaco console forwarding, the rust/lithe-remote/src/server/ and src/bin/lithe-remote-server.rs stderr paths, and the Windows v1 log page. Start with the scanRepository exclusions in scripts/logging/verify-log-usage.mjs and the Rust Core diagnostics/ module. Done means the new sources appear in the log window and diagnostic bundle, and the logging gate passes with zero violations. Design decisions should be settled first.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

area:logging enhancement P2 platform:cross-platform review: high
Problem to solve / 要解决的问题

结构化日志 v2 已经覆盖:

  • macOS Swift;
  • Rust Core;
  • 链接进 Core 的辅助库(agent-host、git-host、ide-host、lithe-remote 客户端)。

语言服务、插件宿主和 Git 子进程的 stderr 也已经作为目录事件进入日志。日志用法门禁 scripts/logging/verify-log-usage.mjs 对这些范围要求零违规。见 #1676(PR3)和 PR4(分支 claude/logging-v2-window)。

还有三类来源没有进入 v2。排查时,日志窗口和诊断包里看不到它们,只能去别处找,或者根本找不到:

  1. macOS 编辑器 Monaco(WKWebView)的 JS 控制台。 页面里的 console.error / console.warn、未捕获异常和未处理的 Promise rejection 没有转发给宿主,只有打开 Web Inspector 才能看到。发布版用户遇到编辑器脚本错误时,日志窗口和诊断包里没有任何记录。
  2. 运行在远端主机上的 lithe-remote-server。 rust/lithe-remote/src/server/ 和 src/bin/lithe-remote-server.rs 里约 19 处 eprintln!,守护进程把 stderr 追加到远端状态目录里的纯文本日志。本地日志窗口和诊断包都拿不到这些内容,排查远程问题时要 SSH 到远端手动翻文件。门禁目前显式排除了这两个目录。
  3. Windows 仍是 v1 日志。
    • 写入的还是 v1 格式,入口是“设置 → 工具 → 日志与诊断”页。
    • 没有独立日志窗口,也没有目录事件。
    • 门禁不扫描 Windows 代码。

插件自己输出的日志不在本 issue 范围内。

Proposed solution / 建议方案

三部分可以分别交付:

  1. Monaco 控制台
    • 在编辑器页面注入只读的转发脚本,把 console.error / console.warn、window.onerror 和 unhandledrejection 经已有的 litheEditor 消息通道交给宿主。
    • 宿主记录为限流的目录事件(例如 editor.web.console),只带级别、来源脚本的相对标识、消息摘要和稳定类别。不记录文档内容、用户代码或完整调用栈里的绝对路径。
    • console.log 默认不转发,只在开启详细诊断时转发。
  2. 远端 lithe-remote-server
    • 服务端把关键失败(连接、会话、守护进程、上传、文件系统、进程管理)改为结构化事件。
    • 事件经已有协议连接回传给客户端,由 Core 按目录校验、脱敏后进入本地日志。连接不可用时,服务端在远端状态目录按 v2 格式落盘;导出诊断包时,客户端经连接拉取最近的有界片段。
    • 完成后把这两个目录纳入日志门禁。
  3. Windows 迁移到 v2
    • Windows 改为写入 v2 格式,用独立日志窗口替代设置里的日志页。
    • 直接复用 Rust Core diagnostics/ 里已有的过滤解析、折叠键、事件分布、调用链摘要、复制格式和导出清单。
    • 门禁扩展到 Windows 源码。
    • 跨平台功能矩阵中 diagnostics-export 和 lsp-status-logs 的 Windows 状态随之更新。

完成标准: 上述来源的警告和错误都能在日志窗口按通道和事件过滤,并出现在诊断包里;门禁覆盖新范围且零违规。

Target platform / 目标平台

Cross-platform / 跨平台

Area / 模块

Other / 其他

Priority / 优先级

P2 / 后续考虑:目前不着急,可安排到后续版本

Alternatives considered / 已考虑的替代方案
  • Monaco:开发构建里可以用 Web Inspector 查看控制台,但发布版用户无法使用,诊断包里也没有。
  • 远端服务:现在只能 SSH 登录远端主机,手动查看状态目录里的纯文本日志,没有脱敏,也没有和本地操作的 op 关联。
  • Windows:继续使用 v1 日志页能满足基本导出,但没有过滤语法、调用链和提示跳转日志等能力,两端行为不一致。
Additional context / 补充信息
  • 设计依据:macOS 端日志窗口和门禁规则见 .agents/notes/implemented/feature/2026-11-03-structured-logging-log-window.md 和 .agents/skills/develop-lithe/references/logging.md。
  • 门禁排除:当前排除的目录写在 scripts/logging/verify-log-usage.mjs 的 scanRepository 中。
  • Windows 时机:macOS 一次切到 v2、旧 v1 日志不再显示。Windows 迁移按既定取舍放到以后单独进行。
Checklist / 提交前检查
  • I searched existing issues for duplicates. / 我已搜索现有 Issue,确认没有重复建议。
Ngôn ngữ chính
TypeScript
Star
1.8k
Fork
151
Merge trung bình
11 giờ 41 phút
Pull request đã merge (30 ngày)
416

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của 1lck/Lithe-IDEA

Tất cả issue của 1lck/Lithe-IDEA

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.