AgentSociety 2 的 ReadTheDocs 站点使用 Sphinx + Furo + MyST 构建,默认语言为中文,并通过 Sphinx i18n 维护英文翻译。它不是 Google Docs 风格的文档站;视觉和导航均以 Sphinx/Furo 主题为准。
本仓库有多套 ReadTheDocs 站点。仓库根目录的 .readthedocs.yaml 保留给 packages/agentsociety/docs/ 旧版文档;AgentSociety 2 的独立配置放在 packages/agentsociety2/.readthedocs.yaml,构建入口为 packages/agentsociety2/docs/conf.py。在 ReadTheDocs 的 AgentSociety 2 项目设置中,应把 config file 指向这份包内配置,避免影响旧站点。
packages/agentsociety2/docs/
├── conf.py # Sphinx 配置文件
├── index.rst # 主文档入口(中文,默认语言)
├── locale/ # 国际化翻译文件
│ ├── en/ # 英文翻译
│ └── LC_MESSAGES/
│ ├── index.po
│ └── ...
├── _static/ # 静态资源(图片、CSS等)
├── _templates/ # Sphinx 模板
├── _build/ # 构建输出目录
├── requirements.txt # Python 依赖
├── agents.rst # Agent / PersonAgent / create-agent 技能说明
├── agent_skills.rst # PersonAgent skills-first 架构
├── skills.rst # 研究技能、实验/分析/文献检索工作流
├── api/ # API 参考
└── ...
- 中文(zh): 默认语言,主要文档语言
- 英文(en): 翻译语言
所有新文档应该用中文编写,使用 reStructuredText (.rst) 或 Markdown (.md) 格式:
# 在 v2 文档目录下创建新文档
packages/agentsociety2/docs/new-feature.rst在编写或修改文档后,运行以下命令提取需要翻译的文本:
# 推荐在 v2 文档目录执行
cd packages/agentsociety2/docs
make gettext这会在 packages/agentsociety2/docs/_build/gettext/ 目录下生成 .pot 文件。
更新或创建翻译文件:
cd packages/agentsociety2/docs
make update-po这会在 packages/agentsociety2/docs/locale/en/LC_MESSAGES/ 目录下创建或更新 .po 文件。
编辑 .po 文件进行翻译:
# 编辑英文翻译
vim packages/agentsociety2/docs/locale/en/LC_MESSAGES/index.po示例 .po 文件内容:
# Chinese translations for AgentSociety project.
msgid ""
msgstr ""
"Project-Id-Version: AgentSociety 2 2.3.0\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
#: ../../index.rst:4
msgid "AgentSociety 2"
msgstr "AgentSociety 2"
#: ../../index.rst:6
msgid "**AgentSociety 2** 是一个现代化的、LLM 原生的智能体模拟平台..."
msgstr "**AgentSociety 2** is a modern, LLM-native agent simulation platform..."构建不同语言版本的文档:
cd packages/agentsociety2/docs
# 构建中文文档(默认)
make html
# 或
make html-zh
# 构建英文文档
make html-en
# 构建所有语言版本
make html-all构建的文档将保存在:
- 中文版本:
packages/agentsociety2/docs/_build/html/zh/ - 英文版本:
packages/agentsociety2/docs/_build/html/en/
| 命令 | 描述 |
|---|---|
make help |
显示帮助信息 |
make gettext |
提取可翻译的文本 |
make update-po |
更新翻译文件 |
make build-po |
编译翻译文件 |
make html |
构建中文文档(默认) |
make html-zh |
构建中文文档 |
make html-en |
构建英文文档 |
make html-all |
构建所有语言版本 |
make clean |
清理构建文件 |
项目已配置为在 ReadTheDocs 上构建 AgentSociety 2 文档:
- 主项目:
agentsociety2.readthedocs.io,中文文档(默认) - 英文翻译:如需英文站点,可在 ReadTheDocs 上设置 translation 项目
packages/agentsociety2/.readthedocs.yaml 的关键配置:
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .
extra_requirements:
- docs
sphinx:
configuration: docs/conf.py- 在 ReadTheDocs 上创建主项目(中文)
- 在项目设置中添加翻译:
- 进入项目管理界面
- 选择 "翻译" 或 "Translations"
- 添加英文翻译项目
- ReadTheDocs 会自动为每种语言创建单独的子域名:
- 中文:
https://agentsociety2.readthedocs.io/zh/latest/ - 英文:
https://agentsociety2.readthedocs.io/en/latest/
- 中文:
- 使用小写字母和连字符
- 中文文档直接使用描述性名称
- 例:
quickstart.rst,configuration-guide.rst
- 所有图片放在
packages/agentsociety2/docs/_static/目录下 - 使用相对路径引用:
_static/image.png - 提供替代文本(alt text)
MyST (Markedly Structured Text) 是 Sphinx 的 Markdown 扩展,支持标准 Markdown 语法以及 Sphinx 的特殊功能。
文件扩展名:使用 .md 扩展名
基本结构:
---
title: 文档标题
description: 文档描述
---
# 主标题
## 二级标题
### 三级标题
正文内容...- 使用
#创建标题,最多支持 6 级标题 - 标题层级要合理,避免跳过层级
- 每个文档应该只有一个一级标题
# 一级标题(文档标题)
## 二级标题(章节)
### 三级标题(小节)
#### 四级标题(子小节)内部链接:
[链接文本](path/to/file.md)
[链接文本](path/to/file.md#section-id)外部链接:
[链接文本](https://example.com)脚注:
这里是一个脚注[^1]。
[^1]: 这是脚注的内容。行内代码:
使用 `code` 标记行内代码代码块:
```python
def hello_world():
print("Hello, World!")
```语法高亮:支持多种编程语言
```bash
# 命令行示例
pip install myst-parser
```
```yaml
# 配置文件示例
version: "3.8"
extensions:
- myst_parser
```简单表格:
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 内容1 | 内容2 | 内容3 |
| 内容4 | 内容5 | 内容6 |对齐表格:
| 左对齐 | 居中 | 右对齐 |
|:-------|:----:|-------:|
| 内容 | 内容 | 内容 |无序列表:
- 项目1
- 项目2
- 子项目2.1
- 子项目2.2
- 项目3有序列表:
1. 第一步
2. 第二步
1. 子步骤2.1
2. 子步骤2.2
3. 第三步引用块:
> 这是一个引用块
> 可以包含多行内容警告和提示:
```{warning}
这是一个警告信息这是一个提示信息
这是一个技巧提示
#### 3.8 数学公式
**行内公式**:
```markdown
行内公式:$E = mc^2$
块级公式:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$基本图片:
带标题的图片:
```{figure} _static/image.png
:name: fig-example
:alt: 图片描述
图片标题
#### 3.10 交叉引用
**引用其他文档**:
```markdown
{ref}`target-document`
{ref}`target-document#section`
引用图片:
{numref}`fig-example`引用代码块:
{code}`example-code-block`- 一致性:保持文档风格和格式的一致性
- 可读性:使用清晰的标题层级和段落结构
- 链接检查:确保所有链接都是有效的
- 图片优化:使用适当大小的图片,提供替代文本
- 代码示例:提供完整、可运行的代码示例
- 国际化:为所有用户可见的文本提供翻译
- 避免使用 HTML 标签(除非必要)
- 避免过度嵌套的列表
- 避免过长的行(建议不超过 80 字符)
- 避免使用绝对路径引用文件
- 避免在代码块中使用制表符(使用空格)
如果翻译文件没有正确更新,尝试:
cd packages/agentsociety2/docs
make clean-docs
make gettext
make update-po检查文档语法:
cd packages/agentsociety2/docs
sphinx-build -b dummy . _build/dummy确保图片路径正确且文件存在:
ls packages/agentsociety2/docs/_static/- 编写新文档:使用中文编写,遵循现有文档结构
- 提交翻译:英文翻译通过编辑
.po文件完成 - 测试构建:提交前确保文档能正确构建
- 更新索引:新文档需要添加到相应的
index.md文件中
如有问题,请:
- 检查本文档的常见问题部分
- 查看 Sphinx 官方文档
- 查看 sphinx-intl 文档
- 联系文档维护团队