<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://aidy.singee.site/blog</id>
    <title>Aidy Blog</title>
    <updated>2026-06-03T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://aidy.singee.site/blog"/>
    <subtitle>Aidy Blog</subtitle>
    <icon>https://aidy.singee.site/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[v2.2]]></title>
        <id>https://aidy.singee.site/blog/v2.2</id>
        <link href="https://aidy.singee.site/blog/v2.2"/>
        <updated>2026-06-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AIDY v2.2 变更记录]]></summary>
        <content type="html"><![CDATA[<h3 class="anchor anchorWithStickyNavbar_loeA" id="合并-provider-至-upstream">合并 Provider 至 Upstream<a href="#合并-provider-至-upstream" class="hash-link" aria-label="合并 Provider 至 Upstream的直接链接" title="合并 Provider 至 Upstream的直接链接">​</a></h3><p>该版本起，aidy 已合并 Upstream 与 Provider 的语义（只保留 Upstream）。</p><table><thead><tr><th>原模型</th><th>新模型</th><th>变化</th></tr></thead><tbody><tr><td>upstream</td><td>upstream</td><td>保留<br>新增 <code>protocol</code> 字段</td></tr><tr><td>provider</td><td>-</td><td>删除<br>所有内容合并入 upstream</td></tr><tr><td>upstream.api_keys</td><td>upstream.api_keys</td><td>不变</td></tr><tr><td>upstream_models</td><td>upstream_models</td><td>保留<br>新增 <code>pricing</code> 字段</td></tr><tr><td>provider_pricing</td><td>-</td><td>删除<br>所有内容合并入 upstream_models</td></tr></tbody></table><p>在迁移的过程中，会尽可能保持原有数据，所有不存在于 upstream 而存在于 provider 的数据会被迁移固化到 upstream 中、迁移后不再和原 provider 产生关联。</p><p>不过 <code>compat</code> 是有损合并 —— 不过考虑到产线应该没有在使用这一能力，因此应该不会受到影响。</p><p>相关变更：</p><ol><li>所有之前使用 <code>provider_id</code> 关联的 provider 配置都在本次更新以后被写入 upstream、所有后续对于 upstream 的操作如果存在 <code>provider_id</code> 则都会自动将对应 provider 的配置写入 upstream；但这一关联现在开始只存在于 API 中，后续再修改 provider 的配置不会对 upstream 产生影响</li><li>Provider 及 ProviderPricing 相关的 API 预计在 aidy v2.3 完全删除</li><li>alias model 的价格现在需要独立配置，不再自动使用 <code>alias_to</code> 指向的 model 的定价（迁移时目前会执行一次性的关联迁移）</li><li>provider 的 <code>description</code> 字段无实际意义，因此未迁移到 upstream 中</li></ol><h3 class="anchor anchorWithStickyNavbar_loeA" id="废弃并忽略-headers">废弃并忽略 headers<a href="#废弃并忽略-headers" class="hash-link" aria-label="废弃并忽略 headers的直接链接" title="废弃并忽略 headers的直接链接">​</a></h3><p><code>upstream.headers</code>（与 <code>provider.headers</code>）从该版本起已标记为 deprecated，管理 API 不再写入或返回该字段，网关运行时也不再读取该字段。</p><p>如需配置最终发往 upstream 的请求头，请使用 <a href="/docs/request-header-overrides"><code>request_header_overrides</code></a>，它的能力更加丰富。</p><p>本次变更不会自动把旧的 <code>headers</code> 迁移到 <code>request_header_overrides</code> —— 但产线应该没有在使用这一能力，因此不会受到影响。</p><h3 class="anchor anchorWithStickyNavbar_loeA" id="新增-upstream-模型发现与测试-api">新增 upstream 模型发现与测试 API<a href="#新增-upstream-模型发现与测试-api" class="hash-link" aria-label="新增 upstream 模型发现与测试 API的直接链接" title="新增 upstream 模型发现与测试 API的直接链接">​</a></h3><p>Management API 的 <a href="/protodocs/aidy.v2.management.v1#UpstreamService">UpstreamService</a> 新增：</p><ol><li><a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-FetchUpstreamModels">FetchUpstreamModels</a>：通过已创建 upstream 的运行时配置请求上游 `/models`，获得可导入的模型候选</li><li><a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-FetchUpstreamModelsByConfig">FetchUpstreamModelsByConfig</a>：与 `FetchUpstreamModels` 功能相同，但适用于尚未创建 upstream 的情形</li><li><a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-TestUpstreamModel">TestUpstreamModel</a>：测试特定的 upstream 模型是否可用</li></ol><h3 class="anchor anchorWithStickyNavbar_loeA" id="ssrf-防护">SSRF 防护<a href="#ssrf-防护" class="hash-link" aria-label="SSRF 防护的直接链接" title="SSRF 防护的直接链接">​</a></h3><p>该版本增加了 SSRF 防护，且默认启用。</p><p>该功能通过限制 Aidy 发起的出站 HTTP 请求来避免 SSRF 攻击。防护在最终请求的 HTTP transport 层执行，覆盖运行时 upstream 请求，以及 <a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-FetchUpstreamModels">FetchUpstreamModels</a> / <a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-FetchUpstreamModelsByConfig">FetchUpstreamModelsByConfig</a> / <a href="/protodocs/aidy.v2.management.v1#rpc-UpstreamService-TestUpstreamModel">TestUpstreamModel</a>。</p><p>默认策略为启用防护、不允许访问私网地址、无黑白名单、允许所有端口。静态配置 <code>[upstream.ssrf_protection]</code> 提供全局默认策略，tenant 资源的 <code>ssrf_protection</code> 可以整套覆盖该默认策略。</p><p>如果 upstream 配置了生效代理 <code>proxy_url</code>，AIDY 会跳过 SSRF 检查，由代理侧承担网络访问控制。</p><p>详见 <a href="/docs/ssrf-protection">SSRF 防护</a>。</p>]]></content>
    </entry>
</feed>