# Goose 子Recipe：从一份访谈文字生成带引语索引的人物稿

本次实际运行：Python标准库参考程序、业务边界检查与HTML渲染。未安装或运行Goose，未调用模型、创建真实自动化、发送消息、建第三方PR或部署。人工基准和错误样稿均明确标注。

## 文件

input.json：原创输入；node-fields.json：字段教材，不能直接当平台导出文件导入；prompt.md：任务约束；schema.json：规范化观察结构；reference.py：本站手写参考；reference-output.json：实际本地输出；reference.html：参考产物；review-template.json：读者填写目标工具结果。

## 本地运行

```bash
python3 reference.py
python3 verify.py
```

用浏览器打开reference.html。不依赖模型或第三方账户。

## 真实平台步骤

1. 阅读已经分段的采访文字
输入不是待转写录音。打开 interview.md，P01–P12区分记者和林岚，P02年份未确认，P10日期与场地都未定；不在本题补录音或推断采访背景。

2. 建立主Recipe与三个子Recipe
Goose 1.54.0的Recipes中建立人物稿任务；按包内recipe.yaml参考手工定义sub_recipes。子Recipe分别只负责摘录、事实表和人物稿，使用自己的文件路径。

3. 为摘录子任务设置明确输出
quotes.yaml要求返回speaker、segment_id、quote，不要润色引号内文字。开启Developer扩展只访问练习目录；先单独运行摘录，逐字比较P04的“十二件”。

4. 把结果传给事实核对子任务
在主Recipe的sub_recipes中用name/path引入facts.yaml，固定输入与输出目录；根据实际工具调用查看传入的段号和摘录，不把主会话的一段摘要当完整访谈。

5. 只让写作子任务使用已核对事实
write.yaml要求人物稿直接引语最多5条、保留原段号，不写确切毕业年份或预算。各子Recipe可设max_turns，本题顺序执行，不声称默认并行。

6. 回读人物稿和引语索引
打开目标Goose实际产物，逐条比对原段落，检查记者提问没有变成林岚原话。包内reference.html是依据原文编写的人工稿与实际生成索引，不是Goose会话输出。

7. 导出Recipe并记录未完成项
保留自己导出的YAML、目标会话和实际稿件。新目录复用时重新提供模型凭据；Recipe不包含收件人的key，不把离线段号核验称为模型写作成功。

## 版本与许可

Goose1.54.0；各子Recipe模型调用单独计成本。用虚构采访教材，人工检查引语来源；结构化结果不是事实鉴定。

## 来源

- https://goose-docs.ai/docs/guides/recipes/subrecipes/
- https://goose-docs.ai/docs/guides/recipes/recipe-reference/

## 验收边界

给一份原创12段访谈文字，主Recipe顺序调用“摘录原话”“核对事实/人名日期”“写人物稿”子Recipe。交`profile.md`及每段正文到段号的quote-map；核对5条直接引语逐字来自输入，受访者和采访者不混用，未确认年份不补全，文稿与索引同时可下载。无转写/音频生成任务。

目标产品实跑时保存原生输出，不得把本包人工/手写参考改名冒充模型返回。所有人物、订单与规则均为虚构练习数据。

渲染说明：input.html、operation.html、reference.html和figures是随当前原创输入冻结的实际浏览器预览；修改输入后重新运行会更新reference-output.json，静态HTML不会自动重绘。目标软件原生结果请另存。
