Không lấy được nội dung từ GitHub (HTTP 404). Nguồn có thể đã được đổi tên hoặc gỡ.
Mở lịch sử trên GitHubPersonal AI Assistant — D1 (Portraits + Intent Rename)
18-task bite-sized TDD plan for the D1 slice: the portraits skill plus the D0→D1 intent-prefix rename. Phase A migrates the intent union (approve-comment → emdash.comment.approve etc.) across the type, the action-handler switch, the tests, and a one-shot UPDATE on _agent_actions. Phase B builds the reusable deep-research helper (Brave Search v1 client, Readability-based article extractor, Claude synthesis with source attribution, research() orchestrator with depth shallow=3/deep=8 and parallel fetch with 10s timeout). Phase C adds portraits primitives: slug helper with Vietnamese diacritic folding, Anthropic-vision OCR returning strict JSON fields, portrait-file writer+reader with round-trip fidelity, highlights-file manager with slug-dedup upsert. Phase D wires the main handler (OCR → 6 parallel research surfaces for LinkedIn/Company/Facebook/X/GitHub/News → Claude synthesis → markdown file + highlights + Telegram notify) plus /portrait-note and /portrait-correct command handlers. Phase E routes events in event.ts, surfaces Telegram photos as portrait.new events in telegram.ts, deploys, runs end-to-end smoke. Explicit non-goals: no pending-action infra (deferred to D2 per catalog spec), no action-worker surface (portraits writes only to /data), no ingress route (Telegram photos arrive through OpenClaw's native connector).