---
name: sotogoal-interview
description: 通过多轮访谈引导用户梳理目标的背景、成功标准、范围与风险，生成结构化的目标正文和 KR 写入 SotoGoal（所及）。当用户要"把目标想清楚/写清楚"、定 OKR、梳理项目背景，或新目标只有一句话标题时使用。旧名 flowos-interview。
---

# SotoGoal 目标访谈

纯编排层：你扮演业务分析师，通过对话把用户脑子里的目标梳理成结构化正文 + 可度量的 KR，最后写回 SotoGoal。API 契约与凭证见 `sotogoal` skill（同目录 `sotogoal-skill/SKILL.md`），CLI 用它随附的 `sotogoal.mjs`。

所需 scope：`goals:read` + `goals:write`；访谈后顺手建任务另需 `tasks:write`。

## 步骤 1：定位目标

- 用户给了短号/名称：`get goal <seq> --space <S>` 或 `search "<名称>" --in goals` 定位到目标（写操作也认短号，seq 记得带 `--space`；设了默认空间的令牌可省）。
- 还没有目标：问清标题和空间后 `create goal --title "…"`（空间字段用 `--spaceId <空间id>`，id 从 `whoami` 的 `spaces` 取；设了默认空间的令牌可省略）。
- **读一遍现有内容**：正文（`bodyText`）和已有 KR。已经写了的部分不要重复问，访谈聚焦在缺的维度；后面写回时已有内容要并入，不能丢。

## 步骤 2：访谈

一次只问**一个**问题，答完再追问。覆盖六个维度，按缺口挑 3–6 轮，不要审讯式全问：

1. **背景与动机** — 为什么做这件事？为什么是现在？不做会怎样？
2. **成功标准** — 做成了长什么样？怎么度量？（追问到能落成数值：基线是多少、目标是多少、什么时候）→ 这就是 KR。
3. **范围与非目标** — 哪些明确不做？边界在哪？
4. **里程碑与路径** — 第一步是什么？中间有哪些可检查的节点？
5. **风险与依赖** — 最可能卡在哪？依赖谁/什么？
6. **干系人** — 谁关心结果？谁参与？

技巧：用户答得含糊就给两三个具体选项让他选或反驳；用户一次说了很多就复述确认再问下一个缺口；用户明显不想继续就用已有信息进入下一步。

## 步骤 3：草稿确认

把访谈结果综合成草稿，**先在对话里给用户过目**，明说哪些是他的原话、哪些是你的推断：

```markdown
## 背景
（为什么做、为什么是现在）

## 成功标准
（做成的样子；具体度量放 KR）

## 范围
做：…
不做：…

## 里程碑
1. …
2. …

## 风险与依赖
- …
```

另附 KR 列表（每条：标题 / target 数值），和可选的首批任务建议。正文里相关的既有任务/知识/子目标用短号引用（`#T12`/`#N3`/`#G8`），落库自动变链接。

## 步骤 4：写回（须经用户确认）

```bash
# 正文:整体替换——已有正文必须已并入草稿
node sotogoal.mjs update goal <uuid> --json '{"bodyMarkdown":"## 背景\n…"}'
# KR:逐条追加(不要在 update 里带整份 keyResults,会被 400 拒绝)
node sotogoal.mjs kr add <uuid> --title "月活破万" --target 10000
# 首批任务(用户同意才建)
node sotogoal.mjs create task --title "…" --goalId <uuid>
```

写完把结果用短号汇报（"正文已更新，新增 3 条 KR，建了 #T210/#T211"）。

## 注意

- CLI 的 `<id>` 位置可用短号（写 `G7` 或裸 `7`，配 `--space <slug>`；设了默认空间的令牌可省）；body 里的引用字段（`krId`、`goalId` 等）只认 uuid。短号写法详见 sotogoal skill「短号寻址」。
- `bodyMarkdown` 是**替换整个正文**；目标在网页端有富文档编辑痕迹时，写前先把现有内容并入并向用户确认。
- 更新已有 KR 用 `kr set <goalId> <krId> --current …`，别新建重复条目。
