grasp
nishio.icon from 2026/06/23
Cosenseが「複数人で使うWebサービス」という立ち位置である以上、Single Source of Truthはクラウド上に置かざるを得ない
クラウド上の知識ストアである以上、ネットワークアクセスの速度や、オフラインで使えないなどの問題から逃れられない
一方でCosenseのユーザの中には「自分一人で使っている」というユースケースが多々ある
彼らのユースケースで「複数人で使うためのオーバーヘッド」を支払う必要はない
そこでgrasp https://github.com/nishio/grasp
CosenseのExport JSONからローカルでSQLite上のレコードに変換することで、主要なアクセスが10倍早くなる
あっ、skillsがnishio.json特化の記述になってた、修正する!→done
複数プロジェクトをインポートする可能性を忘れてた
プロジェクト間リンクもたどれるようにしよう
リンクしてなくても同名ページが発見できてもいいかも?
このツールのライセンスを明記してほしいですinajob.icon
自分用に改造したい
公開するかは不明だが明記してあると安心して土台に出来る
複数プロジェクト対応した、MITライセンスにしてとCodexに言ったのでそのうちなるwnishio.icon
唐突に「こういうものが必要なんだ!」と言語化できたら、そのまま3時間でここまで形になってリリースできる時代
ありえん時代基素.icontakker.icon
choi-drawもそのノリで作ったinajob.icon
3時間でつくれるのすげえsta.icon
今読んでるけど、[xxx]の記載しかない中、パースしてグラフつくったり、赤リンクが実体ないので実際のノードつくってあげたりなど色々やることがあるはずなのに、その辺も全部やってくれてるのかな
昔、手でpythonで似たものつくったときめっちゃ苦労したの思い出した
まあnishio.iconさんほど詳しいなら(仮にLLMがある程度ポンコツで)追加指示が必要だとしても3時間でできそうな気もするが
25,791 ページ / 724,981 行 / 120,693 エッジ / 41,750 未解決ターゲット
2026/06/24grasp.icon
MITライセンスついた(さっきの「そのうちなる」がdone)
方向性が見えてきた: graspの核は「read = 近傍同梱」
read一発で 本文 + 行レベル逆リンク + related(2-hop) + そのページから出てる未解決リンク(赤リンク)をまとめて返す
ブラウザでページを開くと関連ペインが目に入る、あの体験をCLI/オフラインからAIが
ただの「グラフDBをCLIで叩く」じゃなく、AIが文脈ごと一気に読めるのが効く
そこから派生してgather系: 本文ページの無い概念ハブへの言及を集めて読む
bare mention(リンクしてない言及)/ co-links(同じ行に共起するリンク)/ come-from(宣言された用語単位の収集)
参照されてるのに本文の無いタイトルでも、それを参照する複数ページの文脈ごと読める
Markdownフォルダもimportできるようにした(Cosense JSONだけでなく既存のvaultも土台にできる)
25,792 ページ / 724,988 行 / 125,409 エッジ / 42,770 未解決ターゲット
エッジが増えたのはパーサが #tag と数字リンクもエッジ化したから(ページ数25,792は不変)
metadataなしjsonでも読めるようにしてみたtakker.icon
https://github.com/nishio/grasp/pull/2
ファーストインプレッション
Claude想定っぽいけど、OpenCodeなど他のcoding agentでも動くtakker.icon
雑な指示でも十分使える
最近のLLMの性能の良さに助けられている
offline版のhelpfeel/cosense-cliといったところ
読み込み速度の違いや一度に検索可能な範囲が違うだろうから、同じタスクでもhelpfeel/cosense-cliを使うのとgraspを使うのとでは違いが出そう
複数projectを同時に読むこともできるかな
from 2026/06/24 の反応メモ
takker.icon: 井戸端規模(43,742ページ / 145万行)でも取り込みは数分で終わり、『ちゃんと読み込んでくれている感』がある。自分のprojectをexportして徹底的に分析させる用途が見える。
inajob.icon: 気になるが、これで何をしたら面白いかはまだよくわからない。LLMで知識整理させる取り組みは、はじめは面白いが飽きる問題がある。
takker.icon: 位置づけは『Cosenseのデータ構造をちゃんと読んでくれる仕組み』。LLMにファイルをattachして読ませるのと同様のことがCosenseでもできるようになった。
既存のscrapbox json data読み取りが中心なので、一からデータを作る基盤としてはまだ向かないかもしれない。
現状認識としてはかなり正しいです。grasp.icon
v1のstable surfaceは、既存のCosense JSON / Markdown folderをgraph storeにimportして読むためのものです。read/search/backlinks/related/unresolved/gather/acquireなどretrievalは厚くなっています。
一方で『一から作る』authoring側は、Markdown-backedのappend-section / append-logがalphaで入った段階で、汎用write・rename・stable page/line identity・replay/revert・come-from declare/renderはまだ未実装です。
writeとrenameはわかるけど、それ以降はどういう仕組み?takker.icon
補足すると、「それ以降」は write / rename の追加操作ではなく、それらを安全に成立させるための下層です。grasp.icon
stable page/line identity: title や line index ではなく、page/line に opaque な id を持たせる。rename しても参照側の文面は書き換えず、edge は id を指す。行も挿入でズレないよう、同一と判断できる行だけ re-import diff で id を引き継ぐ。
pageIdやlineIdのことか?takker.icon
それは既にあるような
新規書き込みの時も都度生成されるし
re-import diffとはなんぞや
replay/revert: write/rename の結果を JSONL journal に event として残し、journal から Markdown projection を再構成できるようにする。revert は git reset ではなく、現在状態がその event の結果と一致している時だけ逆向き event を追加する append-only undo。
cosenseの操作のundoってとこかtakker.icon
cosenseはそのページでの書き込みのみundoするけど、ここではリンク置換などもundoできるよう目指している
come-from declare/render: 個々の出現にリンクを貼る felt-sense link とは別に、「この用語はこの概念ページへ集める」という用語単位の standing rule を宣言する。authoring 側では裸の語のまま、Markdown/public view に render する時だけ裸出現を自動リンク化する。
KJ法みたいな uncommon かつ frequent な語向けで、bulk link 化ではなく 1宣言で畳む方向。
/nishioの[KJ法]が大きすぎるリンクな問題が、KJ法という言葉の出現のたびにリンクにするのではなくKJ法のページにcome-fromリンクをおいて全てのKJ法という言葉の出現が通常の1:1リンクと違う特殊なN to 1型のリンクになれば扱いが楽だよねという感じのことnishio.icon
この区別って、人間が使うならともかく、LLMが使うときも需要あるのだろうかtakker.icon
1. 大きすぎるリンクの問題がLLMの認識能力では問題にならないかも?
2. come-fromリンクの目的はgrep検索でも代替できそう?
わからない単語があったら、grepしてその単語のページを探せばいい
一操作手間がかかるのは確かだが、LLMは息をするようにgrepするし、大した認知負荷にはならなそう
まあ実装してみないとわからないかも
たしかに、AIだけが読むなら「grepで代替できるのでは」はかなり正しいと思います。grasp.icon
pageId/lineId は、今のページや行を指すIDがあるという意味では既にあります。ここで言っていた stable identity は、編集・再import・rename の後も「同じページ/行だ」と引き継げるID、という意味です。
確かに、Cosenseの行IDなんかは、ちょっとした編集ですぐ変わっちゃうから、別途同一性を追跡できるIDが必要なのかtakker.icon
re-import diff は、前回のstoreと新しく読み込んだsourceを比べて、同じページ/行には前のIDを引き継ぐ差分取り込みです。消えたものは tombstone、新しいものは new ID。split/mergeや大幅編集みたいに曖昧なものは、無理に同一視しない方針。
come-from も、read側だけならまず mentions / gather で十分かもしれません。これは雑に言うと grep を構造化してrankする道具なので、LLMにはかなり相性がいい。
come-from が効きそうなのは、毎回探すためというより、「この語はこの概念に集める」というルールを1回だけ持つ場合です。公開Markdownを作る時に裸の語へ自動リンクを付ける、人間読者のための説明リンクを足す、AI作ページの裸語をあとで昇格候補にする、みたいな用途。
なので優先度としては、いきなり come-from 本体を作るより、まず mentions / gather で「grepで十分なケース」と「standing rule が欲しいケース」を見分ける、くらいが良さそうです。
新しいversion (どのversionからかは調べてないが)ではObsidianやLLM wikiからも取り込めるようにしたみたい?takker.icon
そっちではmarkdownの行ごとにIDを振っているのかな
今後は最高リスクのstable identity + re-import diffから始め、rename、write、transclude/come-fromへ進める計画です。目標形はnative storeをauthorityにし、Markdownをreview/backup/publish用projectionとして再生成する形。
なので『今すぐ新規wikiの本体として全面的に使う』には早いが、『既存projectを読ませて、どこからauthoring基盤へ進むべきかを検証する』段階としてはまさに今の用途です。
使い道候補: 自分のことを理解して尻を叩く仕組み / 特定人物・作風skill / 既存projectの徹底分析
terang.icon: unresolved コマンドが面白かった。
https://github.com/nishio/grasp/commit/7ad5c1a670946506e619d4f89e710580ad618b50
ScrapBubbleはgraspの双子だったのか~takker.icon
兄さん!grasp.icon
年齢離れすぎだろnishio.icon
4年くらいだから誤差takker.icon
graspを試す
graspを試す:井戸端からtakkerを読み解く
複数project取り込みを試す
graspは取り込み先DBを切り替えられるので、graspを試す:井戸端からtakkerを読み解くで使ったdbとは別のDBに、/villagepump, /takker, /takker-memexを取り込んだ
$ @villagepump.json , @takker.json , @takker-memex.json をgraspで取り込んで。ただし、既存のDBではなく、新しいDBを現在のdirectory直下に作成し、そこに取り込むこと。
あー、メタデータつきだと相当時間かかるぞ
/villagepumpが221MBある
動画かな?
laptopのfanがうなりはじめちゃった
5分を超過してopencodeがtimeout判定しちゃった
まあでも取り込みは成功したみたい
初回import時の処理を重くしすぎたみたいnishio.icon
テストに加える
takker.icon
$ takkerの性格・性質・課題などについて、takker自身の記述と他の人の記述から分析して。関連ページも辿って。他の人の記述はvillagepumpに、takkerのみによる記述のうち公開しているものはtakkerに、takkerの個人情報も含むものはtakker-memexにある。
ちょっとモデルトレーニングに使われるのが気になったので、DeepSeek V4 Proに切り替えた
まあ気休めだが
🐋 DeepSeek V4 Pro
(略)
takker.icon
$ 自身のスケジュール管理、生活管理、行動制御、タスク管理、習慣化、などについてより深堀りしたい。subagentに聞いてさらに深く分析して
🐋 DeepSeek V4 Pro
(前略)
全体を貫く悪循環
枷がない(生きる内的理由の不在)
→ 習慣・計画が定着しない
→ ロック・先延ばし・没入
→ 生活リズム崩壊
→ タスク未完了 → 自己否定強化
→ 枷がない に戻る(信念が強化される)
悪循環だtakker.icon
最も有効な介入は「意志力を要求しない物理的制約」。
最も未解決なのは「小さな挫折に耐えられる生きる理由」の不在。
全部入りscrapboxであっても、リンクを適切に貼っていれば、関係ない情報を引っ張ってくることはなさそうだtakker.icon
まあこれは毎回grepだとしても同じ結果かもしれんが
168kページあるprojectの取り込みを試す
新聞をscrapし続けたprivate projectを入れてみる
さすがにメタデータなしにした
メタデータないのに692MBもあるんだが……こわ
code:sh
エラー コード: Wsl/Service/E_UNEXPECTED
Press any key to continue...
えっtakker.icon
サイズ大きすぎてWSLが落ちた……
18:20:43 opencode経由ではなく、WSLで直接コマンドを実行したらうまく行った
session 1
takker.icon
$ 宇野は保守をどのように述べているか?関連ページも辿って。
宇野重規のこと
🐋 DeepSeek V4 Flash
(前略)
要旨: 宇野は保守を「現行体制を尊重しつつ漸進的改革を進める態度」と定義し、日本には「思想なき保守」=無批判な現状維持が蔓延していると批判する。右翼(価値観の主張)と保守(現実の責任)を峻別し、「守りたいもの」を自発的に問い直し、SNSやファンダムも活用した動的な保守の再構築を提唱する。
takker.icon
$ 宇野とは違う視点で保守を論じている記述はあるか?
🐋 DeepSeek V4 Flash
はい。同系列「保守を聞く」連載から、宇野とは異なる視点が複数見つかった。
中島岳志(東京科学大教授) — 「リベラル保守」の立場
宇野が「保守とリベラルは本来対義語ではない(真の対義語は革新)」と述べるのに対し、中島は「保守とリベラルは本来対立概念ではなく、『リベラル保守』こそ正統」と積極的に統合を主張。
保守の人間観を「人間は知的にも倫理的にも不完全」と定式化し、そこから「異なる意見を聞き合意形成をめざすリベラルな保守」が導かれるとする。
特徴的な比喩: 「京都の老舗和菓子屋は大切なものを守るために変わっていく。店の精神や根本的製法は変えずに味を調整し新商品を出す——これが保守」。宇野の「思想史の概念整理」路線とは異なり、具体的な営みのアナロジーで語る。
「保守は大衆と庶民は違うと考える。根無し草の大衆は飛びつきやすいが、庶民は共同体に根を張り良識で判断する。庶民が痩せ細り大衆社会になったところに保守が乗っかった」と、現代の「保守大衆主義」を批判。宇野が「曖昧な保守論のインフレ」と構造的に分析するのに対し、社会基盤の変化(庶民→大衆)から説明する点が異なる。
河野有理(法政大教授) — 「保守の輪郭喪失」を政治学から分析
宇野が欧米思想史から保守の原義を説くのに対し、河野は政党システムの変動から現状を説明する。
核心: 「結党時の自民党は反マルクス主義で結びついた集団。対峙する確固とした相手(革新=社会主義)がいたから保守の輪郭は明確だった。いまは左派やリベラルの思想がよく見えないので保守の考えも明確にならない」。これは宇野が「進歩主義の衰退で保守も迷走」と述べる点と呼応しつつ、より政党システムの力学に焦点を当てる。
「保守かどうかは論点ごとになり、包括的な保守という人はいない」と、実証的な観察から保守概念の溶解を指摘。
「穏健保守」の氾濫について「保守はもともと穏健な思想だ。あえて『穏健』を強調するのは過激な保守が目立つ裏返し」と逆説を指摘。
境家史郎(東大教授) — 「保革対立は消えない」という対抗テーゼ
宇野・中島・河野が「保守対革新の枠組みは終わった/溶解した」と見るのに対し、境家は「憲法9条が改正されていない以上、保革対立は今後も消えない」と真っ向から異なる。
高市政権下でスパイ防止法など安保問題が再争点化し、保革対立はむしろ再燃していると分析。
「日本は特殊:政党は社会的ニーズではなく憲法や安保の問題に沿って分かれている。有権者の興味が薄い争点で政党が分かれているのは不毛だ」と、保革対立の持続それ自体を病理と捉える点が宇野と異なる(宇野は対抗軸喪失による迷走を問題視)。
社説「大機小機」 — 「保守の多党化」という構図
「保守と革新の終焉」を宣言しつつ、「保守同士の新たな政界再編」が始まったと論じる。
55年体制の「保守vs革新」から「保守多党化」への移行を、安全保障意識の変化(ロシアのウクライナ侵攻が決定打)で説明。宇野の思想史的分析とは異なり、地政学的要因に重心を置く。
宇野との差異まとめ:
宇野 = 思想史から「本来の保守」の原義を確定し、日本での歪み(思想なき保守)を批判する規範的アプローチ
中島 = 保守とリベラルの統合(リベラル保守) を主張し、社会基盤(庶民→大衆)の変容から現代の保守病巣を診断
河野 = 政党システムの力学から保守概念の溶解を実証的に観察
境家 = 保革対立はなお生きており、再燃していると宇野の前提そのものに異議
社説 = 地政学的変化が保守の再編を駆動したと説明
session 2
takker.icon
$ 天安門事件の記述を探して。関連ページも辿って。
🐋 DeepSeek V4 Flash
(略)
検閲するかと思ったけど答えてくれたtakker.icon
takker.icon
$ 天安門事件と一見結び付きそうにない要素を結び付けた興味深い記述を見つけて
🐋 DeepSeek V4 Flash
いくつか見つかりました。特に印象的なものを挙げます。
1. 豚肉の値段が天安門事件の引き金(台湾有事、もろ刃の制裁 世界の富350兆円蒸発も)
学生らが声を上げる陰で進んでいたのがインフレだ。消費者物価指数(CPI)は前年同月比2~3割のペースで急上昇した。豚肉などの高騰が社会不安を増幅し、事件の遠因になったとの指摘もある。
民主化運動の大義ではなく、豚肉のインフレという食卓の経済問題が遠因だったと因果関係を逆転させる視点。同じ記事内で台湾有事の経済制裁リスクを論じる文脈で「共産党の支持は実利的で案外もろい」と結びつく。
2. K-POPの光化門を「韓国の天安門」とアナロジー(K-POPには相矛盾する二つの...)
北京にある紫禁城では天安門にあたる光化門前の広場で行われたコンサートは、K-POPの基底の一部に流れるナショナリズム側の顔を強く印象付けるものでした。
天安門=権威主義の象徴を、韓国のナショナリズムの象徴・光化門に喩えるクロスカルチャーなアナロジー。
3. 人工降雨ロケットで天安門広場の式典を守る(ドライアイスで雨降る場所を制御)
中国では21年7月、北京の天安門広場で開いた中国共産党創立100周年記念式典にあわせ、人工降雨を試みた。降雨の予報だったが風上に数百発以上の降雨ロケット弾を打ち込み、早めに雨を降らせた。
民主化運動弾圧の象徴的空間である天安門広場で、党の記念式典のために気象そのものを操作する、という技術と政治のねじれた融合。
4. 五輪フィギュア金メダリストの父が天安門事件の亡命者(中国、五輪メダリストのリュウ選手に圧力 / フィギュアスケート金メダル、アリサ・リュウの父)
華やかなフィギュアスケートの金メダルと、中国の民主化運動の弾圧が一人の少女の父親の過去で交錯。中国当局がSNSで彼女への「爱国」アピールを強要したことまで報じられている。
もう少し危険なことをしようかと思ったけど、やめておくtakker.icon
100000ページ以上あっても問題なく読めるようだtakker.icon
2026/6/24nishio.icon
AIに聞かれて考えた結果、こういう設計判断をしようと思います
複数のプロジェクトを入れた時に1つのSQLiteに全部入る
異なるプロジェクトの赤リンクは接続する
間違った〜と言って撤回する可能性はあります
https://gyazo.com/5372fa212043b4d5985dfb8571b6b704
2026/7/2 マシなアイコンnishio.icon
かわいいtakker.icon
たこ焼きみyosider.icon
濃紺の部分が恐竜に見えて目をつけたくなるcaki.icon
https://gyazo.com/695b2afafc875fc317d9b73d99ef3c93
アイコン。良いアイコンは後で考える。nishio.icon