AI Agent 下载守护(仅 Windows)。在执行以下操作时自动激活:下载、安装、git clone、pip install、npm install -g、pnpm add -g、bun install -g、conda install……
下载 Guard v5.4是一项面向实际任务的技能,主要用于Core Rules. 透明:每一次下载都告诉用户文件去向,如果环境是他的话.。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
下载位置透明 · 文件好管理 · 减少 C 盘垃圾 · 路径不可用时宁可阻止也不走 C 盘
Platform: Windows(PowerShell 5.1+)
DOWNLOAD_ROOT 不可用,则强制阻断——绝不静默降级至 C: 盘curl / wget / Invoke-WebRequest / requests.get / urllib.requestnpm install -g(不包含无 -g 参数的本地 npm install)pnpm add -g(v5.4)bun install -g(v5.4)pip install(不包含处于激活 venv 中的安装——需先检查 VIRTUAL_ENV 环境变量)uv pip install(v5.4 —— 同样适用 venv 规则)conda install / conda create / conda env updatecargo install(v5.4 —— 默认安装至 ~/.cargo/bin)go install(v5.4 —— 默认安装至 $GOPATH/bin)git clonehuggingface-cli download / modelscope download / ollama pulldocker pullwinget install / choco install / scoop installnpm install(仅写入当前工作目录下的 node_modules)pip install -e .(可编辑安装)EXEMPT_PATHS 列表中的路径$configPath = "$env:USERPROFILE.workbuddyskillsdownload-guardconfig.md"
$content = Get-Content $configPath -Raw -ErrorAction SilentlyContinue
$setupDone = $content -match "SETUP_DONE:s*true"
$downloadRoot = if ($content -match "DOWNLOAD_ROOT:s*(.+)") { $Matches[1].Trim() } else { "" }
若 SETUP_DONE != true 或 DOWNLOAD_ROOT 为空 → 执行首次配置流程。
配置完整性校验(v5.4):读取后立即验证:
DOWNLOAD_ROOT 值非空,且以盘符开头(例如 D:、F:)SETUP_DONE 的值为 true 或 false(不可损坏或非法)| 命令 | 类型 | 动作 |
|---|---|---|
| curl / wget / git clone / 模型下载 | C(安全) | 进入步骤 2 |
pip install(非 venv) |
B2 | 检查 site-packages 实际路径 |
pip install --user(v5.4) |
B2+ | 若 site-packages 位于 C: 盘则告警,并建议使用 venv |
npm install -g / pnpm add -g |
B1 | 检查 prefix、PATH 及路径中是否含空格 |
cargo install / go install(v5.4) |
B3 | 检查二进制目录是否已加入 PATH |
| 修改 npm prefix / conda envs | B | 运行 PATH 关联性检查 |
类型 A = 缓存(可安全迁移);类型 B = 安装目录(必须与 PATH 同步);类型 C = 文件存储(安全)。
详细说明见 reference.md
下载前,检查目标文件是否已在 DOWNLOAD_ROOT 中存在:
$today = Get-Date -Format "yyyy-MM-dd" $existing = Get-ChildItem "$downloadRoot$today" -Recurse -Filter "*$FileNamePart*" -ErrorAction SilentlyContinue
若发现匹配项 → 提示用户:"⚠️ 类似文件已存在:{path}({size})。是否重新下载?[y/N]"
确定下载子目录(默认结构):
DOWNLOAD_ROOTYYYY-MM-DD{sanitized-task-name}
{sanitized-task-name} 命名规则:
generalF:AI-Downloads2026-05-26install-pandas执行 scripts/check-space.ps1 —— 新增以下能力:
若已知下载尺寸(模型卡片、包元数据等):
"本次下载({X}GB)将占用 {drive}: 盘 {Y}% 可用空间"向用户输出摘要:
[DOWNLOAD GUARD] 准备下载
文件 : {filename}
大小 : {known size / unknown}
写入至 : {DOWNLOAD_ROOT}{YYYY-MM-DD}{task-name}
目标盘 : {X} GB 可用 [{OK/WARN/BLOCK}]
C 盘 : {X} GB 可用 [{OK/WARN}]
路径可用 : [{OK / DRIVE_MISSING / NOT_WRITABLE}]
继续执行...
| check-space 退出码 | 含义 | 动作 |
|---|---|---|
| 0 | 正常或仅警告 | 继续执行 |
| 1 | 剩余空间不足 | 阻断,建议清理磁盘 |
| 2(v5.4) | 路径不可用 | 阻断 —— 绝不回退至 C: |
校验下载文件是否落于预期路径:
Test-Path "{expected_path}"
(Get-Item "{expected_path}").Length
执行 scripts/log-download.ps1(含自动清理逻辑)
向用户输出完成摘要:
[DOWNLOAD GUARD] 完成
文件 : {filename} ({size})
位置 : {full path}
已记录 : download-log.md
若校验失败 → 提示:"⚠️ 下载文件未在预期路径找到,请手动核查。"
当 Agent 向 config.md 写入内容时,必须满足:
DOWNLOAD_ROOT 与 SETUP_DONE 字段存在且合法DOWNLOAD_ROOT 前,须将旧值作为注释保留:# PREVIOUS: DOWNLOAD_ROOT: E:old-path DOWNLOAD_ROOT: F:new-path
DOWNLOAD_ROOT 为空、SETUP_DONE 非 true/false),并提示用户重新配置Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Free -gt 0 } |
Sort-Object Free -Descending |
ForEach-Object {
$tag = if ($_.Name -eq "C") { " [SYSTEM - NOT recommended]" } else { "" }
" {0}: {1} GB free{2}" -f $_.Name, [math]::Round($_.Free/1GB,1), $tag
}
向用户展示结果,并高亮推荐默认选项(最大非 C 盘):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Download Guard · 首次配置 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 磁盘扫描结果: F: 132 GB 可用 ← 推荐(空间最大) E: 97 GB 可用 D: 39 GB 可用 C: 58 GB 可用 [系统盘 - 不推荐] 推荐:F:AI-Downloads 确认?或输入其他路径: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{letter}:AI-Downloads;输入完整路径 → 原样采用)SETUP_DONE: false → true,DOWNLOAD_ROOT: → 用户所选路径scan-tool-cache.ps1━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Download Guard · 环境就绪
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
下载目录 : {DOWNLOAD_ROOT}
可用空间 : {X} GB [{OK/WARN}]
路径可写 : {YES/NO}
C 盘 : {X} GB [{OK/WARN}]
npm cache : {path} [{OK/WARN}]
pip cache : {path} [{OK/WARN}]
npm prefix : {path} [IN PATH: {YES/NO}]
日志 : ~/.workbuddy/download-log.md
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
如有 [WARN],说"帮我修复"即可。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(参见上方“执行协议”中的步骤 2–4)
每日首次触发时,输出环境简报。实现方式:
# 在临时文件中记录上次报告日期
$lastReportFile = "$env:TEMPdownload-guard-last-report.txt"
$today = Get-Date -Format "yyyy-MM-dd"
$lastReport = if (Test-Path $lastReportFile) { Get-Content $lastReportFile -Raw } else { "" }
if ($lastReport -ne $today) {
# 今日首次触发 —— 展示环境简报
Set-Content -Path $lastReportFile -Value $today -Force
# ... 输出简报 ...
}
简报格式:
[DOWNLOAD GUARD] 今日首次 · 环境快报
下载目录 : {DOWNLOAD_ROOT} ({X} GB 可用)
路径可用 : {OK / DRIVE_MISSING / NOT_WRITABLE}
C 盘 : {X} GB 可用 [{OK/WARN}]
工具缓存 : {all OK / N items on C: [WARN]}
日志条数 : {N} 条
若路径不可用 → 立即提示用户更新配置或重连磁盘。
| 场景 | 动作 |
|---|---|
| 首次配置 | 必须询问 |
| 日常下载 | 不询问,仅通知 |
| 目标磁盘剩余空间 < MIN_FREE_GB | 必须通知 —— 建议切换路径 |
DOWNLOAD_ROOT 所在磁盘缺失(v5.4) |
必须通知 —— 阻断直至修复 |
DOWNLOAD_ROOT 不可写(v5.4) |
必须通知 —— 阻断直至修复 |
| 发现 C 盘缓存 | 必须通知 —— 提供迁移选项 |
| 新磁盘接入 | 可选通知 |
| 用户询问 “下载到哪?” | 响应 —— 显示当前配置 |
规则:仅在环境发生变更时主动提示;日常操作一律仅通知。
规则(v5.4):路径不可用 = 永远阻断,绝不静默回退至 C:。
| 条件 | 动作 |
|---|---|
日志条目超过 LOG_RETENTION_DAYS 天 |
自动归档 |
归档文件总大小超过 LOG_ARCHIVE_MAX_MB |
删除最旧的归档 |
| 日志文件体积 > 5MB | 触发归档轮转 |
归档命名格式:~/.workbuddy/download-log-archive-{YYYY-MM-DD}.md
设置 LOG_RETENTION_DAYS: 0 可禁用自动清理。
| 用户输入 | 动作 |
|---|---|
| "下载了什么" / "下载日志" / "download log" | 显示最近 20 条日志 |
| "缓存在哪" / "扫描缓存" / "scan cache" | 执行 scan-tool-cache.ps1 |
| "迁移缓存" / "migrate cache" | 执行 migrate-cache.ps1 |
| "磁盘空间" / "disk space" | 执行 check-space.ps1 |
| "刚才下的在哪" / "where's my download" | 显示最新日志条目的完整路径 |
| "下载到哪" / "根目录在哪" | 显示 DOWNLOAD_ROOT 当前值 |
| "npm 用不了" / "command not found" | 检查 npm prefix 是否已加入 PATH |
| "帮我修复" / "fix warnings" | 自动修复所有 [WARN] 项 |
| "修改下载目录" / "change download dir" | 更新 config.md 中的 DOWNLOAD_ROOT |
| "清理日志" / "clean log" | 触发日志归档清理 |
| "检查路径" / "check path"(v5.4) | 验证 DOWNLOAD_ROOT 是否存在、可写、所在磁盘健康 |
| "重置配置" / "reset config"(v5.4) | 设 SETUP_DONE: false,重启首次配置流程 |
| "download guard version" / "下载版本"(v5.4) | 显示当前版本号:5.4.0 |
| "卸载 download guard" / "uninstall download guard" | 显示清理说明(日志文件、归档、配置等) |
关于路径类型定义、PATH 修复模板、配置参数、脚本说明及已知限制的完整信息,请查阅 reference.md。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章