一键导入
create-setting-item
指导如何在 Project Graph 项目中创建新的设置项。当用户需要添加新的设置项、配置选项或需要了解设置系统的实现方式时使用此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
指导如何在 Project Graph 项目中创建新的设置项。当用户需要添加新的设置项、配置选项或需要了解设置系统的实现方式时使用此技能。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
指导如何在 Project Graph 项目中创建新的快捷键。当用户需要添加新的快捷键、修改快捷键绑定或需要了解快捷键系统的实现方式时使用此技能。
指导如何在 Project Graph 项目中创建新的设置项。当用户需要添加新的设置项、配置选项或需要了解设置系统的实现方式时使用此技能。
指导如何在 Project Graph 项目中创建新的快捷键。当用户需要添加新的快捷键、修改快捷键绑定或需要了解快捷键系统的实现方式时使用此技能。
Suggest relevant Lucide icons for concepts or UI placements. Searches lucide.dev to find actual icons that symbolize ideas or fit design contexts. Use when needing icons for UI work, documentation, or symbolic representation.
Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset".
运行 TypeScript 类型检查
| name | create-setting-item |
| description | 指导如何在 Project Graph 项目中创建新的设置项。当用户需要添加新的设置项、配置选项或需要了解设置系统的实现方式时使用此技能。 |
本技能指导如何在 Project Graph 项目中创建新的设置项。
创建新设置项需要完成以下 5 个步骤:
在 app/src/core/service/Settings.tsx 文件的 settingsSchema 对象中添加新的设置项定义。
支持的 Zod 类型:
z.boolean().default(false) - 布尔值开关z.number().min(x).max(y).default(z) - 数字(可添加 .int() 限制为整数)z.string().default("") - 字符串z.union([z.literal("option1"), z.literal("option2")]).default("option1") - 枚举选择z.tuple([z.number(), z.number(), z.number(), z.number()]).default([0,0,0,0]) - 元组(如颜色 RGBA)示例:
// 布尔值设置
enableNewFeature: z.boolean().default(false),
// 数字范围设置(带滑块)
newSliderValue: z.number().min(0).max(100).int().default(50),
// 枚举选择设置
newMode: z.union([z.literal("mode1"), z.literal("mode2")]).default("mode1"),
在 app/src/core/service/SettingsIcons.tsx 文件的 settingsIcons 对象中添加对应的图标。
步骤:
lucide-react 导入合适的图标组件settingsIcons 对象中添加映射:settingKey: IconComponent示例:
import { NewIcon } from "lucide-react";
export const settingsIcons = {
// ... 其他设置项
enableNewFeature: NewIcon,
};
注意: 关于翻译管理的详细说明,请参考
manage-translationsskill。
在所有语言文件中添加翻译。首先查看 app/src/locales/ 目录下有哪些 .yml 文件,然后为每个语言文件添加翻译。
设置项的翻译结构:
settings:
settingKey:
title: "设置项标题"
description: |
设置项的详细描述
可以多行
options: # 仅枚举类型需要
option1: "选项1显示文本"
option2: "选项2显示文本"
示例:
settings:
enableNewFeature:
title: "启用新功能"
description: |
开启后将启用新功能特性。
此功能可能会影响性能。
newMode:
title: "新模式"
description: "选择新的模式选项"
options:
mode1: "模式一"
mode2: "模式二"
在 app/src/sub/SettingsWindow/settings.tsx 文件的 categories 对象中,将新设置项的键名添加到相应的分组数组中。
分组结构:
const categories = {
visual: { // 一级分类:视觉
basic: [...], // 二级分组:基础
background: [...], // 二级分组:背景
node: [...], // 二级分组:节点样式
// ...
},
automation: { // 一级分类:自动化
autoNamer: [...],
autoSave: [...],
// ...
},
control: { // 一级分类:控制
mouse: [...],
cameraMove: [...],
// ...
},
performance: { // 一级分类:性能
memory: [...],
cpu: [...],
// ...
},
ai: { // 一级分类:AI
api: [...],
},
};
添加设置项到分组:
const categories = {
visual: {
basic: [
"language",
"isClassroomMode",
"enableNewFeature", // 添加新设置项
// ...
],
},
// ...
};
分组选择指南:
basic: 基础视觉设置background: 背景相关设置node: 节点样式设置edge: 连线样式设置section: 分组框的样式设置entityDetails: 实体详情面板设置debug: 调试相关设置miniWindow: 迷你窗口设置experimental: 实验性视觉功能autoNamer: 自动命名相关autoSave: 自动保存相关autoBackup: 自动备份相关autoImport: 自动导入相关mouse: 鼠标相关设置touchpad: 触摸板设置cameraMove: 相机移动设置cameraZoom: 相机缩放设置objectSelect: 对象选择设置textNode: 文本节点编辑设置edge: 连线操作设置generateNode: 节点生成设置gamepad: 游戏手柄设置memory: 内存相关设置cpu: CPU 相关设置render: 渲染相关设置experimental: 实验性性能功能api: AI API 配置注意: 如果设置项不属于任何现有分组,可以:
设置项添加到分组后,会在设置页面的相应分组中自动显示。如果需要手动渲染或添加额外内容,可以使用 SettingField 组件:
基本用法:
import { SettingField } from "@/components/ui/field";
<SettingField settingKey="enableNewFeature" />;
带额外内容的用法:
<SettingField settingKey="enableNewFeature" extra={<Button>额外按钮</Button>} />
注意: 大多数情况下,只需要将设置项添加到 categories 中即可,设置页面会自动渲染。只有在需要特殊布局或额外功能时才需要手动使用 SettingField 组件。
SettingField 组件会根据 schema 定义自动渲染对应的 UI 控件:
Input 输入框Slider 滑块 + Input 数字输入框Input 数字输入框Switch 开关Select 下拉选择框在代码中访问设置值:
import { Settings } from "@/core/service/Settings";
// 读取设置值
const value = Settings.enableNewFeature;
// 修改设置值
Settings.enableNewFeature = true;
// 监听设置变化(返回取消监听的函数)
const unsubscribe = Settings.watch("enableNewFeature", (newValue) => {
console.log("设置已更改:", newValue);
});
// React Hook 方式(在组件中使用)
const [value, setValue] = Settings.use("enableNewFeature");
enableNewFeature.default())settings.json 文件中settingsIcons 中添加,组件会使用 Fragmentcategories 对象中的相应分组,否则不会在设置页面中显示假设要添加一个"启用暗色模式"的设置项:
1. Settings.tsx:
export const settingsSchema = z.object({
// ... 其他设置项
enableDarkMode: z.boolean().default(false),
});
2. SettingsIcons.tsx:
import { Moon } from "lucide-react";
export const settingsIcons = {
// ... 其他设置项
enableDarkMode: Moon,
};
3. zh_CN.yml:
settings:
enableDarkMode:
title: "启用暗色模式"
description: "开启后将使用暗色主题界面"
4. settings.tsx - 添加到分组:
const categories = {
visual: {
basic: [
"language",
"isClassroomMode",
"enableDarkMode", // 添加到基础视觉设置分组
// ...
],
// ...
},
// ...
};
5. 设置项会自动显示:
设置项添加到 categories 后,会在设置页面的"视觉 > 基础"分组中自动显示,无需手动使用 SettingField 组件。
如果希望设置项出现在快捷设置栏(Quick Settings Toolbar)中,需要:
QuickSettingsManager.addQuickSetting() 手动添加非布尔类型的设置项