内容
<div align="center">
<img src="icon.svg" width="80" alt="PageWeave">
# PageWeave CMS
*一个自我托管的单文件PHP CMS,允许您的AI代理<br>通过MCP构建和编辑您的网站。只需将一个`index.php`<br>文件放到服务器上,设置一个API密钥,即可完成。*
<br>
[**从最新版本下载 `index.php` →**](../../releases/latest)<br>
*或者运行 `php build.php` 自行编译。*
<br>
</div>
---
## 概念
我们构建了 [PageWeave](https://pageweave.dev/) —— 一个完全托管的平台,允许AI代理创建和运行生产网站。我们每天都依赖免费和开源软件。PageWeave CMS 是我们回馈的成果。
CMS提炼了PageWeave的核心思想,浓缩成一个单一的PHP文件:**一个嵌入到您网站中的MCP服务器**。您的编码代理读取、创建和编辑页面、头部、页脚和`<head>` —— 所有这些都通过 `/mcp` 端点。无需数据库,无需依赖,无需构建步骤。只有PHP。
免费。开源。永恒。
## 为什么选择PHP?
PHP几乎可以在所有网络主机上运行 —— 共享主机、VPS、专用服务器、Cloudflare后面、nginx后面、Apache后面。无需运行时,无需守护进程,无需容器。只需将一个 `.php` 文件放入目录中,它就生效了。
这就是重点。我们希望PageWeave CMS **比WordPress更容易部署**。WordPress需要数据库、安装向导和文件系统,而这些都需要在更新时存活下来。PageWeave CMS只有一个文件。上传它,访问域名,您就可以运行了 —— 数据库和所有管道都由 `_cms/` 下的扁平文件处理。
无需Composer。无需npm。无需Docker。无需构建步骤即可使用。只需PHP 8.3或更高版本,以及每个主机已经提供的扩展。
---
## 有什么不同
- **一个文件。** 上传 `index.php` 即可运行。
- **无需数据库。** 内容以 `_cms/` 目录下的扁平HTML文件存储。
- **零配置安装。** 首次访问会自动检测您的网络服务器,写入路由规则,搭建所有内容,并生成API密钥。
## 快速开始
### 1. 获取文件
从 [Releases](../../releases) 下载最新的 `index.php` —— 或者运行 `php build.php` 自行编译。
### 2. 上传它
将它放到您的网络服务器的文档根目录 **作为 `index.php`**。
### 3. 访问您的域名
就是这样。首次访问会自动检测您的服务器(Apache、LiteSpeed 或 nginx),写入路由配置,创建 `_cms/` 并附上默认页面和部分,生成一个随机MCP密钥,并显示一个带有MCP端点和代理设置说明的“安装成功”页面。
您的网站立即提供页面服务。MCP在设置完成后即可使用。
```text
https://your-host/mcp
```
打开 `_cms/config.env` 查看您生成的密钥。
### 4. 连接您的代理
将CMS添加为远程MCP服务器。安装页面生成了一个可以直接粘贴的配置片段,包含您的主机名 —— 但以下是格式:
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"acme-corp-com-pageweave-cms": {
"type": "remote",
"url": "https://acme-corp.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_KEY"
}
}
}
}
```
重启您的客户端,以便它能够获取新的服务器,然后提示: *"让我们使用PageWeave CMS为我的网站acme-corp.com创建一个首页。"*
### 更新
用新版本替换 `index.php`。您的 `_cms/` 数据和 `_cms/config.env` 将被保留 —— 无需重新配置。
### 网络服务器说明
- **Apache / LiteSpeed** — `.htaccess` 自动写入(需要 `AllowOverride FileInfo`)。
- **nginx** — 在 `index.php` 旁边生成一个 `nginx.conf` 片段;将其复制到您的服务器块并重新加载。
- **任何服务器,无需重写** — MCP端点也适用于PATH_INFO: `https://your-host/index.php/mcp`。
---
## PageWeave CMS vs PageWeave Cloud
PageWeave CMS为您提供在您控制的服务器上的MCP内容管理。 [PageWeave Cloud](https://pageweave.dev/) 是如果您不希望自己管理的一个托管 sibling。
| | PageWeave CMS | PageWeave Cloud |
|---|---|---|
| **MCP内容管理** | 页面,头部,页脚,`<head>`,资产 | 页面,头部,页脚,`<head>`,资产 |
| **版本控制和回滚** | — | 每个编辑都是一个版本。随时可以恢复或固定。您的实时网站在您工作时保持不变。 |
| **确认工作流** | 更改立即生效 — 请相应地设置您的安全权限。 | 破坏性或不可逆转的操作需要明确的用户批准。 |
| **表单** | — | 内置表单生成器。垃圾邮件防护,电子邮件通知,Webhook。 |
| **数据表** | — | 具有Liquid模板,模板页面(:slug)和公共JSON API的结构化内容。 |
| **主题** | — | daisyUI 5 + Tailwind v4. 35+内置主题,自定义CSS。 |
| **分析** | — | 隐私优先的服务器端分析。无Cookie。无跟踪器。 |
| **资产上传** | 静态文件(放入 `assets/`) | 通过URL或PUT上传。自动WebP/AVIF转换,响应式`srcset`,CLS预防。 |
| **字体** | — | 任何字体,通过PageWeave代理 —— 无Google跟踪。 |
| **域名** | 您自己的服务器 | 自定义域名,自动SSL。直接购买域名。 |
| **多站点** | 单个网站 | 无限网站。 |
| **团队访问** | — | 邀请管理员,编辑者,查看者。 |
| **部署** | 在您的服务器上放置一个PHP文件 | 无需部署。完全托管。 |
| **托管** | 自托管 | 德国服务器。GDPR合规。欧洲公司。 |
---
## 推荐的编码代理
我们推荐 **[OpenCode Desktop](https://opencode.ai)** 作为您的代理工具,并推荐 **[OpenCode Go](https://opencode.ai/go?ref=511XQWT93A)** (联盟链接)编码计划。OpenCode专门用于代理驱动的软件工作,并通过一个配置块连接到PageWeave CMS。
---
## 代理工具
所有工具都遵循MCP JSON-RPC 2.0规范。您的代理通过 `tools/list` 检查可用的工具。
| 工具 | 功能 |
|---|---|
| `ping` | 检查MCP服务器是否存活。 |
| `list_pages` | 列出所有页面及其路径和标题。 |
| `get_page` | 获取页面的HTML主体,标题和描述。 |
| `create_page` | 在给定路径上创建新页面。 |
| `update_page` | 覆盖页面的主体或应用查找和替换补丁。 |
| `delete_page` | 删除页面及其文件。 |
| `get_component` | 获取当前的头部或页脚HTML。 |
| `update_component` | 替换头部或页脚HTML。 |
| `get_html_head` | 获取全局`<head>`部分(元标签,样式,图标)。 |
| `update_html_head` | 替换全局`<head>`部分。 |
| `list_assets` | 列出公共`assets/`目录中的文件。 |
---
## 配置
所有设置都位于 **`_cms/config.env`** —— 一个`KEY=VALUE`文件,在首次运行时自动创建,并附上生成的MCP密钥。 `index.php` 是纯代码;要更改设置,请编辑 `_cms/config.env`。
| 密钥 | 目的 | 默认值 |
|---|---|---|
| `MCP_KEY` | `/mcp` 的Bearer令牌。空值禁用MCP(但网站仍可访问)。 | 自动生成(64个十六进制字符) |
| `SITE_URL` | 规范基准URL。在安装页面上用作`Host`标头的替代。 | `''` |
| `SOURCE_URL` | 您的源代码的位置(AGPL §13)。 | 上游仓库URL |
| `SITE_TITLE` | 当页面无标题时的备用`<title>`。 | `My Site` |
`_cms/` 通过生成的 `.htaccess`/nginx 规则保护免受直接网络访问 —— `_cms/config.env` (其中包含您的MCP密钥)永远不会通过HTTP提供服务。
---
## 内容工作原理
```
_cms/
├── config.env # 您的设置
├── partials/{head,header,footer}.html # 每个页面都组合在一起
└── pages/<slug>.html # 页面主体 + 可选的前置信息
assets/ # 公共静态文件
```
页面是 **HTML主体**,带有可选的HTML注释前置信息:
```html
<!--
title: 关于我们
description: 关于团队的简短页面
-->
<h1>关于</h1>
```
在请求时,CMS会组合完整的文档:
```
<head> 部分 + <title> + header 部分 + 页面主体 + footer 部分
```
编辑一个部分 — 每个页面都会立即更新。
---
## 开发
CMS在 `src/` 下作为模块化源代码开发,并由 `build.php` 编译为 `dist/index.php`。
```bash
mise install # 安装PHP 8.3
composer install # 开发工具(phpunit,cs-fixer,psalm)
vendor/bin/phpunit # 运行测试
php build.php # 构建 dist/index.php
php -l dist/index.php # 检查构建的语法
php -S localhost:8000 -t dist # 本地烟雾测试
```
TDD是工作节奏。无运行时Composer依赖 — 仅需PHP 8.3,附带 `json`、`mbstring` 和 `pcre`。
---
## 安全
发现漏洞?请私下向 **security@pageweave.dev** 或 [GitHub Security Advisories](https://github.com/PageWeave/cms/security/advisories/new) 报告。不要公开问题。
查看 [SECURITY.md](./SECURITY.md) 以获取完整的安全策略、威胁模型和审计历史。
---
## 许可证
版权所有 © 2026 PageWeave CMS 贡献者。
在 [GNU Affero General Public License v3.0 或更高版本](./LICENSE) (AGPL-3.0-or-later)下许可。 在公开可访问的服务器上运行 **修改** 版本需要您向用户提供相应的源代码(AGPL §13)。 运行 **未修改** 版本只需指向上游 `SOURCE_URL` 即可。