搭建你的AI for Research系统——如何在一个“冰点还原”的windows系统下(用户盘数据可以保留!)实现AI开发平台构建
本文针对"冰点还原"系统环境下的AI开发平台搭建难题,提出了一套完整的解决方案。系统盘(C盘)每次重启都会还原的特性导致软件安装、环境变量配置和数据保存成为挑战。文章详细介绍了在持久化分区上部署Anaconda、VSCode和NVM for Windows的具体方法,包括:将Anaconda安装在用户盘、重定向VSCode扩展目录、自定义NVM安装路径等。此外,还提供了自动化的
当“冰点还原”遇到现代开发环境:我的终极解决方案
“冰点还原”系统指:系统盘(C盘)被配置为每次重启都会自动还原到初始状态。
这意味着:
- 所有安装在系统盘的软件都会消失。
- 所有对系统环境变量(
PATH)的修改都会被重置。 - 所有保存在用户配置文件目录(
%USERPROFILE%)下的应用数据都会丢失。
而现代开发工作流,尤其是涉及Conda和Node.js的,严重依赖这些持久化的配置。
本文我们解决一个AI开发平台搭建的问题——针对每次重启都会重置系统盘的“冰点”环境。在这种环境下,安装软件、配置环境变量、保存应用数据成为难点。本文将介绍Conda + Node.js + NVM + 自定义工具配置,构建AI开发平台。
(上一张nano banana pro画的海报~哈哈~)
本文教程可适用于windows系统下python环境开发者(深度学习、软件工程等开发人员适用)
(本文所述技术内容最好在“魔法”环境中进行)
1.python环境构建(anaconda)
基础构建:在持久化分区上部署Anaconda:
对于数据科学和机器学习领域而言,Anaconda是经典选择。它不仅预装了Python解释器,更集成了一系列核心科学计算库(如NumPy, Pandas)以及强大的环境管理工具Conda。面对一个系统盘会在重启后重置的特殊计算环境,将Anaconda直接部署在不受影响的持久化数据分区(本文中以用户盘Z盘为例)之上,是确保所有后续工作得以延续的逻辑起点。
有账号的读者可以直接在anaconda官网下载:
Free Download | Anaconda
https://www.anaconda.com/download本文推荐在北京大学镜像站上下载Anaconda版本,点击:
文件-北京大学开源镜像站
https://mirrors.pku.edu.cn/anaconda/archive/找到最新版的windows版本点击下载即可:
下载时注意将下方地址换成用户盘(即不会被更新的盘中):
2.VS code安装+用户盘extensions设置
一个功能强大的集成开发环境(IDE)或代码编辑器是连接开发者与代码的桥梁。Visual Studio Code(VS Code)凭借其轻量、高度可扩展和跨平台的特性,已成为现代软件开发的事实标准。在我们的受限环境中,目标是构建一个“绿色版”或“便携式”的VS Code,使其自身、所有设置以及庞大的扩展生态系统都能够存活于持久化分区之上。
首先,在官网获取并部署便携版VS Code,同样将内容都安装到用户盘中:
Visual Studio Code - The open source AI code editor
https://code.visualstudio.com/
关键一步:重定向数据与扩展目录
仅仅将VS Code程序放在用户盘还不够。默认情况下,VS Code依然会尝试将用户设置(settings.json)、快捷键配置以及所有安装的扩展存储在系统盘的用户配置文件目录(`%APPDATA%\Code` 和 `%USERPROFILE%\.vscode\extensions`)下。这显然是我们必须解决的核心问题。
首先,在用户盘指定位置创建文件夹(比如Z:\user\.vscode)用于保存用户数据:
有一个方法,你可以下载好之后先别执行上方步骤,先打开vscode随便安装几个extensions,然后在C盘的用户目录下找到.vscode文件夹,直接将其复制过来即可。
之后,找到vscode快捷方式,右键选择属性,在“快捷方式”的目标中设置:
"Z:\software\Microsoft VS Code\Code.exe" --extensions-dir "Z:\user\.vscode\extensions" --user-data-dir "Z:\user\.vscode\user-data"
上方路径改成自己对应的路径即可,如下图所示:
3.NVM for windows工具下载及其配置
在当代的AI研究与开发中,JavaScript及其生态系统扮演着日益重要的角色,无论是数据可视化、Web前端交互界面的构建,还是各类AI辅助开发工具(如本文后续将集成的Codex CLI),都离不开Node.js这一运行时环境。然而,直接安装特定版本的Node.js缺乏灵活性,更好的实践是引入一个版本管理器。对于Windows平台,NVM for Windows项目提供了与Linux/macOS上广受欢迎的NVM相媲美的功能。
为何选择NVM for Windows
在一个可能会长期持续的研究项目中,依赖的工具链版本可能会发生变化。NVM(Node Version Manager)的核心价值在于它允许开发者在同一台机器上安装并轻松切换多个Node.js版本。这种能力确保了项目的可复现性和对不同版本工具的兼容性。更重要的是,NVM for Windows在设计上支持高度的路径自定义,这使其成为在我们的“冰点”环境中部署Node.js的理想选择。它能将Node.js的运行时本身、全局安装的NPM包以及缓存都精确地安置在我们的持久化分区(Z盘)上。
NVM for Windows的部署始于从其GitHub发布页面下载`nvm-setup.zip`安装包。执行安装程序`nvm-setup.exe`时,会遇到两个决定其便携性的关键路径选择:
https://github.com/coreybutler/nvm-windows/releases
https://github.com/coreybutler/nvm-windows/releasesNVM for Windows的安装路径:此处必须将其指定到用户盘,例如 `Z:\software\nvm`。这是NVM工具自身及其所有已下载的Node.js版本的存放位置。
Node.js Symlink(符号链接)路径:这是NVM用于指向当前活动Node.js版本的“指针”。同样,也应将其指定到用户盘,例如 `Z:\software\nodejs`。所有对`node`命令的调用,实际上都会通过这个符号链接导向到NVM管理的具体版本目录。


安装 Node.js:
在CMD或PowerShell中,运行以下命令来安装一个Node.js版本(例如LTS长期支持版):
nvm install lts
# 或者指定一个版本号:
nvm install 20.11.0
安装完成后,这个版本的Node.js会被完整地存放在 `Z:\software\nvm\v20.11.0` 类似的目录下。
node -v
npm -v
如果能看到版本号,说明成功了。
4.conda 环境启动与 nvm启动配置:
前述章节完成了Anaconda、Visual Studio Code和NVM for Windows在持久化分区上的独立部署。然而,这些工具在默认状态下仍是“沉睡”的。由于系统重启会清除所有指向它们的环境变量,我们需要一个自动化的机制,在每次开始工作时“唤醒”并整合它们。
我们可以创建一个.bat脚本,脚本配置如下:
@echo off
:: =======================================================================
:: Robust Master Development Environment Launcher
:: (Conda + NVM for Windows) - v3
:: Uses direct activation for Conda for maximum reliability.
:: =======================================================================
:: ------------------- Configuration Section -------------------
:: PLEASE VERIFY AND SET YOUR ACTUAL PATHS HERE
:: 1. Conda Installation Path
set "CONDA_ROOT=Z:\software\anaconda"
:: 2. NVM for Windows Installation Path
set "NVM_HOME=Z:\software\nvm"
:: 3. Node.js Symlink Path (created by NVM)
set "NVM_SYMLINK=Z:\startlink\nodejs"
:: 4. (Optional) Default Node.js version to use (e.g., 'lts', '20.11.0')
set "DEFAULT_NODE_VERSION=20.11.0"
:: ------------------- Initialization Start --------------------
title Conda + Node.js Dev Env
echo Initializing environment... Please wait.
echo.
:: --- Step 1: Initialize Conda Environment (Reliable Method) ---
echo [1/2] Activating Conda base environment...
call "%CONDA_ROOT%\Scripts\activate.bat"
:: --- Step 2: Initialize NVM and Node.js Environment ---
echo [2/2] Activating Node.js via NVM...
set "NODE_BASE_PATHS=%NVM_SYMLINK%;%NVM_HOME%"
if exist "%NVM_SYMLINK%\npm-global" (
set "NODE_BASE_PATHS=%NVM_SYMLINK%\npm-global;%NODE_BASE_PATHS%"
)
set "PATH=%NODE_BASE_PATHS%;%PATH%"
call nvm use %DEFAULT_NODE_VERSION% > nul
:: --- Step 3: Finalization and Welcome Message ---
cls
echo.
echo ===============================================================
echo ^| Welcome! Your Conda + Node.js environment is ready. ^|
echo ===============================================================
echo.
echo Conda Status:
:: After direct activation, conda info should show the active environment.
call conda info | findstr "active environment"
echo.
echo Node.js Status:
echo Node version:
call node -v
echo NPM version:
call npm -v
echo.
echo You can now use all commands like 'conda', 'python', 'npm', and 'codex'.
echo.
cmd /k
在将此脚本应用于自己的工作流之前,用户必须关注并修改脚本顶部的`Configuration Section`。这一区域是整个脚本唯一需要根据个人部署情况进行调整的地方:
`set "CONDA_ROOT=..."`: 此处需要填入在前文第一节中部署的Anaconda或Miniconda的根目录完整路径。
`set "NVM_HOME=..."`: 对应第三节中NVM for Windows的安装路径。
`set "NVM_SYMLINK=..."`: 对应NVM安装时设置的Node.js符号链接路径。
`set "DEFAULT_NODE_VERSION=..."`: 用户可以指定希望在每次启动时默认激活的Node.js版本。使用`lts`会自动选择最新的长期支持版,也可以指定一个精确的版本号,如`20.11.0`。
这个脚本执行了下方工作流程:
激活Conda环境:脚本的核心步骤之一是`call "%CONDA_ROOT%\Scripts\activate.bat"`。它直接调用Conda自带的激活程序,这是确保Conda环境(包括其`PATH`和环境变量)被完整、正确加载的最可靠方法。执行后,命令提示符将显示`(base)`,表明基础环境已激活。
加载NVM与Node.js:紧接着,脚本动态构建Node.js所需的所有路径(NVM主目录、Node.js活动版本目录、全局NPM包目录),并将它们整体**前置**于当前会话的`PATH`环境变量中。这一“前置”操作确保了我们自定义安装的Node.js版本会被系统优先识别。随后,`call nvm use ...`命令激活了用户在配置区指定的Node.js版本。
环境验证与交互:在所有后台配置完成后,脚本会清屏并显示一个友好的欢迎信息,同时调用`conda info`和`node -v`等命令,向用户报告当前激活的Conda环境和Node.js版本,提供即时反馈。最终,`cmd /k`命令将控制权交给用户,并保持这个配置齐全的命令行窗口处于打开状态,以供后续的开发工作使用。
5.codex配置:
对于codex,我们配置的核心想法是“启动时同步,结束时回传”。我们可以用脚本来实现这个自动化的文件同步过程。
这个方案的优点:
无需管理员权限:只涉及基本的文件和目录复制操作,任何普通用户都可以执行。
逻辑清晰:启动时把配置“推送”到工作目录,工作结束后把结果“拉取”回永久存储。
鲁棒性高:不容易受到系统策略的限制。
下面,我们来设计实现这个新思路的脚本:
这个方案需要两个脚本:
`start_session.bat`: 负责启动。它会把在Z盘的配置复制到系统盘的 `%USERPROFILE%\.codex`,然后启动一个特殊的命令行窗口。
`end_session.bat`**: 负责收尾。工作结束后,运行这个脚本,它会把 `%USERPROFILE%\.codex` 里的新内容(比如会话历史、新设置等)再复制回Z盘,实现数据持久化。
第一部分: `start_session.bat` (启动脚本):
这个脚本是开始工作的入口:
@echo off
chcp 65001 > nul
:: =======================================================================
:: Session Launcher (File Copy Method) - v7_start
:: 1. Copies config to target location.
:: 2. Initializes Conda, NVM, and sets API Key.
:: 3. Launches the development environment.
:: =======================================================================
:: ------------------- Configuration Section -------------------
set "CONDA_ROOT=Z:\software\anaconda" :: <-- 请根据您的实际情况修改
set "NVM_HOME=D:\MyUserProfile\nvm" :: <-- 请根据您的实际情况修改
set "NVM_SYMLINK=D:\MyUserProfile\nodejs" :: <-- 请根据您的实际情况修改
set "DEFAULT_NODE_VERSION=lts" :: <-- 请根据您的实际情况修改
:: [IMPORTANT] Define SOURCE and TARGET for Codex config
set "SOURCE_CODEX_DIR=Z:\software\codex" :: <-- codex配置文件地址
set "TARGET_CODEX_DIR=%USERPROFILE%\.codex" :: <-- codex系统默认的配置文件地址
:: [IMPORTANT] Set your Codex API Key here
set "CODEX_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
:: ------------------- Initialization Start --------------------
title Full Stack AI Dev Environment (Copy Mode)
echo Initializing environment... Please wait.
echo.
:: --- Step 1: Sync Codex Configuration to Target ---
echo [1/4] Syncing Codex configuration...
echo Source: %SOURCE_CODEX_DIR%
echo Target: %TARGET_CODEX_DIR%
:: Ensure the source directory exists
if not exist "%SOURCE_CODEX_DIR%" (
echo.
echo ERROR: Source Codex directory not found at %SOURCE_CODEX_DIR%
pause
exit
)
:: Use xcopy to recursively copy files and directories.
:: /E - Copies directories and subdirectories, including empty ones.
:: /Y - Suppresses prompting to confirm you want to overwrite an existing destination file.
:: /I - If destination does not exist and copying more than one file, assumes that destination must be a directory.
xcopy "%SOURCE_CODEX_DIR%\*" "%TARGET_CODEX_DIR%\" /E /Y /I > nul
:: --- Step 2, 3, 4 are the same as before ---
echo [2/4] Activating Conda base environment...
call "%CONDA_ROOT%\Scripts\activate.bat"
echo [3/4] Activating Node.js via NVM...
set "NODE_BASE_PATHS=%NVM_SYMLINK%;%NVM_HOME%"
if exist "%NVM_SYMLINK%\npm-global" (
set "NODE_BASE_PATHS=%NVM_SYMLINK%\npm-global;%NODE_BASE_PATHS%"
)
set "PATH=%NODE_BASE_PATHS%;%PATH%"
call nvm use %DEFAULT_NODE_VERSION% > nul
echo [4/4] Codex API Key has been set.
:: --- Finalization and Welcome Message ---
cls
echo.
echo ===============================================================
echo ^| Welcome! Your Full Stack AI environment is ready. ^|
echo ===============================================================
echo.
echo Conda, Node.js, and API Key are configured.
echo Codex config files have been copied to: %TARGET_CODEX_DIR%
echo.
echo IMPORTANT: When you are finished, run 'end_session.bat'
echo to save your Codex session history and any changes.
echo.
cmd /k
第二部分: `end_session.bat` (结束脚本)
这个脚本非常简洁,只做一件事:把数据拷回去。
@echo off
chcp 65001 > nul
:: =======================================================================
:: Session Saver (File Copy Method) - v7_end
:: Copies the updated Codex configuration back to the permanent storage.
:: =======================================================================
:: ------------------- Configuration Section -------------------
:: Ensure these paths match your start_session.bat script!
set "SOURCE_CODEX_DIR=Z:\software\codex"
set "TARGET_CODEX_DIR=%USERPROFILE%\.codex"
:: ------------------- Sync Back Process --------------------
title Saving Session Data...
echo Syncing session data back to permanent storage...
echo From: %TARGET_CODEX_DIR%
echo To: %SOURCE_CODEX_DIR%
echo.
:: Check if there is anything to save
if not exist "%TARGET_CODEX_DIR%" (
echo WARNING: Target directory %TARGET_CODEX_DIR% not found.
echo Nothing to save.
pause
exit
)
:: Use xcopy to sync back
xcopy "%TARGET_CODEX_DIR%\*" "%SOURCE_CODEX_DIR%\" /E /Y /I
echo.
echo =======================================================
echo Codex session data has been successfully saved!
echo =======================================================
echo.
pause
这个方案在逻辑上非常稳固,并且完全避免了权限问题。
通过上方的步骤,你就可以在一个“冰点还原”的windows系统下实现AI开发了,读者们可自行拓展~
更多推荐
所有评论(0)