mcpField
L
ljg-blind

ljg-blind

github.com/lijigang生産性7.6k1.1k 回インストール3 日前に更新
リポジトリ

ljg-blind について

ljg-blind は Codex の会話を分析して思考の盲点を特定し、微信读书から関連する章を選ぶスキルです。日ごとの会話を振り返りたい人向けで、具体的な発言を根拠に分析し、Markdown ノートに保存します。

主な機能

  1. 015種類の盲点の兆候を会話から探す
  2. 02根拠に基づいて重点盲点を1つ選ぶ
  3. 03微信读书で関連する本と章を探す
  4. 04読書リンクを生成し所要時間を見積もる
  5. 05分析をMarkdownノートに保存

活用シーン

  1. 01前日または指定日のAI会話を振り返る
  2. 02繰り返す思考習慣の盲点を見つける
  3. 03特定した盲点に関連する読書章を探す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lijigang/ljg-skills --skill ljg-blind

インストール後、Claude Code で/ljg-blindを入力して読み込まれたか確認します。

同梱ファイルTools/WeReadWebUrl.help.mdTools/WeReadWebUrl.ts

詳細

盲点スキャン

昨日の AI との会話をすべて読み、あなた自身には見えない思考の盲点を照らし出し、微信读书からその盲点を補う一章を選びます。

盲点とは

盲点は知識の不足ではありません。「ある本を読んだことがない」「ある事実を知らない」といったものではありません。その手の不足なら、調べれば補えます。

盲点とは、ある種の真実をあなたに構造的に見えなくする思考の癖です。思いつかないのではなく、その癖のせいで、そもそもその方向を見ていません。盲点は、考えている内容ではなく、ものの考え方に潜んでいます。

だから、証拠は「彼が何を間違えたか」ではありません。見るべきなのは、どこを見なかったか、どこで話をそらしたか、何を前提にしながら一度も確かめなかったかです。

盲点を示す五つのサイン

昨日の会話から、次の五つのサインを探してください。それぞれ、具体的な発言に結びつけてください。感覚だけで判断してはいけません。

  1. 回避点——難題を取り上げたのに、すぐに引っ込めています。証拠:問題を提起したのに、すぐ話題を変えたり、「これはひとまず置いておこう」と流したりしています。
  2. 空回りする枠組み——同じ問題を何度も視点を変えて眺めるのに、どれも具体化されていません。証拠:一つの問題に三つ、四つの枠組みを当てはめても、それぞれを浅くなぞるだけで、最後まで結論が出ていません。
  3. 単一の視野——一日を通して、一つか二つの f しか使っていません(何事も「制約」「進化」「ゲーム理論」で考えるなど)。ほかの見方を試していません。これは最も見えにくい盲点です。使い慣れた f ほど、ほかの f で見えるものを覆い隠します。(继刚看世界 = f(x)、四軸は彼が標準で使う四つの f です。標準で使っているからこそ、今日はそのうち一つだけに頼っていないか、特に確かめる必要があります。)
  4. 未検証の前提——一つの暗黙の仮定が会話全体に通底し、確固とした制約として使われているのに、それが偽の壁ではないか一度も問い直していません。証拠:「当然こうあるべき」という考え方が何度も出てくるのに、自分では一度も疑っていません。
  5. 隣接する見落とし——彼が尋ねたことから考えて、本来なら尋ねるべきなのに尋ねなかった点です。根拠なく推測するのではなく、彼自身の手がかりがその点を示しています。

どれを選ぶか

サインの中から、今日の盲点として一つだけ選んでください。五つを一つずつ挙げるより、一つを掘り下げてください。盲点の密度は精度より低いのです。判断基準は次の三つです。

  • レバレッジ——補うことで、次に開ける可能性が最も大きいもの。
  • 本当の盲点——本人には見えておらず、気づいていながら先延ばしにしているものではないこと。
  • 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. 本を検索する——盲点から核心となるキーワードを 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 でも少ししか関係しない本より適しています。

  1. 目次を見る——最も盲点に合う一章だけを選びます。本全体でも、漠然とした序章でもありません。
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 を記録します。

  1. 所要時間を見積もる——wordCount / 280(中国語の読書速度)を計算し、5 分単位で切り上げます。wordCount がない場合は、目次から判断して 15〜45 分の範囲で見積もります。タイトルに「上巻/下巻」「第一巻」など大きな区分を示す言葉が含まれる場合は、所要時間をさらに ×1.5 にします。

  2. ウェブ版リンクを作成する——微信读书のウェブ版リーダーでは、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 を使います。

コメント