[Feature] PATH 上的命令参与 Core 工具链解析(由登录 Shell 提供 commandHomes)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 30/100
Línea de trabajo
Start with rust/lithe-core/src/toolchain/resolution.rs to see how command candidates read commandHomes, then the macOS fallback in MacToolchainSettingsLoader.swift and its display in ToolchainEnvironmentSettingsView.swift. Read the contract in shared/contracts/plugins/v1/toolchains.md before changing anything. Done means a PATH-only command is either selected with a version by Core or skipped with a Core reason, verified with temporary-directory tests that never touch the developer's PATH.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem to solve / 要解决的问题
工具定义可以声明 command 候选,也就是在 PATH 上按命令名查找(例如 java、mvn)。Core 的 toolchains.resolve 只在输入里有 commandHomes[命令名] 时,才检查并选择这个候选。契约(shared/contracts/plugins/v1/toolchains.md)还规定,commandHomes 必须来自原生的登录 Shell 适配器,不能按命令名猜测。
macOS 运行环境设置页(PR #1581)目前没有这个来源,不传 commandHomes,所以 PATH 上的命令永远不会被 Core 选中。作为替代,Core 在所有层都跳过时,页面把加载器在 PATH 上找到的第一个命令显示成“版本未验证”的兜底。这条命令没有经过 Core 的路径安全检查,也没有运行版本探测。
影响:
- 有些工具只在
PATH上:没有设置 home 变量,插件的扫描规则也没覆盖到。这类工具在页面上只能显示“版本未验证”,看不到版本。 - 将来启动流程如果提供了
commandHomes,实际选择会和页面显示的不一致。
Proposed solution / 建议方案
- 登录 Shell 适配器提供原始事实。 读取环境时,按已启用定义声明的命令名,在登录 Shell 的
PATH中定位可执行文件,并给出规范路径(解析链接后的真实路径)。 - 由 Core 推导 home。 Core 按定义的
executableLayouts,从规范路径反推 home,作为commandHomes参与解析,并照常做路径安全检查和版本探测。推导规则放在 Rust Core,宿主不按工具名特判。 - 页面改为显示 Core 的结果。 去掉现在的“版本未验证”兜底,改为显示 Core 对命令候选的结果:已选中并带版本,或者 Core 给出的跳过原因。
- 如需改契约,同步插件文档仓库。 如果推导方式要改
commandHomes的契约含义或新增字段,修改shared/contracts/plugins/v1/后,合并时同步到 lithe-plugin-docs。
验收方式:用临时目录模拟以下情况:
PATH上的命令及其链接;- 布局匹配和不匹配;
- 命令落在工作区内(必须被拒绝);
- 版本探测成功和失败。
测试不读取开发者本机的 PATH,也不运行本机工具。
Target platform / 目标平台
macOS
Area / 模块
Settings / 设置
Priority / 优先级
P2 / 后续考虑:目前不着急,可安排到后续版本
Alternatives considered / 已考虑的替代方案
- 宿主按命令名猜 home(例如把
/x/bin/java的上两级当作 home)。不采用。契约禁止,而且不同工具的布局不同,猜错就会导出错误的 home 变量。 - 保持现状,只显示“版本未验证”。 这是当前做法,不会误导用户以为已经校验过,但只靠
PATH安装的工具永远拿不到版本,页面和将来的启动结果也可能不一致。
Additional context / 补充信息
- 相关:PR #1581(Core 解析接入设置页)。
- 代码位置:
rust/lithe-core/src/toolchain/resolution.rs:command候选读取commandHomes;macos/Sources/Lithe/Platform/MacOS/Runtime/MacToolchainSettingsLoader.swift:在PATH上找第一个命令作为兜底;macos/Sources/Lithe/Views/App/ToolchainEnvironmentSettingsView.swift:Core 跳过时显示兜底。
- 决策记录:
.agents/notes/proposed/architecture/2026-10-31-plugin-injected-toolchains.md中“macOS 设置页的解析取舍”一节,已把这一点记为已知限制。 - 依据:源码阅读,不是发布包复现。Windows 运行环境页尚未接入,本 Issue 只针对 macOS。
Checklist / 提交前检查
- I searched existing issues for duplicates. / 我已搜索现有 Issue,确认没有重复建议。
- Lenguaje dominante
- TypeScript
- Estrellas
- 1.8k
- Forks
- 151
- Merge medio
- 12 h 6 min
- PR fusionados (30 d)
- 365
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de 1lck/Lithe-IDEA
-
area:editor bug P0 platform:macos review: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
1lck/Lithe-IDEA#1118 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Feature] Rust Core 下沉清单:Git 等 104 处双端重复/单端私有逻辑搬入 core(含 7 个已核实 bug)Posiblemente ocupada @puppyben1 la tomó hoy. Abiertoarea:ai area:debug area:extensions area:git area:language area:run area:search area:workspace enhancement P1 platform:cross-platform review: high Rust Core
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
1lck/Lithe-IDEA#1662 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
[Bug] 已忽略或排除的目录中,子仓库仍出现在 Git 面板Posiblemente ocupada @lin-coco la tomó hace 1 día. Abiertoreview: medium
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
1lck/Lithe-IDEA#1657 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
review: medium
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
1lck/Lithe-IDEA#1652 ·
Los mantenedores suelen responder en 1 día
-
[Bug] 动态调节终端会导致出现移位错位的现象Abiertobug issue-form:bug review: high
Dificultad 4/5 3-5 días Aptitud para principiantes 12/100
1lck/Lithe-IDEA#1649 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de 1lck/Lithe-IDEA
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Broken links in the docsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
🔊 a11y
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
betagouv/mon-entreprise#4726 ·
Los mantenedores suelen responder en 9 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Deltares/fews-pi-requests#357 ·
Los mantenedores suelen responder en 1 día
-
bug confirmed js v6
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día