# VS Code Copilot 自定义 Agent 教程：用红绿重构做可重放的抽签器

VS Code Copilot 自定义 Agent 教程。已实际运行Python红阶段失败与绿阶段通过、浏览器保存恢复与12项唯一抽取；Copilot Agent交接未执行。

## 开始

先读 task.md 和 prompt.md。starter 是可打开但未实现任务逻辑的起点工程，reference 是本站人工完成的参考。目标代理没有参与生成此次原生账号会话，不能把参考代码称为该产品已执行结果。

```bash
cd reference/red
python3 test_draw.py
cd ..
python3 test_draw.py
```

HTTP网页访问 http://127.0.0.1:8073/ ，按顺序点击输入、操作和导出控件。8073是示例端口，可自行换用空闲端口。

## 文件

- starter/：起点工程及明确需求。
- reference/：可运行人工参考、原创输入和实际运行结果。
- task.md：七步任务和独立验收。
- verify.py：回读实际下载文件、结果结构和边界的检查。
- native-*-draft.*（若有）：原生结构草案，明确未完成导入/运行验证。

## 本题操作要点

1. 名单只有虚构编号1–12，seed=42。starter/test_draw.py可先真实失败，reference是人工完成实现；不要拿真实名单做不可复核的演示。

2. 三个Agent文件放在.github/agents下，红阶段只写行为测试，绿阶段实现，重构阶段保持行为。这些定义尚未在Copilot会话中执行。

3. red目录的Draw会抛NotImplementedError。先运行python3 test_draw.py并保存失败记录，不能在功能完成后补写“曾经失败”。

4. reference使用明确LCG和池移除算法；第一轮三个编号为2、8、10。固定种子目的只是可重放，不是密码学随机。

5. 重构后仍跑固定序列、唯一12项、保存恢复和耗尽测试。测试预期应独立于UI，不为了通过改成当前输出。

6. 浏览器抽3项后保存状态；再抽下一项是9。重放、导入第3项后的状态，再抽仍应为9。

7. 继续抽完12项，应无重复且覆盖全部编号；再点一次显示“名单已抽完”。真实Python红绿日志与实际浏览器状态都在下载包。

## 官方依据

- https://code.visualstudio.com/docs/agents/guides/test-driven-development-guide

Google与抖音查询词是内容目标，不代表实测搜索量、热榜或流量结果。
