2024-04-11

24 篇热帖

2. Apple alerts users in 92 nations to mercenary spyware attacks (techcrunch.com)

苹果向92个国家用户发出雇佣间谍软件攻击警报

  • 警报概况:苹果公司于周三太平洋时间中午12点,向全球92个国家的iPhone用户发送了威胁通知,警告他们可能已成为雇佣间谍软件攻击的目标。公司未透露攻击者身份或具体受影响国家。
  • 警报内容:通知明确告知用户,其iPhone因关联的Apple ID而被针对,攻击旨在远程入侵设备。苹果强调,此类攻击通常针对特定个人,并表示对此警告具有高度信心,要求用户严肃对待。
  • 历史背景:自2021年以来,苹果已向超过150个国家的用户发送过类似通知,且每年多次发出。值得注意的是,去年10月,苹果曾向印度部分记者和政治人物发出相同警告,后经国际特赦组织调查,在其iPhone上发现了以色列NSO集团的“飞马”间谍软件。
  • 攻击性质:苹果将此类攻击描述为“雇佣间谍软件攻击”,并称其利用如“飞马”等工具,异常罕见且技术远高于普通网络犯罪或消费级恶意软件。公司此前使用的“国家支持”表述已被替换。
  • 检测依据:苹果表示,其检测完全基于内部的威胁情报和调查。虽然调查无法达到绝对确定性,但公司发出的威胁通知属于高可信度警报,表明用户已被针对性攻击。
  • 关联背景:此次警报发出之时,正值多国筹备选举之际,近期科技公司也多次警告国家支持的干预选举行为有所增加。但苹果的警报未提及与此的关联。
  • 额外信息:文章末尾提及,用户可通过特定工具检查手机是否曾受到NSO“飞马”间谍软件的攻击。
3. Show HN: Sonauto – A more controllable AI music creator (sonauto.ai)

Sonauto:更可控的AI音乐创作工具

Sonauto 是一个AI音乐创作工具,旨在将用户的创意快速转化为歌曲。

核心功能

  • 快速创作:能在几秒钟内将任何想法或概念转化为一首完整的歌曲。
  • 长篇作品:最新预览版本 (v3) 支持生成时长最长可达4.5分钟的完整歌曲。
  • 风格多样:提供数千种新的音乐风格供用户选择和创作。

当前版本状态

  • 该功能目前处于 v3 预览阶段
  • 由于是预览版,有时可能会产生质量较低的结果
4. Mental health in software engineering (vadimkravcenko.com)

作者以亲身经历揭示了软件工程师行业中的心理健康问题,特别是在初创公司和高压力管理岗位中。文章描述,因工作压力与任务不确定性的增加,导致作者长期焦虑、失眠和最终心理崩溃。作者曾担任IT主管,面对不断变化的优先级、高压的产品交付、团队保护和管理、财务压力以及无限延长的工时和会议,逐步陷入心理困境。

心理健康在技术行业中存在复杂的社会污名,作者早期对心理疾病存在偏见,也不敢请假或寻求帮助。后来通过网络平台(如Reddit)获得暂时安慰,并逐渐认识到问题严重,最终寻求专业医疗帮助,获得诊断并开始恢复。作者强调,不应将过度工作或心理崩溃视为常态,也不应以牺牲个人健康为代价换取团队业绩或企业生存。

在面对多变与不合理的工作优先级时,作者曾选择亲自处理、保护团队、熬夜完成任务,结果加剧团队和个人的疲劳与压力。例如,CEO接连赋予优先级冲突的产品需求,要求“使命必达”却未考虑现实限制。

作者反思,理性分类任务优先级(如合规、合同、个人设定的),通过早期沟通、计划而非过度自我牺牲,可以缓解焦虑并提升工作与生活平衡。文章指出,越来越多公司倡导四天工作制、限制加班,系统性变革正在发生,个人可选择更健康的工作环境。

作者总结了一些有效的自我调节方法:早期识别压力和倦怠信号(如失眠、厌恶熟悉任务),学会说“不”、合理分配任务、不必事事亲力亲为、减少咖啡因摄入、保持定期运动、关闭手机通知等。同时,提升情商,关注团队成员的情感状态,倾听优先于即时解决问题。

专业心理健康支持(如咨询治疗)被证明是高回报的投资,个人不应独自承担心理压力。恢复过程是迭代的,偶尔犯错但能及时修正和调整。作者认为,团队成员的健康是企业最宝贵资产,软件代码可以重写,但人不可重塑。领导层若片面追求业绩而忽视员工心理,最终团队也会失去活力。

文章呼吁同行勇敢寻求帮助,尝试小变化,合理利用心理健康假期,并选择重视员工福祉的企业。最终,“我们最大的资产不是写下的代码,而是写代码的人本身。”

5. Transformers.js – Run Transformers directly in the browser (github.com)

Transformers.js 摘要

核心概述
Transformers.js 是一个在浏览器中直接运行 Transformer 模型的 JavaScript 库,无需后端服务器支持。它旨在提供与 Hugging Face 的 Python transformers 库等效的功能,允许用户通过相似的 API 运行相同的预训练模型,支持自然语言处理(NLP)、计算机视觉(CV)、音频处理和多模态任务等多种模态。

主要特性与功能

  1. 多模态任务支持

    • 自然语言处理:文本分类、命名实体识别、问答、文本生成、翻译等。
    • 计算机视觉:图像分类、目标检测、分割、深度估计等。
    • 音频:语音识别、音频分类、文本转语音等。
    • 多模态:嵌入、零样本分类与检测等。
  2. 技术实现

    • 使用 ONNX Runtime 在浏览器中执行模型推理。
    • 支持通过 🤗 Optimum 将 PyTorch、TensorFlow 或 JAX 模型转换为 ONNX 格式。
    • 提供 pipeline API,简化预处理、模型推理和后处理流程。
  3. 设备与性能优化

    • 默认使用 CPU(通过 WASM),可选 GPU 加速(通过 WebGPU,实验性功能)。
    • 支持模型量化(如 fp32fp16q8q4),以降低带宽和提升性能。
  4. 安装与使用

    • 可通过 NPM 安装:npm i @huggingface/transformers
    • 或通过 CDN 在浏览器中直接引入。
    • 提供代码示例,展示如何快速实现情感分析等任务。
  5. 自定义配置

    • 可配置本地模型路径、禁用远程模型加载、指定 ONNX WASM 文件路径等。
  6. 支持的任务与模型

    • 列出了大量已支持的任务(如文本分类、图像分割、语音识别等)和对应的模型架构(如 BERT、GPT-2、Whisper、ViT 等)。
    • 任务支持状态明确标注(✅/❌),方便用户查询。

总结
Transformers.js 使得在浏览器中直接运行先进的机器学习模型成为可能,降低了对服务器的依赖,适合开发低延迟、隐私友好的 Web 应用。其简洁的 API 和广泛的模型支持使其成为 Web 端机器学习应用的实用工具。

6. Why can't my mom email me? (matduggan.com)

文章摘要

本文作者调查了使用Proton邮箱的朋友和母亲无法向其发送普通邮件,反而导致邮件被加密成空白正文的问题。

问题现象

作者习惯使用Fastmail邮箱(域名自托管),近期发现来自Proton用户的邮件收件箱中出现大量加密的空白邮件。经检查,这些邮件被PGP加密,但作者从未设置或期望接收加密邮件。即使测试其工作邮箱(托管于Google Workspaces)也出现同样问题,令人困惑。

调查与发现

  1. Proton的加密机制:Proton为用户提供便捷的端到端加密邮件体验,使用非对称PGP密钥对。它通过键透明度(Key Transparency)技术和密钥服务器查找收件人公钥。
  2. 密钥分类:Proton密钥分为用户密钥、地址密钥等。对于Proton用户间通信,系统可自动查找地址密钥。
  3. 关键线索:WKD(OpenPGP Web Key Directory):作者在Proton的技术白皮书中发现,对于非Proton地址(外部地址),系统可能会尝试通过WKD协议查找公钥。WKD是一个IETF草案标准,允许通过邮件地址查询OpenPGP公钥。
  4. 问题根源:作者发现自己的PGP公钥在keys.openpgp.org(一个支持WKD的公钥服务器)上可用。即使作者未主动设置CNAME记录将其域名指向该服务器,Proton似乎默认会对所有在keys.openpgp.org上能找到公钥的外部收件人自动启用邮件加密

解决方案与作者质疑

  • 作者通过keys.openpgp.org的管理页面移除了自己的公钥,问题随即解决。
  • 作者质疑Proton的这一默认行为:在没有明确征得用户同意(例如通过设置CNAME主动声明)的情况下,仅因公钥存在就自动加密发送至外部地址的邮件,这可能导致邮件无法被正常阅读。作者认为这并非理想的设计。
7. Code search is hard (blog.val.town)

Val Town 的搜索功能基于 PostgreSQL 的 ILIKE 子字符串匹配,缺乏排序且对多词查询支持不佳,这是用户最期待改进的功能之一。在研究过程中,团队发现主流搜索方案针对自然语言设计,不适用于代码搜索。

代码搜索与自然语言搜索的差异 自然语言搜索通常包含以下处理,但会对代码搜索造成破坏:

  • 停用词移除:代码中的 the 等词可能是变量名,不应被移除。
  • 词干提取:代码函数名或标识符不应被还原为词根。
  • 同义词替换:代码中的术语需要精确匹配。 这些处理导致索引结果与原始代码严重不符,例如 PostgreSQL 的 to_tsvector 无法正确处理代码结构。

当前探索的方案

  1. PostgreSQL 全文搜索(FTS)
    • 优点:可保持基础设施简单,充分利用现有数据库。
    • 缺点:在大规模数据下可能遇到性能瓶颈,且缺乏代码搜索的成功案例。
  2. pg_trgm 三元组搜索
    • 已作为临时方案软启动,基于 GIN 索引实现。
    • 适用于正则表达式搜索,但对自由文本搜索的排序效果不佳。
    • 参考了 Google Code Search 和 GitHub 等使用的三元组索引技术。

候选方案评估

方案 架构 语言 关注点
Meilisearch 独立服务 Rust 强调低延迟,扩展性存疑
Typesense 独立服务 C++ -
Zoekt 独立服务 Go 专注代码搜索,基础设施负担大
ParadeDB Postgres 扩展 Rust 暂无法在 Render 上使用
Elasticsearch 独立服务 Java 高度可定制,但需额外运维和存储

挑战与结论

  • 代码搜索的特殊性增加了难度,商业公司(如 GitHub、Sourcegraph)通常依赖定制化闭源方案。
  • 小团队需权衡基础设施复杂性:倾向于保持 PostgreSQL 的核心地位,避免引入过多依赖。
  • 目前尚未找到完美解决方案,仍在探索中,重点关注扩展性、排序合理性和维护成本。
10. Stacking triangles for fun and profit (www.oranlooney.com)

文章探讨了三角函数正弦(sin)和余弦(cos)的不同定义方式,并指出在数学教学中常用的分析定义(如泰勒级数、微分方程初值问题、欧拉公式)与直观的几何三角比定义(直角三角形的对边/斜边、邻边/斜边)相比,虽然理论等价,但却缺乏直观性和教学上的连续性。因此作者建议从几何出发,基于三角比定义,通过叠加和构造三角形来推导角的和公式、进而衍生出其它主要结果。

主要内容和推导步骤:

  1. 三角函数的分析与几何定义对比

    • 传统分析定义(如sin(x) 的系列展开、作为某微分方程的解等)虽然等价,但缺乏直观性,难以直接让学生感知三角函数的本质。
    • 几何定义则直接与直角三角形相关,贴近学生直觉。
  2. 几何方式推导角的和公式

    • 通过叠加两个直角三角形(分别对应两个角α和β),构建辅助线和点,逐步得到角α+β的三角形。
    • 运用三角比定义标注各边长度,借助平行和相等关系,最终得出:
      • $\cos(\alpha+\beta) = \cos(\alpha)\cos(\beta) - \sin(\alpha)\sin(\beta)$
      • $\sin(\alpha+\beta) = \sin(\alpha)\cos(\beta) + \cos(\alpha)\sin(\beta)$
    • 该过程仅依赖直角三角形基本性质和三角比定义,完全几何化。
  3. 利用角的和公式推导皮塔哥拉斯定理(单位圆)

    • 令$\theta$与$-\theta$相加,代入角的和公式,得到$\sin^2(\theta) + \cos^2(\theta) = 1$。
    • 展示正弦与余弦在单位圆上的轨迹,总是满足上述等式。
  4. 推导导数(微分)

    • 通过角的和公式,结合极限定义,得出导数关系:
      • $\frac{d}{dx}\sin(x) = \cos(x)$
      • $\frac{d}{dx}\cos(x) = -\sin(x)$
    • 进一步迭代可得二阶导数及系列展开(马克劳林展开式),联系分析定义。
  5. 弧长公式的几何解释

    • 将单位圆参数化为 $x(t) = \cos(t)$、$y(t) = \sin(t)$,计算弧长,得出:
      • $L = \int_{0}^{\theta} \sqrt{(\sin^2(t) + \cos^2(t))} dt = \theta$。
    • 说明参数$t$(角度)直接等同于弧长(以弧度计),实现几何与分析定义的联系。
  6. 符号与角度标注

    • 详细介绍了三角形、角的标准标记法,便于在复杂图形中准确定位。
  7. 教学建议与哲学

    • 作者主张应先建立直观的几何基础,避免“倒退”式的分析法切入,使学生能够真正理解三角函数的产生与发展。
    • 推荐通过"堆叠三角形"方法,直观地建立三角函数分析性质,增强学习动机。

本质上,文章通过严格的几何推理,将三角函数的所有主流分析性质:角的和公式、皮塔哥拉斯定理、导数、弧长公式等,全部定位为几何三角比的自然推论,强调了几何与分析视角的互通与教学上的优越性。

12. Quantum Algorithms for Lattice Problems (eprint.iacr.org)

标题:量子格问题算法

作者:陈一雷(清华大学、上海人工智能实验室、上海期智研究院)

摘要核心内容: 论文初始提出了一种多项式时间量子算法,用于解决具有特定多项式模噪声比的容错学习问题(LWE)。结合Regev(2009)从格问题到LWE的归约,该算法声称能够解决所有n维格上的决策最短向量问题(GapSVP)和最短独立向量问题(SIVP),近似因子达到 $\tilde{\Omega}(n^{4.5})$。此前,没有已知的多项式甚至亚指数时间量子算法能在任何多项式近似因子下解决所有格的GapSVP或SIVP。

关键技术创新: 为开发LWE量子算法,论文主要引入了两项新技术:

  1. 复数方差的高斯函数:在量子算法设计中利用离散傅里叶变换中复高斯函数的特性(特别是其“孤子波”特征)。
  2. 带复高斯窗函数的窗口量子傅里叶变换:允许结合时域和频域的信息。

算法流程: 利用上述技术,算法将LWE实例转换为具有纯虚数高斯振幅的量子态,然后将这些量子态转换为关于LWE秘密项和错误项的经典线性方程,最后通过高斯消元法求解线性方程组。

重要更正与更新: 论文在2024年4月18日进行了关键更新:作者发现算法第9步存在一个无法修复的错误(详见第37页第3.5.9节)。因此,原先声称的关于在多项式模噪声比下用多项式时间量子算法解决LWE的主张不再成立

现状与展望: 作者保留了论文其余内容,并澄清了第8步的一个操作,期望“复数高斯”和“窗口量子傅里叶变换”等想法能在量子计算的其他应用中找到用武之地,或能以其他方式应用于LWE问题。

13. Implementation of Google's Griffin Architecture – RNN LLM (github.com)

RecurrentGemma 是 Google DeepMind 推出的基于创新 Griffin 架构的开源权重语言模型系列。该架构通过用局部注意力和线性递归的组合替代全局注意力,在生成长序列时实现了快速推理。

本仓库包含模型的实现代码以及用于采样和微调的示例。我们推荐大多数用户采用高度优化的 Flax 实现,同时也提供了未经优化的 PyTorch 实现以供参考。

快速开始

  • 安装:项目使用 Poetry 进行依赖管理。可通过 poetry install -E full 安装完整依赖。也可选择使用 pip install .[full]。可分别安装 JAX (.[jax])、PyTorch (.[torch]) 或测试 (.[test]) 相关的依赖包。
  • 模型下载:模型检查点可通过 Kaggle 下载(地址:http://kaggle.com/models/google/recurrentgemma)。下载对应 Flax 或 PyTorch 版本的模型压缩包并解压,其中包含模型权重和分词器。
  • 运行示例:使用示例采样脚本(如 examples/sampling_jax.py)时,需指定解压后的权重目录和分词器路径。
  • Colab 教程:仓库提供多个 Colab 笔记本,涵盖使用 JAX/PyTorch 进行采样以及使用 JAX 进行微调的教程。运行前需接受 Gemma 许可条款。教程在不同硬件(T4, P100, V100, A100, TPUv2, TPUv3+)上的支持情况详见原文表格。

系统要求

RecurrentGemma 代码可在 CPU、GPU 或 TPU 上运行。其中,针对 TPU 使用 Flax 实现进行了优化,该实现包含了用于执行递归层线性扫描的低级 Pallas 内核。

贡献与许可

欢迎提交错误报告和问题,贡献详情请见 CONTRIBUTING.md。项目代码在 Apache License 2.0 许可下发布。请注意,这并非谷歌官方产品。

15. ESA satellites to test razor-sharp formation flying (spectrum.ieee.org)

ESA发射Proba-3卫星以测试精密编队飞行技术

任务概述 欧洲航天局(ESA)将于2024年9月发射Proba-3任务,由两颗卫星组成:重300公斤的“日冕仪”(Coronagraph)卫星和重250公斤的“遮光体”(Occulter)卫星。它们将搭乘印度PSLV火箭进入一个高度椭圆的轨道(近地点600公里,远地点60,530公里)。任务核心目标是通过两颗卫星相距约144米的精密编队飞行,使遮光体卫星在太空中为人造日食,让日冕仪卫星能够观测被遮挡后的太阳日冕。

科学目标与历史背景 历史上,日食为重大科学发现提供了契机,例如氦元素的首次发现和爱因斯坦广义相对论的早期验证。Proba-3的科学目标是通过ASPIICS日冕仪研究太阳日冕为何比太阳表面更热,从而增进对太阳的理解并改进空间天气预测。

关键技术实现 实现毫米级精度的编队飞行是任务的技术核心,这将为未来更复杂的太空任务奠定基础。两颗卫星将使用多种技术协同定位:

  1. 基础通信与定位:通过星间无线电链路通信,利用星敏感器确定姿态,在近地点附近通过GNSS(如GPS)接收信号结合专用相对导航算法进行位置确定。
  2. 光学与激光测距:遮光体卫星上的光学传感器通过观测日冕仪卫星上脉冲LED进行初步相对定位。为达到毫米级精度,遮光体卫星将向日冕仪卫星上的角反射器发射激光,通过激光测距法精确跟踪两者的相对位置和姿态。
  3. 精密控制:遮光体卫星将利用其搭载的毫牛级冷气推进器,根据测得的数据进行精密的位置和姿态控制,以维持编队构型。

潜在应用与未来展望 Proba-3验证的精密编队飞行技术具有广泛的应用前景:

  • 太空望远镜:用于遮挡恒星光芒以直接观测系外行星。
  • 大型天文台:通过卫星星座干涉测量,构建比单一大型卫星孔径更大、焦距更长的太空观测系统。
  • 其他任务:包括地球观测、空间引力波探测,以及交会对接、在轨服务等需要多航天器协作的任务。

ESA技术、工程与质量总监Dietmar Pilz指出,Proba-3的首要任务是验证编队飞行的操作可行性和所能达到的距离,这需要所有合作伙伴在操作专业知识和软件方面的通力合作。

若任务成功,Proba-3不仅能超越以往太空日冕仪的观测成果,还将为未来更复杂的太空操作开辟道路。

16. Roll-to-roll fabricated perovskite solar cells under ambient room conditions (www.nature.com)

研究概述

本文报道了在环境室温条件下,首次实现全卷对卷印刷制备钙钛矿太阳能电池组件的技术突破。该研究通过开发一系列创新工艺和材料,成功解决了钙钛矿光伏技术从实验室走向规模化制造的关键挑战。

核心创新点

1. 可印刷碳电极替代真空电极

  • 开发了适用于钙钛矿的碳基导电油墨,替代了传统成本高昂的真空蒸镀金属电极(如金)。
  • 该碳电极可通过卷对卷工艺直接印刷,显著降低了材料与制造成本。

2. 改进的钙钛矿薄膜沉积工艺

  • 采用并优化了“印刷友好型顺序沉积法”,实现了在环境湿度(40-60% RH)下稳定制备高质量钙钛矿薄膜。
  • 引入“边缘吹扫技术”,通过控制气流角度,在连续卷对卷生产中形成均匀、无缺陷的钙钛矿层。

3. 高效稳定的空穴传输层

  • 采用HTAB-P3HT复合空穴传输层,通过自组装形成超薄界面钝化层,提升了器件效率与稳定性。
  • 该传输层可通过卷对卷狭缝涂布精确沉积,适合规模化生产。

4. 全自动化高通量研发平台

  • 建立了可编程的卷对卷狭缝涂布系统,单日可制备数千个独特的研究电池。
  • 开发了自动测试系统,每日可完成超过一万个电池的光电性能表征,极大加速了工艺参数优化。

关键实验结果

  • 小面积电池:在环境条件下全卷对卷制备的单电池,经认证的功率转换效率达到15.5%,为全印刷钙钛矿电池的最高纪录。
  • 大面积组件:在商业基板上成功制备了活性面积约50 cm²的五联串组件,最高效率达到11.0%(基于活性面积)。
  • 工艺稳健性:在未经严格控制的环境湿度(高达60% RH)下,仍能稳定生产平均效率约13%的电池。

成本与前景分析

  • 基于材料与工艺的成本模型分析显示,采用全印刷工艺的钙钛矿组件生产成本可降至约0.7 美元/峰瓦
  • 未来通过替换剩余的高成本组件(如商用透明电极和银栅线),成本有望进一步降至0.5 美元/峰瓦以下。
  • 虽然当前成本仍高于晶硅光伏,但其轻量、柔性的特点使其在便携式光伏、建筑一体化光伏等新兴市场具有应用潜力。

结论

这项工作首次实现了包括背电极在内的全卷对卷印刷钙钛矿太阳能电池组件,证明了在环境条件下进行低成本、高通量规模化生产的可行性。该技术在效率、稳定性和制造成本方面均取得了重要进展,为钙钛矿光伏的商业化开辟了新路径。

18. Udio: Generate music in your favorite styles with a text prompt (twitter.com)

错误信息摘要: 发生错误,但建议不要担心,可以再次尝试。该问题可能由x.com上的隐私相关扩展导致。为了解决此问题,请禁用这些扩展并重新尝试操作。

19. Pylyzer – A fast static code analyzer and language server for Python (github.com)

Pylyzer 是一个用 Rust 编写的 Python 静态代码分析器与语言服务器。目前该项目处于维护阶段,仅修复错误,不再添加新功能。作者正与 astral-sh/ty 项目合作开发,建议用户转而尝试该工具。

安装

  • 通过 pip install pylyzer 安装。
  • 通过 Rust 包管理器 cargo install pylyzer --locked
  • 从源码构建:克隆仓库后使用 cargo install --path . --locked
  • 从 GitHub Releases 页面下载。
  • 安装需确保 Rust 工具链为最新版本。

使用方式

  • 检查单个或多个文件,支持 glob 模式。
  • 检查整个包:若不指定路径,将自动查找入口点。
  • 启动语言服务器:供支持 LSP 的编辑器调用。

主要优势

  • 性能卓越:平均比 pytype 和 pyright 快 100 倍以上,得益于 Rust 实现。
  • 报告可读性强:错误信息清晰,明确指出错误位置。
  • 丰富的 LSP 功能:支持代码补全、重命名等,基于 Erg 语言服务器(ELS)适配。

VSCode 扩展 可通过 VS Code Marketplace 或命令行安装。

与 Ruff 的区别 Ruff 是 lint 和格式化工具,而 Pylyzer 是类型检查器和语言服务器,两者功能互补。

工作原理 内部使用 Erg 编程语言的类型检查器。它将 Python AST 转换为 Erg AST,利用 Erg 的静态类型系统进行检查,并对结果进行适配后输出。

局限性

  • 仅支持可能静态类型化的代码,无法检查使用 execsetattr 等反射的代码。
  • 对 Python 标准 API 的类型声明不完整,可能出现 API 不存在的误报。
  • 类型检查较为保守,可能产生较多误报错误,建议编辑器中关闭诊断功能。

待办事项 类型检查、类型推断、模块分析、LSP 功能、集合类型、typing 支持、类型断言/收窄、stub 文件、虚拟环境支持、包管理器支持等多项功能仍处于开发或完善中。

贡献邀请 欢迎通过 Discord(Erg 语言社区)或 GitHub Discussions 加入贡献。

21. Aider: AI pair programming in your terminal (github.com)

Aider: 终端中的AI结对编程工具

Aider 是一款允许用户与大型语言模型进行结对编程的工具,可用于启动新项目或在现有代码库上构建。

主要功能

  • 广泛的LLM支持:最佳适配 Claude 3.7 Sonnet、DeepSeek R1 & Chat V3、OpenAI o1、o3-mini 和 GPT-4o,同时支持连接几乎所有其他LLM,包括本地模型。
  • 代码库映射:为整个代码库创建地图,有助于在大型项目中高效工作。
  • 多语言支持:支持100多种编程语言,包括 Python、JavaScript、Rust、Ruby、Go、C++、PHP、HTML、CSS 等。
  • 深度Git集成:自动生成合理的提交信息并提交更改,可使用熟悉的 Git 工具来对比、管理和撤销AI的更改。
  • IDE集成:可在喜爱的IDE或编辑器中使用,通过向代码添加注释来请求更改。
  • 多模态输入:支持在聊天中添加图片和网页,以提供视觉上下文、截图或参考文档。
  • 语音编程:支持通过语音与Aider对话,请求新功能、测试用例或错误修复。
  • 自动检查与测试:每次AI更改后自动进行代码检查(linting)和测试,并能修复发现的问题。
  • 网页聊天集成:可通过任何LLM的网页聊天界面工作,简化了代码上下文和编辑的复制粘贴流程。

快速开始

# 安装
python -m pip install aider-install
aider-install

# 进入你的项目目录
cd /to/your/project

# 使用 DeepSeek 模型启动
aider --model deepseek --api-key deepseek=<key>

# 使用 Claude 3.7 Sonnet 模型启动
aider --model sonnet --api-key anthropic=<key>

# 使用 o3-mini 模型启动
aider --model o3-mini --api-key openai=<key>

用户反响

Aider 收到了众多开发者的高度评价,普遍认为它极大地提高了编程生产力,改变了日常工作流,被誉为最佳、最免费的开源AI编码助手之一。用户称赞其精准、高效,如同有高级开发者在 Git 仓库中提供实时协助。

资源与社区

  • 文档:包含安装指南、使用指南、教程视频、连接LLM、配置选项、故障排除和常见问题。
  • 社区:GitHub仓库、Discord社区、发布说明和博客。
  • 其他:提供LLM排行榜等参考信息。