内置斜杠命令描述未国际化(/ 面板全英文)
现象
对话框输入 / 弹出的命令面板里,内置命令的说明全是英文,与界面其余部分的中文不一致。
面板内容由 main 的 slashCommandsForSession() 拼装:
return [
...BUILTIN_SLASH_COMMANDS,
...templateCommands(session.resourceLoader),
...skillCommands(session.resourceLoader),
...extensions
];
其中内置 4 条是硬编码英文字符串(out/main/index.js):
const BUILTIN_SLASH_COMMANDS = [
{ name: "compact", description: "Compress session context", argumentHint: "[focus]", source: "builtin", supported: true },
{ name: "name", description: "Set session display name", argumentHint: "<name>", source: "builtin", supported: true },
{ name: "export", description: "Export session (.html/.jsonl)", argumentHint: "[path]", source: "builtin", supported: true },
{ name: "settings", description: "Open settings", source: "builtin", supported: true }
];
为什么扩展侧改不了
- 上述数组先于扩展命令拼接,且
slashCommandsForSession() 与 slashCommandsForLoader() 都没有按 name 去重——扩展若重名注册 compact,面板会同时出现两条(一条英文内置 + 一条自定义),比不改更糟。因此无法用扩展「覆盖描述」。
- 扩展只能管自己的
registerCommand(name, { description });内置 4 条的 handler 在宿主内部,扩展拿不到委托入口。
skills 那批同理:描述来自各 SKILL.md frontmatter(第三方 npm 包管理,升级即回退)。
建议
方案 A(推荐,彻底):内置命令描述走 i18n 字典,按当前语言取,例如
const BUILTIN_SLASH_COMMANDS = [
{ name: "compact", description: t("slash.compact"), ... },
{ name: "name", description: t("slash.name"), ... },
{ name: "export", description: t("slash.export"), ... },
{ name: "settings", description: t("slash.settings"), ... }
];
宿主已有中英字典(UI 其余部分已中文化),加 4 个 key 即可。
方案 B(顺带):给 slashCommandsForSession() 加一次按 name 去重(后者覆盖或前者优先,明确一个语义)。当前无去重意味着:两个扩展注册同名命令、或扩展与内置同名时,面板会出现重复条目——这本身也是个小 bug。
方案 C(可选):skill:* 条目的描述来自各 SKILL.md,若希望面板也中文,可考虑宿主在 promptTemplates / skills 侧支持一个中英对照(或允许扩展/技能声明 descriptionZh),但优先级低于 A。
验收
内置斜杠命令描述未国际化(/ 面板全英文)
现象
对话框输入
/弹出的命令面板里,内置命令的说明全是英文,与界面其余部分的中文不一致。面板内容由
main的slashCommandsForSession()拼装:其中内置 4 条是硬编码英文字符串(
out/main/index.js):为什么扩展侧改不了
slashCommandsForSession()与slashCommandsForLoader()都没有按 name 去重——扩展若重名注册compact,面板会同时出现两条(一条英文内置 + 一条自定义),比不改更糟。因此无法用扩展「覆盖描述」。registerCommand(name, { description });内置 4 条的 handler 在宿主内部,扩展拿不到委托入口。skills那批同理:描述来自各SKILL.mdfrontmatter(第三方 npm 包管理,升级即回退)。建议
方案 A(推荐,彻底):内置命令描述走 i18n 字典,按当前语言取,例如
宿主已有中英字典(UI 其余部分已中文化),加 4 个 key 即可。
方案 B(顺带):给
slashCommandsForSession()加一次按name去重(后者覆盖或前者优先,明确一个语义)。当前无去重意味着:两个扩展注册同名命令、或扩展与内置同名时,面板会出现重复条目——这本身也是个小 bug。方案 C(可选):
skill:*条目的描述来自各SKILL.md,若希望面板也中文,可考虑宿主在promptTemplates/skills侧支持一个中英对照(或允许扩展/技能声明descriptionZh),但优先级低于 A。验收
/面板中内置命令(compact / name / export / settings)说明随界面语言显示中文