内容
<div align="center">
<img src="docs/assets/readme-home.png" alt="releases.sh — 最新产品发布,索引代理" width="760">
<h1>发布记录</h1>
**最新产品发布,索引代理。**
一个来自网络各处的发布说明注册表 — 从供应商的变更日志中提取,
标准化为一个模式,总结,并可以从您的终端、代码或任何MCP客户端查询。您可以和您的代理阅读。
<p>
<a href="https://releases.sh"><b>releases.sh</b></a> ·
<a href="https://github.com/buildinternet/releases-cli"><b>CLI 仓库 →</b></a> ·
<a href="#use-it">使用它</a> ·
<a href="#whats-in-this-repo">此仓库内容</a> ·
<a href="#local-development">开发</a>
</p>
<p>
<a href="https://github.com/buildinternet/releases/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/buildinternet/releases/actions/workflows/ci.yml/badge.svg"></a>
<a href="https://github.com/buildinternet/releases-cli"><img alt="CLI 仓库" src="https://img.shields.io/badge/CLI-buildinternet%2Freleases--cli-24292e?logo=github"></a>
<a href="https://www.npmjs.com/package/@buildinternet/releases"><img alt="npm (CLI)" src="https://img.shields.io/npm/v/@buildinternet/releases?color=cb3837&label=%40buildinternet%2Freleases&logo=npm"></a>
<a href="https://registry.modelcontextprotocol.io/v0.1/servers?search=sh.releases/mcp"><img alt="MCP 服务器" src="https://img.shields.io/badge/exposes-MCP_server-000"></a>
<a href="LICENSE"><img alt="许可证:Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue"></a>
</p>
<p><sub>
此仓库是 <a href="https://releases.sh">releases.sh</a> 的<b>后端</b>(API · MCP · 网页 · 导入)。
用户面向的命令行工具位于其自己的仓库 →
<a href="https://github.com/buildinternet/releases-cli"><b>buildinternet/releases-cli</b></a>。
</sub></p>
</div>
---
## 这是什么?
"有什么变化?" 是特工和开发人员经常问的问题 — 在升级之前,事件发生后,当工具突然表现不同时。答案分散在GitHub发布、RSS订阅源、变更日志页面和博客文章中,格式各不相同。
**发布记录** 将这些收集到一个注册表中。它监视开发人员实际依赖的供应商的数百个来源,并为每个发布存储原始内容以及AI生成的标题、摘要和重大变更分类。每个组织都可以维护最近发布的概述。人类阅读的网页和代理获取的JSON是相同的内容。
此仓库是 [releases.sh](https://releases.sh) 的规范部署的源代码:API工作器(权威数据平面),MCP服务器,网页前端和导入管道 + 代理运行,以保持注册表的新鲜度。用户面向的CLI单独发布到 [buildinternet/releases-cli](https://github.com/buildinternet/releases-cli)(npm + Homebrew)。
## 使用它
读取不需要帐户或API密钥 — 所有四个接口都是公开的。
**MCP** — 在 `mcp.releases.sh` 上托管,在
[MCP 注册表](https://registry.modelcontextprotocol.io/v0.1/servers?search=sh.releases/mcp)
中列为 `sh.releases/mcp`:
```bash
claude mcp add --transport http releases https://mcp.releases.sh/mcp # Claude Code
codex mcp add releases --url https://mcp.releases.sh/mcp # Codex
npx -y mcp-remote https://mcp.releases.sh/mcp # stdio bridge (VS Code, Zed, …)
```
**CLI** — 通过npx一次性,或 `brew install buildinternet/tap/releases`:
```bash
npx @buildinternet/releases get anthropic # Anthropic 最近发布了什么?
npx @buildinternet/releases search "MCP" # 跨每个供应商搜索
```
**REST API** — 在 `api.releases.sh` 上的公共GET端点,规范在
[/v1/openapi.json](https://api.releases.sh/v1/openapi.json):
```bash
curl "https://api.releases.sh/v1/releases/latest?limit=5"
```
**代理技能** — 将已发布的技能安装到任何代理(Claude Code /
Codex / Cursor / OpenCode)而无需检查任何内容:
```bash
npx skills add buildinternet/releases-cli
```
从
[releases.sh/llms.txt](https://releases.sh/llms.txt) 开始使用产品代理;
完整的MCP工具目录和身份验证模型位于 [docs/architecture/mcp.md](docs/architecture/mcp.md)。
创建 [免费帐户](https://releases.sh/signup) 可以解锁更高的速率限制(在 [releases.sh/account](https://releases.sh/account) 中铸造API密钥),
以及关注、个性化订阅源、Webhook和电子邮件摘要。
<div align="center">
<img src="docs/assets/readme-org.png" alt="组织页面:AI维护的最近发布概述、源列表和JSON/Markdown/Atom导出" width="700">
<br>
<sub>每个组织页面都带有AI维护的概述,并导出为JSON、Markdown或Atom。</sub>
</div>
## 此仓库中有什么?
| 路径 | 内容 |
| -------------------- | --------------------------------------------------------------------------------------------- |
| `workers/api/` | Cloudflare D1上的Hono API — 权威数据平面 |
| `workers/mcp/` | `mcp.releases.sh` 上的远程MCP服务器 |
| `workers/discovery/` | Durable-Object 代理会话编排 |
| `workers/webhooks/` | 签名 + 投递 `release.created` 事件(HMAC-SHA256,重试/DLQ)— [文档](docs/webhooks.md) |
| `web/` | Next.js 前端,部署在 Vercel 上 |
| `packages/` | 共享代码 — `core` + `api-types` 发布到npm;其余是私有工作区 |
| `src/agent/` | 托管代理的发现 + 工作器运行(提示生成器 + 共享类型) |
| `.claude/` | Claude Code 配置 — `skills/` (规范技能首页),`agents/`,`commands/`,`workflows/` |
它如何组合在一起:
- **存储** — Cloudflare D1(FTS5 + Vectorize)。API工作器是唯一的数据平面。
- **导入** — GitHub Releases、RSS/Atom/JSON订阅源和无订阅源页面的浏览器渲染的适配器(`packages/adapters/`)。爬虫使用Cloudflare验证的机器人签名外部获取(RFC 9421)。
- **AI** — 变更日志解析、摘要、分组和组织概述在API工作器中作为直接Anthropic SDK调用运行。
- **代理** — 发现 + 工作器作为Anthropic托管的托管代理运行;当其源代码更改时,定义会自动部署。
## 贡献者思维模型
此仓库有四种代码:
| 区域 | 路径 | 需要了解 |
| ------------------ | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| 产品表面 | `workers/api/`,`workers/mcp/`,`workers/webhooks/`,`web/` | API工作器是数据平面。Web、MCP、CLI和Webhook读取或路由通过它。 |
| 共享包 | `packages/core/`,`packages/api-types/`,私有 `packages/*` | `core`拥有模式和纯助手;`api-types`拥有线路形状。更改这些首先当共享合同移动时。 |
| 托管操作 | `workers/discovery/`,`managed-agents/`,`.claude/skills/`,`.claude/workflows/` | 这些为规范的releases.sh导入和操作循环提供支持。一些路径需要托管凭证,但本地工作不需要。 |
| 历史背景 | `docs/architecture/`,`docs/plans/`,`docs/superpowers/` | 架构文档是维护的参考资料。计划和规格是时间点设计历史。 |
对于普通贡献,从 `bun run bootstrap`,`bun run check` 和
`bun test` 开始。您不需要生产Cloudflare、Anthropic、Vercel、电子邮件或Firecrawl访问即可在此核心循环上工作。如果您尝试分叉或
自我托管完整服务,请阅读
[deploy-coupling.md](docs/architecture/deploy-coupling.md)。
每个包的详细信息和项目约定位于 [AGENTS.md](AGENTS.md) —
在此仓库中工作的代理入口点。架构深入解析位于
[docs/architecture/](docs/architecture/),并在
[docs/README.md](docs/README.md) 中有读者指南。
## 本地开发
**先决条件:** [Bun](https://bun.sh)。核心循环不需要外部帐户:
```bash
bun run bootstrap # 一键设置:工具、依赖、环境文件、本地D1
bun run doctor # 诊断设置 — 报告缺少的内容以及如何修复
bun run check # lint + 类型检查 + 格式化(CI网关)
bun test # 完整的测试套件,无需密钥
bun run dev:api # 本地D1上的API工作器
bun run dev:web # Next.js前端
```
`bootstrap` 是幂等的(安全地重新运行;从不覆盖环境文件或
清除本地数据库),而 `doctor` 是只读的。更喜欢手动步骤?它们是
`bun install`,复制每个 `*.example` 环境文件,然后 `bun run db:reset:local`.
AI通道、爬虫获取和语义搜索使用您自己的密钥
(`ANTHROPIC_API_KEY`,Cloudflare浏览器渲染,`VOYAGE_API_KEY`)并在没有它们的情况下优雅地降级。设置详细信息,环境变量,测试,
部署和完整的无需帐户/自带密钥/托管仅限分解位于 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
[Apache-2.0](LICENSE)。已发布的npm包
([`releases-core`](packages/core),[`api-types`](packages/api-types))
故意使用MIT许可证以实现最大程度的重用。