├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md └── workflows │ └── build-patched-extension.yml ├── .gitignore ├── config └── workflow-config.yml ├── USAGE.md ├── README.md ├── TROUBLESHOOTING.md └── scripts ├── local-test.sh └── local-test.bat /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: 建议一个新功能 4 | title: '[FEATURE] ' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## 功能描述 11 | 简要描述你希望添加的功能。 12 | 13 | ## 问题背景 14 | 描述这个功能要解决的问题或改进的场景。 15 | 16 | ## 建议的解决方案 17 | 描述你希望如何实现这个功能。 18 | 19 | ## 替代方案 20 | 描述你考虑过的其他解决方案。 21 | 22 | ## 附加信息 23 | 添加任何其他有关功能请求的信息或截图。 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: 报告一个问题 4 | title: '[BUG] ' 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## 问题描述 11 | 简要描述遇到的问题。 12 | 13 | ## 复现步骤 14 | 1. 进入 '...' 15 | 2. 点击 '....' 16 | 3. 滚动到 '....' 17 | 4. 看到错误 18 | 19 | ## 预期行为 20 | 描述你期望发生的情况。 21 | 22 | ## 实际行为 23 | 描述实际发生的情况。 24 | 25 | ## 环境信息 26 | - 操作系统: [例如 Windows 10, macOS 12.0, Ubuntu 20.04] 27 | - VS Code 版本: [例如 1.74.0] 28 | - Augment 插件版本: [例如 1.2.3] 29 | - 补丁版本: [例如 v1.2.3-patched] 30 | 31 | ## 工作流日志 32 | 如果是构建失败,请提供相关的 GitHub Actions 日志链接或截图。 33 | 34 | ## 附加信息 35 | 添加任何其他有助于解决问题的信息、截图或文件。 36 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # 临时文件和构建产物 2 | *.vsix 3 | *.tmp 4 | *.temp 5 | unpacked_ext/ 6 | original.vsix 7 | 8 | # 操作系统生成的文件 9 | .DS_Store 10 | .DS_Store? 11 | ._* 12 | .Spotlight-V100 13 | .Trashes 14 | ehthumbs.db 15 | Thumbs.db 16 | 17 | # IDE 和编辑器文件 18 | .vscode/ 19 | .idea/ 20 | *.swp 21 | *.swo 22 | *~ 23 | 24 | # 日志文件 25 | *.log 26 | logs/ 27 | 28 | # Node.js 29 | node_modules/ 30 | npm-debug.log* 31 | yarn-debug.log* 32 | yarn-error.log* 33 | 34 | # Python 35 | __pycache__/ 36 | *.py[cod] 37 | *$py.class 38 | *.so 39 | .Python 40 | env/ 41 | venv/ 42 | ENV/ 43 | 44 | # 测试覆盖率 45 | coverage/ 46 | .nyc_output/ 47 | 48 | # 依赖目录 49 | aug_cleaner/ 50 | -------------------------------------------------------------------------------- /config/workflow-config.yml: -------------------------------------------------------------------------------- 1 | # 工作流配置文件 2 | # 这个文件包含了可以自定义的配置选项 3 | 4 | # Augment Code 插件信息 5 | extension: 6 | publisher: "augment" 7 | name: "vscode-augment" 8 | 9 | # aug_cleaner 工具配置 10 | aug_cleaner: 11 | repository: "gmh5225/aug_cleaner" 12 | branch: "main" 13 | 14 | # 构建配置 15 | build: 16 | # 定时任务 cron 表达式 (UTC 时间) 17 | # 默认: 每天早上 8:00 UTC 18 | schedule: "0 8 * * *" 19 | 20 | # Node.js 版本 21 | node_version: "20" 22 | 23 | # Python 版本 (aug_cleaner 要求 Python 3.6+) 24 | python_version: "3.9" 25 | 26 | # 发布配置 27 | release: 28 | # 标签前缀 29 | tag_prefix: "v" 30 | # 标签后缀 31 | tag_suffix: "-patched" 32 | 33 | # VSIX 文件命名模式 34 | # {publisher}.{name}-{version}-patched.vsix 35 | vsix_name_pattern: "{publisher}.{name}-{version}-patched.vsix" 36 | -------------------------------------------------------------------------------- /USAGE.md: -------------------------------------------------------------------------------- 1 | # 使用指南 2 | 3 | ## 快速开始 4 | 5 | ### 1. Fork 这个仓库 6 | 点击右上角的 "Fork" 按钮,将这个仓库 fork 到你的 GitHub 账户。 7 | 8 | ### 2. 启用 GitHub Actions 9 | 1. 进入你 fork 的仓库 10 | 2. 点击 "Actions" 标签页 11 | 3. 如果看到提示,点击 "I understand my workflows, go ahead and enable them" 12 | 13 | ### 3. 手动触发第一次构建 14 | 1. 在 Actions 页面,选择 "Build Patched Augment Code Extension with aug_cleaner" 15 | 2. 点击 "Run workflow" 按钮 16 | 3. 等待构建完成 17 | 18 | ### 4. 下载和安装 19 | 1. 构建完成后,进入 "Releases" 页面 20 | 2. 下载最新的 `.vsix` 文件 21 | 3. 在 VS Code 中安装: 22 | - 按 `Ctrl+Shift+X` 打开扩展视图 23 | - 点击 "..." 菜单 → "Install from VSIX..." 24 | - 选择下载的文件 25 | 26 | ## 自动化构建 27 | 28 | ### 定时构建 29 | 工作流会在每天 UTC 8:00 自动运行,检查是否有新版本的 Augment Code 插件。 30 | 31 | ### 版本管理 32 | - 只有当检测到新版本时才会创建新的 Release 33 | - 版本标签格式:`v{版本号}-patched` 34 | - 如果版本已存在,会跳过构建过程 35 | 36 | ## 本地测试 37 | 38 | ### 前置要求 39 | - Python 3.6+ (推荐 3.9+) 40 | - Git 41 | - curl/wget 42 | - unzip 43 | - Node.js (如果需要重新打包) 44 | 45 | ### Linux/macOS 46 | ```bash 47 | chmod +x scripts/local-test.sh 48 | ./scripts/local-test.sh 49 | ``` 50 | 51 | ### Windows 52 | ```cmd 53 | scripts\local-test.bat 54 | ``` 55 | 56 | **注意**: 本地测试脚本会自动检查 Python 版本是否满足 aug_cleaner 的要求 (3.6+)。 57 | 58 | ## 自定义配置 59 | 60 | ### 配置文件 61 | 项目包含一个配置文件 `config/workflow-config.yml`,包含了所有可自定义的选项: 62 | 63 | ```yaml 64 | # Augment Code 插件信息 65 | extension: 66 | publisher: "augment" 67 | name: "vscode-augment" 68 | 69 | # 构建配置 70 | build: 71 | schedule: "0 8 * * *" # 定时任务 72 | python_version: "3.9" # Python 版本 73 | node_version: "20" # Node.js 版本 74 | ``` 75 | 76 | ### 修改定时任务 77 | 编辑 `.github/workflows/build-patched-extension.yml` 文件中的 cron 表达式: 78 | ```yaml 79 | schedule: 80 | - cron: '0 8 * * *' # 每天 UTC 8:00 81 | ``` 82 | 83 | ### 修改插件信息 84 | 如果需要处理其他插件,修改工作流中的变量: 85 | ```yaml 86 | PUBLISHER="augment" 87 | EXTENSION_NAME="vscode-augment" 88 | ``` 89 | 90 | ## 故障排除 91 | 92 | ### 构建失败 93 | 1. 检查 Actions 页面的构建日志 94 | 2. 确认 aug_cleaner 仓库是否可访问 95 | 3. 检查 VS Code Marketplace 是否可访问 96 | 97 | ### 版本检测问题 98 | 如果版本检测出现问题,可能是因为: 99 | - package.json 文件位置发生变化 100 | - 版本字段格式发生变化 101 | 102 | ### 重新构建已存在的版本 103 | 1. 进入 Releases 页面,删除对应的 Release 104 | 2. 使用 Git 命令删除对应的标签: 105 | ```bash 106 | git tag -d v{版本号}-patched 107 | git push origin :refs/tags/v{版本号}-patched 108 | ``` 109 | 3. 手动触发工作流 110 | 111 | ## 高级用法 112 | 113 | ### 修改补丁逻辑 114 | 如果需要自定义补丁逻辑,可以: 115 | 1. Fork aug_cleaner 仓库 116 | 2. 修改补丁逻辑 117 | 3. 更新工作流中的 aug_cleaner 仓库地址 118 | 119 | ### 添加额外的处理步骤 120 | 在工作流的 "Apply patch with aug_cleaner" 步骤后添加自定义处理逻辑。 121 | 122 | ### 自定义发布信息 123 | 修改工作流中的 Release 创建步骤,自定义发布说明和标签。 124 | 125 | ## 安全注意事项 126 | 127 | - 这个工具会修改第三方插件的代码 128 | - 请确保你理解补丁的作用 129 | - 建议在隔离环境中测试补丁版本 130 | - 定期检查原始插件的更新和安全公告 131 | 132 | ## 支持 133 | 134 | 如果遇到问题: 135 | 1. 查看 [Issues](../../issues) 页面是否有类似问题 136 | 2. 创建新的 Issue 并提供详细信息 137 | 3. 包含构建日志和错误信息 138 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 风控严峻,本工具已失效,不再推荐使用 2 | 3 | ## 最新可用工具推荐请见下方链接(08/20) 4 | 5 | https://github.com/llpplplp/AugmentInjector 6 | 7 | ``` 8 | # Augment Clean Patcher 9 | 10 | 基于 [aug_cleaner](https://github.com/gmh5225/aug_cleaner) 工具的 VS Code Augment 插件自动打包仓库。 11 | 12 | ## 为什么选择这个版本的插件? 13 | 14 | 本项目基于 **aug_cleaner** 构建,这是一个有实际案例及高度**隐私保护**的专业版本,相比其他简单的修改方案具有显著优势: 15 | 16 | ### 技术特性 17 | - **阻止所有遥测**:拦截 `report-*` 和 `record-*` 等所有跟踪 API 调用 18 | - **会话匿名化**:为每个 API 调用生成随机会话 ID,防止行为关联 19 | - **用户代理隐藏**:移除系统指纹数据,防止设备识别 20 | - **零数据泄露**:确保没有任何遥测数据离开您的机器 21 | 22 | ### 三重保护 23 | 24 | 1. **遥测阻断** 25 | - 拦截所有跟踪 API 调用 26 | - 返回成功响应以维持功能 27 | - 零数据离开您的机器 28 | 29 | 2. **会话随机化** 30 | - 为每个 API 调用生成唯一会话 ID 31 | - 防止跨会话行为关联 32 | - 使用户跟踪变得不可能 33 | 34 | 3. **用户代理隐藏** 35 | - 移除系统指纹数据 36 | - 防止设备识别 37 | - 保持完全匿名 38 | 39 | ## 功能特性 40 | 41 | - 🤖 **自动化构建**: 每日自动检查 Augment Code 插件的新版本 42 | - 🛠️ **智能补丁**: 使用 aug_cleaner Python 工具自动应用补丁 43 | - 📦 **自动打包**: 自动重新打包为 VSIX 文件 44 | - 🚀 **自动发布**: 自动创建 GitHub Release 并上传补丁版本 45 | - 🔄 **版本管理**: 智能检测版本变化,避免重复构建 46 | 47 | ## 工作流程 48 | 49 | 1. **检出代码**: 获取 aug_cleaner 工具的最新代码 50 | 2. **下载插件**: 从 VS Code Marketplace 下载最新的 Augment Code VSIX 插件 51 | 3. **解包处理**: 解压 VSIX 文件并定位核心 JavaScript 文件 52 | 4. **应用补丁**: 使用 aug_cleaner.py 工具处理插件文件 53 | 5. **重新打包**: 使用 vsce 工具重新打包为 VSIX 文件 54 | 6. **版本发布**: 创建 GitHub Release 并上传补丁版本 55 | 56 | ## 触发方式 57 | 58 | ### 自动触发 59 | - **定时任务**: 每天 UTC 时间 8:00 自动运行 60 | - **代码更新**: 当工作流文件更新时自动运行 61 | 62 | ### 手动触发 63 | 1. 进入 GitHub 仓库的 Actions 页面 64 | 2. 选择 "Build Patched Augment Code Extension with aug_cleaner" 工作流 65 | 3. 点击 "Run workflow" 按钮 66 | 67 | ## 安装使用 68 | 69 | ### 下载补丁版本 70 | 1. 访问本仓库的 [Releases 页面](../../releases) 71 | 2. 下载最新的 `.vsix` 文件 72 | 73 | ### 安装到 VS Code 74 | 1. 打开 VS Code 75 | 2. 按 `Ctrl+Shift+X` 打开扩展视图 76 | 3. 点击右上角的 "..." 菜单 77 | 4. 选择 "Install from VSIX..." 78 | 5. 选择下载的 `.vsix` 文件 79 | 80 | ## 版本说明 81 | 82 | - **标签格式**: `v{原版本号}-patched` 83 | - **文件命名**: `augmentcode.augment-{版本号}-patched.vsix` 84 | - **版本检测**: 自动检测新版本,避免重复构建相同版本 85 | 86 | ## 最新状态 87 | 88 | ✅ **已完成最新版本 v0.524.1 的打包测试** 89 | 90 | ## 补丁内容 91 | 92 | 本项目使用 [aug_cleaner](https://github.com/gmh5225/aug_cleaner) 工具对 Augment Code 插件进行处理,主要功能包括: 93 | - 移除遥测和跟踪功能 94 | - 清理不必要的网络请求 95 | - 优化插件性能 96 | 97 | ## 技术细节 98 | 99 | ### 依赖工具 100 | - **aug_cleaner**: Python 补丁工具 (要求 Python 3.6+) 101 | - **@vscode/vsce**: VS Code 插件打包工具 102 | - **Node.js**: 运行环境 103 | - **Python 3.9**: 用于运行 aug_cleaner (满足 3.6+ 要求) 104 | - **jq**: JSON 处理工具 105 | 106 | ### 工作流特性 107 | - 智能版本检测,避免重复构建 108 | - 自动查找插件核心文件 109 | - 完整的错误处理和日志记录 110 | - 自动清理临时文件 111 | 112 | ## 故障排除 113 | 114 | ### 常见问题 115 | 116 | **Q: 工作流失败,提示 "End-of-central-directory signature not found"** 117 | A: 这是 VSIX 下载问题。最新版本已改进下载逻辑,包含重试和验证机制。 118 | 119 | **Q: 工作流失败,提示找不到 extension.js** 120 | A: 这可能是因为插件结构发生变化。工作流会自动查找 `*/out/extension.js` 文件。 121 | 122 | **Q: 版本已存在,如何重新构建?** 123 | A: 删除对应的 Git 标签和 Release,工作流会自动重新构建。 124 | 125 | **Q: 如何查看构建日志?** 126 | A: 进入 Actions 页面,点击对应的工作流运行记录查看详细日志。 127 | 128 | ### 详细故障排除 129 | 130 | 查看 [TROUBLESHOOTING.md](TROUBLESHOOTING.md) 获取详细的故障排除指南,包括: 131 | - VSIX 下载和解包问题 132 | - 网络连接问题 133 | - Python 版本问题 134 | - 调试技巧 135 | 136 | ## 贡献 137 | 138 | 欢迎提交 Issue 和 Pull Request 来改进这个项目。 139 | 140 | ## 许可证 141 | 142 | 本项目遵循 MIT 许可证。 143 | 144 | ## 相关项目 145 | 146 | - [aug_cleaner](https://github.com/gmh5225/aug_cleaner) - Python 补丁工具 147 | - [Augment Code](https://marketplace.visualstudio.com/items?itemName=augment.vscode-augment) - 原始插件 148 | -------------------------------------------------------------------------------- /TROUBLESHOOTING.md: -------------------------------------------------------------------------------- 1 | # 故障排除指南 2 | 3 | ## VSIX 下载和解包问题 4 | 5 | ### 问题 1: "End-of-central-directory signature not found" 6 | 7 | **错误信息:** 8 | ``` 9 | End-of-central-directory signature not found. Either this file is not 10 | a zipfile, or it constitutes one disk of a multi-part archive. 11 | ``` 12 | 13 | **原因:** 14 | - 下载的文件不是有效的 ZIP/VSIX 文件 15 | - 可能下载了 HTML 重定向页面而不是实际文件 16 | - 网络问题导致文件下载不完整 17 | 18 | **解决方案:** 19 | 1. 检查网络连接 20 | 2. 手动验证下载 URL 21 | 3. 使用改进的下载参数(已在最新版本中实现) 22 | 23 | ### 问题 2: VSIX 下载失败 24 | 25 | **可能原因:** 26 | - VS Code Marketplace API 变更 27 | - 网络连接问题 28 | - 插件名称或发布者名称错误 29 | 30 | **解决步骤:** 31 | 1. **验证插件信息:** 32 | ```bash 33 | # 检查插件是否存在 34 | curl -s "https://marketplace.visualstudio.com/items?itemName=augmentcode.augment" 35 | ``` 36 | 37 | 2. **手动下载测试:** 38 | ```bash 39 | # 直接访问 API 40 | curl -I "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/augmentcode/vsextensions/augment/latest/vspackage" 41 | ``` 42 | 43 | 3. **检查响应头:** 44 | - 确认返回的是 `application/octet-stream` 45 | - 检查是否有重定向 46 | 47 | ### 问题 3: 插件结构发生变化 48 | 49 | **错误信息:** 50 | ``` 51 | Error: extension.js not found in unpacked VSIX 52 | ``` 53 | 54 | **解决方案:** 55 | 1. **检查解包结构:** 56 | ```bash 57 | find unpacked_ext -name "*.js" -type f 58 | find unpacked_ext -name "package.json" -type f 59 | ``` 60 | 61 | 2. **更新查找逻辑:** 62 | 如果插件结构发生变化,可能需要更新工作流中的文件查找逻辑。 63 | 64 | ### 问题 4: Python 版本不兼容 65 | 66 | **错误信息:** 67 | ``` 68 | Python version does not meet requirements 69 | ``` 70 | 71 | **解决方案:** 72 | 1. **检查 Python 版本:** 73 | ```bash 74 | python --version 75 | python3 --version 76 | ``` 77 | 78 | 2. **安装正确版本:** 79 | - 确保安装 Python 3.6 或更高版本 80 | - 在 GitHub Actions 中已固定为 Python 3.9 81 | 82 | ### 问题 5: aug_cleaner 工具问题 83 | 84 | **可能问题:** 85 | - aug_cleaner 仓库不可访问 86 | - 工具本身有 bug 87 | - 输入文件格式不支持 88 | 89 | **调试步骤:** 90 | 1. **手动测试 aug_cleaner:** 91 | ```bash 92 | git clone https://github.com/gmh5225/aug_cleaner.git 93 | python aug_cleaner/aug_cleaner.py --help 94 | ``` 95 | 96 | 2. **检查输入文件:** 97 | ```bash 98 | file extension.js 99 | head -20 extension.js 100 | ``` 101 | 102 | ## 网络相关问题 103 | 104 | ### 代理和防火墙 105 | 106 | 如果在企业网络环境中运行: 107 | 108 | 1. **配置代理:** 109 | ```bash 110 | export https_proxy=http://proxy.company.com:8080 111 | export http_proxy=http://proxy.company.com:8080 112 | ``` 113 | 114 | 2. **GitHub Actions 中的网络问题:** 115 | - GitHub Actions 运行器通常有良好的网络连接 116 | - 如果仍有问题,可能是目标服务的问题 117 | 118 | ### DNS 解析问题 119 | 120 | 1. **测试 DNS:** 121 | ```bash 122 | nslookup marketplace.visualstudio.com 123 | ``` 124 | 125 | 2. **使用备用 DNS:** 126 | ```bash 127 | # 临时使用 Google DNS 128 | echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf 129 | ``` 130 | 131 | ## 权限问题 132 | 133 | ### GitHub Actions 权限 134 | 135 | 确保工作流有正确的权限: 136 | 137 | ```yaml 138 | permissions: 139 | contents: write # 创建 Release 需要 140 | actions: read # 读取 Actions 状态 141 | ``` 142 | 143 | ### 本地权限问题 144 | 145 | 1. **文件权限:** 146 | ```bash 147 | chmod +x scripts/local-test.sh 148 | ``` 149 | 150 | 2. **目录权限:** 151 | ```bash 152 | # 确保有写入权限 153 | ls -la /tmp 154 | ``` 155 | 156 | ## 调试技巧 157 | 158 | ### 启用详细日志 159 | 160 | 1. **在工作流中添加调试:** 161 | ```yaml 162 | - name: Debug step 163 | run: | 164 | set -x # 启用命令跟踪 165 | # 你的命令 166 | ``` 167 | 168 | 2. **本地调试:** 169 | ```bash 170 | # 启用 bash 调试模式 171 | bash -x scripts/local-test.sh 172 | ``` 173 | 174 | ### 保留临时文件 175 | 176 | 修改脚本以保留临时文件进行检查: 177 | 178 | ```bash 179 | # 注释掉清理步骤 180 | # rm -rf "$TEMP_DIR" 181 | echo "临时文件保留在: $TEMP_DIR" 182 | ``` 183 | 184 | ## 获取帮助 185 | 186 | 如果问题仍然存在: 187 | 188 | 1. **创建 Issue:** 189 | - 包含完整的错误日志 190 | - 说明运行环境 191 | - 提供复现步骤 192 | 193 | 2. **提供信息:** 194 | - 操作系统版本 195 | - Python 版本 196 | - 网络环境 197 | - 错误发生的具体步骤 198 | 199 | 3. **检查已知问题:** 200 | - 查看 [Issues](../../issues) 页面 201 | - 搜索类似问题的解决方案 202 | -------------------------------------------------------------------------------- /scripts/local-test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 本地测试脚本 4 | # 用于在本地环境测试补丁过程 5 | 6 | set -e 7 | 8 | echo "🚀 开始本地测试补丁过程..." 9 | 10 | # 创建临时目录 11 | TEMP_DIR=$(mktemp -d) 12 | echo "📁 使用临时目录: $TEMP_DIR" 13 | 14 | # 清理函数 15 | cleanup() { 16 | echo "🧹 清理临时文件..." 17 | rm -rf "$TEMP_DIR" 18 | } 19 | trap cleanup EXIT 20 | 21 | cd "$TEMP_DIR" 22 | 23 | # 1. 克隆 aug_cleaner 24 | echo "📥 克隆 aug_cleaner 工具..." 25 | git clone https://github.com/gmh5225/aug_cleaner.git 26 | 27 | # 2. 下载最新的 VSIX 28 | echo "📦 下载最新的 Augment Code VSIX..." 29 | PUBLISHER="augment" 30 | EXTENSION_NAME="vscode-augment" 31 | VSIX_URL="https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${PUBLISHER}/vsextensions/${EXTENSION_NAME}/latest/vspackage" 32 | 33 | echo "🌐 下载地址: ${VSIX_URL}" 34 | 35 | # 使用改进的下载参数 36 | curl -L \ 37 | --fail \ 38 | --retry 3 \ 39 | --retry-delay 5 \ 40 | --max-time 300 \ 41 | --user-agent "Mozilla/5.0 (compatible; Local-Test)" \ 42 | --header "Accept: application/octet-stream, */*" \ 43 | --output original.vsix \ 44 | "${VSIX_URL}" 45 | 46 | if [ $? -ne 0 ]; then 47 | echo "❌ 错误: VSIX 下载失败" 48 | exit 1 49 | fi 50 | 51 | echo "✅ VSIX 下载完成" 52 | 53 | # 验证文件 54 | echo "📋 文件信息:" 55 | ls -la original.vsix 56 | file original.vsix 57 | 58 | # 检查是否为有效的 ZIP 文件 59 | if ! file original.vsix | grep -q "Zip\|ZIP"; then 60 | echo "❌ 错误: 下载的文件不是有效的 ZIP/VSIX 文件" 61 | echo "文件内容预览:" 62 | head -20 original.vsix 63 | exit 1 64 | fi 65 | 66 | # 3. 解包 VSIX 67 | echo "📂 解包 VSIX 文件..." 68 | 69 | # 测试 ZIP 文件完整性 70 | if ! unzip -t original.vsix > /dev/null 2>&1; then 71 | echo "❌ 错误: VSIX 文件损坏或不是有效的 ZIP 文件" 72 | echo "文件大小: $(stat -f%z original.vsix 2>/dev/null || stat -c%s original.vsix) bytes" 73 | echo "文件类型: $(file original.vsix)" 74 | exit 1 75 | fi 76 | 77 | unzip -q original.vsix -d unpacked_ext 78 | 79 | # 4. 获取版本号 80 | echo "🔍 获取插件版本号..." 81 | PACKAGE_JSON=$(find unpacked_ext -name "package.json" -type f | head -1) 82 | if [ -z "$PACKAGE_JSON" ]; then 83 | echo "❌ 错误: 找不到 package.json" 84 | exit 1 85 | fi 86 | 87 | VERSION=$(jq -r .version "$PACKAGE_JSON") 88 | echo "📋 发现版本: $VERSION" 89 | 90 | # 5. 查找 extension.js 91 | echo "🔍 查找 extension.js 文件..." 92 | EXTENSION_JS=$(find unpacked_ext -name "extension.js" -path "*/out/*" | head -1) 93 | if [ -z "$EXTENSION_JS" ]; then 94 | echo "❌ 错误: 找不到 extension.js" 95 | exit 1 96 | fi 97 | echo "📄 找到文件: $EXTENSION_JS" 98 | 99 | # 6. 检查 Python 版本并应用补丁 100 | echo "🐍 检查 Python 版本..." 101 | PYTHON_VERSION=$(python3 --version 2>&1 | grep -oE '[0-9]+\.[0-9]+' | head -1) 102 | echo "发现 Python 版本: $PYTHON_VERSION" 103 | 104 | # 检查是否满足 Python 3.6+ 要求 105 | if python3 -c "import sys; exit(0 if sys.version_info >= (3, 6) else 1)"; then 106 | echo "✅ Python 版本满足要求 (需要 3.6+)" 107 | else 108 | echo "❌ 错误: Python 版本不满足要求 (需要 3.6+,当前: $PYTHON_VERSION)" 109 | exit 1 110 | fi 111 | 112 | echo "🛠️ 使用 aug_cleaner 应用补丁..." 113 | python3 aug_cleaner/aug_cleaner.py "$EXTENSION_JS" "${EXTENSION_JS}.patched" 114 | 115 | # 替换原文件 116 | mv "${EXTENSION_JS}.patched" "$EXTENSION_JS" 117 | echo "✅ 补丁应用成功" 118 | 119 | # 7. 显示文件大小对比 120 | echo "📊 文件大小对比:" 121 | echo "原始文件大小: $(stat -f%z "$EXTENSION_JS" 2>/dev/null || stat -c%s "$EXTENSION_JS") bytes" 122 | 123 | # 8. 检查是否安装了 vsce 124 | if command -v vsce &> /dev/null; then 125 | echo "📦 重新打包 VSIX..." 126 | EXTENSION_DIR=$(dirname "$PACKAGE_JSON") 127 | cd "$EXTENSION_DIR" 128 | 129 | # 创建 .vscodeignore 130 | cat > .vscodeignore << EOF 131 | node_modules/ 132 | .git/ 133 | .gitignore 134 | *.md 135 | .vscode/ 136 | test/ 137 | src/ 138 | tsconfig.json 139 | webpack.config.js 140 | EOF 141 | 142 | PATCHED_VSIX_NAME="augment.vscode-augment-${VERSION}-patched.vsix" 143 | vsce package --out "../${PATCHED_VSIX_NAME}" 144 | 145 | echo "✅ 补丁版本已创建: ${PATCHED_VSIX_NAME}" 146 | echo "📍 文件位置: $(pwd)/../${PATCHED_VSIX_NAME}" 147 | else 148 | echo "⚠️ 未安装 vsce,跳过重新打包步骤" 149 | echo "💡 要安装 vsce: npm install -g @vscode/vsce" 150 | fi 151 | 152 | echo "🎉 本地测试完成!" 153 | echo "📋 版本: $VERSION" 154 | echo "📁 临时目录: $TEMP_DIR (将在脚本结束时清理)" 155 | -------------------------------------------------------------------------------- /scripts/local-test.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal enabledelayedexpansion 3 | 4 | REM 本地测试脚本 (Windows 版本) 5 | REM 用于在本地环境测试补丁过程 6 | 7 | echo 🚀 开始本地测试补丁过程... 8 | 9 | REM 创建临时目录 10 | set TEMP_DIR=%TEMP%\aug_cleaner_test_%RANDOM% 11 | mkdir "%TEMP_DIR%" 12 | echo 📁 使用临时目录: %TEMP_DIR% 13 | 14 | cd /d "%TEMP_DIR%" 15 | 16 | REM 1. 克隆 aug_cleaner 17 | echo 📥 克隆 aug_cleaner 工具... 18 | git clone https://github.com/gmh5225/aug_cleaner.git 19 | if errorlevel 1 ( 20 | echo ❌ 错误: 克隆 aug_cleaner 失败 21 | goto cleanup 22 | ) 23 | 24 | REM 2. 下载最新的 VSIX 25 | echo 📦 下载最新的 Augment Code VSIX... 26 | set PUBLISHER=augment 27 | set EXTENSION_NAME=vscode-augment 28 | set VSIX_URL=https://marketplace.visualstudio.com/_apis/public/gallery/publishers/%PUBLISHER%/vsextensions/%EXTENSION_NAME%/latest/vspackage 29 | 30 | echo 🌐 下载地址: %VSIX_URL% 31 | 32 | REM 使用改进的下载参数 33 | curl -L --fail --retry 3 --retry-delay 5 --max-time 300 --user-agent "Mozilla/5.0 (compatible; Local-Test)" --header "Accept: application/octet-stream, */*" --output original.vsix "%VSIX_URL%" 34 | if errorlevel 1 ( 35 | echo ❌ 错误: 下载 VSIX 失败 36 | goto cleanup 37 | ) 38 | echo ✅ VSIX 下载完成 39 | 40 | REM 验证文件 41 | echo 📋 文件信息: 42 | dir original.vsix 43 | file original.vsix 2>nul || echo 文件类型检查工具未找到 44 | 45 | REM 3. 解包 VSIX 46 | echo 📂 解包 VSIX 文件... 47 | 48 | REM 测试 ZIP 文件完整性 49 | powershell -Command "try { Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead('original.vsix').Dispose(); Write-Host 'ZIP file is valid' } catch { Write-Host 'Error: Invalid ZIP file'; exit 1 }" 50 | if errorlevel 1 ( 51 | echo ❌ 错误: VSIX 文件损坏或不是有效的 ZIP 文件 52 | for %%f in (original.vsix) do echo 文件大小: %%~zf bytes 53 | goto cleanup 54 | ) 55 | 56 | powershell -Command "Expand-Archive -Path 'original.vsix' -DestinationPath 'unpacked_ext' -Force" 57 | if errorlevel 1 ( 58 | echo ❌ 错误: 解包 VSIX 失败 59 | goto cleanup 60 | ) 61 | 62 | REM 4. 查找 package.json 并获取版本号 63 | echo 🔍 获取插件版本号... 64 | for /r unpacked_ext %%f in (package.json) do ( 65 | set PACKAGE_JSON=%%f 66 | goto found_package 67 | ) 68 | echo ❌ 错误: 找不到 package.json 69 | goto cleanup 70 | 71 | :found_package 72 | echo 📋 找到 package.json: %PACKAGE_JSON% 73 | 74 | REM 使用 PowerShell 提取版本号 75 | for /f "delims=" %%i in ('powershell -Command "(Get-Content '%PACKAGE_JSON%' | ConvertFrom-Json).version"') do set VERSION=%%i 76 | echo 📋 发现版本: %VERSION% 77 | 78 | REM 5. 查找 extension.js 79 | echo 🔍 查找 extension.js 文件... 80 | for /r unpacked_ext %%f in (extension.js) do ( 81 | echo %%f | findstr /i "out" >nul 82 | if not errorlevel 1 ( 83 | set EXTENSION_JS=%%f 84 | goto found_extension 85 | ) 86 | ) 87 | echo ❌ 错误: 找不到 extension.js 88 | goto cleanup 89 | 90 | :found_extension 91 | echo 📄 找到文件: %EXTENSION_JS% 92 | 93 | REM 6. 检查 Python 版本并应用补丁 94 | echo 🐍 检查 Python 版本... 95 | python --version 96 | if errorlevel 1 ( 97 | echo ❌ 错误: 未找到 Python 98 | echo 💡 请安装 Python 3.6+ 并确保添加到 PATH 99 | goto cleanup 100 | ) 101 | 102 | REM 检查 Python 版本是否满足要求 103 | python -c "import sys; exit(0 if sys.version_info >= (3, 6) else 1)" 104 | if errorlevel 1 ( 105 | echo ❌ 错误: Python 版本不满足要求 (需要 3.6+) 106 | python -c "import sys; print(f'当前版本: {sys.version}')" 107 | goto cleanup 108 | ) 109 | echo ✅ Python 版本满足要求 (需要 3.6+) 110 | 111 | echo 🛠️ 使用 aug_cleaner 应用补丁... 112 | python aug_cleaner\aug_cleaner.py "%EXTENSION_JS%" "%EXTENSION_JS%.patched" 113 | if errorlevel 1 ( 114 | echo ❌ 错误: 应用补丁失败 115 | goto cleanup 116 | ) 117 | 118 | REM 替换原文件 119 | move "%EXTENSION_JS%.patched" "%EXTENSION_JS%" 120 | echo ✅ 补丁应用成功 121 | 122 | REM 7. 显示文件大小 123 | echo 📊 文件信息: 124 | for %%f in ("%EXTENSION_JS%") do echo 文件大小: %%~zf bytes 125 | 126 | REM 8. 检查是否安装了 vsce 127 | where vsce >nul 2>&1 128 | if errorlevel 1 ( 129 | echo ⚠️ 未安装 vsce,跳过重新打包步骤 130 | echo 💡 要安装 vsce: npm install -g @vscode/vsce 131 | goto success 132 | ) 133 | 134 | echo 📦 重新打包 VSIX... 135 | for %%f in ("%PACKAGE_JSON%") do set EXTENSION_DIR=%%~dpf 136 | cd /d "%EXTENSION_DIR%" 137 | 138 | REM 创建 .vscodeignore 139 | ( 140 | echo node_modules/ 141 | echo .git/ 142 | echo .gitignore 143 | echo *.md 144 | echo .vscode/ 145 | echo test/ 146 | echo src/ 147 | echo tsconfig.json 148 | echo webpack.config.js 149 | ) > .vscodeignore 150 | 151 | set PATCHED_VSIX_NAME=augment.vscode-augment-%VERSION%-patched.vsix 152 | vsce package --out "..\%PATCHED_VSIX_NAME%" 153 | if errorlevel 1 ( 154 | echo ❌ 错误: 重新打包失败 155 | goto cleanup 156 | ) 157 | 158 | echo ✅ 补丁版本已创建: %PATCHED_VSIX_NAME% 159 | echo 📍 文件位置: %CD%\..\%PATCHED_VSIX_NAME% 160 | 161 | :success 162 | echo 🎉 本地测试完成! 163 | echo 📋 版本: %VERSION% 164 | echo 📁 临时目录: %TEMP_DIR% 165 | 166 | :cleanup 167 | echo 🧹 清理临时文件... 168 | cd /d "%~dp0" 169 | rmdir /s /q "%TEMP_DIR%" 2>nul 170 | 171 | pause 172 | endlocal 173 | -------------------------------------------------------------------------------- /.github/workflows/build-patched-extension.yml: -------------------------------------------------------------------------------- 1 | # .github/workflows/build-patched-extension.yml 2 | 3 | name: Build Patched Augment Code Extension with aug_cleaner 4 | 5 | on: 6 | # 允许手动触发工作流 7 | workflow_dispatch: 8 | 9 | # 每天早上 8 点 (UTC) 自动运行,检查是否有新版本 10 | schedule: 11 | - cron: '0 8 * * *' 12 | 13 | # 当工作流文件被更新时自动运行 14 | push: 15 | paths: 16 | - '.github/workflows/**' 17 | 18 | jobs: 19 | build-and-release: 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: write # 授予工作流向仓库创建 Release 的权限 23 | 24 | steps: 25 | # 步骤 1: 检出当前仓库代码 26 | - name: Checkout repository 27 | uses: actions/checkout@v4 28 | with: 29 | fetch-depth: 0 # 获取完整历史,包括所有 tags 30 | 31 | # 步骤 2: 检出 aug_cleaner 工具代码 32 | - name: Checkout aug_cleaner 33 | uses: actions/checkout@v4 34 | with: 35 | repository: 'gmh5225/aug_cleaner' 36 | path: 'aug_cleaner' 37 | 38 | # 步骤 3: 设置 Python 环境 (aug_cleaner 要求 Python 3.6+) 39 | - name: Setup Python 40 | uses: actions/setup-python@v4 41 | with: 42 | python-version: '3.9' 43 | 44 | # 步骤 3.1: 验证 Python 版本 45 | - name: Verify Python version 46 | run: | 47 | python --version 48 | python -c "import sys; print(f'Python version: {sys.version}')" 49 | python -c "import sys; exit(0 if sys.version_info >= (3, 6) else 1)" && echo "✅ Python version meets aug_cleaner requirements (3.6+)" 50 | 51 | # 步骤 4: 下载最新的 Augment Code VSIX 插件 52 | - name: Download Latest VSIX 53 | run: | 54 | PUBLISHER="augment" 55 | EXTENSION_NAME="vscode-augment" 56 | VSIX_URL="https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${PUBLISHER}/vsextensions/${EXTENSION_NAME}/latest/vspackage" 57 | echo "Downloading VSIX from: ${VSIX_URL}" 58 | 59 | # 使用 --compressed 标志让 curl 自动处理解压缩 60 | curl -L --compressed -o original.vsix "${VSIX_URL}" 61 | 62 | echo "VSIX downloaded successfully." 63 | 64 | # 详细验证文件 65 | echo "File information:" 66 | ls -la original.vsix 67 | echo "File type:" 68 | file original.vsix 69 | echo "File size: $(stat -c%s original.vsix) bytes" 70 | 71 | # 检查文件头部,确认是否为 ZIP 格式 72 | echo "File header (hex):" 73 | hexdump -C original.vsix | head -3 74 | 75 | # 验证是否为有效的 ZIP 文件 76 | if ! file original.vsix | grep -q "Zip\|ZIP"; then 77 | echo "Error: Downloaded file is not a valid ZIP/VSIX file" 78 | echo "File content preview:" 79 | head -20 original.vsix 80 | exit 1 81 | fi 82 | 83 | 84 | # 步骤 5: 解包 VSIX 文件 85 | - name: Unpack VSIX 86 | run: | 87 | echo "Unpacking VSIX file..." 88 | 89 | # 测试 ZIP 文件完整性 90 | if ! unzip -t original.vsix > /dev/null 2>&1; then 91 | echo "Error: VSIX file is corrupted or not a valid ZIP file" 92 | echo "Attempting to diagnose the issue..." 93 | echo "File size: $(stat -c%s original.vsix) bytes" 94 | echo "File type: $(file original.vsix)" 95 | echo "First 200 bytes of file:" 96 | head -c 200 original.vsix | hexdump -C 97 | exit 1 98 | fi 99 | 100 | # 解包文件 101 | unzip -q original.vsix -d unpacked_ext 102 | echo "VSIX unpacked successfully." 103 | 104 | # 查看解包后的结构 105 | echo "Unpacked structure:" 106 | find unpacked_ext -type f -name "*.json" | head -5 107 | find unpacked_ext -type f -name "*.js" | head -10 108 | 109 | # 查看目录结构 110 | echo "Directory structure:" 111 | find unpacked_ext -type d | head -10 112 | 113 | # 步骤 6: 从插件的 package.json 中获取版本号 114 | - name: Get extension version 115 | id: get_version 116 | run: | 117 | # 查找 package.json 文件 118 | PACKAGE_JSON=$(find unpacked_ext -name "package.json" -type f | head -1) 119 | if [ -z "$PACKAGE_JSON" ]; then 120 | echo "Error: package.json not found" 121 | exit 1 122 | fi 123 | echo "Found package.json at: $PACKAGE_JSON" 124 | 125 | VERSION=$(jq -r .version "$PACKAGE_JSON") 126 | if [ "$VERSION" = "null" ] || [ -z "$VERSION" ]; then 127 | echo "Error: Could not extract version from package.json" 128 | exit 1 129 | fi 130 | 131 | echo "VERSION=${VERSION}" >> $GITHUB_ENV 132 | echo "Discovered extension version: ${VERSION}" 133 | 134 | # 步骤 7: 检查版本是否已存在 135 | - name: Check if version already exists 136 | id: version_check 137 | run: | 138 | TAG_NAME="v${{ env.VERSION }}-patched" 139 | if git tag -l | grep -q "^${TAG_NAME}$"; then 140 | echo "Tag ${TAG_NAME} already exists, skipping build" 141 | echo "skip_build=true" >> $GITHUB_OUTPUT 142 | else 143 | echo "New version ${{ env.VERSION }} detected, proceeding with build" 144 | echo "skip_build=false" >> $GITHUB_OUTPUT 145 | fi 146 | 147 | # 步骤 8: 显示跳过构建的信息(仅在跳过时执行) 148 | - name: Skip build notification 149 | if: steps.version_check.outputs.skip_build == 'true' 150 | run: | 151 | echo "✅ Version ${{ env.VERSION }} already exists, skipping build" 152 | echo "🔄 To rebuild: delete tag v${{ env.VERSION }}-patched and its release" 153 | 154 | # 步骤 9: 使用 aug_cleaner 工具进行补丁(仅在需要构建时执行) 155 | - name: Apply patch with aug_cleaner 156 | if: steps.version_check.outputs.skip_build == 'false' 157 | run: | 158 | echo "Applying patch with aug_cleaner..." 159 | 160 | # 查找主要的 extension.js 文件 161 | EXTENSION_JS=$(find unpacked_ext -name "extension.js" -path "*/out/*" | head -1) 162 | if [ -z "$EXTENSION_JS" ]; then 163 | echo "Error: extension.js not found in unpacked VSIX" 164 | exit 1 165 | fi 166 | echo "Found extension.js at: $EXTENSION_JS" 167 | 168 | # 使用 aug_cleaner 工具进行补丁 169 | python aug_cleaner/aug_cleaner.py "$EXTENSION_JS" "${EXTENSION_JS}.patched" 170 | 171 | # 替换原文件 172 | mv "${EXTENSION_JS}.patched" "$EXTENSION_JS" 173 | 174 | echo "Patch applied successfully with aug_cleaner." 175 | 176 | # 步骤 10: 设置 Node.js 环境(仅在需要构建时执行) 177 | - name: Setup Node.js 178 | if: steps.version_check.outputs.skip_build == 'false' 179 | uses: actions/setup-node@v4 180 | with: 181 | node-version: '20' 182 | 183 | # 步骤 11: 安装必要的工具(仅在需要构建时执行) 184 | - name: Install dependencies 185 | if: steps.version_check.outputs.skip_build == 'false' 186 | run: | 187 | npm install -g @vscode/vsce 188 | 189 | # 步骤 12: 查找并准备插件目录 190 | - name: Prepare extension directory 191 | if: steps.version_check.outputs.skip_build == 'false' 192 | run: | 193 | # 查找包含 package.json 的目录 194 | EXTENSION_DIR=$(find unpacked_ext -name "package.json" -type f -exec dirname {} \; | head -1) 195 | if [ -z "$EXTENSION_DIR" ]; then 196 | echo "Error: Extension directory not found" 197 | exit 1 198 | fi 199 | echo "EXTENSION_DIR=${EXTENSION_DIR}" >> $GITHUB_ENV 200 | echo "Extension directory: $EXTENSION_DIR" 201 | 202 | # 步骤 13: 安装插件依赖并创建 .vscodeignore 203 | - name: Install extension dependencies 204 | if: steps.version_check.outputs.skip_build == 'false' 205 | working-directory: ${{ env.EXTENSION_DIR }} 206 | run: | 207 | # 如果存在 package-lock.json 或 node_modules,先清理 208 | rm -rf node_modules package-lock.json 209 | 210 | # 安装依赖(如果 package.json 中有依赖) 211 | if [ -f package.json ] && jq -e '.dependencies // .devDependencies' package.json > /dev/null 2>&1; then 212 | npm install --production 213 | fi 214 | 215 | # 创建 .vscodeignore 文件 216 | cat > .vscodeignore << EOF 217 | node_modules/ 218 | .git/ 219 | .gitignore 220 | *.md 221 | .vscode/ 222 | test/ 223 | src/ 224 | tsconfig.json 225 | webpack.config.js 226 | EOF 227 | echo "Dependencies installed and .vscodeignore created." 228 | 229 | # 步骤 14: 重新打包成新的 VSIX 文件 230 | - name: Repackage Patched VSIX 231 | if: steps.version_check.outputs.skip_build == 'false' 232 | run: | 233 | PATCHED_VSIX_NAME="augment.vscode-augment-${{ env.VERSION }}-patched.vsix" 234 | echo "PATCHED_VSIX_NAME=${PATCHED_VSIX_NAME}" >> $GITHUB_ENV 235 | 236 | cd "${{ env.EXTENSION_DIR }}" 237 | vsce package --out "../../${PATCHED_VSIX_NAME}" 238 | 239 | echo "Patched VSIX created: ${PATCHED_VSIX_NAME}" 240 | ls -l "../../${PATCHED_VSIX_NAME}" 241 | 242 | # 步骤 15: 创建 GitHub Release 并上传打包好的 VSIX 243 | - name: Create GitHub Release 244 | if: steps.version_check.outputs.skip_build == 'false' 245 | uses: softprops/action-gh-release@v2 246 | with: 247 | tag_name: "v${{ env.VERSION }}-patched" 248 | name: "Patched Augment v${{ env.VERSION }}" 249 | body: | 250 | This is an automated build of the Augment extension, patched with the aug_cleaner tool. 251 | 252 | - Original Extension Version: **${{ env.VERSION }}** 253 | - Patch Tool: aug_cleaner (https://github.com/gmh5225/aug_cleaner) 254 | - Build Date: ${{ github.run_id }} 255 | 256 | ## Installation 257 | 1. Download the `.vsix` file below 258 | 2. Open VS Code 259 | 3. Go to Extensions view (Ctrl+Shift+X) 260 | 4. Click the "..." menu and select "Install from VSIX..." 261 | 5. Select the downloaded file 262 | 263 | ## What's Patched 264 | This version has been processed by aug_cleaner to remove telemetry and tracking functionality. 265 | files: "${{ env.PATCHED_VSIX_NAME }}" 266 | env: 267 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 268 | 269 | # 步骤 16: 清理临时文件 270 | - name: Cleanup 271 | if: always() 272 | run: | 273 | rm -rf unpacked_ext original.vsix aug_cleaner 274 | echo "Cleanup completed." 275 | --------------------------------------------------------------------------------