计划执行与检查节点
executing-plans
按既定实施计划完成工作,保持过程检查和反馈。
storymap-generate-person【效率与协作】使用 1+5 Agent 协同(Supervisor + Search / Map / Editor / Critic / Deliver)为任意历史人物生成含时间线、地点、教材知识点的 Markdown 档案,并可渲染为 OSM 底图的 HTML 页面。宿主 Agent 用自身的 LLM 能力扮演 6 个角色,无需配置额外 LLM Key。地图默认优先使用国内可访问的高德公开瓦片底图,并保留 OSM 作为备用;坐标数据仍以 WGS84 为准,若使用高德底图,显示坐标需转换为 GCJ-02。触发条件:用户提到"生成人物档案"、"新建历史人物"、"1+5 Agent"、"故事地图人物"、"add historical figure" 等。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
你(宿主 Agent)将扮演 1 位 Supervisor + 5 位专业 Agent(SearchAgent / MapAgent / EditorAgent / CriticAgent / DeliverAgent),协同为用户指定的历史人物产出一份结构化 Markdown 档案,并可选地渲染为 Leaflet 交互地图 HTML 页面;默认优先使用国内可访问的高德公开瓦片底图,并保留 OSM 备用。
本 skill 不依赖任何外部 LLM Key。你直接用自己的推理能力担任 6 个 Agent 角色。
按顺序完成以下 6 个阶段,每完成一步在对话里简短汇报(例如"[SearchAgent] ✓ 采集完成,得到 4 个关键时期")。
storymap/examples/story/<name>.md)auto / osm / amap(需 AMAP_KEY);地图底图方式:auto(默认,国内优先高德公开瓦片,OSM 备用)/ amap / osmexecution_trace用你的推理能力生成该人物的关键信息(不要调用外部 API):
(年份, 古地名, 现代地名, 一句事件)质量红线:
对 SearchAgent 得到的每个地点:
provider=osm(默认):调用工具函数 nominatim_lookup(现代地名) 或从内置词典 tools/build/data/city_coords.json 查找provider=amap:使用高德地理编码 API(需用户提供 AMAP_KEY)hard_place_queue,md 里坐标留空但保留地名输出格式:
[
{"ancient": "沛国谯县", "modern": "亳州", "lat": 33.8712, "lon": 115.7826, "confidence": "high"},
{"ancient": "许昌", "modern": "许昌", "lat": 34.0356, "lon": 113.8261, "confidence": "high"}
]
红线:
[lat,lng] 字符串塞到"位置"字段(历史 bug)按 MD_SCHEMA 严格组装。重点:
年份 | 古称 | 现称 | 事件现称 | 现代搜索地名 | 纬度 | 经度 | 坐标系**short_review**:...逐项检查(用 [✓] / [✗] 汇报):
| # | 检查项 | 阈值 |
|---|---|---|
| 1 | LLM 思考泄露 | 无 "The user wants me to"、"Let me think"、"我需要" 类元认知 |
| 2 | 章节编号连续 | 一二三四五六(视有几章)无重复 / 跳跃 |
| 3 | short_review 非空 | 长度 6–60 字,不含"暂无""待补充" |
| 4 | 时间线单调递增 | 年份基本按时间顺序 |
| 5 | 坐标有效性 | 每个坐标在合理范围,无 (0,0)、无 null |
| 6 | 位置章节事件密度 | 每个地点至少 1 条事件描述 |
| 7 | 无占位符 | 无"暂无""不详""待补充""XXX" |
| 8 | 无坐标泄漏 | 时间线 / 位置章节里没有 [lat,lng] 字符串 |
发现问题:把具体 issue 反馈给 EditorAgent,回到 Step 4,最多循环 3 次。3 次仍不 pass 就以"quality warning"标记落地,不阻断流程。
--out 指定路径(或默认 storymap/examples/story/<name>.md)--render:调用 scripts/render_osm.py --md <out> --out artifacts/story_map/<name>.html --name <name>(生成 Leaflet 交互地图页;默认使用国内可访问的高德公开瓦片底图,保留 OSM 备用图层;坐标表保留 WGS84,使用高德底图显示时需将点位转换为 GCJ-02)Agent 产出的 Markdown 必须严格匹配以下结构:
## <人物姓名>
**朝代**:<朝代 / 时期>
**生卒**:<约 X 年—约 Y 年>
**short_review**:<一句话概括,6–60 字>
## 一、生平简介
<200–400 字的生平简介段落,白描史实,不加"著名的""伟大的"等修饰>
## 二、代表事件与作品
- <事件 1,一句话,含年份或阶段>
- <事件 2>
- <事件 3>
...
## 三、生平时间线
| 年份 | 古称 | 现称 | 事件 |
| --- | --- | --- | --- |
| 约 X 年 | 沛国谯县 | 亳州 | 出生 |
| 约 X 年 | ... | ... | ... |
## 四、补充说明
<可选:家世、师承、后世纪念、争议等>
## 五、后世评价
- <评价 1,可以是史学家、诗人、当代研究者的引言>
- <评价 2>
## 六、地点坐标(自动地理编码)
| 现称 | 现代搜索地名 | 纬度 | 经度 | 坐标系 |
| --- | --- | --- | --- | --- |
| 沛国谯县 | 亳州 | 33.8712 | 115.7826 | WGS84 |
| ... | ... | ... | ... | WGS84 |
## 七、教材知识点(若有)
- <人教版 X 年级课文 XXX:<对应的知识点>>
Skill 目录下自带一个纯 Python 脚本,无外部依赖,把 md 渲染为 Leaflet 交互地图 HTML:
python scripts/render_osm.py \
--md storymap/examples/story/张仲景.md \
--out artifacts/story_map/张仲景.html \
--name 张仲景
输出的 HTML:
若用户配置了 LLM_API_KEY,可跳过 prompt 扮演,直接调用主仓库封装好的 Python 6-Agent 流水线:
python .trae/skills/storymap-generate-person/scripts/generate.py \
--name 张仲景 --render
(该路径需要主仓库的 storymap.script.runtime.legacy_agent 模块可导入,且已配置 LLM_API_KEY;小浣熊 / Trae skill 场景不需要用这条路径。)
Read 检查目标路径是否已存在,如存在向用户确认是否覆盖open <html_path> 让用户浏览器打开确认视觉效果