Paper Digest
Morning workflow
- Read the internship context index at
/Volumes/T7 Shield/hermes/home/memory/research/INTERNSHIP_CONTEXT/internship_context_index.md (this is the canonical path; do NOT look for it under ~/.hermes-wyatt/INTERNSHIP_CONTEXT/). Also check research-watchlist.md if it exists (it may not — skip if absent).
- Query the dedupe database at
/Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite to see what was already covered by previous runs. See references/dedupe-db-schema.md for the schema.
- Scan the local internship research folder before trusted external sources.
- Rank by relevance to
/Volumes/T7 Shield/02_Research_Papers_Reports/实习, not generic popularity.
- Produce one 500-word idea only.
- Include why it matters, experiment, required data/code, expected signal, stop condition, references.
- Write the report to
/Volumes/T7 Shield/hermes/home/memory/research/REPORTS/daily-past-week-YYYYMMDD.md and update the dedupe DB.
- Push through configured Weixin/WeCom channel only after isolated gateway is configured.
- Record Wyatt feedback: 有用 / 无用 / 深读.
Deep-read workflow
If Wyatt replies 深读, write PAPER_CARD and link it to active cases.
External search patterns
Preferred approach: Python in execute_code
Do NOT use terminal curl | python3 pipes — the security scanner rejects them and arXiv rate-limits quickly.
Instead use execute_code with Python urllib:
- Semantic Scholar: JSON API, 1 req/sec limit. Good for initial discovery. Add
time.sleep(2) between queries.
- arXiv: Atom XML, ~1 req / 3 sec limit. Use after Semantic Scholar for missing topics. Parse with
xml.etree.ElementTree.
- 429 handling: If either API returns 429, stop and report "external scan inconclusive" rather than retrying. Base report on available results + HK corpus.
Dedupe DB
Path: /Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite
Schema: sources(stable_id, source_type, title, url, published_at, summary, topic, content_hash, first_seen_at, last_seen_at), runs(run_id, kind, window_start, window_end, created_at, status, source_count, report_path), run_sources(run_id, source_id, rank). Always .schema before inserting — column names differ from naive expectations.
Report location
Write report to /Volumes/T7 Shield/hermes/home/memory/research/REPORTS/daily-past-week-YYYYMMDD.md.
Hard rules
- Produce exactly one research idea per run; do not dump generic AI news or multiple papers.
- For Weixin/WeCom pushes to Wyatt, write the delivered digest in Chinese and translate paper/source content into Chinese; keep original paper titles and key technical terms in parentheses when useful.
- Bind the idea to the active watchlist, a historical case, and one concrete file/directory under the T7 internship research folder when possible.
- Include a concrete experiment, required data/code, expected signal, stop condition, and references.
- Never request or export raw company data; use screenshots, logs, RUN_CARD, DATA_CARD, or aggregate statistics.
- Push through Weixin/WeCom only after an isolated gateway/HERMES_HOME is configured and token double-running is ruled out.
External API queries: pitfalls
- Do NOT use
terminal (curl) for arXiv or Semantic Scholar API queries. curl | python3 gets blocked by the security scanner (pipe-to-interpreter), and standalone curl to arXiv frequently times out or returns 429.
- Use
execute_code with Python urllib.request instead. It has a 120s timeout and avoids the pipe-to-interpreter block. Space queries ≥3s apart to respect rate limits.
- Semantic Scholar returns JSON (preferred when arXiv is 429). arXiv returns Atom XML — parse with
xml.etree.ElementTree.
- Both APIs can rate-limit (429). If all live queries fail, do not conclude “no candidates”. First query the dedupe DB for sources whose
published_at falls in the requested window, then synthesize from those archived sources + HK/local corpus. Label the live scan as inconclusive/rate-limited. See references/month-window-fallback.md.
- The dedupe database lives at
/Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite. Schema is documented in references/dedupe-db-schema.md.
1---2name: paper-digest-23description: Daily research routine for Wyatt. Selects one paper, technical doc, video, or repository relevant to the current multimodal/model-training watchlist and produces a 500-word idea with links and a concrete experiment.4---5# Paper Digest6## Morning workflow71. Read the internship context index at `/Volumes/T7 Shield/hermes/home/memory/research/INTERNSHIP_CONTEXT/internship_context_index.md` (this is the canonical path; do NOT look for it under `~/.hermes-wyatt/INTERNSHIP_CONTEXT/`). Also check `research-watchlist.md` if it exists (it may not — skip if absent).82. Query the dedupe database at `/Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite` to see what was already covered by previous runs. See `references/dedupe-db-schema.md` for the schema.93. Scan the local internship research folder before trusted external sources.104. Rank by relevance to `/Volumes/T7 Shield/02_Research_Papers_Reports/实习`, not generic popularity.115. Produce one 500-word idea only.126. Include why it matters, experiment, required data/code, expected signal, stop condition, references.137. Write the report to `/Volumes/T7 Shield/hermes/home/memory/research/REPORTS/daily-past-week-YYYYMMDD.md` and update the dedupe DB.148. Push through configured Weixin/WeCom channel only after isolated gateway is configured.159. Record Wyatt feedback: 有用 / 无用 / 深读.16## Deep-read workflow17If Wyatt replies 深读, write PAPER_CARD and link it to active cases.1819## External search patterns20### Preferred approach: Python in execute_code21Do NOT use terminal `curl | python3` pipes — the security scanner rejects them and arXiv rate-limits quickly.22Instead use `execute_code` with Python `urllib`:2324- **Semantic Scholar**: JSON API, 1 req/sec limit. Good for initial discovery. Add `time.sleep(2)` between queries.25- **arXiv**: Atom XML, ~1 req / 3 sec limit. Use after Semantic Scholar for missing topics. Parse with `xml.etree.ElementTree`.26- **429 handling**: If either API returns 429, stop and report "external scan inconclusive" rather than retrying. Base report on available results + HK corpus.2728### Dedupe DB29Path: `/Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite`30Schema: `sources(stable_id, source_type, title, url, published_at, summary, topic, content_hash, first_seen_at, last_seen_at)`, `runs(run_id, kind, window_start, window_end, created_at, status, source_count, report_path)`, `run_sources(run_id, source_id, rank)`. Always `.schema` before inserting — column names differ from naive expectations.3132### Report location33Write report to `/Volumes/T7 Shield/hermes/home/memory/research/REPORTS/daily-past-week-YYYYMMDD.md`.3435## Hard rules36- Produce exactly one research idea per run; do not dump generic AI news or multiple papers.37- For Weixin/WeCom pushes to Wyatt, write the delivered digest in Chinese and translate paper/source content into Chinese; keep original paper titles and key technical terms in parentheses when useful.38- Bind the idea to the active watchlist, a historical case, and one concrete file/directory under the T7 internship research folder when possible.39- Include a concrete experiment, required data/code, expected signal, stop condition, and references.40- Never request or export raw company data; use screenshots, logs, RUN_CARD, DATA_CARD, or aggregate statistics.41- Push through Weixin/WeCom only after an isolated gateway/HERMES_HOME is configured and token double-running is ruled out.4243## External API queries: pitfalls44- **Do NOT use `terminal` (`curl`) for arXiv or Semantic Scholar API queries.** `curl | python3` gets blocked by the security scanner (pipe-to-interpreter), and standalone `curl` to arXiv frequently times out or returns 429.45- **Use `execute_code` with Python `urllib.request` instead.** It has a 120s timeout and avoids the pipe-to-interpreter block. Space queries ≥3s apart to respect rate limits.46- Semantic Scholar returns JSON (preferred when arXiv is 429). arXiv returns Atom XML — parse with `xml.etree.ElementTree`.47- Both APIs can rate-limit (429). If all live queries fail, **do not conclude “no candidates”**. First query the dedupe DB for sources whose `published_at` falls in the requested window, then synthesize from those archived sources + HK/local corpus. Label the live scan as inconclusive/rate-limited. See `references/month-window-fallback.md`.48- The dedupe database lives at `/Volumes/T7 Shield/hermes/home/memory/research/research_dedupe.sqlite`. Schema is documented in `references/dedupe-db-schema.md`.