download-guard

Polar Sponsor
爱发电 赞助
.NET 9.0

AI Agent 下载守护(仅 Windows)。在执行以下操作时自动激活:下载、安装、git clone、pip install、npm install -g、pnpm add -g、bun install -g、conda install……

下载 Guard v5.4

功能概述

下载 Guard v5.4是一项面向实际任务的技能,主要用于Core Rules. 透明:每一次下载都告诉用户文件去向,如果环境是他的话.。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Download Guard v5.4

下载位置透明 · 文件好管理 · 减少 C 盘垃圾 · 路径不可用时宁可阻止也不走 C 盘

Platform: Windows(PowerShell 5.1+)

核心规则

  1. 透明性:每次下载均明确告知用户文件将存至何处,并同步反馈当前环境健康状态
  2. 可管理性:日志自动清理;路径变更遵循预设规则,不弹出随机确认提示
  3. 零垃圾:C 盘防护机制、缓存扫描、日志自动归档
  4. 无静默回退:若 DOWNLOAD_ROOT 不可用,则强制阻断——绝不静默降级至 C: 盘

触发规则

必须触发

  • curl / wget / Invoke-WebRequest / requests.get / urllib.request
  • npm 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 update
  • cargo install(v5.4 —— 默认安装至 ~/.cargo/bin)
  • go install(v5.4 —— 默认安装至 $GOPATH/bin)
  • git clone
  • huggingface-cli download / modelscope download / ollama pull
  • docker pull
  • winget install / choco install / scoop install

不触发

  • 编写源码文件(如 .py、.js、.ts、.json、.md 等)
  • 读取 / 搜索 / grep 类操作
  • 本地 npm install(仅写入当前工作目录下的 node_modules)
  • pip install -e .(可编辑安装)
  • 文件大小 < 1MB(配置文件、临时文件等)
  • 位于 EXEMPT_PATHS 列表中的路径

执行协议

步骤 0 —— 读取配置 + 校验

$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(不可损坏或非法)
  • 若配置疑似损坏 → 向用户发出警告,并引导其重新配置

步骤 1 —— 路径类型判定

命令 类型 动作
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

步骤 2 —— 重复文件检查

下载前,检查目标文件是否已在 DOWNLOAD_ROOT 中存在:

$today = Get-Date -Format "yyyy-MM-dd"
$existing = Get-ChildItem "$downloadRoot$today" -Recurse -Filter "*$FileNamePart*" -ErrorAction SilentlyContinue

若发现匹配项 → 提示用户:"⚠️ 类似文件已存在:{path}({size})。是否重新下载?[y/N]"

步骤 3 —— 路径可用性 + 尺寸感知 + 空间检查

  1. 确定下载子目录(默认结构):

    DOWNLOAD_ROOTYYYY-MM-DD{sanitized-task-name}
    

    {sanitized-task-name} 命名规则:

    • 采用任务描述或包名,转为小写,空格替换为短横线(-)
    • 最长 40 字符,禁止特殊字符
    • 若无明确任务名,统一使用 general
    • 示例:F:AI-Downloads2026-05-26install-pandas
  2. 执行 scripts/check-space.ps1 —— 新增以下能力:

    • 盘符存在性检查(若盘符缺失 → 退出码 2 = BLOCK,不回退至 C:)
    • 路径可写性测试(创建并删除临时文件)
    • 若下载目录不存在则自动创建
    • 任一检查失败 → 立即阻断,并输出清晰错误信息
  3. 若已知下载尺寸(模型卡片、包元数据等):

    • 对比目标磁盘剩余空间
    • 若下载体积 > 剩余空间的 50% → 提示:"本次下载({X}GB)将占用 {drive}: 盘 {Y}% 可用空间"
    • 若下载体积 > 剩余空间 → 阻断
  4. 向用户输出摘要:

[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:

步骤 4 —— 下载完成后:校验 + 记录 + 通知

  1. 校验下载文件是否落于预期路径:

    Test-Path "{expected_path}"
    (Get-Item "{expected_path}").Length
    
  2. 执行 scripts/log-download.ps1(含自动清理逻辑)

  3. 向用户输出完成摘要:

[DOWNLOAD GUARD] 完成
文件   : {filename}  ({size})
位置   : {full path}
已记录 : download-log.md

若校验失败 → 提示:"⚠️ 下载文件未在预期路径找到,请手动核查。"

配置保护机制(v5.4)

当 Agent 向 config.md 写入内容时,必须满足:

  1. 回读校验:写入后立即重读文件,确认 DOWNLOAD_ROOT 与 SETUP_DONE 字段存在且合法
  2. 禁止分段写入:必须一次性完整写入整个文件,不得追加或局部更新关键字段
  3. 变更前备份:修改 DOWNLOAD_ROOT 前,须将旧值作为注释保留:
    # PREVIOUS: DOWNLOAD_ROOT: E:old-path
    DOWNLOAD_ROOT: F:new-path
    
  4. 配置损坏处理:Agent 需主动识别损坏情形(如缺失必填字段、DOWNLOAD_ROOT 为空、SETUP_DONE 非 true/false),并提示用户重新配置

首次配置流程(SETUP_DONE: false)

步骤 0 —— 扫描磁盘 + 推荐最优选项

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
确认?或输入其他路径:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

步骤 1 —— 用户确认,Agent 写入配置

  1. 标准化输入(仅输入盘符 → 补全为 {letter}:AI-Downloads;输入完整路径 → 原样采用)
  2. 接受前验证路径可写性(v5.4)
  3. 若目录不存在则自动创建
  4. 写入 config.md:SETUP_DONE: false → true,DOWNLOAD_ROOT: → 用户所选路径
  5. 回读校验配置是否正确写入(v5.4)
  6. 执行 scan-tool-cache.ps1
  7. 若发现 C 盘缓存,提示迁移

步骤 2 —— 输出状态卡片

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  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。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习