<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>speed on speed documentation</title><link>https://speed.vislake.com/zh-cn/</link><description>Recent content in speed on speed documentation</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://speed.vislake.com/zh-cn/index.xml" rel="self" type="application/rss+xml"/><item><title>快速开始</title><link>https://speed.vislake.com/zh-cn/docs/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://speed.vislake.com/zh-cn/docs/quickstart/</guid><description>&lt;h1 id="快速开始"&gt;快速开始&lt;a class="anchor" href="#%e5%bf%ab%e9%80%9f%e5%bc%80%e5%a7%8b"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;blockquote class='book-hint note'&gt;&#10;&lt;p&gt;&lt;strong&gt;目前还没有任何发布物。&lt;/strong&gt; speed 的第一个正式 tag 要到里程碑 M4 才会&#10;出现（见&lt;a href="../status/"&gt;实现状态&lt;/a&gt;）；在那之前不存在&#10;&lt;code&gt;go get github.com/vislake/speed/...&lt;/code&gt;，也不存在从任何 registry&#10;&lt;code&gt;npm install @speed/...&lt;/code&gt;。下面这条路径——本地 checkout 加&#10;&lt;code&gt;go run&lt;/code&gt;——就是当下试用 speed 真实、现行的方式，不是对某个已发布流程&#10;的简化版本。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="1-克隆仓库"&gt;1. 克隆仓库&lt;a class="anchor" href="#1-%e5%85%8b%e9%9a%86%e4%bb%93%e5%ba%93"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git clone https://github.com/vislake/speed&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd speed&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;仓库根目录是一个 Go workspace（&lt;code&gt;go.work&lt;/code&gt;），不是一个 Go module——运行&#10;Go 命令时的注意事项见下文。&lt;/p&gt;&#10;&lt;h2 id="2-用-saasctl-new-生成一个起始项目"&gt;2. 用 &lt;code&gt;saasctl new&lt;/code&gt; 生成一个起始项目&lt;a class="anchor" href="#2-%e7%94%a8-saasctl-new-%e7%94%9f%e6%88%90%e4%b8%80%e4%b8%aa%e8%b5%b7%e5%a7%8b%e9%a1%b9%e7%9b%ae"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;saasctl&lt;/code&gt; 是 speed 面向业务方的 CLI：它从一棵内嵌的模板树中生成一个&#10;可直接启动的起始项目，而不是临时拼出一个骨架。可以直接在 checkout 里&#10;用 &lt;code&gt;go run&lt;/code&gt; 运行：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go run ./go/saasctl new ../my-app --speed-root .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;目标目录不能已经存在（或者必须是空目录）。生成项目的 &lt;code&gt;go.mod&lt;/code&gt; 里带有&#10;指向 &lt;code&gt;--speed-root&lt;/code&gt; 的 &lt;code&gt;replace&lt;/code&gt; 指令——这是每一个生成项目在第一个正式&#10;发布之前都会带有的过渡态形态，因为目前还没有任何按版本号可依赖的&#10;registry 条目。&lt;/p&gt;</description></item><item><title>模块索引</title><link>https://speed.vislake.com/zh-cn/docs/modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://speed.vislake.com/zh-cn/docs/modules/</guid><description>&lt;h1 id="模块索引"&gt;模块索引&lt;a class="anchor" href="#%e6%a8%a1%e5%9d%97%e7%b4%a2%e5%bc%95"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;speed 是一系列独立发布的 Go module 与 npm 包，不是一个应用程序。业务方&#10;项目按需接入其中的一部分。下表每一行都链接到该模块自己在仓库里的&#10;&lt;code&gt;AGENTS.md&lt;/code&gt; 或 &lt;code&gt;README.md&lt;/code&gt;——本站不保留模块文档的副本，所以链接始终&#10;指向最新的那一份。&lt;/p&gt;&#10;&lt;blockquote class='book-hint note'&gt;&#10;&lt;p&gt;这个页面列出的是&amp;quot;存在什么&amp;quot;，不是&amp;quot;什么已经被同等程度证明可靠&amp;quot;。凡事&#10;自己核实仍然是规则：仓库根 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的 Repository Status 一节（见&#10;&lt;a href="../ai-agents/"&gt;面向 AI Agent&lt;/a&gt;）才是&amp;quot;哪些模块今天真的能在 CI 里通过&#10;&lt;code&gt;go build&lt;/code&gt; / &lt;code&gt;go vet&lt;/code&gt; / &lt;code&gt;golangci-lint&lt;/code&gt; / &lt;code&gt;go test -race&lt;/code&gt;&amp;ldquo;的唯一权威&#10;来源——按 &lt;code&gt;fast-check.yml&lt;/code&gt; 自己的 &lt;code&gt;go-modules&lt;/code&gt; 矩阵，全部 21 个都在内，&#10;&lt;code&gt;go/admin&lt;/code&gt; 也不例外。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="go-modulego共-21-个"&gt;Go module（&lt;code&gt;go/&lt;/code&gt;，共 21 个）&lt;a class="anchor" href="#go-modulego%e5%85%b1-21-%e4%b8%aa"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;code&gt;go.work&lt;/code&gt; 里每一条 &lt;code&gt;use&lt;/code&gt; 对应下表一行。依赖关系严格自底向上——粗略的&#10;顺序见&lt;a href="../ai-agents/"&gt;面向 AI Agent&lt;/a&gt;。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;模块&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;是什么&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;文档&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;pkgcore&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;依赖的最底层：&lt;code&gt;Module&lt;/code&gt;/&lt;code&gt;Registry&lt;/code&gt;/&lt;code&gt;Kernel&lt;/code&gt; 装配契约、租户上下文原语、&lt;code&gt;apperr&lt;/code&gt;、seam registry 机制（&lt;code&gt;EventBus&lt;/code&gt;/&lt;code&gt;KVStore&lt;/code&gt;/&lt;code&gt;Mailer&lt;/code&gt;/&lt;code&gt;ObjectStore&lt;/code&gt;）、部署模式 preset，以及合并后的 i18n 消息目录。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/pkgcore/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;dbkit&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;双方言（SQLite/PostgreSQL）的 &lt;code&gt;*gorm.DB&lt;/code&gt; 封装：强制使用的泛型 &lt;code&gt;Repository[T]&lt;/code&gt;、带版本的迁移、字段级加密、支持精确匹配查询的盲索引、软删除/硬删除，以及审计捕获写插件。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/dbkit/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;tenancy&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;租户解析中间件、经过审计的 &lt;code&gt;WithSystemContext&lt;/code&gt; 逃生通道，以及所有其他模块的 repository 都必须跑的 &lt;code&gt;AssertIsolated&lt;/code&gt; / &lt;code&gt;AssertNotTenantScoped&lt;/code&gt; 测试套件。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/tenancy/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;observability&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;两种部署模式下的 OpenTelemetry 初始化、默认开启 PII/密钥脱敏的上下文感知结构化日志器，以及带基数上限的请求指标 HTTP 中间件。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/observability/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;config&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;动态配置：每个模块在注册时声明自己的配置 schema；配置值按 system→tenant 分层作用域、带缓存，Sensitive 项在静态存储时加密。提供登录页所需的两个免认证端点。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/config/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;jobs&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;两种部署模式共用的 &lt;code&gt;Queue&lt;/code&gt;/&lt;code&gt;Task&lt;/code&gt;/&lt;code&gt;Job&lt;/code&gt;/&lt;code&gt;Handler&lt;/code&gt; 契约：&lt;code&gt;StandaloneQueue&lt;/code&gt;（基于 SQLite 的进程内实现）与面向分布式模式的 Redis 实现，后者拆到独立子包，让只用 &lt;code&gt;StandaloneQueue&lt;/code&gt; 的消费者不必为它付出依赖代价。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/jobs/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ratelimit&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;一个基于 &lt;code&gt;KVStore&lt;/code&gt; 的限流器，被 &lt;code&gt;authn&lt;/code&gt;、&lt;code&gt;integration&lt;/code&gt; 等需要限制某件事发生频率的模块共用。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/ratelimit/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;pki&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;签名密钥与 X.509 证书生命周期：&lt;code&gt;Signer&lt;/code&gt; seam、内部 CA 签发、吊销、CRL 生成与 JWKS 导出。&lt;code&gt;authn&lt;/code&gt; 的 &lt;code&gt;KeySource&lt;/code&gt; 是它真实、API 已冻结的消费方；X.509/CA 那一层还没有真实消费方，这是一个有记录的已知例外。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/pki/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;authn&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;身份认证——回答&amp;quot;调用者是谁&amp;rdquo;，从不回答&amp;quot;可以做什么&amp;quot;。argon2id 密码、Ed25519 签名的访问令牌、一次性轮换的刷新令牌、TOTP 多因素认证，以及社交/企业单点登录（Google、GitHub、微信、钉钉、飞书、OIDC）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/authn/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;rbac&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;基于角色的访问控制，默认拒绝、精确匹配 &lt;code&gt;resource:action&lt;/code&gt;。刻意从不 import &lt;code&gt;authn&lt;/code&gt;——它看到的永远只是认证方组装好的 &lt;code&gt;Subject{TenantID, UserID}&lt;/code&gt;。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/rbac/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;org&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;一个租户的组织树（邻接表加物化路径）、绑定在其上的成员关系，以及创建这些成员关系的邀请流程。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/org/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;storage&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;租户对象存储：基于 &lt;code&gt;ObjectStore&lt;/code&gt; seam 的上传/完成/派生生命周期、结构化元数据剥离、缩略图派生，以及可崩溃收敛的删除加过期清扫。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/storage/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;notification&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;平台的消息通知层：业务模块声明进去的实时通知类型注册表、按用户的偏好设置、带 SSE 推送的站内信箱，以及经过同意验证的外部渠道投递（邮件/短信）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/notification/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;billing&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Plan/Feature/Grant/Entitlements、渠道无关的 Subscription/Invoice 生命周期、并发安全的信用点账本，以及真实的支付网关接入（Stripe、支付宝、微信支付）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/billing/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;metering&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;带两档可靠性的用量记录——失败即放行的分析级，以及基于 outbox、不会静默丢事件的计费级——两者最终汇聚到实时聚合计数器上。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/metering/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;sharing&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;公开分享链接：256 位 token、强制的默认过期时间、下一次访问检查即刻生效的吊销、完整的访问日志，以及无论拒绝原因是什么、对外表现完全一致的拒绝应答。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/sharing/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;integration&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;租户对外的 API 接入层：API key 签发与分层限流，以及带 HMAC 签名和二次 SSRF/DNS 重绑定防护的出站 webhook。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/integration/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;ai-gateway&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;与厂商无关的 LLM 对话与图像生成网关（&lt;code&gt;ChatProvider&lt;/code&gt;/&lt;code&gt;ImageProvider&lt;/code&gt; seam、零依赖的 OpenAI 兼容默认实现、按作用域分层加密存储的 BYOK 凭据）。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/ai-gateway/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;compliance&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按租户的保留期清扫、带已证明跨租户不擦除他人数据性质的即时&amp;quot;被遗忘权&amp;quot;擦除、经由 &lt;code&gt;sharing&lt;/code&gt; 的导出投递，以及只读的审计查询。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/compliance/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;admin&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;运维控制台后端：租户台账、带双重身份审计轨迹的完整模拟登录流程、跨租户用户搜索，以及只读的审计查询外壳。第二轮工作——角色管理、用量看板、按租户强制执行——尚未落地。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/admin/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;saasctl&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;面向业务方的 CLI——它的四个命令见&lt;a href="../quickstart/"&gt;快速开始&lt;/a&gt;。&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;a href="https://github.com/vislake/speed/blob/main/go/saasctl/AGENTS.md"&gt;AGENTS.md&lt;/a&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="web-包webpackages共-11-个加消费方壳应用"&gt;Web 包（&lt;code&gt;web/packages/&lt;/code&gt;，共 11 个）加消费方壳应用&lt;a class="anchor" href="#web-%e5%8c%85webpackages%e5%85%b1-11-%e4%b8%aa%e5%8a%a0%e6%b6%88%e8%b4%b9%e6%96%b9%e5%a3%b3%e5%ba%94%e7%94%a8"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;每一行是一个 &lt;code&gt;@speed/&lt;/code&gt; 作用域下的 npm 包，全部运行在同一个根目录为&#10;&lt;code&gt;web/&lt;/code&gt; 的 pnpm workspace 里。&lt;/p&gt;</description></item><item><title>面向 AI Agent</title><link>https://speed.vislake.com/zh-cn/docs/ai-agents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://speed.vislake.com/zh-cn/docs/ai-agents/</guid><description>&lt;h1 id="面向-ai-agent"&gt;面向 AI Agent&lt;a class="anchor" href="#%e9%9d%a2%e5%90%91-ai-agent"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;如果你是一个正在帮某人接入 speed 的编码 Agent，或者被指向本站作为&#10;上下文，这一页就是写给你的。speed 自己的文档规范把 Agent 和人类同等&#10;视为一等读者（见&#10;&lt;a href="https://github.com/vislake/speed/blob/main/docs/internal/13-documentation-standards.md"&gt;docs/internal/13&lt;/a&gt;，&#10;中文设计说明）——这一页与站点根部的 &lt;a href="https://speed.vislake.com/llms.txt"&gt;llms.txt&lt;/a&gt; 就是本站对&#10;这条规范的回应。&lt;/p&gt;&#10;&lt;h2 id="先按这个顺序读"&gt;先按这个顺序读&lt;a class="anchor" href="#%e5%85%88%e6%8c%89%e8%bf%99%e4%b8%aa%e9%a1%ba%e5%ba%8f%e8%af%bb"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/vislake/speed/blob/main/AGENTS.md"&gt;仓库根 &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/a&gt;&lt;/strong&gt;&#10;—— 面向任何 AI 编码工具的入门：顶层架构形态、模块依赖方向、最容易&#10;踩坑的规则，以及其余一切内容在哪里。写得可以在几分钟内从头读到尾。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;目标模块自己的 &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/strong&gt;（&lt;code&gt;go/&amp;lt;name&amp;gt;/AGENTS.md&lt;/code&gt; 或&#10;&lt;code&gt;web/packages/&amp;lt;name&amp;gt;/AGENTS.md&lt;/code&gt;）—— 模块特定的纪律、文件布局、&#10;已知限制、测试方式。完整清单和直达链接见&lt;a href="../modules/"&gt;模块索引&lt;/a&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="https://github.com/vislake/speed/blob/main/CLAUDE.md"&gt;仓库根 &lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/a&gt;&#10;的 Repository Status 一节&lt;/strong&gt; —— 见下文，这是你绝不能让它在自己的&#10;认知里过期的那一份。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="这东西到底有没有真正实现的唯一权威来源"&gt;&amp;ldquo;这东西到底有没有真正实现&amp;quot;的唯一权威来源&lt;a class="anchor" href="#%e8%bf%99%e4%b8%9c%e8%a5%bf%e5%88%b0%e5%ba%95%e6%9c%89%e6%b2%a1%e6%9c%89%e7%9c%9f%e6%ad%a3%e5%ae%9e%e7%8e%b0%e7%9a%84%e5%94%af%e4%b8%80%e6%9d%83%e5%a8%81%e6%9d%a5%e6%ba%90"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;blockquote class='book-hint warning'&gt;&#10;&lt;p&gt;仓库根 &lt;code&gt;CLAUDE.md&lt;/code&gt; 的 &lt;strong&gt;Repository Status&lt;/strong&gt; 一节，是&amp;quot;今天 CI 里到底&#10;真的能跑通并通过什么&amp;quot;这个问题唯一、权威、当前有效的答案。它逐模块&#10;指明：具体实现了什么、由哪个 CI 工作流验证（以及在什么触发条件下——&#10;每一个 PR、打了 &lt;code&gt;full-ci&lt;/code&gt; 标签的 PR、还是手动触发），以及哪些还只是&#10;占位的桩代码。这个静态站点没办法跟上那一节变化的速度——&lt;strong&gt;不要把本站&#10;上的任何内容当作阅读那一节的替代品&lt;/strong&gt;，任何状态断言（包括本站自己的&#10;&lt;a href="../status/"&gt;实现状态&lt;/a&gt;页面）在你没有对照它或对照仓库本身核实之前，&#10;都不要轻信。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;那一节自己陈述、这一页也重申的实用规则是：一个模块目录存在，不等于&#10;它背后有真正的代码——有些还只是一个 &lt;code&gt;go.mod&lt;/code&gt; 加一行 &lt;code&gt;doc.go&lt;/code&gt; 加一个&#10;指向设计文档的 &lt;code&gt;AGENTS.md&lt;/code&gt;。在依赖某个模块之前，先确认它不止是个桩。&lt;/p&gt;&#10;&lt;h2 id="最容易踩坑的架构规则"&gt;最容易踩坑的架构规则&lt;a class="anchor" href="#%e6%9c%80%e5%ae%b9%e6%98%93%e8%b8%a9%e5%9d%91%e7%9a%84%e6%9e%b6%e6%9e%84%e8%a7%84%e5%88%99"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;h3 id="模块依赖方向"&gt;模块依赖方向&lt;a class="anchor" href="#%e6%a8%a1%e5%9d%97%e4%be%9d%e8%b5%96%e6%96%b9%e5%90%91"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;依赖关系严格自底向上：&lt;/p&gt;</description></item><item><title>关于</title><link>https://speed.vislake.com/zh-cn/docs/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://speed.vislake.com/zh-cn/docs/about/</guid><description>&lt;h1 id="关于-speed"&gt;关于 speed&lt;a class="anchor" href="#%e5%85%b3%e4%ba%8e-speed"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;speed 是一个多租户 SaaS 产品家族的共享基础设施。它&lt;strong&gt;不是一个应用&#10;程序&lt;/strong&gt;：它是一组版本锁步、独立发布的 Go module 与 npm 包，由业务方&#10;项目接入后编译成单一的二进制文件。各模块在进程内互相调用——没有&#10;服务发现，也没有 Kubernetes 那一套基础设施。&lt;/p&gt;&#10;&lt;h2 id="整体形态"&gt;整体形态&lt;a class="anchor" href="#%e6%95%b4%e4%bd%93%e5%bd%a2%e6%80%81"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;方面&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;设计&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;依赖关系&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;严格自底向上：基础模块（&lt;code&gt;pkgcore&lt;/code&gt;、&lt;code&gt;dbkit&lt;/code&gt;、&lt;code&gt;observability&lt;/code&gt;、&lt;code&gt;ratelimit&lt;/code&gt;、&lt;code&gt;tenancy&lt;/code&gt;）支撑着上层的一切。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;部署模式与实现组合&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;两条正交的轴。每一个基础设施依赖都是一个接口，可以有多种实现（一种进程内实现，加上 PostgreSQL、Redis、S3 等外部实现）。&lt;strong&gt;部署模式&lt;/strong&gt;并不选择实现，它只约束实现：每个实现声明自己的能力，当某种组合无法在声明的模式下运行时，装配会失败。单进程部署可以连接真实的外部服务。业务代码从不对模式分支判断。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;多租户&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;共享数据库配合 &lt;code&gt;tenant_id&lt;/code&gt; 隔离，由 GORM 插件、强制使用的泛型 repository 基类，以及分布式模式下的 PostgreSQL 行级安全三重把关。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;版本管理&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;锁步版本：所有模块与包共享同一个版本号、一起发布；只支持相同版本号的组合。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="文档如何分发"&gt;文档如何分发&lt;a class="anchor" href="#%e6%96%87%e6%a1%a3%e5%a6%82%e4%bd%95%e5%88%86%e5%8f%91"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;每个模块都在自己内部带一份 &lt;code&gt;AGENTS.md&lt;/code&gt;——面向 AI 编码工具的速览：&#10;职责边界、公开 API、典型用法，以及明确的禁止事项——再加一份普通的&#10;&lt;code&gt;README.md&lt;/code&gt;，让文档随代码一起分发，并且始终与业务方实际拉取的版本&#10;保持一致。（每模块一份的 &lt;code&gt;docs/usage.md&lt;/code&gt; 是&#10;&lt;a href="https://github.com/vislake/speed/blob/main/docs/internal/13-documentation-standards.md"&gt;docs/internal/13&lt;/a&gt;&#10;记录的长期计划；截至本文写作，恰好只有一个模块 &lt;code&gt;go/notification&lt;/code&gt;&#10;建了这样一份——&#10;&lt;a href="https://github.com/vislake/speed/blob/main/go/notification/docs/usage.md"&gt;go/notification/docs/usage.md&lt;/a&gt;，&#10;其自己的文件头就说明这是写给其他模块参考的模板——其余每一个 Go&#10;module 和每一个 npm 包目前都还只靠自己的 &lt;code&gt;AGENTS.md&lt;/code&gt; 加&#10;&lt;code&gt;README.md&lt;/code&gt;。）本站是跨模块的&lt;em&gt;中心&lt;/em&gt;参考——完整索引见&#10;&lt;a href="../modules/"&gt;模块索引&lt;/a&gt;——计划按发布版本分目录，模块自己的文档会&#10;指向这里获取总览。&lt;/p&gt;&#10;&lt;h2 id="本站现状与计划的对照"&gt;本站现状与计划的对照&lt;a class="anchor" href="#%e6%9c%ac%e7%ab%99%e7%8e%b0%e7%8a%b6%e4%b8%8e%e8%ae%a1%e5%88%92%e7%9a%84%e5%af%b9%e7%85%a7"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;机制决策已经落定&lt;/strong&gt;：本站基于 &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; 和&#10;&lt;a href="https://github.com/alex-shpak/hugo-book"&gt;hugo-book&lt;/a&gt; 主题构建，把&#10;&lt;a href="https://github.com/vislake/speed/blob/main/docs/internal/13-documentation-standards.md"&gt;docs/internal/13-documentation-standards.md&lt;/a&gt;&#10;刻意推迟到 M4 的静态站点生成器决策提前落地——这与本仓库&#10;&lt;code&gt;storage&lt;/code&gt;/&lt;code&gt;notification&lt;/code&gt; 两个模块此前&amp;quot;提前排期落地&amp;quot;的先例是同一种&#10;模式。在候选主题之间选择 hugo-book 而不是 Docsy 的原因：Docsy 需要&#10;Hugo Modules 加一整套 Node/PostCSS 资源构建流水线（按其现行的安装&#10;文档，它的 Bootstrap 与 Font Awesome 资源来自 npm，且需要 PATH 上&#10;存在一个 Dart Sass 编译器），这会重新引入本目录此前一直刻意回避的&#10;Node 依赖，而 hugo-book 没有这个依赖——它现行的版本（v0.15.0）甚至&#10;去掉了更早版本里的 Sass 依赖——只需要 Hugo 这一个二进制本身。中英&#10;双语内容靠的是 &lt;strong&gt;Hugo 自身的多语言机制&lt;/strong&gt;，不是某个主题的功能：两个&#10;候选主题本可以同样好地满足 i18n 这条需求，因为无论是 Docsy 的&#10;Bootstrap 外观还是 hugo-book 朴素的外观，底下都是同一套 Hugo 核心的&#10;语言机制。&lt;/p&gt;</description></item><item><title>实现状态</title><link>https://speed.vislake.com/zh-cn/docs/status/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://speed.vislake.com/zh-cn/docs/status/</guid><description>&lt;h1 id="实现状态"&gt;实现状态&lt;a class="anchor" href="#%e5%ae%9e%e7%8e%b0%e7%8a%b6%e6%80%81"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;权威、始终最新的说法在仓库根&#10;&lt;a href="https://github.com/vislake/speed/blob/main/CLAUDE.md"&gt;CLAUDE.md&lt;/a&gt; 的&#10;Repository Status 一节，本页刻意不重复它——逐模块的重复统计只会在&#10;下一个模块下一轮落地的那一刻就开始过期。下面是在本页最后一次写作时&#10;对照真实仓库核实过的粗粒度快照；请把它当作一个方向性参考，而不是&#10;信息源本身。&lt;/p&gt;&#10;&lt;blockquote class='book-hint note'&gt;&#10;&lt;p&gt;&lt;strong&gt;用里程碑编号来描述状态已经不再是这里有用的框架&lt;/strong&gt; —— 实现进度早已&#10;远远超出本站最初跟踪的 M0 里程碑。规划中的模块图谱大部分已经落地；&#10;路线图的里程碑编号&#10;（&lt;a href="https://github.com/vislake/speed/blob/main/docs/internal/15-roadmap.md"&gt;docs/internal/15-roadmap.md&lt;/a&gt;）&#10;仍然记录着每个模块最初被排在哪一轮，但有几个模块的交付明显早于那个&#10;排期窗口。&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="今天真实存在的"&gt;今天真实存在的&lt;a class="anchor" href="#%e4%bb%8a%e5%a4%a9%e7%9c%9f%e5%ae%9e%e5%ad%98%e5%9c%a8%e7%9a%84"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;领域&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;状态&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Go module&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;根 &lt;code&gt;go.work&lt;/code&gt; 里列出的模块&lt;strong&gt;全部 21 个&lt;/strong&gt;都有真实、经过测试的实现——&lt;code&gt;go build&lt;/code&gt;、&lt;code&gt;go vet&lt;/code&gt;、&lt;code&gt;golangci-lint run ./...&lt;/code&gt; 和 &lt;code&gt;go test -race&lt;/code&gt; 全部通过。清单见&lt;a href="../modules/"&gt;模块索引&lt;/a&gt;。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Go 的 CI 覆盖&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;全部 &lt;strong&gt;21&lt;/strong&gt; 个模块都在 &lt;code&gt;fast-check.yml&lt;/code&gt;（每一个 pull request，加上每一次推送到 &lt;code&gt;main&lt;/code&gt;）里有自己的矩阵行——&lt;code&gt;golangci-lint&lt;/code&gt;、&lt;code&gt;go vet&lt;/code&gt;、开启 race 检测的单元测试、workspace 上下文构建，以及 &lt;code&gt;GOWORK=off&lt;/code&gt; 的独立构建，逐模块执行，&lt;code&gt;go/admin&lt;/code&gt; 也不例外。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;npm 包&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;web/packages/&lt;/code&gt; 下的 &lt;strong&gt;11&lt;/strong&gt; 个 &lt;code&gt;@speed/*&lt;/code&gt; 包，加上 reference app 自己的 web host 作为未纳入版本管理的第十二个 workspace 成员，都已实现、经过测试，lint/typecheck/build 全部干净通过。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;API 契约&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;六份 OpenAPI 片段（notes、org、authn、storage、notification、sharing）驱动 spec 先行的生成流程；其中三份（notes、authn、notification）汇入合并后的文档，同时生成 &lt;code&gt;@speed/api-sdk&lt;/code&gt; 前端。&lt;code&gt;admin&lt;/code&gt; 与 &lt;code&gt;pki&lt;/code&gt; 也各自有自己的片段，但还没有接入 &lt;code&gt;api-contract&lt;/code&gt; 流水线。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="ci-流水线"&gt;CI 流水线&lt;a class="anchor" href="#ci-%e6%b5%81%e6%b0%b4%e7%ba%bf"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;流水线&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;触发条件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;覆盖范围&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;fast-check.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每一个 pull request，加上每一次推送到 &lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;21 个模块矩阵的 lint、vet 与开启 race 检测的单元测试；11 个 npm 包加 reference-app web host 的 lint/typecheck/test/build；仓库级检查（&lt;code&gt;docs/internal&lt;/code&gt; 之外的 CJK 扫描、workspace 级构建、&lt;code&gt;go.work&lt;/code&gt; 漂移检测、架构纪律相关的 semgrep 规则）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;full-check.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;打了 &lt;code&gt;full-ci&lt;/code&gt; 标签的 PR，加上每一次推送到 &lt;code&gt;main&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;同一份模块矩阵，再加上基于 Docker 的 PostgreSQL/Redis/MinIO 集成测试层，以及 reference app 自己的组合式 HTTP 流程测试。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;docs-check.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;触碰文档或 i18n 资源的 PR&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;i18n key 集合的一致性（zh-CN 对 en-US），以及本站自己的结构检查（&lt;code&gt;tools/check_docs_site.py&lt;/code&gt;，现在对照一次真实的 &lt;code&gt;hugo build&lt;/code&gt; 产物执行）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;api-contract.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;触碰 API 契约工具链的 PR&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;从 OpenAPI spec 重新生成后端接口（对已合并的片段，同时重新生成前端 SDK），并重新构建 reference app，让没有对应实现的 spec 变更无法通过编译。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;security.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;每一个 PR，加上每天一次的定时任务&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;依赖审计、密钥扫描、CodeQL、许可证检查。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;release.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;仅手动触发&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;完全离线校验一份锁步、单一版本号的发布计划。目前没有接入任何发布凭据——真正的发布是更晚的 v1.0 里程碑。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;docs-site-deploy.yml&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;推送到 &lt;code&gt;main&lt;/code&gt; 且触碰 &lt;code&gt;docs/site/**&lt;/code&gt;，加上手动触发&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用 &lt;code&gt;hugo --minify&lt;/code&gt; 构建本站，把 &lt;code&gt;public/&lt;/code&gt; 部署到 GitHub Pages。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;code&gt;e2e.yml&lt;/code&gt;、&lt;code&gt;nightly.yml&lt;/code&gt; 与 &lt;code&gt;scaffold-verify.yml&lt;/code&gt; 目前是刻意保持&#10;门控关闭的桩，还没有在任何 pull request 上触发。&lt;/p&gt;</description></item></channel></rss>