pi-local-file-links
v0.1.0
Published
Display-only local file links for Pi, without changing model context or session messages.
Maintainers
Readme
pi-local-file-links
Pi 已经写好了报告,点击链接却打不开?这个扩展在显示时补全本地文件地址。
它将助手回复中的相对文件链接转换成绝对 file:// 地址,保留链接文字。原始回复、会话记录和发给模型的上下文都不变。
安装
pi install npm:pi-local-file-links也可以安装指定版本的 Git 源码:
pi install git:github.com/Ge-limin/[email protected]现有 Pi 会话执行 /reload,新会话自动加载。
使用效果
假设会话目录为 /home/me/project,且 docs/report.html 已存在:
[报告](docs/report.html)屏幕上仍然显示“报告”,但终端收到的点击目标变成 file:///home/me/project/docs/report.html。保存的消息中仍然是 docs/report.html。
不限制文件后缀,MD、HTML、PDF、图片和源代码等普通文件都可以处理。具体使用什么应用打开,由终端和系统设置决定。需要 HTTP 环境的 HTML 应使用已有的 http://localhost:… 预览链接;本扩展不启动服务器。
转换范围
只处理助手完成回复中的明确 Markdown 链接,包括引用式链接和恢复后的历史显示。支持相对路径、绝对路径及 ~/ 路径;要求目标为已有普通文件。
扩展通过 Markdown 源位置仅替换链接目标,保留标签和周围排版。中文、空格、括号与 URL 编码文件名均有测试,查询参数和锚点会保留。
以下内容保持原样:代码块和行内代码、原始 HTML、裸路径、图片、已有协议地址、不存在的文件、目录、行号后缀、存在歧义的文件名,以及与图片共用的引用定义。流式输出在回复完成前也保持原样。
兼容性与边界
使用 Pi 的 registerMarkdownTransformer 接口,已在本机 macOS、Pi 0.86.0、Node 24 验证,兼容声明暂限 Pi 0.86.x。作者已在 Warp 中试用。Windows 下停用。GitHub Actions 中 macOS/Linux × Node 22/24 四组自动测试均已通过;Linux 终端的实际点击行为尚未验证。
终端需支持 OSC 8 超链接和打开 file:// URL。本扩展不保证打开程序、锚点跳转或源代码行号跳转。
相对路径以会话目录为基准,不跟随某次 shell 命令中的 cd。会话头记录的目录与当前目录不一致时,停用相对转换。跨工作树产物应输出绝对路径;同目录导入的跨项目历史无法通过显示接口识别。
检测到 SSH/容器环境时停用转换,但环境线索不能覆盖全部远程场景。网络挂载上的同步文件元数据检查可能较慢。扩展不读取或上传文件内容。
超过 100,000 字符或 128 个链接/定义节点的消息会跳过转换。有界的两秒缓存减少重复检查;Pi 本身也缓存渲染结果,因此链接出现后才创建的文件,可能需 /reload 才能刷新。
不增加工具、提示词、模型请求、遥测或服务。其他扩展仍可能独立修改消息。
开发与验证
npm ci --ignore-scripts
npm test
npm run test:pi
npm pack --dry-run单元测试覆盖语法、编码、歧义和目录变化。真实 Pi 集成测试会加载扩展、保存并恢复测试会话、在不同宽度下检查 OSC 8 链接,同时比较会话文件字节和 convertToLlm 输出,验证显示转换不影响消息内容。测试不调用模型。
测试其他已安装 Pi 版本:
PI_PACKAGE_ROOT=/path/to/node_modules/@earendil-works/pi-coding-agent npm test卸载
pi remove npm:pi-local-file-linksGit 安装则使用 pi remove git:github.com/Ge-limin/pi-local-file-links,之后执行 /reload。
