ljg-blind
Blind spot scanning—reads all your dialogues with AI from yesterday to illuminate exposed cognitive blind spots (not lacking knowledge, but thinking habits that keep certain truths consistently invisible), then selects a precise chapter from WeChat Reading to address it, producing a complete analytical note. Use when user says '扫盲区', '盲区', '照盲区', '看看我的思维盲区', '我昨天想漏了什么', 'blind spot', 'ljg-blind', '/ljg-blind', or wants yesterday's AI conversations analyzed for cognitive blind spots plus a targeted weread chapter to fill them. Optional parameter: pass a date (YYYY-MM-DD) to scan that specific day instead of yesterday. NOT FOR vertically drilling down into a single viewpoint (use ljg-think), reducing rank in a field (use ljg-rank), companion-reading a text (use ljg-read), or finding constraints in a field (use ljg-constraint).
1How It Works & Mechanism
A blind spot is not a knowledge gap, but a thinking habit that makes a certain category of truth systematically invisible to you; evidence lies in where one failed to look, not what factual errors were made.
盲区不是知识缺口。不是"没读过某本书""不知道某个事实"——那种缺口,查一下就补上了。
Use five signals to locate blind spots in conversations, grounding every instance in concrete utterances rather than intuition.
**绕开点**——一个难题他打开了,又飞快合上。
Select only 1 blind spot to analyze thoroughly; better to address one completely than touch upon five superficially.
从信号里挑 **1 个**作为今天的盲区。宁可一个说透,不要五个都点一遍——盲区的密度低于精度。
Defaults to scanning yesterday, but can accept YYYY-MM-DD to specify a date (macOS BSD date syntax).
target=${1:-$(date -v-1d +%Y-%m-%d)}
Extract top-level dialogues for the day from the Codex session directory, selecting only user/input_text while filtering out sub-agents and harness wrappers.
只读取顶层 task 的 `response_item / message / user / input_text`,排除 `session_meta.payload.source.subagent` 存在的子 agent 会话
Sparse data fallback: when human input for the day is under 200 characters or there are no conversations, explicitly state the sparsity instead of fabricating blind spots.
当天真人输入 <200 字或没有对话——直接在输出里写明「当天对话稀薄 / 无」,**不强造盲区**。
Extract core keywords from the blind spot to query the WeChat Reading Agent Gateway for book searching and catalog inspection, selecting the most relevant chapter.
curl -s -X POST https://i.weread.qq.com/api/agent/gateway
The WeChat Reading web reader does not accept raw IDs; bookId and chapterUid must be encoded separately using the included TS tool.
微信读书网页阅读器不接受裸 `bookId` / `chapterUid`,必须先编码。
Write output into org-mode notes under ~/Context, strictly adhering to org syntax and specified tone rules.
写入 `~/Context/{时间戳}--盲区-{主题}__blind.org`。org-mode 格式,禁止 markdown 语法。
When selecting a blind spot, read PRINCIPAL_TELOS.md to confirm the user's primary objectives and align with M0/M1.
读 `${LIFEOS_DIR:-$HOME/.codex/LIFEOS}/USER/TELOS/PRINCIPAL_TELOS.md` 确认主线。
2Core Capabilities
3External Dependencies
| Kind | Dependency / Endpoint |
|---|---|
| network | 微信读书 Agent Gateway |
| cli | bun(运行自带 TS 工具) |
| cli | jq(过滤会话 jsonl) |
4Recommended Governance & Evidence
- scripts/: Local script/command execution: bun Tools/WeReadWebUrl.ts (local md5 encoding for bookId/chapterUid)
- 网络端点: External network access declared: https://i.weread.qq.com/api/agent/gateway (/store/search for searching books, /book/chapterinfo)
- 本地工作目录: File I/O and artifact output: ~/Context/{timestamp}--盲区-{theme}__blind.org
5Second-Pass Verification
- [ok] 外部调用核验:微信读书 Gateway — SKILL.md 第四步用 curl 调 /store/search 与 /book/chapterinfo,端点固定为 i.weread.qq.com,与风险扫描 URL 命中一致。
- [ok] 凭证读取核验 — 命令头 `-H "Authorization: Bearer $WEREAD_API_KEY"` 与『WEREAD_API_KEY 在环境变量里』说明一致,属读 env。
- [ok] 写盘核验 — 目标笔记写入 ~/Context/*.org,会话摘录写 /tmp/ljg-blind-*.txt,与写盘扫描线索吻合。
- [ok] 脚本行为反例检查 — WeReadWebUrl.ts 只 import bun 的 CryptoHasher 做 md5,无网络、无文件读写、无 child_process;故 scripts_executed 只列该本地工具。
- [ok] 判级口径复核 — 按六档,读 WEREAD_API_KEY 且外发素材到固定端点落 orange;工具本地编码、非任意代码执行,未升级为 red。
- [ok] 引用可定位性 — 所有 quote 均可在 SKILL.md/WeReadWebUrl.help.md 原文逐字匹配,长度均大于 12 字符。
- [ok] 流程诚实性核对 — 『数据稀薄兜底』与『宁可交白卷,不许编』确认分析未把无证据时的强制造盲区当作能力。
6Verdict & Scenarios
ed90cc51ffaa4140…