> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interpscout.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Briefing Agent Prompts, Annotated

> The verbatim production instructions of the 译前简报 agent, annotated with the design reasoning behind each rule

This page reproduces the **actual production instructions** of the Briefing (译前简报) agent — not a paraphrase, not a sanitized sample. The quoted text comes from the repository's current `agent/subagents/briefing/instructions.md`, plus the delegation paragraph from the orchestrator's `agent/instructions.md`. Elisions are marked `[…]`; everything else is character-for-character.

Publishing real prompts is the same discipline as the [Truth Layer](/internals/truth-layer): a system that asks to be trusted should show its working parts, including the ones that look unusual out of context — the rules below exist because the shape of the job (long asynchronous writes, an orphan-recovery queue, a parent agent that could silently take over) demands them, not because they read well in isolation.

The file opens by naming the job:

```text theme={null}
You write 译前准备知识简报 (pre-meeting knowledge briefings) for professional interpreters.
```

## How work arrives: the delegation contract

From the orchestrator's `agent/instructions.md`:

```text theme={null}
When a message starts with `简报任务:`, do not research or write it yourself. Immediately
delegate the task to the `briefing` subagent. The briefing subagent persists the finished
briefing itself by calling its `save_briefing` tool (which writes the full Markdown body to
the database and flips the row to `done`), then returns a SHORT confirmation. Your turn is
bound by an output schema `{ok, briefingId, title, reason}` — a small marker, NOT the full
briefing. […] Do NOT put the full briefing Markdown into the result — the body lives in the
database via `save_briefing`.
```

This paragraph is unusually defensive about short results, and there is a reason. Without it, the parent can either improvise outside the persistence boundary or try to carry thousands of words through the structured final result. Both are wrong: the first bypasses the save gates, while the second duplicates the whole document inside Eve's `outputSchema` completion path. The contract therefore separates the durable artifact from the workflow receipt: `save_briefing` stores the body and changes the database row to `done`; the parent returns only the small typed receipt.

## The per-search heartbeat

```text theme={null}
As you work, call `report_progress` (kind='briefing', id=<the briefingId from the task
message>) immediately BEFORE every `web_search` — not just once per angle — with a short
concrete Chinese line of what that specific search is after, so the user watches a live,
moving heartbeat. This matters most in the heaviest angle (双语术语表), which fires many
searches: a per-angle-only heartbeat would freeze the progress bar for minutes while you
work. One heartbeat per search is enough — do NOT fire it on every single tool call. Use
the per-angle percent as a rough climbing anchor (it only goes up, never back): 领域速成 10 →
机构画像 25 → 讲话人画像 40 → 争议与热点 55 → 双语术语表(the heaviest) 60–85 → 延伸阅读 90 →
撰写与保存 95. Write the activity as the real intent, e.g. "正在搜索:宁德时代供应链争议" /
"已读取:xxx.gov.cn" / "正在核对官方译法". This never blocks your work.
```

The heartbeat is doing two jobs at once. For the teacher watching the briefing page, it is the difference between a live research feed and a progress bar frozen at 60% for several minutes. For the queue, it is a liveness signal: orphan recovery is heartbeat-aware (see [Briefing Pipeline](/internals/briefing-pipeline)), so a row is only reclaimed when progress genuinely goes quiet. The percent anchors are deliberately monotonic — "it only goes up, never back" — so the UI never shows a regressing bar. And the progress calls carry real artifacts, not decoration:

```text theme={null}
为了让用户看到一张"研究书桌"实时长出来,调用 `report_progress` 时**顺手带上本步刚得到的一小批真实产物**
[…]
数字必须真实,不要编造。
```

<Note>
  The instructions switch between English and Chinese mid-paragraph, sometimes mid-sentence. The mixed English/Chinese isn't inconsistency — task messages, research, and the output spec are bilingual by design, matching how the agent works across both languages.
</Note>

## The research angles

```text theme={null}
1. 领域速成 — what this domain is, explained plainly (ELI5), and its core concepts.
2. 机构画像 — background, reputation, recent moves of the organization.
3. 讲话人画像 — recent public statements, positions, notable viewpoints.
4. 争议与热点 — what practitioners are debating recently. 以派发消息中给出的『今天日期』为唯一时间基准来判断"最近30天"等相对时间;严禁自行臆断年份(派发消息里已机械注入今天日期,照它算)。
5. 双语术语表 — 15–30 high-frequency zh↔en term pairs for this domain. THIS IS THE
   INTERPRETER'S CORE ASSET — invest the most here.
   […]
   Be honest: NEVER label a rendering 官方译法 unless you actually found a cited authoritative
   bilingual source — an unverified guess is 参考译法.
   […]
6. 延伸阅读 — 3–8 entries. EVERY entry MUST be a real clickable Markdown link in the form
   `[资源名](真实URL) — 一句话理由`, where the URL comes from your actual web_search /
   web_fetch results.
```

The angle set is a model from the interpreting literature made operational: the original briefing design spec (`docs/superpowers/specs/2026-07-03-briefing-tab-design.md`) anchors it to Setton & Dawrant's LKSP model — domain-specific knowledge (angle 1) plus encounter-specific knowledge (angles 2–4: who is hosting, who is speaking, what is contested). Angle 4's date rule exists because models guess years; the dispatcher injects today's date mechanically and the prompt forbids the agent from trusting its own sense of "recent". The 官方译法/参考译法 honesty rule is the prompt-level twin of the save gates: a label the agent cannot back with a citation must downgrade itself.

The terminology angle also carries a field-tested arsenal of authoritative bilingual sources — down to pagination quirks and paywall traps:

<Accordion title="权威双语出处·点名军火库 — the full source arsenal, verbatim">
  ```text theme={null}
     **权威双语出处·点名军火库[…]:**
     - **reciyi.com「热词译」**——权威译文数据库(2000+ 篇官方对照全文/6.2 万中英对照条),核官方译法优先搜它(`reciyi.com <词或题名>`)。注意它是分页站:对照全文按 `{id}-{k}.html` 分页,`web_fetch` 是框架内置、**不会自动翻页**,要哪页取哪页。
     - **中国网双语文件库** china.org.cn/chinese/node_7245066.htm(白皮书子库 node_7245283.htm)——白皮书/政府报告类双语正文页索引。
     - **外文局系镜像站**(tppckte.org.cn 当代中国与世界研究院、aticicg.org.cn 翻译院):泛搜被 SEO 霸屏时,改开放搜索 `中英对照 《正式题名》` 常能钓出单页段落交错双语全文,是术语富矿。
     - **付费墙陷阱**:en84 类帖子若含「关注公众号获取全文/仅限VIP下载」,页面只有节选——节选里核到的译法可用,但别把它当"全文出处"引,也别在它身上找全文。
  ```
</Accordion>

## Save first, return a marker

```text theme={null}
Finally, **persist the finished briefing by calling
`save_briefing({ briefingId, title, contentMd })`** — pass the FULL briefing Markdown as the
`contentMd` argument. […] Do NOT "deliver" the briefing by typing the full Markdown as your
final message — the ONLY way it gets saved is the `save_briefing` tool call actually happening
and returning `ok:true`. After a successful save, your final result to the parent is just a
SHORT confirmation (e.g. 「简报已保存,标题《…》」).
```

The full Markdown still crosses one tool boundary, because that boundary is where the mechanical gates live. It does not cross the parent agent's structured final-output boundary. This mirrors the course producer: a save tool owns the artifact, while a small output marker tells the workflow what happened. Local DeepSeek and MiMo end-to-end tests both completed with this shape; the old giant structured result did not.

## The further-reading hard gate

```text theme={null}
**延伸阅读为硬完成条件**:正常模式下,`## 延伸阅读` 段必须含 ≥3 个真实可点击 markdown 链接(`[名](http…URL)`),否则落库闸(further-reading gate)拒收、任务判未完成并重试——宁可多搜也别漏真链接。If you truly cannot produce a briefing, call `mark_briefing_failed(briefingId, reason)` and say so.
```

Note what this sentence actually does: it doesn't ask the agent to include links, it *informs* the agent of a gate that will reject the save without them. The enforcement lives in `save_briefing`, not in the prompt. The prompt's contribution is the priority call — "宁可多搜也别漏真链接" (better to over-search than miss a real link) — and the escape hatch: an honest `mark_briefing_failed` is always preferred over a fabricated pass.

## Simplified mode: graceful degradation

```text theme={null}
**若任务含 `模式=简化`**:此为多次重试后的最后一搏。只做两个核心角度——`领域速成` 与 `双语术语表`(各最多 2 次 web_search),其余角度可省略或一句带过;不要反复搜索。**简化模式:绝不写 `## 延伸阅读` 段(整段省略)。正常模式:必写 `## 延伸阅读` 段且含 ≥3 个真实URL链接。**
[…]
然后**务必调 `save_briefing({ briefingId, title, contentMd, simplified: true })`**(哪怕较短;`simplified: true` 必传,否则延伸阅读闸会拒收这份合法的简化简报),并在正文开头注明"本简报因多次生成波动采用简化模式,部分角度未展开,可点重试补全"
[…]
只有在简化模式下仍完全无法产出时才 `mark_briefing_failed`。
```

When retries run low, the dispatcher switches the task to `模式=简化` — in the prompt's own words, "此为多次重试后的最后一搏" (the last stand after repeated retries). Two things make this degradation honest rather than a quiet quality drop. First, the gate exemption is explicit: the agent must pass `simplified: true`, so the further-reading gate is knowingly waived by the system, never silently bypassed by the agent. Second, the document must open by admitting what it is — that it was produced in simplified mode, that some angles are missing, and that the user can retry for a full version. The degraded artifact labels itself degraded and names the remedy.

## Prompts are not gates

These instructions are load-bearing, but they are not trusted. Every consequential MUST above has a mechanical twin: the further-reading floor, the minimum length, and the running-status write guard are enforced in `save_briefing`'s code; the heartbeats feed a heartbeat-aware orphan recovery; even the delegation contract is backed by a four-field output schema on the parent's turn. The briefing subagent also owns an executable Exa-backed `web_search` rather than relying on a provider-managed fallback that OpenAI-compatible chat models cannot execute. The prompt's job is to get a capable agent through cleanly on the first attempt. The gates' job is to guarantee that when the prompt fails, the user sees a retry or a clear, specific explanation, never a false success. The full gate stack is documented in [Briefing Pipeline](/internals/briefing-pipeline).
