资讯动态

Windows AI开发环境搭建指南:WSL2+Docker+Codex实战

发布时间:2026/9/13 9:45:32 来源:尧图企业网站定制
2026年初我把主力机系统重装了一遍折腾完整个Windows AI开发环境之后决定把过程原原本本记录下来。很多从GitHub上复制项目、跟着AI教程跑代码的人卡住的地方往往不在业务逻辑而在环境本身——Python装了三套pip却指向旧的Git装完才发现SSH密钥没配要用Docker但虚拟化平台又没开好不容易装好AI编程助手结果模型接口连不上。这篇指南不玩花的就是把Windows上跑AI编程这件事一步步拆开从终端、Git、编程语言版本管理这些地基开始到用Docker Desktop跑起Redis和Elasticsearch这类中间件再接入Codex桌面版和常用AI编程插件最后用一个真实小项目把整条链路跑通。适合刚入手Windows电脑想搞AI开发的人也适合那些装了一半装不下去、想彻底理清思路的朋友。1. 先把平台问题想明白Windows上搭AI环境的三种路线提到AI开发环境市面上绝大多数教程默认你用的是Linux或者macOS。Windows用户第一步就开始自我怀疑是不是非得装个Ubuntu双系统才行我的回答是不用但你需要先想清楚自己要走哪条路线因为Windows下有三种完全不同的玩法选错后面会一直别扭。1.1 纯Windows、WSL2与虚拟机三套方案对比纯Windows方案所有开发工具直接装在Windows上。Python、Git、Node.js、Docker Desktop都有原生Windows版本。优点是没有虚拟化层的性能损耗文件读写和GPU调用都直接走Windows驱动适合本地跑模型、调用云API、写业务代码。缺点是部分Linux专属的shell脚本、依赖库需要折腾变通方案。WSL2方案Windows Subsystem for Linux本质是一台轻量虚拟机。你在Windows里装一个Ubuntu终端日常开发几乎感觉不到边界。好处是绝大多数AI开源项目都能用Linux的安装命令直接跑坏处是网络、端口、文件系统有几层转发刚开始会碰到一些奇奇怪怪的连接问题。虚拟机方案VirtualBox或者VMware里跑完整Linux桌面。隔离性最强但性能和资源占用最差日常调试代码会明显感觉卡顿我不太推荐把虚拟机作为主力开发环境。1.2 我的选择WSL2 Docker Desktop混搭我最终采用的是“Windows原生工具链 WSL2 Docker Desktop”混搭路线。一句话归纳Python、Git、Node.js、Codex这类编程工具装在Windows原生环境里Docker完整跑在WSL2后端之上中间件全部容器化。这样选择基于三个原因。第一AI编程助手类工具比如Codex、GitHub Copilot通常以桌面应用或IDE插件形式存在原生Windows版支持最顺滑。第二Docker Desktop在Windows下的官方推荐后端就是WSL2这等于间接拿到了一套干净的Linux内核Redis、Elasticsearch这类“Linux原住民”中间件不用再为Windows路径兼容问题烦心。第三文档和社区资料最容易交叉复用教程里说apt install我在WSL2里可以直接照抄教程里说双击安装包我回到Windows侧操作也不耽误。1.3 硬件要求内存和固态是底线这套方案对硬件不苛刻但有两个硬指标内存至少16GB硬盘最好是固态。WSL2默认会吃掉一部分内存Docker再开几个容器如果内存只有8GB跑一个AI本地模型加上IDE就捉襟见肘。我现在是32GB内存日常开着VS Code、Codex桌面版、Docker里的Redis和Jupyter Notebook内存占用大概在60%左右。显卡方面如果只是用AI编程助手的云模型核显都够想本地跑Stable Diffusion或者微调小模型优先NVIDIA显卡后续配CUDA方便很多。2. 地基工程终端、Git与语言运行时管理环境的地基是终端、版本控制工具和语言运行时这三样。顺序有讲究先把终端搞好装Git再装Python/Node/JDK这样后续每个步骤都有趁手的工具可用。2.1 终端与系统包管理器Windows Terminal wingetWindows 11自带Terminal如果没装去微软商店搜索Windows Terminal装一个。这是必装项因为看日志、跑脚本、复制粘贴长命令都靠它。紧接着把PowerShell升级到7.x版本——微软商店里有最新的PowerShell别用系统自带的Windows PowerShell 5.x语法兼容性差一截不少AI脚手架脚本跑起来会报错。系统包管理器直接用winget。这是Windows 10 1709之后内置的官方包管理器作用类似于Linux的apt。检查是否可用终端输入winget --version如果提示找不到先到微软商店安装“应用安装程序”。有了winget安装Git、Python、Node这些基础工具就是几条命令的事winget install Git.Git winget install Python.Python.3.12 winget install OpenJS.NodeJS.LTS winget install Oracle.JDK.17这里有个关键经验装完每一样都必须重开一个新终端窗口再继续下一步否则PATH环境变量不会刷新你会在这一步反复踩“命令明明装了但提示找不到”的坑。2.2 Git安装与SSH密钥配置忽视就等着被GitHub拒收Git装完后第一件事不是创建仓库而是配置用户信息和SSH密钥。很多新手卡在每次push都要输密码就是因为省了这一步。git config --global user.name 你的用户名 git config --global user.email 你的邮箱 ssh-keygen -t ed25519 -C 你的邮箱一路回车会在C:\Users\你的用户名\.ssh\id_ed25519.pub生成公钥把这文件用记事本打开内容复制到GitHub Settings里的SSH and GPG keys页面。之后在终端验证ssh -T gitgithub.com看到Hi 你的用户名! Youve successfully authenticated就通了。还要提一个Windows专属的坑换行符。Windows用CRLFLinux用LFGit如果没配置好克隆下来的shell脚本会报错。我习惯把自动转换关掉git config --global core.autocrlf false代价是你在Windows里用记事本打开Linux风格文件时可能会出现内容挤在一行——但至少代码不会再莫名其妙的跑不了。2.3 Python、Node.js与JDK17的多版本管理Python直接双击安装器的时候记得勾选“Add Python to PATH”这也是老生常谈但总有人忘。装完在终端执行python --version确认版本。Python多版本管理我推荐用pyWindows自带的Python Launcher它允许你在同一台机器上装3.10、3.11、3.12等多个版本用命令切换py -3.12 --version py -3.11 --version新建虚拟环境养成习惯不污染全局包py -3.12 -m venv .venv .venv\Scripts\activateNode.js装LTS版本即可。但直接装只有一个版本未来某些AI工具要求Node 20另一些项目又要Node 18来回卸载安装太痛苦。所以我装了nvm-windows来管理多版本winget install CoreyButler.NVMforWindows装完重开终端安装并使用指定版本nvm install 20 nvm use 20JDK17在AI生态里的存在感最近越来越强。Elasticsearch和部分Java生态的AI服务会用到干脆一并装上。装完同样重开终端验证java -version。这里顺便说下为什么我强调“重开终端”这件事。Windows的PATH更新不会实时生效它只在终端启动时读取一次。如果你在同一个终端窗口里连续装多个环境很可能出现python指向旧版、node找不到的情况。我自己的习惯是每完成一个工具的安装就彻底关掉终端窗口重新打开宁多勿缺。3. Docker Desktop落地容器化跑起Redis和ElasticsearchWindows上跑AI项目免不了要用中间件。Redis做缓存和消息队列Elasticsearch做向量检索这两个是本地开发的高频需求。单独去下载Windows安装包虽然也能跑但版本升级和配置迁移都麻烦。容器化之后一套docker-compose文件到处通用干净利落。3.1 Docker Desktop安装时的三个关键勾选Docker Desktop可以从官网下载也可以用命令winget install Docker.DockerDesktop安装过程中会有两个容易忽略的环节。第一如果系统提示需要启用Hyper-V或者WSL2直接点确认并按提示重启。第二安装完成后首次启动Docker Desktop会问Use WSL 2 instead of Hyper-V一定要选WSL 2性能好、启动快和后续的端口映射也更自然。启动后终端验证docker --version docker compose version另外Windows的Docker Desktop默认会占用大量WSL2磁盘空间虚拟磁盘文件会不断膨胀。我的建议是定期执行清理docker system prune -f3.2 用一份docker-compose.yml同时起Redis和Elasticsearch与其分别写两条docker run命令不如直接放一个compose文件。以后重装系统一句话就能恢复整套中间件。我在项目目录下建了个docker/文件夹里放docker-compose.ymlversion: 3.8 services: redis: image: redis:7-alpine container_name: dev-redis ports: - 6379:6379 volumes: - redis-data:/data command: redis-server --appendonly yes elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.13.0 container_name: dev-elasticsearch environment: - discovery.typesingle-node - ES_JAVA_OPTS-Xms512m -Xmx512m - xpack.security.enabledfalse ports: - 9200:9200 volumes: - es-data:/usr/share/elasticsearch/data volumes: redis-data: es-data:在docker/目录下执行docker compose up -d看到Started状态就说明跑起来了。这里解释一下几个配置为什么这么写。Redis挂载了数据卷并开启--appendonly yes保证容器重启后缓存不丢这对本地联调很重要——否则每次重启都要重新让AI生成的数据重跑一遍。Elasticsearch设了单节点模式把安全认证关掉是因为本地开发没必要为证书和用户密码劳神等部署到公网服务器再考虑安全加固也不迟。ES_JAVA_OPTS限制512MB内存避免它和IDE抢资源。验证服务curl http://localhost:9200 docker exec -it dev-redis redis-cli pingcurl返回带cluster_name的JSONredis-cli ping返回PONG整条链路就通了。3.3 WSL2内存占用与vm.max_map_count修改Elasticsearch容器启动时如果报max virtual memory areas vm.max_map_count [65530] is too low说明宿主机WSL2的内核参数不够。解决办法是在Windows用户目录下建一个.wslconfig文件[wsl2] memory8GB swap4GB再在WSL2终端里修改内核参数ES容器启动报错时执行sudo sysctl -w vm.max_map_count262144这个值重启后会失效想要永久生效在WSL2里编辑/etc/sysctl.conf加一行vm.max_map_count262144。对应到Windows侧每次重启WSL2后执行wsl --shutdown再进入即可重新读取。4. AI编程工具接入Codex桌面版安装与提示词用法环境搭得再漂亮最终还是要落实到“AI帮我写代码”这个核心诉求上。目前我用得最多的是Codex桌面版再搭配IDE里的AI插件作为补充。4.1 Codex桌面版安装与初始化Codex桌面版在Windows上有官方安装包和CLI两种形式。CLI的安装基于npm适合从终端直接驱动。如果你的Node.js已经装好并切到20以上版本直接执行npm install -g openai/codex安装完成后运行codex第一次启动会引导你登录OpenAI账号并授权授权完成后会在用户目录生成配置文件。桌面版则是去官网下载Windows安装包双击安装即可。我个人喜欢CLI方式因为可以把它嵌套进VS Code的终端里写完提示词直接在同一个窗口看结果。Codex启动时会要求你设置模型和上下文。日常写代码选默认模型就够复杂项目重构可以切换到推理能力更强的模式。有一点注意Codex会对本地目录有访问权限限制第一次在某个目录里运行它会弹窗询问是否信任该目录选择Yes否则它只能读不能写。4.2 一份好用的AI编程提示词比安装工具更重要工具装好只是开始真正会“使唤”AI才能提升效率。我踩过很多次“AI写出来东西全是废话”的坑总结下来一份好用的提示词包含四个要素角色、任务、约束、输出格式。举个例子我要写一个Python脚本连接本地Redis并做限流你是一名Python后端开发工程师。请帮我写一个模块功能是基于Redis实现一个简易的固定窗口限流器。 要求 1. 使用redis-py库连接默认localhost:6379数据库0。 2. 提供check(limit: int, window_seconds: int) - bool方法超过阈值返回False。 3. 代码注释用中文。 4. 提供一个简单的单元测试示例。 输出先给出完整代码块再补充使用方法说明不要解释Redis原理。对比一下简单版的“写个限流器”加了角色、边界和输出格式之后结果完全是两个质量级别。另外一个实用技巧把项目里已有的文件路径和代码风格告诉AI让它先读再改比直接贴一大段代码过去更省token上下文也更准。4.3 辅助AI插件Copilot、Continue与Cline怎么选Codex命令行在“会话式编程”场景很顺手但改代码时我还是习惯在VS Code里让AI直接操作文件。额外装了三个插件各有分工GitHub Copilot补全式AI适合“写到一半自动帮你续下一行”。我写模板代码和重复性逻辑时开着它体感最顺滑。Continue开源免费支持接入多种模型。可以在侧边栏聊天也能选中代码让AI解释或重构。我把它当作Codex之外的第二意见。Cline它能自主读目录文件、执行终端命令、创建和修改文件。适合“帮我把这个项目的结构重构一遍”这种大任务但因为权限大我会盯着它的操作日志防止它乱改配置。插件不是装得越多越好装多了反而互相抢快捷键还容易在同一个文件里产生两次AI修改互相覆盖。我现在的固定组合是Copilot Cline需要聊复杂设计时才打开Continue。4.4 本地模型补充Ollama的作用有些项目比较敏感不适合把代码传上云那就需要本地模型兜底。Ollama在Windows上有原生支持安装后拉取代码模型ollama pull qwen2.5-coder:7b ollama run qwen2.5-coder:7b之后在Continue插件里把模型地址指向http://localhost:11434就能在IDE里使用本地模型。7B模型在16GB内存的机器上跑得动速度谈不上快但胜在完全离线、隐私安全。如果想更流畅量化版qwen2.5-coder:7b-instruct-q4_K_M是速度和质量的平衡点。5. 完整跑通从零到“AI帮我写第一个程序”环境搭没搭好最终要看能不能闭环。我设计了一个很小的任务写一个Python脚本从Redis里读取一个键如果不存在就调用Elasticsearch的聚合接口把结果写回Redis最后打印耗时。这个过程会用到Python、Docker里的两个中间件以及Codex的生成能力。5.1 在VS Code里建项目并启动Codex新建文件夹ai-demo用VS Code打开在终端激活刚才建的虚拟环境确认目录可信后启动Codexcodex我输入的第一条指令帮我在当前目录初始化一个Python项目依赖用requirements.txt管理。项目功能 1. 连接localhost:6379的Redis读取键 demo:data。 2. 如果该键不存在请求localhost:9200上的Elasticsearch的 _search 接口查询索引 my-index 的所有文档把返回结果JSON序列化后写入Redis设30秒过期。 3. 如果键存在直接打印Redis里的值。 4. 最后打印整个函数的执行耗时单位毫秒。 先写代码再写配置说明。5.2 Codex生成代码人工检查真实父子依赖关系Codex很快生成了一个main.py并自动装了依赖。我注意到它生成代码里的Elasticsearch查询没有指定索引是否存在于是追加了一条指令请在请求Elasticsearch前先用HEAD方法判断索引是否存在如果不存在则打印提示并跳过查询。这里有一个关键心得AI生成完代码后一定要人工检查它的依赖关系尤其是它调用的库版本是不是你环境里实际装的那个。比如它可能生成from elasticsearch import Elasticsearch但你只装了requests运行时就会崩。我让Codex把所有依赖写进requirements.txt然后执行pip install -r requirements.txt python main.pyRedis里没有数据时脚本正常走了Elasticsearch查询并且把结果写回了Redis再跑一次直接命中缓存耗时从80毫秒降到了2毫秒。5.3 整个闭环里的几个关键检查点整个链路跑通之后值得回看几个容易出现偏差的点。第一是端口占用。Windows上Docker容器映射到宿主机的端口如果本机已经装了同款服务的Windows版两者会冲突。我在试的时候发现Elasticsearch的9200端口被一个旧的Windows服务占着容器一直起不来。解决办法是先把Windows服务停掉或者干脆修改compose里的映射端口为19200。第二是Python环境激活。很多人的习惯是在VS Code里按F5直接运行但VS Code解释器选择的是全局Python而不是虚拟环境的Python。一定要在右下角状态栏点击Python版本选择.venv里的解释器否则你会出现“明明在终端pip install了但F5跑起来说模块不存在”。第三是AI生成代码时的“幻觉依赖”。它会给你生成一个看起来好用的第三方库但库里从来没有那个函数。遇到这种报错别急着Stack Overflow先在提示词里让它“根据已安装依赖重新检查代码”通常一轮就能改对。6. 踩坑记录汇总与性能调优建议这个环境我从零装了三遍第一遍边查边装用了将近一天第二遍两小时第三遍半小时。大量时间花在看得见摸得着的坑上把它们集中写在这里能帮你少走不少路。6.1 高频错误与解决方案现象根本原因解决办法python提示找不到安装Python时没加到PATH重装并勾选Add Python to PATH注意安装路径不含中文docker命令找不到Docker Desktop服务未启动启动Docker Desktop等待托盘图标不再转圈Elasticsearch容器一直重启内存不足或vm.max_map_count过小调整.wslconfig限制内存或执行sysctl -w vm.max_map_count262144ssh: connect to host github.com port 22: Connection timed out网络环境不允许直连22端口改用HTTPS克隆git clone https://github.com/...Codex登录页面加载不出来网络问题且代理配置没同步到终端在PowerShell里设置$env:HTTPS_PROXY或在Codex配置文件中指定代理Docker镜像下载超时镜像源配置问题或网络不稳定换国内镜像源在Docker Desktop Settings把registry-mirrors改成可用地址WSL2磁盘文件膨胀到几十GBvhdx虚拟磁盘自动增长不回收先wsl --shutdown再用diskpart压缩vhdx注意操作前备份重要WSL数据6.2 环境跑起来的日常维护经验环境跑通后日常维护比安装更重要。第一每周做一次docker system prune和pip cache purge清理残留镜像和安装缓存防止C盘悄悄变大。第二依赖隔离永远不要省——每个项目独立虚拟环境哪怕只写几行测试代码也值得因为AI生成的代码依赖千奇百怪全局环境装混了迟早连锁崩溃。第三.gitignore里固定加.venv/、.env、__pycache__/不要让AI生成的临时文件污染Git提交记录。另外一个很实用的经验把环境初始化过程本身变成代码。我自己在GitHub建了个私有仓库里面存了docker-compose.yml、.wslconfig、PowerShell安装脚本和.gitconfig模板。之后换电脑、重装系统clone下来跑一遍脚本半小时恢复全部开发环境。别把环境搭建视为一次性的苦活花一天时间把它脚本化长期看很值。6.3 关于AI编程环境的最后一句唠叨工具装好只是起点真正决定效率的是你如何定义任务、如何校验AI输出、如何把重复劳动沉淀成自己的提示词库和脚本库。我在搭这套环境的过程中最大的收获不是“装好了Codex和Docker”而是养成了“一切环境配置皆可复现、一切重复操作皆可脚本化”的习惯。以后不管是迁移机器还是加入新项目都不会再把时间耗在“怎么把环境跑起来”这件事上而是把精力留给真正需要思考的代码问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价