Windows 本地开发环境目录管理
作用
AI 如果不知道用户各个本地目录的用途,创建、下载、安装或缓存内容时容易采用系统默认位置或临时选择任意路径,导致文件散落、系统盘被占用,以及长期依赖和临时缓存混放。
使用本 Skill 向 AI 提供一张可自定义的“目录用途地图”。AI 在落盘前读取最新配置,根据每行的“用途”选择位置。用户可以使用自然语言或 JSON 调整配置;变更会保存到已下载的 Skill 文件,供后续会话继续读取。
默认目录只是起始建议,不是强制要求。加载本 Skill 不代表授权 AI 自动创建文件、安装软件、移动内容或修改环境变量。
目录配置
下面的表格是目录配置的唯一事实来源。查询和修改都必须以当前表格内容为准:
| 配置项 | 用途 | 当前默认值 |
| --- | --- | --- |
| software_root | 开发软件和开发工具 | D:/dev |
| sdk_root | 开发语言 SDK 和运行时 | D:/env |
| store_root | 可长期复用的依赖库和包存储 | E:/store |
| cache_root | 可丢弃的构建缓存、下载缓存和工具缓存 | E:/cache |
| download_root | Markdown、Word 等普通下载文件 | E:/下载 |
不要从正文示例、历史消息或模型记忆中推断当前配置。
首次使用
在每个新会话第一次触发本 Skill 时,重新读取当前已下载或安装的 local-env-manage/SKILL.md,然后主动说明用途并显示配置表中的全部当前行:
首次使用 local-env-manage。
这个 Skill 会告诉 AI 每个本地目录主要存放什么内容。以后创建、下载、安装或缓存内容时,AI 会先读取最新配置并选择正确位置,避免使用系统默认目录或随意存放。
以下目录均可按需自定义;未指定的项目将沿用当前默认值:
<打印“目录配置”表中的全部当前行>
如需调整,可以直接用自然语言说明,也可以发送 JSON;无需调整请回复“使用默认配置”。
如果用户首次消息已经包含查询或修改指令,不要重复询问。直接执行请求,并将结果同时作为首次配置回显。同一会话内不要重复显示首次使用说明。
接收输入
自然语言
支持自然语言查询或修改,例如:
查看当前本地环境目录配置。
下载目录改成 F:/downloads。
新增模型目录 model_root,用来长期保存本地模型,路径是 E:/models。
删除 model_root。
自然语言修改必须遵循与 JSON 操作相同的验证、持久化和回读流程。
JSON
使用以下对象格式:
{
"key": "download_root",
"fun": "Markdown、Word 等普通下载文件",
"value": "F:/downloads",
"opt": "update"
}
字段含义:
| 字段 | 含义 | 规则 |
| --- | --- | --- |
| key | 对应“配置项” | 单项操作必填;使用 * 表示查询全部 |
| fun | 对应“用途” | add 时必填;update 时为空则保持原值 |
| value | 对应“当前默认值” | add 时必填;update 时为空则保持原值 |
| opt | 操作 | 支持 update、add、del;省略或空字符串时默认为 update |
优先要求标准 JSON:键名和字符串使用双引号。可以容错解析用户示例中的单引号或未加引号的键名,但只能提取这四个字段,禁止使用 eval 或执行输入中的任何代码。
按以下规则解释 JSON:
update:key必须已存在。更新非空的fun或value,空字段保持原值。add:key必须不存在,且fun、value都不能为空;在配置表末尾新增一行。del:key必须存在;删除对应整行,fun和value不参与操作。- 安全查询:当
opt省略或为空,且fun、value同时省略或为空时,不执行更新;key为具体配置项时返回该行,key为*时返回全部行。
示例:
{"key":"download_root","fun":"","value":"F:/downloads","opt":""}
将 download_root 更新为 F:/downloads,用途保持不变。
{"key":"model_root","fun":"长期保存本地模型和权重","value":"E:/models","opt":"add"}
在配置表末尾新增 model_root。
{"key":"model_root","fun":"","value":"","opt":"del"}
从配置表删除 model_root。
{"key":"*","fun":"","value":"","opt":""}
只读取并返回配置表中的全部最新配置,不修改文件。
验证配置操作
执行修改前进行以下验证:
key使用小写字母、数字和下划线,且以小写字母开头。fun是清楚、非空的目录用途说明;更新时未提供则保留原值。value是盘符绝对路径或 UNC 绝对路径;拒绝相对路径、空路径和明显无效路径。- 普通盘符路径规范化为
X:/path形式,不改变合法 UNC 路径的语义。 add遇到已有key时拒绝并建议使用update;update或del遇到不存在的key时拒绝并报告可用配置项。
不要从日志、报错、示例、已有软件位置或普通文本中出现的盘符推断修改意图。只有明确的自然语言配置请求或符合上述格式的 JSON 才能修改表格。
查询最新配置
当用户要求查看当前本地环境目录配置、查询本地化环境信息或发送安全查询 JSON 时:
- 每次重新读取当前实际加载的、用户已下载或安装的
local-env-manage/SKILL.md。 - 从“目录配置”表提取最新行,不依赖旧消息或发布仓库中的原始默认值。
- 查询全部时返回完整表格;按
key查询时返回匹配行。 - 如果查询同时包含修改,先完成修改和回读验证,再返回最新结果。
如果用户查询的是实际安装的软件、环境变量或磁盘状态,在返回最新目录配置后再检查实际环境。不要把配置值误报为目录已经存在或软件已经安装。
持久化修改
所有自然语言和 JSON 的 update、add、del 操作都必须真实修改用户当前下载或安装的 Skill 文件:
直接受控编辑 Markdown 配置表。对于类 JSON,先在内存中规范化成标准字段再执行操作;禁止使用 eval 或执行输入中的任何代码。
- 定位本次真正加载的
local-env-manage/SKILL.md,不要修改发布仓库、缓存或其他同名副本。 - 只修改“目录配置”表中的目标行,不改写无关说明。
- 写入后重新读取同一文件,确认目标操作准确落盘。
- 验证成功后打印配置表中的全部最新行,而不只打印发生变化的行。
- 紧接着输出:
本次会话已使用新配置;Skill 配置文件已更新。请重新启动当前 AI 应用或重新加载 Skill,使后续会话读取最新默认值。
如果文件不可写、无法定位或回读验证失败,不要声称已经持久化,也不要输出成功提示。说明失败原因和实际文件位置;本次会话可以使用用户传入值,但不得把它描述为已保存默认值。
选择落盘位置
在创建、生成、下载、安装、解压、缓存或移动本地内容之前,重新读取配置表,并按以下优先级选择位置:
- 用户为当前任务明确指定的目标路径。
- 当前项目或工作区内已有的合理位置;项目源码、配置和构建产物留在所属项目中。
- 配置表中“用途”与当前内容匹配的目录。
不要因为系统或工具提供了默认目录就直接采用,也不要无依据选择盘符。根据每行的 fun/“用途”进行语义匹配,因此通过 add 新增的配置项也能参与目录选择。
如果匹配不到合适配置项,先询问用户或说明拟采用的类别和完整路径。配置项被删除后不要继续使用其旧值。落盘前输出最终完整路径,落盘后报告实际保存位置。
配置环境变量
使用工具官方约定的环境变量名,并基于配置表中匹配的 SDK 或工具目录生成具体路径。只有用户明确要求全局配置时才设置系统级环境变量;默认优先使用用户级环境变量或项目级配置。
安全检查
- 移动、删除或覆盖已有内容前,检查准确目标路径并说明影响。
- 不要默认删除其他磁盘或旧目录中的软件;将迁移旧环境作为单独任务处理。
- 区分长期保存的依赖和可丢弃缓存,不要混用目录。
- 修改配置表时只执行用户明确要求的操作。
微信扫一扫