news 2026/9/10 18:07:17

aider 实战指南:在终端编程对话中添加图片与网页上下文

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
aider 实战指南:在终端编程对话中添加图片与网页上下文

aider 实战指南:在终端编程对话中添加图片与网页上下文

【免费下载链接】aideraider is AI pair programming in your terminal项目地址: https://gitcode.com/GitHub_Trending/ai/aider

导读

aider 是运行在终端里的 AI 结对编程工具,本指南聚焦它的一项实用能力:把图片文件网页内容直接喂给编程对话,让模型基于截图、UI 原型或最新版本文档来理解需求与修改代码。读完本文你将掌握用/add/paste、命令行参数添加图片,用/web抓取并转化网页为 Markdown 的完整方法,并从 scrape.py 等源码实现了解底层抓取与文本转换原理。


一、为什么编程对话需要图片与网页

文本是模型对话的主通道,但在真实开发中大量信息天然存在于图片与网页中。aider 针对这两类输入提供了专门支持,对应官方文档位于 images-urls.md。

典型图片场景

对于 GPT-4o、Claude 3.7 Sonnet 等具备视觉能力(vision)的模型,把图片加入对话能显著提升需求还原度:

  • 上传网页或界面截图,让 aider 照着截图去实现或改造页面;
  • 展示 UI 线框稿/原型图,说明你要构建的界面长什么样;
  • 截下难以复制的报错信息,把屏幕上的错误提示直接交给模型分析;
  • 其他任何"看图说话"式的需求传达。

典型网页场景

很多高质量 API 与框架文档并非模型训练数据的一部分,尤其是:

  • 小众 API 的文档页面,模型掌握较少;
  • 晚于模型训练截止日期的新库/新版本文档,例如某个刚发布 v2 的 SDK。

此时把官方网页实时抓进对话,比让模型凭记忆推测可靠得多。


二、添加图片:三种入口

1. 聊天内指令:/add <图片文件>

在 aide 对话中执行:

/add path/to/screenshot.png

与添加普通源文件一致,aider 会把图片加入本次会话上下文。查看会话中已有哪些文件、或想移除图片释放上下文,可配合使用/ls/drop <图片>cmd_drop的实现见 commands.py)。

2. 剪贴板粘贴:/paste

截图后无需保存文件,直接执行:

/paste

cmd_paste(commands.py)会读取系统剪贴板:若剪贴板中是图片,则将其以clipboard_image.png为名落入临时目录并加入对话,若会话已存在同名图片会自动替换;若剪贴板中是纯文本,则原样输出到终端。你也可以给图片显式命名,例如/paste error-log.png,命名以.jpg/.jpeg/.png结尾时按原格式保存,否则自动补为.png

3. 启动时命令行携带

与普通文件相同,启动 aider 时即可把图片放在命令行:

aider mockup.png aider docs/screenshot.png --model gpt-4o

图片格式与视觉模型要求

判定文件是否为图片由 is_image_file 完成,其依据的扩展名白名单IMAGE_EXTENSIONS定义在 utils.py:

扩展名说明
.png/.jpg/.jpeg最常见的截图与照片格式
.gif/.bmp/.tiff老式或专用场景格式
.webp现代网页常用格式
.pdf同样被当作图片式文件处理

需要特别留意的是模型能力门槛。在cmd_add中(commands.py),添加图片前会检查当前主模型的info["supports_vision"]:若模型不支持视觉,会得到类似Cannot add image file xxx as the gpt-... does not support images.的错误提示。因此使用图片功能请先确认所选模型支持视觉能力。


三、添加网页:/web与直接粘贴 URL

聊天内指令:/web <url>

/web https://example.com/api/docs

cmd_web的逻辑位于 commands.py:抓取该 URL 的正文,转换为 Markdown,并以前缀Here is the content of <url>:包装成一条用户消息追加进当前对话,然后继续正常对话即可基于网页内容编程。

直接把 URL 粘贴进对话

在输入框直接粘贴一个网址并发送,aider 会询问你是否把它作为网页内容抓取进来——确认后与/web效果一致。这是日常最快捷的用法。

命令行直接查看抓取效果

抓取并转成 Markdown 的实际效果可以在启动对话前先在终端里预览:

python -m aider.scrape <目标URL>

该命令直接打印转换后的 Markdown 文本。它对应 scrape.py 的main():构造Scraper并输出抓取结果。用真实目标 URL(如某个 API 文档页)替换<目标URL>即可在添加入对话前先检查内容是否干净可用。


四、网页抓取引擎源码剖析

/web背后是 scrape.py 中的Scraper类,其工作可分为两步:取回页面转成 Markdown

双引擎:Playwright 优先,httpx 兜底

Scraper.scrape()(scrape.py)根据是否可用 Playwright 选择抓取路径:

  1. Playwright 引擎scrape_with_playwright,scrape.py):启动无头 Chromium,设置去掉了Headless字样并追加Aider/<版本>UA 标识的真实浏览器 User-Agent(见aider_user_agent),等待页面networkidle(最多 5 秒超时,超时也会先抓再说),再取回页面 HTML 与 Content-Type。适合大量依赖 JS 渲染的现代站点。
  2. httpx 兜底scrape_with_httpx,scrape.py):当未安装 Playwright 时退化为纯 HTTP 请求,跟随重定向并自动带上 UA 头,返回原始响应体。适合轻量、服务端渲染的页面。

判定 HTML 并按需精简

取回内容后,scrape()依据 Content-Type 是否以text/html开头(MIME 缺失时用looks_like_html通过<!DOCTYPE html><html><div>等常见标签特征判断)来决定是否走 HTML→Markdown 流程。

转换前会执行slimdown_html(scrape.py)做"降噪":剔除<svg>data:内联图片与data:链接等对模型理解无益的节点,并把标签属性裁剪到只保留href,最大程度压缩体积。

pandoc 完成格式转换

html_to_markdown(scrape.py)使用 BeautifulSoup 解析后调用 pandoc(经pypandoc,首次使用时由try_pandoc自动下载安装)把 HTML 转为 Markdown,随后清理残留的<div>与多余空行。若 pandoc 不可用,则退化为返回已精简的 HTML 原文。

依赖与 TLS 校验开关

  • 抓取所需的额外依赖集中在 requirements-playwright.in(含 Playwright 与 Chromium 安装说明见 optional.md)。
  • 首次使用/web且环境中缺少 Playwright 时,install_playwright(scrape.py)会在终端打印补装提示并征询是否自动执行安装。
  • cmd_web中(commands.py)会读取命令行参数disable_playwrightverify_ssl:前者可强制关闭 Playwright 只用 httpx,后者控制抓取时的 SSL 证书校验,对自签名证书的内网文档站场景很有用。

抓取结果的注入与上下文管理

cmd_web抓取成功后把「页面来源 URL + 转换出的 Markdown」作为一条普通用户消息写入cur_messages(commands.py),因此网页文本会像普通对话一样参与后续建模。与图片不同,网页文本会占用 Token——大量无关页面会挤占上下文窗口。参见 base_coder.py 的check_added_files:当聊天内文件超过 4 个且折算 Token 超过约 20K 时,aider 会主动提示"最好只添加需要改动的文件",图片文件在该统计中被跳过(is_image_file分支),网页文本则正常计入。


五、测试与验证依据

仓库中已有与抓取能力配套的测试,可作深入参考:

  • test_scrape.py 覆盖Scraper在有无 Playwright 两条路径下的行为;
  • test_commands.py 与 test_coder.py 覆盖/add/drop以及图片加入会话、从只读文件提升为可编辑文件等文件管理行为;
  • commands.md 汇总了全部斜杠指令的说明,可对照查看/add/paste/web/read-only/drop的用法。

六、小结与最佳实践

  1. 图片用对模型/add/paste、命令行传图三种方式等价,但务必使用supports_vision=true的模型,否则图片无法被加入。
  2. 网页按需抓取/web <url>与直接粘贴 URL 均可用,命令行python -m aider.scrape <url>先预览转换质量,避免把大量噪音 HTML 带进对话。
  3. 控制上下文成本:网页内容按 Token 计费且占用窗口,只抓取与当前任务真正相关的少数页面;图片则只占消息位不参与 Token 统计(见 base_coder.py)。
  4. 动态站点装 Playwright:JS 渲染型页面建议安装 Playwright + Chromium;静态文档页用 httpx 兜底即可,必要时通过disable_playwright强制走轻量路径。

把"图"与"网页"变成可对话的上下文,是让终端 AI 结对编程真正落地于 UI 开发与追新文档场景的关键一步,以上命令与源码路径足以支撑你直接在 images-urls.md 与 scrape.py 上继续深入研究。

【免费下载链接】aideraider is AI pair programming in your terminal项目地址: https://gitcode.com/GitHub_Trending/ai/aider

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 18:07:05

CANN/ge:注册外部分配器API

RegisterExternalAllocator 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、…

作者头像 李华
网站建设 2026/9/10 18:06:48

Python入门避坑指南:从环境配置到实战项目全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 18:06:05

代码智能体怎么测才靠谱?PRDBench互评机制深度解析与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 18:05:29

GM(1,1)灰色预测模型:小样本时间序列的Python实战指南

简介&#xff1a;本资源是一套面向数据分析初学者与Python实践者的灰色预测模型入门实践包&#xff0c;聚焦小样本、含噪声、非平稳时间序列的建模与预测问题&#xff0c;特别适用于科研数据预研、课程实验及工程场景中的短期趋势推演。压缩包共6个文件&#xff08;5个Python脚…

作者头像 李华
网站建设 2026/9/10 18:04:40

职场新人必看:10个高效法则,让你快速适应并脱颖而出

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华