feat: 优化LLM显示、修复API路径、重构自主操作SOP、添加sche_tasks到gitignore

- agentmain.py: LLM列表显示增加backend类型
- sidercall.py: 统一API endpoint路径为/v1/chat/completions
- autonomous_operation_sop.md: 重构任务选择逻辑和报告目录规则
- .gitignore: 添加sche_tasks/目录排除
- 移除git追踪的sche_tasks任务报告文件
This commit is contained in:
Liang Jiaqing
2026-02-20 11:10:04 +08:00
parent 8329efeb9c
commit 08d6cedc7d
11 changed files with 48 additions and 279 deletions

3
.gitignore vendored
View File

@@ -67,3 +67,6 @@ memory/*
# Visual Studio # Visual Studio
.vs/ .vs/
restore_commit.txt restore_commit.txt
# ¼Æ»®ÈÎÎñµ÷¶ÈĿ¼
sche_tasks/

View File

@@ -51,7 +51,7 @@ class GeneraticAgent:
def next_llm(self, n=-1): def next_llm(self, n=-1):
self.llm_no = ((self.llm_no + 1) if n < 0 else n) % len(self.llmclient.backends) self.llm_no = ((self.llm_no + 1) if n < 0 else n) % len(self.llmclient.backends)
self.llmclient.last_tools = '' self.llmclient.last_tools = ''
def list_llms(self): return [(i, b.default_model, i == self.llm_no) for i, b in enumerate(self.llmclient.backends)] def list_llms(self): return [(i, f"{type(b).__name__}/{b.default_model}", i == self.llm_no) for i, b in enumerate(self.llmclient.backends)]
def get_llm_name(self): def get_llm_name(self):
b = self.llmclient.backends[self.llm_no] b = self.llmclient.backends[self.llm_no]
return f"{type(b).__name__}/{b.default_model}" return f"{type(b).__name__}/{b.default_model}"

View File

@@ -3,41 +3,48 @@
授权你进行自主行动,只要不对环境造成副作用都可进行。 授权你进行自主行动,只要不对环境造成副作用都可进行。
请先选择核心目标,再选择一个小目标进行。最终探测结果形成报告(含操作申请),待用户回来确认后再进行可能的写入或修改操作。 请先选择核心目标,再选择一个小目标进行。最终探测结果形成报告(含操作申请),待用户回来确认后再进行可能的写入或修改操作。
> **启动时写入工作记忆**`自主探索≤15回合只有cwd内可写用户不在(问题存报告)|收尾:重读本SOP确认报告目录+更新history产出=报告+记忆提案` > **启动时写入工作记忆**`自主探索≤15回合只有cwd内可写用户不在(问题存报告)|收尾:重读本SOP确认报告目录+更新报告目录内history产出=报告+记忆提案`
## 🎯 核心目标(按价值优先级排序) ## 📋 大纲
- 报告目录与规则
- 任务选择
- 执行流程与注意事项
### 价值判断标准 ## 报告目录与规则
任务价值 = **「AI训练数据无法覆盖」×「对未来协作有持久收益」**。
- ✅ 高价值:只有通过物理探测用户环境才能获得的个性化知识(用户偏好、代码风格、项目结构、本地工具链、工作习惯)
- ✅ 高价值:用户环境中已有但未被发现/利用的工具和数据源
- ⚠️ 中价值:需要实际动手验证的技术实验(非读文档能解决的)
- ❌ 低价值探索知名工具的基础用法ruff/black/pytest等——AI训练数据已覆盖用户需要时直接问即可
- ❌ 低价值通用benchmark/对比测试(网上随处可查)
### 目标排序 ⚠️ 报告目录唯一位置:`./autonomous_reports/`history.txt 在此目录内,禁止写到其他任何路径。
1. **了解用户**学习用户的代码风格、项目结构、工作习惯、兴趣偏好。分析用户亲手写的代码非AI生成从PC文件/目录/浏览器书签推断偏好。这类知识不可替代,直接提升协作质量 报告存于 `./autonomous_reports/`,文件名 `RXX_简短描述.md`XX从 history.txt 推断自增)。
2. **环境发现**:扫描用户环境中已有但未被利用的工具/库/数据源/配置,形成可复用操作知识 完成后在 history.txt 首行 prepend 一条:`#XX | 日期 | 类型 | 主题 | 结论`(严格单行)。已处理报告归档至 `archived/`
3. **实用产出与能力扩展**:写脚本/工具解决痛点,更重要的是在已有能力上解锁新能力(如微信发消息→传文件)。能力树每多一个节点,后续所有任务的可能性空间都变大
4. **小众工具挖掘与踩坑预研**寻找冷门实用工具如mootdx优于akshare/tushare同时对AI常推荐但实际有坑的方案做实测对比如md转pdf各库都不行→Edge打印最优。判断标准如果被问到只会推荐大众方案说明该领域值得挖掘。找到后实际安装测试记录真正好用的方案写入记忆 权限边界:
- ✅ 在GitHub/V2EX/吾爱破解/果核剥壳(ghxi.com)/小众论坛挖掘冷门实用工具 - 无需批准只读探测、cwd 内写操作/脚本实验
- ❌ 刷HN/Reddit热门头条、阅读大众科技新闻AI训练数据已覆盖 - 需要报告:修改 global_mem.txt / memory/ 下 SOP、安装软件、外部 API 调用、删除非临时文件
- 绝对禁止:读取密钥、修改核心代码库、不可逆危险操作
## 任务选择
价值公式:**「AI训练数据无法覆盖」×「对未来协作有持久收益」**。核心产出是记忆——有价值的发现整理为记忆更新提案纳入报告。
选择规则:
- cwd下有 `TODO.txt` 时优先执行其中任务,完成后移除条目
- 不连续选择相同方向TODO除外选择前先读 history.txt 了解近期已做方向
- 选定后先声明一句话预期收益,写入报告开头
目标排序(按价值递减):
1. **实用产出与能力扩展**:写工具解决痛点,在已有能力上解锁新能力(能力树每多一个节点,可能性空间变大)
2. **环境发现**:扫描已有但未利用的工具/库/数据源/配置
3. **小众工具挖掘**在GitHub/V2EX/吾爱破解/果核剥壳等找冷门实用工具实测AI常推荐但有坑的方案
4. **了解用户与推荐**:分析老代码/PC文件/书签推断偏好,给出个性化推荐(游戏/视频/工具附理由)(低频)
5. **自身演进**:思考框架不足,提出改进方案 5. **自身演进**:思考框架不足,提出改进方案
6. **审查记忆系统**:修正错误或过时记录(低频执行 6. **记忆审查**:修正错误或过时记录(低频)
> ⚠️ **刷新闻/论坛HackNews等不是有效任务**。公开网页内容属于AI训练数据已覆盖的通用知识不满足价值判断标准。除非用户明确要求否则禁止将「上网浏览」作为自主任务。 选择原则个性化优先只有探测这台PC才能获得的知识→ 盲区优先(自身参数无法复现的知识)→ 假设驱动(明确要验证什么,边探测边实验)→ 禁止低价值验证(不验证静态配置、不做无假设巡检)
### 选择原则 探测领域(鼓励发散,不要总盯技术/agent
- **个性化优先**优先产出「只有探测这台PC才能获得」的知识而非通用技术知识 - 有效上网冲浪:资源站巡检(果核剥壳/吾爱破解/什么值得买等→结合需求筛选、深度阅读≤2话题读正文提炼
- **盲区优先**:探索产出须为自身参数无法复现的知识(小众库发现与用法、环境特有的坑),学已熟知库的基础用法无价值 - 实用小工具 · 本地环境健康 · 自动化优化 · 了解用户 · 推荐(游戏/视频/工具附理由) · 自身演进 · SOP/记忆维护(别每次都选) · 整理cwd
- **代码风格注意**分析用户代码风格时必须找用户亲手写的老代码大模型出现前的项目memory/下的.py多为AI生成不可作为风格样本
- **自主发现**主动扫描用户环境pip list、项目目录、配置文件发现未知工具而非等用户告知
- **假设驱动**:明确"要验证什么假设",实验必须有动手验证环节
- **禁止低价值验证**:不验证 global_mem 中的静态配置,不做无假设的巡检
主要目标是让你未来更加强大。探索的核心产出是记忆——每次运行应将有价值的发现(用户偏好、环境事实、新知识)整理为记忆更新提案,纳入报告待用户审批后写入。 禁区:❌ Hacker News · 刷新闻头条 · 泛采集标题/无目标刷新闻 · 探索知名工具基础用法 · 调研弱于当前框架的agent · 调研其他web自动化/computer use框架 · 读取自身代码库
但不需要你了解自身代码库,目前读取你自身代码意义不大。
严禁调研弱于当前框架Claude Code级的agent/工具,它们已无参考价值。
## 🔄 执行流程 ## 🔄 执行流程
@@ -52,8 +59,8 @@
### 阶段 2生成报告与方案 ### 阶段 2生成报告与方案
- **位置**:目录若不存在请新建 - **位置**:目录若不存在请新建
- 报告文件:`./autonomous_reports/RXX_简短描述.md`XX为自增序号从history.txt末尾推断下一个编号) - 报告文件:`./autonomous_reports/RXX_简短描述.md`XX为自增序号从history.txt推断下一个编号
- 历史索引:`./autonomous_reports/history.txt`(每条任务一行,报告写完后必须append - 历史索引:`./autonomous_reports/history.txt`每条任务一行报告写完后必须prepend
- 已处理报告归档至 `./autonomous_reports/archived/` - 已处理报告归档至 `./autonomous_reports/archived/`
- **history.txt格式**:请先查看此文件来获取详细格式,`#XX | 日期 | 类型 | 主题 | 结论`(严格单行,禁止换行) - **history.txt格式**:请先查看此文件来获取详细格式,`#XX | 日期 | 类型 | 主题 | 结论`(严格单行,禁止换行)
- **篇幅**:默认简洁,仅关键发现详述 - **篇幅**:默认简洁,仅关键发现详述
@@ -61,30 +68,6 @@
### 阶段 3等待批准 ### 阶段 3等待批准
- 用户归来后审查报告,决定批准、修改或拒绝方案。 - 用户归来后审查报告,决定批准、修改或拒绝方案。
## 权限边界 ### 避免"只读陷阱"
- **无需批准**:只读探测(扫描文件、查状态、上网冲浪)、工作目录内的写操作/脚本实验。 - 发现问题要动手验证,边探测边实验,用临时脚本测假设
- **需要批准**:修改 `global_mem.txt`、修改 `../memory/` 下的 SOP、安装软件、触发外部 API、删除非临时文件。 - 完整验证再结论:禁读部分文件即下判断,必须追踪关联文件并实测后再写报告
- **绝对禁止**:读取密码/密钥、修改核心代码库、执行不可逆危险操作。
## 避免"只读陷阱"
- ❌ 不要只看不做:发现问题后应创建测试验证
- ✅ 边探测边实验:用临时脚本验证假设
- ✅ 记录实验结果:即使失败也写入报告
- ✅ 完整验证再结论:严禁读部分文件即下判断;必须追踪所有关联文件并实际测试后再写报告
## 📝 探测领域(示例,鼓励发散,不要总盯着技术/agent
- 有效上网冲浪(产出可行动的具体信息,非泛读新闻)
- 🎯 资源站巡检:逛果核剥壳/吾爱破解/什么值得买等→按分类浏览→结合用户需求筛选→产出具体推荐(好用工具、优惠羊毛、高性价比商品、限时机会等)
- 🎯 深度阅读选≤2个话题深入读正文提炼观点或带明确目标搜索。导航受限时立即换方向
- ❌ 禁止:泛采集标题列表、无目标刷新闻头条
- 实用小工具(写脚本解决日常痛点,如批量重命名、格式转换)
- 本地环境健康(磁盘空间、过期大文件、异常进程)
- 自动化优化(发现可自动化的重复操作并原型验证)
- 了解用户从PC上的文件/目录/浏览器书签等推断用户兴趣和偏好,不读密钥文件)
- 推荐(基于对用户的了解,推荐游戏/视频/工具/脚本等,附理由)
- 自身演进(思考框架的不足或新需求,提出改进方案供用户审批)
- SOP/记忆维护(审查脚本可用性、路径有效性,但不要每次都选这个)
- 整理cwd清理临时文件、归档过期产物、检查磁盘占用
## 框架锁定
- 当前agent框架tmwebdriver + code_run + 记忆系统)已是最先进实现。
- 自主行动中严禁探索其他agent框架如browser-use、Cua等除非有重大技术变革消息。

View File

@@ -1,7 +1,7 @@
oai_config = { oai_config = {
'apikey':'sk-uklURcj', 'apikey':'sk-uklURcj',
'apibase':"http://113.145.139.147:3001/v1", 'apibase':"http://113.145.139.147:3001",
'model':"openai/gpt-5.1" 'model':"openai/gpt-5.1"
} }
@@ -12,14 +12,14 @@ sider_cookie = 'token=Bearer%20eyJhbGciOiJIUz...'
# feel free to add more ~ # feel free to add more ~
oai_config2 = { oai_config2 = {
'apikey':'sk-uklURcj...', 'apikey':'sk-uklURcj...',
'apibase':"http://133.145.139.147:3001/v1", 'apibase':"http://133.145.139.147:3001",
'model':"claude-opus-4-6-20260206" 'model':"claude-opus-4-6-20260206"
} }
claude_config = { claude_config = {
'apikey':'klURcj...', 'apikey':'klURcj...',
'apibase':"http://233.145.139.147:3001/", 'apibase':"http://233.145.139.147:3001",
'model':"claude-opus" 'model':"claude-opus"
} }

View File

@@ -1,36 +0,0 @@
schedule: daily 0800
prompt: 按ezgmail_sop读取所有未读邮件判断是否有重要信息紧急/截止日期/需回复的),将摘要写入执行报告。全部设为已读。
---
执行时间: 2026-02-15 08:01:23
---
## 执行报告
## 未读邮件检查报告
**检查时间**: 2026-02-15 08:02:11
**未读邮件总数**: 3
### 重要邮件 (2封)
- **624215 是你的 X 验证码**
发件人: X <info@x.com>
日期: Sat, 14 Feb 2026 16:34:06 +0000
备注: X平台验证码624215如正在登录请使用
- **CACTER邮件安全海外接收隔离区邮件通知目录摘要/CACTER Safe overseas reception quarantine email notification abstract**
发件人: emailgateway@cacter.com
日期: Fri, 13 Feb 2026 18:06:12 +0800 (CST)
备注: 邮件安全隔离区通知,可能有邮件被隔离
### 普通邮件 (1封)
- COLLABORATION OPPORTUNITY FOR RELIABLE SUPPLY OF PHARMACEUTICAL RAW MATERIALS.
发件人: Karen Lucille Hale <karenlucillehale285@gmail.com>
备注: 可疑商业合作邮件,疑似垃圾邮件
**执行状态**: 成功
**完成时间**: 2026-02-15 08:02:24

View File

@@ -1,33 +0,0 @@
schedule: daily 0800
prompt: 按ezgmail_sop读取所有未读邮件判断是否有重要信息紧急/截止日期/需回复的),将摘要写入执行报告。全部设为已读。
---
# 邮件检查报告 - 2026-02-16 08:01
## 摘要
- 总计未读邮件2 封
- 重要邮件1 封
- 普通邮件1 封
## 重要邮件详情
### 1. ARR January 2026 会议通知
- **发件人**: ARR - January 2026
- **主题**: [ARR January] Author-reviewer discussion phase starts now
- **日期**: 2026-02-15 23:40
- **重要性**: 高 - 有时间限制
- **说明**: 学术会议作者-审稿人讨论阶段已开始,需要及时查看审稿意见并准备回复
- **建议**: 尽快登录 OpenReview 查看审稿意见并准备回复
## 普通邮件
### 1. Academia.edu 引用通知
- **发件人**: Academia Mentions
- **主题**: Are you the "JiaQing Liang" cited in Artificial Intelligence papers?
- **说明**: 营销邮件,通知有论文引用了相关姓名
## 操作记录
- 所有邮件已标记为已读
- 执行时间: 2026-02-16 08:01:18

View File

@@ -1,33 +0,0 @@
# 邮件检查执行报告
**执行时间**: 2026-02-17 08:01:14
**任务**: 检查未读邮件
## 摘要
- 共检查 3 封未读邮件
- 重要邮件: 0 封
- 所有邮件已标记为已读
## 邮件详情
### [1] 普通
- **发件人**: do-not-reply@iclr.cc
- **主题**: ICLR 2026 Update Poster Presentation Details
- **日期**: Mon, 16 Feb 2026 22:47:44 +0000 (UTC)
### [2] 普通
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **主题**: [ARR - January 2026] An author commented on your submission. Paper Number: 4724, Paper Title: "CultureScope: A Dimensional Lens for Probing Cultural Understanding in LLMs"
- **日期**: Mon, 16 Feb 2026 15:02:09 +0000 (UTC)
### [3] 普通
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **主题**: [ARR - January 2026] An author commented on your submission. Paper Number: 4724, Paper Title: "CultureScope: A Dimensional Lens for Probing Cultural Understanding in LLMs"
- **日期**: Mon, 16 Feb 2026 14:43:11 +0000 (UTC)
## 结论
本次检查未发现需要紧急处理的邮件。
- ICLR 2026 会议通知:海报展示细节更新
- ARR论文评审作者评论通知2封
所有邮件已标记为已读。

View File

@@ -1,82 +0,0 @@
# 邮件检查执行报告
**执行时间**: 2026-02-18 08:00:54
**任务**: 检查未读邮件 (daily 0800)
## 执行结果
- **总未读邮件数**: 13 封
- **重要邮件数**: 8 封
- **处理状态**: 所有邮件已标记为已读 ✓
## 重要邮件摘要
### 1. [ARR - January 2026] Official Review posted to your assigned Paper number: 2021, Paper title: "Sparse-RL: Breaking the Memory Wall in LLM Reinforcement Learning via Stable Sparse Rollouts"
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **日期**: Tue, 17 Feb 2026 23:45:24 +0000 (UTC)
- **摘要**: &#39;A submission to ARR - January 2026, for which you are an official area chair, has received a re
### 2. [ARR January/ACL 2026] pending review for submission 5119 please reply!
- **发件人**: acl2026 <acl2026pcs@gmail.com>
- **日期**: Tue, 17 Feb 2026 22:09:57 +0000
- **摘要**: Dear Jiaqing and Nanyun You are the AC and SAC for paper 5119, which still has a missing review. The
### 3. [ARR January/ACL 2026] pending review for submission 4966 please reply!
- **发件人**: acl2026 <acl2026pcs@gmail.com>
- **日期**: Tue, 17 Feb 2026 22:04:02 +0000
- **摘要**: Dear Jiaqing and Nanyun You are the AC and SAC for paper 4966, which still has a missing review. The
### 4. [ICML 2026] clarification regarding emergency reviewing
- **发件人**: OpenReview <noreply@openreview.net>
- **日期**: Tue, 17 Feb 2026 21:40:32 +0000 (UTC)
- **摘要**: Dear Jiaqing Liang, Thanks again for agreeing to act as an emergency reviewer for ICML during the pe
### 5. [ARR - January 2026] An author commented on your submission. Paper Number: 215, Paper Title: "What Makes an Ideal Quote? Recommending “Unexpected yet Rational” Quotations via Novelty"
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **日期**: Tue, 17 Feb 2026 09:29:39 +0000 (UTC)
- **摘要**: An author commented on your submission. Paper number: 215 Paper title: What Makes an Ideal Quote? Re
### 6. [ARR - January 2026] An author commented on your submission. Paper Number: 215, Paper Title: "What Makes an Ideal Quote? Recommending “Unexpected yet Rational” Quotations via Novelty"
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **日期**: Tue, 17 Feb 2026 09:28:56 +0000 (UTC)
- **摘要**: An author commented on your submission. Paper number: 215 Paper title: What Makes an Ideal Quote? Re
### 7. [ARR - January 2026] An author commented on your submission. Paper Number: 215, Paper Title: "What Makes an Ideal Quote? Recommending “Unexpected yet Rational” Quotations via Novelty"
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **日期**: Tue, 17 Feb 2026 09:26:03 +0000 (UTC)
- **摘要**: An author commented on your submission. Paper number: 215 Paper title: What Makes an Ideal Quote? Re
### 8. [ARR - January 2026] An author commented on your submission. Paper Number: 215, Paper Title: "What Makes an Ideal Quote? Recommending “Unexpected yet Rational” Quotations via Novelty"
- **发件人**: ARR - January 2026 <arr-january2026-notifications@openreview.net>
- **日期**: Tue, 17 Feb 2026 09:23:23 +0000 (UTC)
- **摘要**: An author commented on your submission. Paper number: 215 Paper title: What Makes an Ideal Quote? Re
## 重要信息分析
本次检查发现以下需要关注的邮件:
1. **ARR/ACL 2026 审稿相关** (5封)
- Paper 2021 收到新的 Official Review
- Paper 5119 和 4966 有 pending review 需要回复
- Paper 215 收到4条作者评论
2. **ICML 2026 紧急审稿** (1封)
- 关于 emergency reviewing 的说明
**建议行动**:
- 优先处理 Paper 5119 和 4966 的 pending review 回复请求
- 查看 Paper 215 的作者评论并回复
- 查看 Paper 2021 的新 review
## 执行状态
✓ 任务执行成功
✓ 所有未读邮件已标记为已读

View File

@@ -1,31 +0,0 @@
schedule: daily 0800
prompt: 按ezgmail_sop读取所有未读邮件判断是否有重要信息紧急/截止日期/需回复的),将摘要写入执行报告。全部设为已读。
---
# 邮件检查执行报告
执行时间: 2026-02-19 08:01:14
## 统计
- 总未读邮件: 21
- 重要邮件: 3
## 重要邮件详情
### 1. EXTENDED DEADLINE: Call for Papers: TAAS Special Issue on Autonomic Approaches and Applications for the Edge-HPC/Cloud Computing Continuum
- 发件人: "Rami Bahsoon, ACM TAAS Editor-in-Chief (do not reply)" <call-for-papers@hq.acm.org>
- 日期: Wed, 18 Feb 2026 10:00:00 -0500 (EST)
- 摘要: ACM Digital Library journal banner CALL FOR PAPERS - EXTENDED DEADLINE ACM Transactions on Autonomous and Adaptive Systems Special Issue on Autonomic Approaches and Applications for the Edge-HPC/Cloud
### 2. Re: [ARR January/ACL 2026] pending review for submission 5119 please reply!
- 发件人: acl2026 <acl2026pcs@gmail.com>
- 日期: Wed, 18 Feb 2026 12:57:39 +0000
- 摘要: Hi Jiaqing I can add you as a reviewer on the system for this paper. Can you please confirm you will do the review today? Best Maria On Wed, Feb 18, 2026 at 6:47 AM Nanyun Peng &lt;violetpeng@cs.ucla.
### 3. International Conference on Artificial Intelligence in Society 2026 - CALL FOR PAPERS - Deadline for submissions (1st CFP Extension): 9 March 2026
- 发件人: "isabel.andrade@isrlab.org" <isabel.andrade@isrlab.org>
- 日期: Wed, 18 Feb 2026 12:10:38 +0000
- 摘要: Header Image International Conference on Artificial Intelligence in Society 2026 (AIS 2026) Part of the 20th Multi Conference on Computer Science and Information Systems (MCCSIS 2026) Valencia, Spain,
## 操作
- 已将所有未读邮件标记为已读

View File

@@ -1,2 +0,0 @@
schedule: daily 0800
prompt: 按ezgmail_sop读取所有未读邮件判断是否有重要信息紧急/截止日期/需回复的),将摘要写入执行报告。全部设为已读。

View File

@@ -96,7 +96,7 @@ class LLMSession:
headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json", "Accept": "text/event-stream"} headers = {"Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json", "Accept": "text/event-stream"}
payload = {"model": model, "messages": messages, "temperature": temperature, "stream": True} payload = {"model": model, "messages": messages, "temperature": temperature, "stream": True}
try: try:
with requests.post(f"{self.api_base}/chat/completions", headers=headers, with requests.post(f"{self.api_base}/v1/chat/completions", headers=headers,
json=payload, stream=True, timeout=(5, 60), proxies=self.proxies) as r: json=payload, stream=True, timeout=(5, 60), proxies=self.proxies) as r:
r.raise_for_status() r.raise_for_status()
buffer = '' buffer = ''