
文章目录agent安装安装wsl如何使用wslpowershell 运行 wsl启动windows目录和linux目录对应关系怎么互相访问C:\ → /mnt/c D:\ → /mnt/d \\wsl$\Ubuntu-22.04\xxxwsl里的/root /home~ 当前用户的家目录如何看自己 是什么用户创建一个普通用户给用户 sudo 权限非常重要/etc/sudoers 这个文件才是真正决定 谁可以用 sudosudo规则完整结构谁在什么地方可以用/以谁的身份执行哪些命令切换到新用户测试 su - xx- 的作用是让你“完整切换成该用户的登录环境”WSL 默认 root 是没有密码的。把 WSL 默认用户改成普通用户wsl配置代理Windows 有代理 ✔WSL 没走代理 ❌daili/tizi 让你的网络请求“绕一个中间服务器再出去”daili软件具体干什么vscode 把 C:\Users\用户vscode-remote-wsl\stable 移走wsl 安装常用软件sudo apt updatepython is python3node.jswindows资源管理器查看linux文件dockersystemduname -a cat /etc/os-release密钥把当前用户加入 docker 组避免每次都要 sudo无需在 Linux 内重新安装 Docker只需要将 Docker Desktop 与你的 WSL 2 子系统关联即可后续必须打开docker desktop 才能在wsl里使用redisredis客户端 AnotherRedisDesktopManagerNVIDIA 是公司/显卡平台CUDA 是 NVIDIA 为自家 GPU 提供的一套并行计算平台和开发工具nvidia-smipostmanwsl安装agentagent WSL VS Code 的最舒服开发流pycharm安装cc-switch手动配置的方法vscode 安装 code for vscodeasdf 版本管理工具asdf 把版本下载到哪里常用命令asdf plugin add name 是官方命令意思就是给某个工具加插件因为 asdf 要靠插件才知道怎么管理这个工具. asdf plugin list查看已经安装的插件“插件”到底是什么看某个工具有哪些版本可装 asdf list all xxasdf install 安装设置当前项目使用哪个版本 asdf set设置“全局默认版本”asdf set -uasdf current 查看当前版本卸载某个版本 asdf uninstall更新 shim asdf reshimshim 夹在命令和真实程序之间的转发层负责把 python、node 这些命令导向正确版本tmux 在一个终端里开很多终端并且能让会话后台持续存在的工具session/window/pane常用命令tmux 大部分快捷键都要先按前缀键。默认前缀是Ctrl b启动tmux新建一个带名字的 session:tmux new -s xx查看当前有哪些 session。tmux ls重新连接某个 session tmux attach -t暂时退出但不关闭里面程序 Ctrlb 然后按 d新建一个 window Ctrlb 然后按 c切换 window。Ctrlb 然后按 n。Ctrlb 然后按 p Ctrlb 然后按 p分屏 pane ctrlb %/在 pane 之间切换.Ctrlb 然后按方向键关闭当前 pane 或 window exit总结启动agentagent 3种模式默认模式接收编辑模式计划模式agent 多行输入 \enterctrl g 会打开 vscode的一个标签页type here xx不要回车直接在这里输入跳过所有权限检测 dangerously-skip-permissions终端执行 c --resume 恢复对话或者/resume/effort 努力调 agent在当前任务里“愿意花多少思考量”。 思考深度标准思考进阶思考/tasks 查看后台任务ctrlb 放到后台x关掉到后台服务 esc或-等都是关掉当前展示后台任务的窗口/rewind 回滚 或 连续按2下esc也是取去到到回滚界面/compact 压缩,后面可跟摘要重点保留什么【可选的自定义摘要说明】压缩后ctrlo查看压缩后的上下文/clear 清除对话历史并释放上下文.后面的任务跟之前的没有关系就可以使用/init 生成c.md也可手动更改/memory 也可以打开C.mdHook功能skillsubagentskill与subagentplugin截图可以直接拖进wsl的agent里codex app 设置 wsl图形化访问wslNAT网络代理服务器wsl里设置了代理访问网络就知道先走代理吗?这是为什么git config --global http.proxygit 为什么要用代理Windows 上常见的是“系统代理配置”WSL/Linux 里常见的是“环境变量或程序自己的代理配置”为什么宿主机启动了代理wsl还是访问不了。镜像网络防火墙wsl.confwsl 备份跟克隆命令行互通windows命令 跟linux命令agent安装安装wslwsl安装并迁移目录如果装了wsl但不记得有没有迁移可以运行reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Lxss /s | findstr BasePathext4.vhdx 你的整个 Linux 世界如何使用wslpowershell 运行 wsl启动PS C:\Users\zhouj wslwindows目录和linux目录对应关系怎么互相访问C:\ → /mnt/cD:\ → /mnt/d\\wsl$\Ubuntu-22.04\xxxwsl里的/root /home~ 当前用户的家目录如何看自己 是什么用户创建一个普通用户adduser zhoujx给用户 sudo 权限非常重要给用户 sudo 权限非常重要 否则你以后装软件会很麻烦执行usermod -aG sudo zhouj在当前用户zhoujx执行groups 输出示例zhoujx sudo ✔ 如果看到 sudo说明 已经加成功/etc/sudoers 这个文件才是真正决定 谁可以用 sudosudo规则完整结构谁在什么地方可以用/以谁的身份执行哪些命令谁 在哪些主机 (以谁的身份) 可以执行什么命令 其实就是一句话谁在什么地方可以用谁的身份执行哪些命令以谁的身份”在 Linux 命令行里的代名词就是 sudo -u xx如果不加 -u 默认是root“我要以 mysql 的身份去删掉缓存。”你的命令行语言就是“sudo -u mysql rm -rf /cache/*”当你想说“我要以 www-data 的身份去重启服务。”你的命令行语言就是“sudo -u www-data nginx -s reload”只有一种情况你可以不写 -u xx那就是当你以 root 的身份执行命令时“以 root 的身份执行安装” sudo -u root apt install因为大家太常用了所以 Linux 允许你把 -u root 省略掉直接简写成sudo apt install。sudoers 里的命令就不用输入密码吗不是的默认情况下依然要输入密码但输的是“你自己的密码”而不是“root”或“目标用户”的密码。如果你希望执行某些命令时连自己的密码都不用输必须在 sudoers 配置文件里显式加上 NOPASSWD: 关键字。在 sudoers 的语法里NOPASSWD: 就像一个开关或者叫前缀它会一直向后生效直到遇到下一组不同的权限定义或者行尾。使用 sudo 的核心目的就是为了让你不需要知道别人的密码甚至不需要手动切换用户不用执行 su -就能直接以别人的身份去跑命令在 sudoers 文件中配置的格式通常是这样的谁 在什么机器(以谁的身份) 执行什么命令使用 sudo -i 或 sudo su -依赖 sudoers原理借用 sudo 的特权去敲开切换用户的大门。规则系统会要求你输入你自己的密码。结论这就必须在 sudoers 里面配置了。比如你必须拥有 ALL(ALL) 权限系统才会允许你通过 sudo -i 直接免密免对方密码切到 root切换到新用户测试 su - xx- 的作用是让你“完整切换成该用户的登录环境”WSL 默认 root 是没有密码的。zhoujxLAPTOP-A2QR4P66:~$ sudo -i[sudo] password for zhoujx:Sorry, try again.[sudo] password for zhoujx:zhoujx is not in the sudoers file. This incident will be reported.zhoujx is not in the sudoers file 意味着 你的用户 zhoujx 没有 sudo 权限强制用 root 启动 WSL✅ 推荐在 Windows PowerShell 执行wsl -u root 你会直接进入rootLAPTOP-xxx:#给 zhoujx 加 sudo 权限在 root 下执行usermod -aG sudo zhoujx把 WSL 默认用户改成普通用户wsl执行把 WSL 默认用户改成 zhoujx避免每次都是 rootvim /etc/wsl.conf 添加 [user] defaultzhoujx 然后powershell执行 wsl --shutdownwsl配置代理Windows 有代理 ✔WSL 没走代理 ❌问题启动wsl后显示检测到 localhost 代理配置但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理# C:\Users\你的用户名\.wslconfig [wsl2] networkingModemirrored autoProxytrue dnsTunnelingtrue # PowerShell wsl --shutdown wsl测试curl -I https://www.baidu.comdaili/tizi 让你的网络请求“绕一个中间服务器再出去”daili软件具体干什么vscode 把 C:\Users\用户vscode-remote-wsl\stable 移走这个目录通常存放的是 VS Code 在 WSLWindows Subsystem for Linux环境下运行所需的服务端核心文件Commit 具体的程序文件。如果你删除了它下次你在 WSL 中打开 VS Code 时它会重新下载可能会导致启动缓慢或报错用软链接最简单1、在d盘创建目录D:\VSCodeData\vscode-remote-wsl2、移动目录到 D 盘【先关闭 VS Code 和所有 WSL 远程会话】# powershellMove-Item-PathC:\Users\zhouj\vscode-remote-wsl-DestinationD:\VSCodeData\vscode-remote-wsl3、PowerShell 创建目录符号链接管理员 PowerShell 执行New-Item-ItemType SymbolicLink -PathC:\Users\zhouj\vscode-remote-wsl-TargetD:\VSCodeData\vscode-remote-wsl4、检查是否创建成功Get-ItemC:\Users\zhouj\vscode-remote-wsl|Format-ListFullName,LinkType,Target如果成功一般能看到LinkType : SymbolicLinkTarget : {D:\VSCodeData\vscode-remote-wsl}也可以直接试Get-ChildItemC:\Users\zhouj\vscode-remote-wsl如果能看到 D 盘里的内容说明链接正常。这样就相当于原来的 C:\Users\zhouj\vscode-remote-wsl 指向了 D 盘 效果VS Code 以为还在 C 盘实际存储在 D 盘wsl 安装常用软件ubuntu已经 自带了git 和 python3sudo apt updatesudo apt update 的作用是刷新本地的软件包索引列表sudo apt update去所有已经配置的软件源获取最新的软件包索引/目录不是下载和安装所有软件 。更新本地索引就是更新“有哪些包、有哪些版本、依赖什么、去哪个源获取”等信息从你配置的软件源获取最新的软件包索引然后更新本机对这些软件包信息的认知。这些索引里主要包含有哪些包比如 docker-ce每个包有哪些版本适用于什么架构比如 amd64依赖哪些其他包这个包从哪个软件源获取对应下载位置和校验信息所以你可以把/var/lib/apt/lists/理解成APT 本地保存的“软件目录信息”。而 apt update 就是刷新这个目录。因为 apt update 要做两件需要管理员权限的事读取系统的软件源配置并把最新的软件包索引写到系统目录里。普通用户通常没有权限修改这些系统目录所以前面要加sudo/etc/apt/sources.list 和 /etc/apt/sources.list.d/配置软件源也就是告诉APT“去哪些服务器找软件下载软件”/var/lib/apt/lists/apt update 下载回来的软件索引主要保存在这里。sudo apt install xxxAPT 先查本地索引找到 xxx 在哪个仓库、有什么版本、依赖什么然后再去对应软件源下载真正的 .deb 软件包并安装python is python3把python链接到python3上node.jswindows资源管理器查看linux文件windows资源管理器可用查看linux文件还可以用windows上面的软件打开wsl输入explore.exe . 就会使用资源管理器打开当前目录dockerwsl最新的已经默认启用了systemd,现在在wsl上运行docker的体验跟一台真正的linux电脑的体验是一致的为什么wsl使用systemd了使用docker就方便了有什么联系吗systemdsystemd 是 Linux 中负责系统启动和后台服务管理的一套系统与服务管理器systemctl 是你用来“命令 systemd”的工具uname -a cat /etc/os-releasehttps://zhuanlan.zhihu.com/p/2022433047052568146cat /etc/os-release含义查看当前 Linux 操作系统/发行版的具体名称和版本信息。执行结果会打印出如 Ubuntu、CentOS、Debian 等系统名称以及具体的版本号例如 Ubuntu 22.04 LTS。uname -r含义只查看系统正在运行的 Linux 内核Kernel版本号-r 代表 release。典型输出5.15.0-88-generic适用场景当你需要安装显卡驱动、特定内核模块或者检查某个软件是否兼容当前内核时使用。uname -a含义查看所有的系统信息-a 代表 all。典型输出Linux my-server 5.15.0-88-generic #98-Ubuntu SMP Mon Oct 2 15:18:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux包含内容内核名称Linux主机名如 my-server内核版本即 uname -r 的内容内核编译时间与版本细节硬件架构如 x86_64 或 aarch64操作系统类型GNU/Linux有了发行版 为什么还要看内核密钥先把 Docker 官方的“身份证验证钥匙”交给 Ubuntu之后 Ubuntu 下载 Docker 软件时就能确认这些软件真的是Docker 官方发布的把当前用户加入 docker 组避免每次都要 sudo为什么要这样做摆脱 sudo 限制默认情况下Docker 的后台守护进程Docker Daemon绑定的 Unix Socket 属于 root 用户和 docker 组。普通用户没有权限直接访问它。解决权限拒绝报错如果不执行这条命令每次运行 docker ps 或 docker run 时系统都会报权限错误Got permission denied while trying to connect to the Docker daemon socket…你必须在每条命令前都加 sudo如 sudo docker ps。简化日常操作将当前用户加入 docker 组后你就获得了直接与 Docker 守护进程通信的权限以后敲 Docker 命令就不再需要每次都输入 sudo 和密码了。-aG docker “追加”在你以前的所有组里额外加入 docker 组。无需在 Linux 内重新安装 Docker只需要将 Docker Desktop 与你的 WSL 2 子系统关联即可打开 Windows 上的 Docker Desktop 应用。点击右上角的齿轮图标Settings进入设置。在左侧菜单选择Resources-WSL Integration。在右侧确保勾选了“Enable integration with my default WSL distro”。在“Enable integration with additional distros”列表中找到你当前使用的这个子系统比如Ubuntu或对应的发行版名称将旁边的开关打到开启状态On。点击右下角Apply restart应用并重启 Docker Desktop。后续必须打开docker desktop 才能在wsl里使用如果你在 WSL 里用的是 Docker Desktop 的 WSL Integration那么你在 WSL 里执行 dockerpull 下载的镜像仍然由 Docker Desktop 那套 Docker Engine 管理存储位置也仍然是 DockerDesktop 配置的位置docker desktop 里配置了 wsl为什么不需要加入docker组就能使用docker了redisredis客户端 AnotherRedisDesktopManagerhttps://github.com/qishibo/AnotherRedisDesktopManagerx86_64,x64说的是同一种 CPU 架构64 位的 x86 架构Windows x86 32 位x64 64位 x86Linuxx86_64 64 位 x86x86 一个 CPU 家族名32 位 / 64 位 这个家族里的不同位宽版本为什么叫 x86因为它历史上来自 Intel 的这些处理器8086802868038680486它们名字后面都有86所以后来这一整套兼容架构就被统称为x86这里的 x 可以理解成“前面那个数字会变化”80x86慢慢就简称成了x86后来 x86 架构最早常见的是 32 位所以很多 Windows 场景里把x86直接拿来代指32 位 x86再后来 AMD 在 x86 基础上扩展出了 64 位版本这就叫x86-64也常写成x64AMD64x86_64这里是引用x86 是 CPU 的一种“指令集架构家族”也就是 CPU 能理解什么机器指令、寄存器怎么设计、程序怎么和 CPU 交互的一套规则CPU 指令集架构不只有 x86。常见的还有x86 / x86-64 → Intel、AMD PC 上最常见ARM / ARM64 → 手机、Apple Silicon、部分 Windows 电脑RISC-V → 新兴的开放指令集64位32位描述的是这个 CPU 架构的数据和地址处理宽度最直观的体现就是通用寄存器从 32 位扩展到了 64 位NVIDIA 是公司/显卡平台CUDA 是 NVIDIA 为自家 GPU 提供的一套并行计算平台和开发工具NVIDIA GPU真正干活的硬件NVIDIA Driver操作系统和 GPU 之间的驱动CUDA让程序方便地使用 NVIDIA GPU 做通用计算的软件平台NVIDIA 提供 GPUCUDA 是让软件利用 NVIDIA GPU 做计算的一套技术和工具NVIDIA 是造显卡的公司CUDA 是让程序使用 NVIDIA 显卡来做计算的一套工具NVIDIA 是厂商GPU 是它造的硬件CUDA 是让程序使用 NVIDIA GPU 做计算的软件技术显卡硬件里有 GPU、显存等驱动是装在 Windows/Linux 里的CUDA 也是软件体系给程序提供使用 NVIDIA GPU 做计算的接口。驱动是使用 NVIDIA GPU 的基础CUDA 是让计算类程序方便使用 NVIDIA GPU 的一套软件接口但不是所有 GPU 程序都必须用 CUDA无论是游戏、桌面显示还是深度学习计算最终都要通过 GPU 驱动去和 GPU 硬件通信。nvidia-sminvidia-smi 是 NVIDIA 提供的一个命令行工具用来查看 NVIDIA GPU 和驱动当前状态。postmanhttps://www.postman.com/downloads/?utm_sourcechatgpt.comRequest请求一次具体的接口调用。比如 GET /users、POST /login每一个都可以保存成一个 Request。Collection集合把很多相关 Request 放在一起。比如一个“用户系统” Collection 下面放 登录、注册、查询用户、删除用户。Workspace工作区比 Collection 更大一层。你可以把它理解成“一个项目工作空间”里面可以有多个 Collection、环境变量等。Environment环境保存不同环境的变量。比如开发环境是 http://localhost:8000测试环境是 http://test.xxx.com生产环境是 https://api.xxx.com。Variable变量把容易变化的值提出来例如不用每个请求都写完整 URL而写成 {{baseUrl}}/userswsl安装agent[wsl安装code][自己搜索官方网址不能写出来。。。。。。。。]echo export PATH$HOME/.local/bin:$PATH ~/.bashrc source ~/.bashrczsh 就是另一个比 bash 更“花哨、智能、舒服”的命令解释器。.bashrc 是 bash shell 的启动配置文件agent WSL VS Code 的最舒服开发流vscode安装remote-wsl扩展常用工具sudo apt update sudo apt install -y git curl unzip zip build-essential jq ripgrep fd-findripgrep 这类工具会让终端开发和智能体配合更顺。Git 身份git config --global user.name 你的名字 git config --global user.email 你的邮箱 git config --global core.autocrlf inputcore.autocrlf input 在 Windows WSL 混合场景里通常比乱转行尾更省心。SSH keyssh-keygen -t ed25519 -C 你的邮箱然后把公钥配到 GitHub/GitLab。pycharmpycharm可以打开wsl里的项目目录选择wsl里的解释器。安装cc-switchcc-switch安装cc-switch使用CC Switch 会自动将配置写入对应 CLI 工具的配置文件:指定wsl里的agent的配置目录手动配置的方法只要模型平台提供了兼容 Anthropic API 请求的 BASE URL都可以进行调用如果没有也可以加一层代理进行转发手动配置可以用环境变量也可以放到对应cli的配置目录下环境变量配置目录vscode 安装 code for vscodeagent loginasdf 版本管理工具asdf它是一个版本管理工具。官方把它叫做 “multiple runtime version manager”意思是用一个工具统一管理很多开发工具/语言的版本你可以把它理解成以前Node 用 nvmPython 可能用 pyenvRuby 可能用 rbenv用 asdf 以后一个 asdf 管很多种工具版本它支持按项目切换版本。比如你进 A 项目时用 Node 18进 B 项目时自动切到 Node 20。它通常通过项目里的 .tool-versions 文件记录“这个项目该用什么版本”asdf 把版本下载到哪里默认情况下asdf 会把 插件、已安装的工具版本、shims 这些数据放在$HOME/.asdf下面。官方现在用环境变量ASDF_DATA_DIR表示这个目录如果你不自己改它通常就是~/.asdfecho $ASDF_DATA_DIR常用命令asdf plugin add name是官方命令意思就是给某个工具加插件因为 asdf 要靠插件才知道怎么管理这个工具.asdf plugin list查看已经安装的插件“插件”到底是什么asdf 想成一个“总管家”但它自己不懂每一种工具怎么安装asdf 需要先装一个“对应工具的说明书/适配器”这就是 插件看某个工具有哪些版本可装 asdf list all xxasdf install 安装设置当前项目使用哪个版本 asdf set设置“全局默认版本”asdf set -uasdf current 查看当前版本卸载某个版本 asdf uninstall更新 shim asdf reshimshim 夹在命令和真实程序之间的转发层负责把 python、node 这些命令导向正确版本tmux 在一个终端里开很多终端并且能让会话后台持续存在的工具tmux 是一个“终端多路复用器”。官方的意思是你可以在一个终端窗口里开多个终端会话还可以把它们暂时断开但继续运行之后再接回来。官方就把这个叫做 detach / reattachsession/window/panesession 一个工作区window 工作区里的一个标签页pane 标签页里的一个分屏小窗这里的窗口就是下面的window的意思常用命令tmux 大部分快捷键都要先按前缀键。默认前缀是Ctrl b启动tmux新建一个带名字的 session:tmux new -s xx查看当前有哪些 session。tmux ls重新连接某个 session tmux attach -t暂时退出但不关闭里面程序 Ctrlb 然后按 d新建一个 window Ctrlb 然后按 c切换 window。Ctrlb 然后按 n。Ctrlb 然后按 p Ctrlb 然后按 p分屏 pane ctrlb %/在 pane 之间切换.Ctrlb 然后按方向键关闭当前 pane 或 window exit总结启动agentagent 3种模式默认模式接收编辑模式计划模式agent 多行输入 enter先输入\在点击回车就换行了ctrl g 会打开 vscode的一个标签页写完之后点击保存agent会把vscode的内容全部放到输入框里type here xx不要回车直接在这里输入跳过所有权限检测 dangerously-skip-permissionsbypass permissions on (绕过权限)终端执行 c --resume 恢复对话或者/resumec --resume 1d03347e-bd39-4a3e-8029-9e465e79851e/effort 努力调 agent在当前任务里“愿意花多少思考量”。 思考深度标准思考进阶思考/tasks 查看后台任务ctrlb 放到后台x关掉到后台服务 esc或-等都是关掉当前展示后台任务的窗口/rewind 回滚 或 连续按2下esc也是取去到到回滚界面/compact 压缩,后面可跟摘要重点保留什么【可选的自定义摘要说明】压缩后ctrlo查看压缩后的上下文/clear 清除对话历史并释放上下文.后面的任务跟之前的没有关系就可以使用/init 生成c.md也可手动更改C.md 是 agent 用于理解项目背景、约束条件和特定工作流的核心配置文件C 会将 C.md 的内容直接注入到它的 System Prompt系统提示词 中。每次启动都会加载/memory 也可以打开C.md第 3 个 Open auto-memory folder 的意思是 打开自动记忆所在的文件夹也就是把 C/工具当前用于存放 auto-memory自动记忆 的目录直接打开给你看。Hook功能运行用户在执行工具的前后等等时机执行一段自己指定的逻辑。比如c写完代码后自动格式化选择希望在哪个工具之后skillsubagentskill与subagentskill共享主上下文占用主上下文窗口subagent有独立的上下文只有活干完才给主窗口返回plugin全家桶安装包把skill,hooks等打包在一起一键安装就可以如下的插件只包含了skills有的插件可能包含skillmcp等等截图可以直接拖进wsl的agent里codex app 设置 wsl此时选择文件夹就是以/mnt的格式codex的shell环境就是wsl,使用的命令也都是linux命令但是这种方式io效率比较低所以推荐在wsl里安装codex cli图形化访问wslwslg是wsl里面的图形化界面支持组件可用把linux的图形应用直接显示到windows桌面上面通常用来把单个的应用显示到windows里面比如gimp是类似photoshop的开源的 图像编辑软件。安装之后运行gimp在windows的界面里面就打开了这个图像编辑软件。也就是可以借助wslg把linux系统的图像软件直接显示到windows桌面里面正常使用NAT网络NAT 网络可以先理解成多个“内部设备/虚拟机”共用宿主机的网络出口上网让内部网络里的设备借宿主机的网络出去同时把内部网络和外部网络隔开nat网络代理服务器代理服务器理解成 你的程序访问网站时不直接去找网站而是先把请求交给“代理”让代理替你去访问。 运行在 Windows上的一个代理程序它在某个 IP:端口等待别的程序把网络请求交给它代理软件负责“开一个代理服务”系统代理负责“告诉其他程序这个代理服务在哪里”。代理程序启动↓监听 127.0.0.1:7890↓系统代理配置告诉程序“网络请求先送这里”↓程序才知道要先交给代理wsl里设置了代理访问网络就知道先走代理吗?这是为什么git config --global http.proxy … 当“必须单独配置”的例子不够准确具体见下章节git config --global http.proxyGit 有两种常见方式知道代理地址方式1读环境变量http_proxyhttps_proxyall_proxy方式2读 Git 自己的配置git config http.proxyGit 官方文档明确说明它会遵循标准的 http_proxy、https_proxy、no_proxy 环境变量同时也支持 http.proxy 配置。而且 Git 的 http.proxy 可以覆盖通常从 http_proxy / https_proxy / all_proxy 得到的代理设置git 为什么要用代理所以“Git 用代理”不是 Git 特有需求而是因为Git 也是一个会发网络请求的程序。尤其是使用 HTTPS 远程仓库时因为 Git 有时候也要访问互联网。比如你执行git clone https://github.com/xxx/xxx.gitGit 其实是在访问https://github.com再比如git pull git fetch git push如果远程仓库地址是https://github.com/… https://gitlab.com/…https://codehub.xxx.com/…那 Git 就需要通过网络连接这些服务器Windows 上常见的是“系统代理配置”WSL/Linux 里常见的是“环境变量或程序自己的代理配置”为什么宿主机启动了代理wsl还是访问不了。镜像网络Windows 里代理软件经常会修改 Windows 的系统代理例如告诉系统HTTP/HTTPS 代理 127.0.0.1:7890然后像 Chrome、Edge 这类遵循 Windows 系统代理的程序就会自动读取这套系统配置并走代理。 Windows本质上也还是“程序读取代理配置”并不是 Windows 内核把所有流量强制重定向了autoProxytrue 的作用就是把 Windows 的代理配置同步到 WSL让 WSL 里的程序知道“访问网络时应该走哪个代理”。比如 Windows 系统代理是127.0.0.1:7890开启 autoProxy 后WSL 会拿到对应的代理信息相当于给 WSL 设置了代理环境防火墙防火墙可以先理解成一个“网络门卫”决定哪些网络连接允许通过哪些要拦住。wsl.conf.wslconfig这是一个windows配置文件是一个全局的通用配置文件对所有的wsl虚拟机都生效它的地址是在C:\Users用户名.wslconfig,主要用途可用用来修改内存、内核启动方式网络模式等另外一个配置文件是wsl.conf,这是一个linux文件存放于linux系统里面只对单个虚拟机生效这个配置文件可用用来修改挂在卷systemd的使用默认用户设置等等存放在/etc/wsl.conf关闭自动挂载也就是在虚拟机里面不在自动挂载C盘和d盘了ai操作时也无法看到windows上面的文件这样可用进一步的提高安全性至少等待8秒等待虚拟机完成重启重启之后已经没有windows目录了wsl 备份跟克隆命令行互通windows命令 跟linux命令