Skip to content

Commit 1a7f694

Browse files
committed
[feat]: improve release changelog workflow with staged changelog sections
- split .github/CHANGELOG.md into "current release" and "archive" sections - update pack-folders workflow to extract only the RELEASE:START/END block - preserve historical changelog entries while supporting multi-entry releases - add .github/README.md with changelog maintenance instructions
1 parent 3f3213d commit 1a7f694

3 files changed

Lines changed: 114 additions & 17 deletions

File tree

.github/CHANGELOG.md

Lines changed: 48 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,48 @@
1-
## 版本变更
2-
### 新功能
3-
- 🚀 为 MATD3 添加了训练好的模型,可无需训练直接下载使用
4-
- 🌟 新增 HAPPO-MAPPO_Continous_Heterogeneous 算法,支持异质智能体训练
5-
- ✨ 新增 MAPPO_Continous_Homogeneous 算法,优化同质智能体训练效率
6-
- 📦 将新算法添加到自动化打包发布流程中
7-
8-
### 修复
9-
- 🐛 无
10-
11-
### 文档
12-
- 📝 添加了 MATD3 追逃环境效果: gif
13-
- 📖 添加了新算法的使用文档和示例
14-
- 🌐 更新了文档 README.md, README_en.md 以包含新算法介绍
1+
## 更新日志
2+
3+
> 说明:本文件分为上下两部分。
4+
> - 上半部分(本次发布)会被 GitHub Action 自动读取,可一次填写多条记录。
5+
> - 下半部分(历史归档)不会自动用于 Release,用于长期查阅。
6+
7+
## 本次发布(上半部分,自动用于 Release)
8+
<!-- RELEASE:START -->
9+
<a id="feat-seed-marl-20260226"></a>
10+
**2026.2.26**
11+
1.`HAPPO``MADDPG`(原描述中有时写作 `MADDOG`)、`MAPPO``MATD3` 中新增 `seed` 参数(随机种子)配置,提升训练与评估的可复现性。
12+
- 用于统一控制环境初始化、采样过程及模型训练中的随机性来源,便于复现实验结果。
13+
14+
<a id="fix-issue-8"></a>
15+
**2026.2.19**
16+
1. 修复 [issue-8](https://github.com/Ronchy2000/Multi-agent-RL/issues/8)`obtain_episode()` 现在在达到终止状态(`done=True`)时提前结束采样,`length` 仅作为最大步数上限。
17+
- 影响文件:`solver.py``MC_Basic.py``MC_Exploring_Starts.py``MC_epsilon_greedy.py`
18+
- 这样可避免 episode 在终止后继续采样带来的回报偏差,更符合 episodic 任务定义。
19+
20+
<a id="fix-issue-7"></a>
21+
**2026.2.19**
22+
1. 修复 [issue-7](https://github.com/Ronchy2000/Multi-agent-RL/issues/7):修正 `MC_Basic.py``mc_basic_simple``mc_basic_simple_GUI` 的缩进错误。
23+
- `sum_qvalue_list.append(sum_qvalue)` 现在位于 `for each_episode in episodes:` 循环内部,确保每条 episode 的回报都被统计。
24+
- 修复后 `self.qvalue[state][action] = np.mean(sum_qvalue_list)` 将基于完整采样集合计算均值,不再只使用最后一条 episode 的回报。
25+
26+
<a id="fix-issue-1"></a>
27+
**2026.2.15**
28+
1. 修复 [issue-1](https://github.com/Ronchy2000/Multi-agent-RL/issues/1):第 8 章 TD-Linear(线性函数逼近)实现中的两个问题:
29+
- 修正 `1.TD-Linear.py``reward_list``grid_env.py``Rsa` 奖励索引顺序不一致的问题(索引约定固定为 `[other, target, forbidden, overflow]`),避免 `policy_evaluation()` 得到错误的状态值。
30+
- `grid_env.py` 新增 `reward_list` 可选参数,使每个算法脚本都可以通过 `GridEnv(..., reward_list=[...])` 独立配置奖励函数(无需手动改 `grid_env.py`)。
31+
- 修正 TD(0) 线性函数逼近权重更新遗漏 $\phi(s_t)$ 的问题:$w \leftarrow w + \alpha \delta_t \phi(s_t)$,其中 $\delta_t = r + \gamma \phi(s_{t+1})^\top w - \phi(s_t)^\top w$。
32+
33+
<!-- RELEASE:END -->
34+
35+
## 历史归档(下半部分,不自动用于 Release)
36+
<a id="history-legacy-format"></a>
37+
**历史记录(旧格式归档)**
38+
1. 新功能
39+
- 🚀 为 `MATD3` 添加了训练好的模型,可无需训练直接下载使用。
40+
- 🌟 新增 `HAPPO-MAPPO_Continous_Heterogeneous` 算法,支持异质智能体训练。
41+
- ✨ 新增 `MAPPO_Continous_Homogeneous` 算法,优化同质智能体训练效率。
42+
- 📦 将新算法添加到自动化打包发布流程中。
43+
2. 修复
44+
- 🐛 无。
45+
3. 文档
46+
- 📝 添加了 `MATD3` 追逃环境效果 GIF。
47+
- 📖 添加了新算法的使用文档和示例。
48+
- 🌐 更新 `README.md``README_en.md` 以包含新算法介绍。

.github/README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# `.github` 使用说明
2+
3+
## `CHANGELOG.md` 维护方式(上下两部分)
4+
5+
`/.github/CHANGELOG.md` 现在分为两部分:
6+
7+
1. `## 本次发布(上半部分,自动用于 Release)`
8+
- GitHub Action 会读取 `<!-- RELEASE:START -->``<!-- RELEASE:END -->` 之间的内容,作为本次 Release 的 changelog。
9+
- 这里可以一次写多条记录(支持多条 `<a id> + 日期 + 条目`)。
10+
11+
2. `## 历史归档(下半部分,不自动用于 Release)`
12+
- 用于长期保存已发布的历史记录,便于查阅。
13+
- 不会自动进入当前 Release 文案。
14+
15+
## 填写规则(推荐)
16+
17+
每条记录使用以下格式:
18+
19+
```md
20+
<a id="your-entry-id"></a>
21+
**2026.2.26**
22+
1. 变更摘要。
23+
- 影响文件:`a.py``b.py`
24+
- 补充说明。
25+
```
26+
27+
建议:
28+
- `id` 保持唯一(例如 `fix-issue-8``feat-seed-marl-20260226`)。
29+
- 同一次发布可连续写多条。
30+
- 新条目放在上半部分靠前位置(通常按时间倒序)。
31+
32+
## 发布后的归档步骤(手动)
33+
34+
发布完成后,如果你希望上半部分清空为下一版准备:
35+
36+
1.`<!-- RELEASE:START -->``<!-- RELEASE:END -->` 之间的内容剪切。
37+
2. 粘贴到 `## 历史归档(下半部分,不自动用于 Release)` 标题下方(建议放在历史区顶部)。
38+
3. 保留上下分区和两个注释标记不变。
39+
40+
## Action 行为说明
41+
42+
- 标签触发发布(`v*`)时,默认读取 `/.github/CHANGELOG.md` 的上半部分区块。
43+
- 手动触发 `workflow_dispatch` 时:
44+
- 若输入的是文件路径,会读取该文件内容。
45+
- 若该路径正好是 `/.github/CHANGELOG.md` 且含分区标记,仍只读取上半部分区块。
46+
- 若输入是纯文本,则按输入内容生成 Release 说明。

.github/workflows/pack-folders.yml

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,28 @@ jobs:
116116
# 检测输入是否是文件路径
117117
if [ -f "$INPUT_CHANGELOG" ]; then
118118
echo "从文件读取变更日志: $INPUT_CHANGELOG"
119-
CHANGELOG_CONTENT=$(cat "$INPUT_CHANGELOG")
119+
CHANGELOG_CONTENT="$(cat "$INPUT_CHANGELOG")"
120+
121+
# 如果使用分区维护的 CHANGELOG,则只提取“本次发布(上半部分)”区块,
122+
# 支持一次 release 包含多条 <a id> + 日期 + 条目。
123+
if [ "$INPUT_CHANGELOG" = ".github/CHANGELOG.md" ] && grep -q '<!-- RELEASE:START -->' "$INPUT_CHANGELOG"; then
124+
echo "检测到分区更新日志格式,提取本次发布区块"
125+
RELEASE_CHANGELOG_BLOCK="$(awk '
126+
/<!-- RELEASE:START -->/ { capture=1; next }
127+
/<!-- RELEASE:END -->/ { capture=0; exit }
128+
capture { print }
129+
' "$INPUT_CHANGELOG")"
130+
131+
if [ -n "$RELEASE_CHANGELOG_BLOCK" ]; then
132+
CHANGELOG_CONTENT="## 更新日志(本次发布)\n\n$RELEASE_CHANGELOG_BLOCK\n\n> 完整历史记录请查看 [\`.github/CHANGELOG.md\`](https://github.com/${{ github.repository }}/blob/${{ github.sha }}/.github/CHANGELOG.md)。"
133+
else
134+
echo "未能提取本次发布区块,回退为使用完整 CHANGELOG 内容"
135+
fi
136+
fi
120137
else
121138
echo "处理手动输入的变更日志"
122139
# 将 \n 替换为实际换行符
123-
CHANGELOG_CONTENT=$(echo -e "$INPUT_CHANGELOG" | sed 's/\\n/\n/g')
140+
CHANGELOG_CONTENT="$(echo -e "$INPUT_CHANGELOG" | sed 's/\\n/\n/g')"
124141
fi
125142
126143
# 添加版本号标题
@@ -184,4 +201,4 @@ jobs:
184201
files: |
185202
zips/*.zip
186203
env:
187-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
204+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)