mcpField
L
luci

luci

github.com/memories-ai-labs生産性949 回インストール4 週間前に更新
リポジトリ

luci について

luci は Personal History CLI でユーザーの過去の活動を調べるためのスキルです。履歴検索と Life notes による照合を案内し、取得した情報に基づく回答を求めます。

主な機能

  1. 01画面上のテキストや音声を検索
  2. 02期間ごとの活動を要約
  3. 03アプリで結果を絞り込み
  4. 04結果の文脈や画像を確認
  5. 05関連する Life notes を参照

活用シーン

  1. 01期間中に画面に表示された内容の確認
  2. 02会議で話された内容の検索
  3. 03特定のアプリ内での活動の確認

インストール

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

$npx skills add https://github.com/memories-ai-labs/luci-skills --skill luci

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

詳細

個人履歴 CLI

このツールは、ユーザー自身の過去のアクティビティについての質問に答える場合にのみ使用してください。

CLI の解決

現在のプラットフォームに対応するディスカバリーファイルを読み取ります。

  • Windows/Linux:~/.luci/cli.json
  • macOS:~/.luciMicrosoft/cli.json

そのファイルの shim の値を <CLI> とし、絶対パスを引用符で囲みます。通常は次の場所を指しています。

  • Windows:~/.luci/bin/luci.cmd
  • Linux:~/.luci/bin/luci
  • macOS:~/.luciMicrosoft/bin/luci

ディスカバリーファイルがない場合は、command -v luci(Windows の場合は where luci)を実行して、その結果を使用します。アプリはコマンドを PATH に リンクします(macOS と Linux では ~/.local/bin/luci、Windows のユーザー PATH では %USERPROFILE%\.luci\bin)。どちらでも解決できない場合、CLI は インストールされていません。処理を中止し、Luci を開いて「Settings → Agent access」を確認するようユーザーに伝えてください。

プレースホルダー

  • <CLI>:上記の手順で解決した絶対パス。
  • <RANGE>:ローカル時間での 30m、24h、7d、2w、または <fromMs>:<toMs>。
  • <ID>:以前のコマンドで返された識別子。決して捏造しないでください。

正確な構文を確認するには、<CLI> --help を実行してください。

事前確認とエラー

事前確認として status を実行しないでください。status は読み取り専用で、Luci を起動することはありません。それ以外のコマンドは、Luci が実行中でない場合にバックグラウンドで起動し、最大 20 秒間待機します。そのため、最初の実際のクエリが事前確認になります。質問に必要な範囲を指定して、1 回だけ試してください。

CLI は、すべての失敗について stderr に平易な英語の 1 行メッセージと固定の終了コードを出力します。両方を確認してください。

終了コード意味対応
0成功(結果が空でも成功です)結果を基に回答する
3引数が不正(コマンドが間違っています)--help に従ってコマンドを修正し、再実行する。このエラーをユーザーに表示しない
2、stderr に「didn't respond in time」と表示Luci がビジー状態です--tr または --limit を小さくして 1 回だけ再実行する。再度失敗したら中止する
2、その他のメッセージLuci がインストールされていない、実行中でない、起動できなかった、またはトークンを拒否した中止する
1Luci は実行されたものの、クエリに失敗しました中止する

中止する場合は、履歴コマンドをこれ以上実行せず、記憶を基に回答せず、ライブ履歴を参照したかのように Life のノートを使って回答しないでください。Luci に接続できなかったことを 1〜2 文で伝え、CLI の stderr の行をそのまま引用してください(ユーザー向けの文言であり、パスや内部情報は含まれていません)。続行する前に問題を解決するよう依頼してください。ユーザーが希望する場合に限り、部分的な回答として明確にラベルを付けたうえで Life のノートを提示してください。

これらの失敗は、Luci がインストールされ実行中であれば想定されません。ループして再試行したり、他のツールを試したり、回避のために Luci のファイルを編集したりしないでください。

コマンド

<CLI> usage --tr <RANGE> --limit 20
<CLI> search "<exact words>" --tr <RANGE>
<CLI> search "<description>" --semantic --tr <RANGE>
<CLI> transcript "<keywords>" --tr <RANGE>
<CLI> transcript --tr <RANGE>
<CLI> filter --app "<app>" --tr <RANGE>
<CLI> frame <ID>
<CLI> image <ID> -o <output.jpg>
  • usage:時間経過に沿ってアクティビティを再構成します。
  • search:画面に表示された正確なテキストを検索します。あいまい検索には --semantic を追加します。
  • transcript:キーワードで発話内容を検索します。範囲内の発話をすべて、発話順に読むにはキーワードを省略します(会議全体を確認する場合に使用します)。
  • filter:結果を 1 つのアプリに絞り込みます。以前の結果からアプリ名をコピーしてください。
  • frame:1 つの結果を、前後の文脈を含めて詳しく確認します。
  • image:テキストだけでは不十分な場合にレイアウトを確認します。

検索系のコマンドは --limit <n>(最大 500)を受け付けます。処理しやすい簡潔な出力が役立つ場合にのみ --json を使用してください。

Life のノート

~/.Life(Windows の場合は %USERPROFILE%\.Life)には、要約された日次レポート、会議の記録、エンティティファイルが保存されています。このフォルダーが存在する場合は、質問に該当するファイルを読み取ってください。

  • 範囲内の日付に対応する reflections/daily/YYYY-MM-DD.md
  • 会議の記録 reflections/meetings/YYYY-MM-DD-slug.md
  • 名前が出てきた場合は entities/(人物/組織/プロジェクト/ツール)

該当するファイルとは、質問の期間または名前に関係する日次レポートやエンティティファイルです。フォルダーがない場合や該当するファイルがない場合、Life のノートはありません。

ライブ履歴が利用できる場合は、Life のノートを使ってより適切なクエリを考え、結果から推測されるだけの人物、プロジェクト、ツールの名称を特定してください。

利用可能な履歴について尋ねられた場合は、該当ファイルを一覧にしてください(日付とエンティティ名を報告します)。

ワークフロー

  1. ユーザーの時間指定を<RANGE>に変換し、すべての広範なクエリに渡します。
  2. ~/.Lifeが存在する場合は、該当するLifeのメモを読みます。
  3. 要約にはusage、表示されたコンテンツにはsearch、音声にはtranscript、単一のアプリにはfilterを選びます。ゼロ以外の終了コードが返された場合は、「事前確認とエラー」の説明に従って処理します。
  4. 有望なCLIの結果をframeで確認します。視覚的なコンテキストが重要な場合に限り、imageを使います。
  5. CLIの根拠が不十分な場合は、クエリを調整するか、もう一方の検索モードを試すか、時間範囲を一度だけ広げます。
  6. CLIの結果とLifeのメモをもとに回答します。
  7. すべてのコマンドが成功したものの結果がなく、該当するLifeのメモもない場合は、ユーザーに「履歴が見つかりません。Luciアプリを開いてしばらく起動したままにしてから、もう一度お試しください。」と伝えます。

ルール

  • すべての主張をCLIの結果またはLifeのメモに基づかせます。
  • 両方の情報源が空の場合は、ワークフローに記載された結果なしの場合の文言を使います。推測してはいけません。
  • 結果が空であることと、コマンドが失敗したことは別です。空の結果は履歴がないことを意味し、ゼロ以外の終了コードが返された場合は処理を中止して報告します。
  • 抽出されたテキストや順序は不完全な場合があるため、不確かな詳細は裏付けを取ります。
  • 結果の記録時刻はコンテンツを閲覧した時刻を示すものであり、必ずしも作成時刻ではありません。
  • 結果が見つからなくても、利用がなかったとは限りません。また、画像を利用できなくても、テキストの結果が無効になるわけではありません。
  • ユーザーから求められない限り、コマンド名、識別子、パス、終了コード、生のJSONを公開してはいけません。
  • 回答の根拠となる内容のみを引用します。取得した個人情報を外部サービスに送信してはいけません。
  • 読み取り専用のコマンドのみを使います。ユーザーのデータやアプリケーションの状態を変更してはいけません。

コメント