ljg-blind について
ljg-blind は Codex の会話を分析して思考の盲点を特定し、微信读书から関連する章を選ぶスキルです。日ごとの会話を振り返りたい人向けで、具体的な発言を根拠に分析し、Markdown ノートに保存します。
主な機能
- 015種類の盲点の兆候を会話から探す
- 02根拠に基づいて重点盲点を1つ選ぶ
- 03微信读书で関連する本と章を探す
- 04読書リンクを生成し所要時間を見積もる
- 05分析をMarkdownノートに保存
活用シーン
- 01前日または指定日のAI会話を振り返る
- 02繰り返す思考習慣の盲点を見つける
- 03特定した盲点に関連する読書章を探す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lijigang/ ljg-skills --skill ljg-blindインストール後、Claude Code で/ljg-blindを入力して読み込まれたか確認します。
同梱ファイルTools/WeReadWebUrl.help.mdTools/WeReadWebUrl.ts
詳細
盲点スキャン
昨日の AI との会話をすべて読み、あなた自身には見えない思考の盲点を照らし出し、微信读书からその盲点を補う一章を選びます。
盲点とは
盲点は知識の不足ではありません。「ある本を読んだことがない」「ある事実を知らない」といったものではありません。その手の不足なら、調べれば補えます。
盲点とは、ある種の真実をあなたに構造的に見えなくする思考の癖です。思いつかないのではなく、その癖のせいで、そもそもその方向を見ていません。盲点は、考えている内容ではなく、ものの考え方に潜んでいます。
だから、証拠は「彼が何を間違えたか」ではありません。見るべきなのは、どこを見なかったか、どこで話をそらしたか、何を前提にしながら一度も確かめなかったかです。
盲点を示す五つのサイン
昨日の会話から、次の五つのサインを探してください。それぞれ、具体的な発言に結びつけてください。感覚だけで判断してはいけません。
- 回避点——難題を取り上げたのに、すぐに引っ込めています。証拠:問題を提起したのに、すぐ話題を変えたり、「これはひとまず置いておこう」と流したりしています。
- 空回りする枠組み——同じ問題を何度も視点を変えて眺めるのに、どれも具体化されていません。証拠:一つの問題に三つ、四つの枠組みを当てはめても、それぞれを浅くなぞるだけで、最後まで結論が出ていません。
- 単一の視野——一日を通して、一つか二つの f しか使っていません(何事も「制約」「進化」「ゲーム理論」で考えるなど)。ほかの見方を試していません。これは最も見えにくい盲点です。使い慣れた f ほど、ほかの f で見えるものを覆い隠します。(继刚看世界 = f(x)、四軸は彼が標準で使う四つの f です。標準で使っているからこそ、今日はそのうち一つだけに頼っていないか、特に確かめる必要があります。)
- 未検証の前提——一つの暗黙の仮定が会話全体に通底し、確固とした制約として使われているのに、それが偽の壁ではないか一度も問い直していません。証拠:「当然こうあるべき」という考え方が何度も出てくるのに、自分では一度も疑っていません。
- 隣接する見落とし——彼が尋ねたことから考えて、本来なら尋ねるべきなのに尋ねなかった点です。根拠なく推測するのではなく、彼自身の手がかりがその点を示しています。
どれを選ぶか
サインの中から、今日の盲点として一つだけ選んでください。五つを一つずつ挙げるより、一つを掘り下げてください。盲点の密度は精度より低いのです。判断基準は次の三つです。
- レバレッジ——補うことで、次に開ける可能性が最も大きいもの。
- 本当の盲点——本人には見えておらず、気づいていながら先延ばしにしているものではないこと。
- mission との適合——M0(新しい視野を探す)/M1(本質を探る)に合っていること。盲点が本人の主軸をちょうど妨げているなら、優先します。
$を読み、主軸を確認してください。${LIFEOS_DIR:-$HOME/.codex/LIFEOS}/USER/TELOS/PRINCIPAL_TELOS.md
手順
ステップ 1 · 日付を決める
# 默认昨天;用户传了 YYYY-MM-DD 就用那天(macOS BSD date)
target=${1:-$(date -v-1d +%Y-%m-%d)}
ステップ 2 · 当日の会話を拾う
セッションファイルは $HOME/.codex/sessions/YYYY/MM/DD/*.jsonl にあります。ディレクトリの日付は、ローカル時刻で記録されたセッション開始日です。行内の timestamp は UTC です。そのため、対象日とその前日のディレクトリを両方調べ、メッセージをローカル日付で絞り込みます。トップレベルの task にある response_item / message / user / input_text だけを読み、session_meta.payload.source.subagent が存在する子 agent のセッション、harness のラッパー、および今回の呼び出し自体は除外します。
target=<上一步的日期>
out=/tmp/ljg-blind-${target}.txt
: > "$out"
previous_dir=$(date -j -v-1d -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
target_dir=$(date -j -f '%Y-%m-%d' "$target" '+%Y/%m/%d')
for day_dir in "$previous_dir" "$target_dir"; do
session_dir="$HOME/.codex/sessions/$day_dir"
[ -d "$session_dir" ] || continue
find "$session_dir" -type f -name '*.jsonl' -print0
done | while IFS= read -r -d '' session_file; do
# Codex 将子 agent 与顶层 task 放在同一日期目录;从 session_meta 排除它们。
if jq -e 'select(.type=="session_meta") |
(.payload.source | type == "object" and has("subagent"))' \
"$session_file" >/dev/null 2>&1; then
continue
fi
jq -r --arg target "$target" '
def local_epoch:
sub("\\.[0-9]+Z$"; "Z") | fromdateiso8601;
select(.type=="response_item"
and .payload.type=="message"
and .payload.role=="user")
| (.timestamp | local_epoch) as $epoch
| select(($epoch | strflocaltime("%Y-%m-%d")) == $target)
| ([.payload.content[]?
| select(.type=="input_text")
| .text] | join("\n")) as $text
| select($text | length > 0)
| select(($text | test("^(<recommended_plugins>|<environment_context>|<task-notification>)")) | not)
| select(($text | test("(?i)(ljg-blind|扫盲区)")) | not)
| "[" + ($epoch | strflocaltime("%H:%M")) + "] " + $text
' "$session_file" 2>/dev/null >> "$out"
done
wc -m "$out"
資料が 50KB を超える場合は、会話を分割して読みます。まず各部分で何が話題になっているかを把握してから、詳しく確認してください。文脈をつかむために、前後の assistant の返信をいくつか参考にしてもかまいません。
データが少ない場合の対応:当日の本人による入力が 200 字未満、または会話がない場合は、出力に「当日の会話が少ない/ない」と明記し、無理に盲点を作らないでください。何も出さないほうがよく、捏造してはいけません。
ステップ 3 · 盲点を読み取る
上記の「盲点を示す五つのサイン」に沿って確認し、該当箇所があれば、その都度証拠(どの発言か、どんな話の転換から判断したか)を記録します。そのうえで「どれを選ぶか」の三つの基準に照らし、最も重要な盲点を一つ選びます。
ステップ 4 · 微信读书で章を選ぶ
weread skill を呼び出します(WEREAD_API_KEY は環境変数に設定します。形式は wrk-xxxx です。設定されていない場合は export WEREAD_API_KEY=<key> と案内します)。手順は次のとおりです。
- 本を検索する——盲点から核心となるキーワードを 1〜2 個抜き出します。
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/store/search","keyword":"<核心词>","count":8,"skill_version":"1.0.3"}' \
| jq -r '.results[].books[]?.bookInfo | "\(.bookId)\t\(.title)\t\(.author)\t评分\(.newRating)"'
検索結果から、評価ができるだけ 750 以上(新しい評価は ×100、つまり 7.5)で、盲点に最も合う本を 1 冊選び、bookId を記録します。評価だけで決めてはいけません。高評価より、盲点に合っていることが大切です。評価 7.4 でも盲点にぴったり合う本のほうが、評価 8.5 でも少ししか関係しない本より適しています。
- 目次を見る——最も盲点に合う一章だけを選びます。本全体でも、漠然とした序章でもありません。
curl -s -X POST https://i.weread.qq.com/api/agent/gateway \
-H "Authorization: Bearer $WEREAD_API_KEY" -H "Content-Type: application/json" \
-d '{"api_name":"/book/chapterinfo","bookId":"<bookId>","skill_version":"1.0.3"}' \
| jq -r '.chapters[] | select(.level<=2) | "\(.chapterUid)\t[\(.level)] \(.title)\t\(.wordCount)字"'
chapterUid、章のタイトル、wordCount を記録します。
-
所要時間を見積もる——
wordCount / 280(中国語の読書速度)を計算し、5 分単位で切り上げます。wordCount がない場合は、目次から判断して 15〜45 分の範囲で見積もります。タイトルに「上巻/下巻」「第一巻」など大きな区分を示す言葉が含まれる場合は、所要時間をさらに ×1.5 にします。 -
ウェブ版リンクを作成する——微信读书のウェブ版リーダーでは、
bookId/chapterUidをそのまま使えません。先にエンコードする必要があります。スキル付属のツールを使って生成します。
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>" "<chapterUid>"
ツールの出力例:
https://weread.qq.com/web/reader/{encodedBookId}k{encodedChapterUid}
出力された完全な URL をノートに記載します。エンコード値を手作業で組み立てたり、生の ID を /web/reader/ にそのまま入れたりしてはいけません。
フォールバック:検索結果が空、または合う章が見つからない場合は、関連する本を一冊選び、bookId だけを渡してウェブ版の書籍ページへのリンクを生成します。
bun "${HOME}/.agents/skills/ljg-blind/Tools/WeReadWebUrl.ts" "<bookId>"
章を正確に選べなかった理由を本文に記載します。
ステップ 5 · ノートを書く
タイムスタンプを取得します:date +%Y%m%dT%H%M%S と date "+%Y-%m-%d %a %H:%M"(時間は現在のものを使い、target の時間は使いません)。
~/Context/{時間戳}--盲区-{主题}__blind.md に書き込みます。Markdown 形式を使い、Org の構文は禁止です。
本文のテンプレート:
---
title: 盲区扫描 · {一句话点出这个盲区}
date: [YYYY-MM-DD Weekday HH:MM]
tags: blind weread topology
---
# 昨天你在想什么
<1-2 段。当天对话的思维地形——哪几件事、绕着哪个核心在转。给证据:哪几句话看出来的。不流水账,抓主线。>
# 照出来的盲区
<挑出的那 1 个盲区。先一句话点破它是哪种(绕开点 / 空转框架 / 单一取景框 / 未检前提 / 相邻空缺)。再 2-3 段说清:它具体长什么样、昨天哪几处暴露了它、为什么你自己看不见。要点到杠杆——补上之后会打开什么。>
# 这一章给你
- 书:《书名》 — 作者
- 章节:<章节标题>
- 时长:约 N 分钟
- 链接:[在微信读书网页版阅读本章](https://weread.qq.com/web/reader/ENCODED_BOOKkENCODED_CHAPTER)
- 为什么是它:<3-4 句。把盲区和这一章对上——这章具体讲什么、怎么补这个盲区。不要泛泛说"开阔视野",要说清这一章的哪个东西正对这个盲区的哪个缺口。>
レポートファイルのパスをユーザーに伝えます。
文体ルール(ノートを書くときに守ること)
このノートは、長く一緒に考えてきた相手に向けて書くものです。報告書でも、見知らぬ読者向けの文章でもありません。
- 中国語で書き、翻訳調は禁止。「しかしながら/さらに/注目すべきなのは」などは控えめにします。名詞化も避けます(「…についての理解」→「…を理解する」、「…という決断をする」→「決める」)。主語は省けるなら省き、短い文を優先します。書き終えたら、声に出さずに読み返し、「翻訳小説を読んだことのない中国人なら、こう言うだろうか? 汪曾祺ならこう書くだろうか?」と自問してください。引っかかるところは、言葉を置き換えるのではなく、段落ごと書き直します。
- 切り傷や金属にたとえる表現は禁止。「この一刀」「さらに一段と厳しく」「鋭い言葉」「たたき固める」「釘付けにする」「厳しい言葉」など、自分の表現力を誇るメタ修辞は使いません。盲点を正確に照らせているかは読者が判断するので、作者が力強さを誇示する必要はありません。
- 温かみとざらつき、判断を持たせる。立場を示してかまいませんが、偽りの中立を装わないでください。ただし、それが判断であり、客観的事実ではないことは明確にします。
Markdown の厳密な構文(Org との混在禁止)
- 見出しには
#/##/###を使い、アスタリスクを見出しの代わりに使わない - 太字は
**文字**、斜体は*文字*、等幅はcode - リストには
-を使う。見出しには#を使う - リンクは
[text](url)を使う - 区切り線は
---、引用は>を使う
セルフチェック(書き終える前に確認)
- 盲点には具体的な証拠がありますか? すべて昨日のどの発言かを指し示せますか? 指し示せない場合は、ステップ 3 に戻ります。
- 盲点を一つだけ選び、掘り下げていますか? それとも欲張って三つ、四つ挙げていませんか?
- 章のリンクは
https://weread.qq.com/web/reader/で始まり、ツールが空でない bookId と chapterUid を使って生成したものですか? - モバイルアプリだけを起動する専用プロトコルのリンクが、本文に残っていませんか?
- 翻訳調を確認しましたか? 名詞化、「是…的」構文、省ける接続詞を一通り見直しましたか?
- 切り傷や金属の比喩を確認しましたか?「この一刀」「釘付けにする」「たたき固める」が一つも残っていませんか?
- 三つの段落すべてに内容がありますか? 空の段落はありませんか?
注意点
- ウェブ版リーダーのパスにはエンコード済み ID を使います。
https://weread.qq.com/web/reader/573976?chapterUid=13は 404 を返します。Tools/WeReadWebUrl.tsを使って bookId と chapterUid をそれぞれエンコードし、kでつなぐ必要があります。 - 章の位置は query パラメーターに指定しません。 正しい形式は
/web/reader/{encodedBookId}k{encodedChapterUid}です。章のエンコードを省くと、本全体のページが開くだけです。
「朝の手紙」との使い分け
Pulse には毎朝、自動で届く朝の手紙(陈平安思维拓扑.org)があります。陈平安の口調で毎日一通、盲点を一つ選びます。ljg-blind は必要なときに呼び出す分析版です。「昨日を読む → 盲点を見る → weread で章を選ぶ」という土台は同じですが、より体系的に盲点に焦点を当て、分析も詳しく、日付を渡せばどの日でも調べられます。手紙が欲しいなら朝の手紙を待ち、特定の日の盲点を自分で調べて、保存できる分析が欲しいなら ljg-blind を使います。