コンテンツにスキップ

02 — Chat モード

reyn chat は Reyn を体感する最も摩擦の低い方法です。話しかけて、 Skill にルーティングされる様子を見て、 返ってきた答えを読む。 自分で何も作らずに済みます。

このチュートリアルは自動作成される default agent のみを使います。 マルチエージェントは後のトピックです(最後にポインタを示します)。

セッションを開始する

reyn chat

初回実行時、 Reyn は .reyn/agents/default/ 配下に default agent を自動作成します。 以降の実行ではこれを再利用します。

> プロンプトが表示されます。

ターンを入力する

> このプロジェクトの README を要約してください

何が起こるか:

  1. chat router が意図を分類します。
  2. 最もマッチする Skill を選びます — 「README を要約」 のような要求なら、 典型的には read_local_files のあとに direct_llm が走るか、 モデルが返答内でインライン要約するなら read_local_files 単独で完結することもあります。
  3. Skill が実行され、 プロンプトの下に答えが表示されます。
  4. セッションは継続。 次のターンを入力できます。

いくつか試してみてください:

> このプロジェクトは何?
> src/reyn/ の中身は?
> 3 か国語で挨拶して

(ルーターが選ぶ Skill のカタログを見たい場合は、 セッションを抜けてシェルから reyn skills を実行してください。 chat の会話では enumerate されません。)

各ターンは .reyn/agents/default/ 配下に記録されます。

終了する

Ctrl+D/quit でセッションを終わります。 もう一度 reyn chat を実行すると同じ agent が再開され、 memory と履歴は保持されています。

スラッシュコマンド

/ で始まる行は LLM にルーティングされず、 制御コマンドとして処理されます:

  • /list — 保留中のユーザープロンプト(ask_user / Permission)を表示。
  • /answer <id> <text>/list の保留中プロンプトに回答。

default モードで使うのはこの 2 つだけです。 /agents / /attach / /rewind などは複数 agent を扱うようになってから、または会話を time-travel したくなってから役立ちます。 そのときに reference/cli/chat を参照してください。

Memory は自動

ルーターはターンごとに memory を読み(追加設定不要)、 永続化すべき内容を検出したら書き戻します。 2 層構成です:

  • Shared.reyn/memory/ — すべての agent から見えるファクト。
  • Agent.reyn/agents/default/memory/ — この agent にスコープされたファクト。

何が記憶されているかを確認できます:

reyn memory list
reyn memory show <slug>

詳細なモデルは コンセプト/memory を参照。

裏で何が起きているか

OS は「chat」 という概念を知りません。 ただ chat router を実行しているだけで、 それがSkill(マルチエージェント構成ならピア agent)を選んで委任します。 これはあなたが書く Skill と同じ合成パターンです(P7 (principles doc removed))。

学んだこと

  • reyn chat で自動作成された default agent に REPL がアタッチされる。
  • 各ターンは chat router を通り、 Skill が選ばれて実行される。
  • Memory は 2 層(shared + agent)で、 自動的に読み書きされる。
  • このステージで必要なスラッシュコマンドは /list / /answer の 2 つ。

次に進む

Reyn が chat agent として価値を提供する様子を見ました。 ここから:

  • マルチエージェント(あとで): reyn agent new、 役割ごとの allowlist、 /attach を扱います。 背景: コンセプト/multi-agentコンセプト/topology
  • なぜそうなっているか: コンセプト/principles (principles doc removed)。