Files
wehub-resource-sync 7143a0b4b4
CI / test (push) Has been cancelled
CI / macOS amd64 (push) Has been cancelled
CI / macOS arm64 (push) Has been cancelled
docs: make Chinese README the default
2026-07-13 10:20:12 +00:00

3.0 KiB
Raw Permalink Blame History

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

lensm

用于查看汇编(assembly)与源码(source)的工具。

Screenshot

使用常规的 Go 命令安装:

go install loov.dev/lensm@main

在 Linux 上,你可能需要添加一些 额外依赖. 你可以分别使用 go install --tags nowayland loov.dev/lensm@maingo install --tags nox11 loov.dev/lensm@main 来跳过 Wayland 或 X11 版本的构建。

在本地构建此检出副本:

go build -o lensm .

GitHub Actions 还会为 Apple Silicon 与 Intel 构建可安装的 macOS 磁盘映像。从一次成功的 CI 运行中下载 DMG 构建产物,打开后,将 Lensm.app 拖入 Applications。CI 构建采用 ad-hoc 签名,因此 macOS 首次启动时可能需要通过 Control-click → Open(按住 Control 键点击 → 打开)。

在 macOS 上本地构建 DMG

./scripts/build-macos-dmg.sh 0.0.0 1 "$(go env GOARCH)"

在 Linux 上,若需跳过某一窗口后端,可使用相同的 Gio 标签:

go build -tags nowayland -o lensm .
go build -tags nox11 -o lensm .

可通过可执行文件路径运行本程序,也可不带参数启动, 然后从顶部栏加载可执行文件。在 macOS 上,使用 Choose... 通过原生 Finder 文件对话框选择可执行文件。UI 内提供函数过滤器。 -watch 可在可执行文件及其信息发生变化时自动重新加载。

lensm -watch lensm

在代码视图中:

  • 跟随调用目标,使用 Alt+Left/Right(或 Cmd/Ctrl+[Cmd/Ctrl+])在函数之间导航;
  • 将鼠标悬停在汇编指令上,若 Lensm 有匹配规则,可查看其引用及简化说明;
  • 在 Go 汇编、原生汇编或源码行上拖动以选择一块区域,然后使用 Cmd/Ctrl+C 复制。 Shift 可扩展选区,Escape 可清除选区。

通过 stdio 以 MCP 服务器方式运行 lensm:

lensm mcp [-comments ./lensm.lensm-comments.json] ./lensm

MCP 服务器提供列出函数、读取函数的 Go 源码、Go 汇编与原生汇编,以及读取或写入注释等工具。默认情况下,注释保存在名为 <executable>.lensm-comments.json 的 sidecar(附属)文件中。

当 GUI 与独立的 lensm mcp 进程写入同一 sidecar 时, 保存会按注释合并:各进程的新增、编辑与删除都会保留,仅当同一注释存在冲突编辑时, 以最后写入者为准。

注意:本程序需要在本机构建的二进制文件,否则无法加载函数的源码。

为什么?

我在 https://www.storj.io/blog/lensm 撰写了一篇博客,介绍核心功能的设计动机与实现原理。