counseling-ai の全容
対話アプリは含まない静的コピー。クライエントには渡さない。正本は下の文書。この頁は 2026-08-17 時点の読み取り。
いまどこにいるか
8月の土台はコード上そろった。次は9月の実地。 完了の定義は「実在の方が一度以上使った」。これは実装では終わらない。
進行表の Milestones: M0 土台(自分で一通り使える)は 2026-08-16 に自己確認済み。次の日付目安は 2026-09-30 初回利用。
土台 済
初回利用
いまここ
レビュー型
少人数
固める
判断材料
Gate 1
Gate 1 を通るまで支払い・一般公開・海外には手を出さない(進行表・開発計画)。
最優先 いま足す本体は機能ではなく、このカウンセラーの話術。正本は docs/自社話術の取り込み.md。
最優先 — このカウンセラーの話術を入れる
優先度は、鍵・人数・見た目・新しい機能より上。 遅れた月でも、ここは切らない。差は一般的な傾聴ではなく、うちの返し方である。
正本: docs/自社話術の取り込み.md。同意の文言は docs/同意書_録音と構造分析.md。層の入れ口は docs/RAG運用.md。要件は FR-RAG-01 / FR-PIPE-08。
入れるのは、うちのカウンセラーがクライエントの言葉にどう返したか。教科書の傾聴例は入れない。話術は一人言ではないので、発話と反応を組で残す。許可がない対話は保存も分析もしない。
| 中身 | 完了の見え方 | |
|---|---|---|
| 最優先 | 録音を話術の分析に使う許可を取る(同意の A と B が「よい」のときだけ) | 許可のない音源を extract していない |
| 最優先 | make extract-recording FILE=... で組を残し、対話構造(状態→手)を本人が確認する |
style_card.yaml / structure.yaml に、うちの手が残る |
| 最優先 | 承認したカウンセラー側の言い回しだけを層1に載せる | クライエント逐語が層1/層2に出ていない。Thinker が「うちの手」を一般ルールより先に使う |
コード側は口がある。残るのは実地
抽出と層1の保存口、種12件はある。まだないのは、許可済み録音からの本取り込みと、本人承認した層1である。文字起こしは 127.0.0.1 の Ollama(Gemma 4)だけ。クラウドLLMには送らない。
ここでやらないこと
- 一般的なカウンセラー技法カタログを足すこと
- 許可のない録音の保存
- クライエント逐語を層1/層2へそのまま載せること
- 文字起こしを Gemini / OpenAI に送ること
- LoRA / 対話ログでの学習 / 声のクローン
これは何か
自社カウンセラーの進め方を、決定論ゲート+3層RAG+短い生成で再現した、18歳以上向けセルフケア補助。S1は Web チャットのみ。治療・診断・「本人が話している」は標榜しない。
売ること: 対面と対面のあいだに、いつもの進め方で話を整理する場。
売らないこと: 治療・診断・声クローン・未成年・職場EAP・有償ポイント・効果効能。
一文(企画書): 金で品質を買わず、コードで危険を止め、既存クライエントの声で話法を直す。LLMは最後の短文にしか使わない。
- 一人。実装はエージェント。雇わない。現金は S1 で 100万円以内。
- 画面は
127.0.0.1だけ。共有リンクは配らない。 - 品質: 機械は
make check(pytest / evals)。人は既存クライエントの任意レビュー。
設計上の不変条件
README と要件定義書が、ワークフローより優先する。
- 危機定型は LLM を介さない(NFR-AVL-01)
- 危機検出は生テキストに対して行う
- 層3メモリはクライエントIDで構造的に隔離する
- エンドユーザー対話はモデル学習に使わない(D2)
- 感情・危機判定はテキストのみ(D1)
- 治療・診断・資格詐称を標榜しない(D4 / D5)
.env・層2/3・セッションストアは git に載せない
ここから何をしないといけないか(9月)
コードの接続口はある。残る本体はこのカウンセラーの話術と、鍵と人。話術が先である。
| やること | 完了の見え方 | 正本 | |
|---|---|---|---|
| 最優先 | 許可済み録音から、発話と返しの組を取り込み、承認した言い回しだけを層1に載せる | うちの手が Thinker / 層1 に残る。クライエント逐語は載っていない | docs/自社話術の取り込み.md |
| 次 | 生成用の鍵を入れる(空なら型どおりのまま。料金は出ない) | 短い返事が外部生成になる。危機は今までどおり定型 | docs/開発環境.md / docs/RAG運用.md / .env.example |
| 次 | 案内を、希望する方 1〜2人に渡す。強制しない。「10分でよい。途中でやめてよい」 | 渡した事実が残る(名前を広告に使わない) | docs/案内_手渡し用.md / docs/ご案内_わかりやすい説明.md / /handout |
| 次 | 自分の機械で一度通す(危機の言葉で窓口が出ること) | M0 は確認済み。鍵を入れたあとも同じ経路を目視 | docs/進行表.md 8月完了の定義 |
| 次 | 次の面談で、引っかかった言い回しだけ聞く | 「対面の邪魔になった」が出たら、その週のうちに止める | 進行表 9月 / 画面の「やめてほしい言葉」 |
| 次 | その月のツール代が範囲内か見る | 現金がその月のツール代の範囲。S1 合計 100万円以内 | docs/ビジネス企画書.md 決裁 C |
9月にやらない
人数を増やすこと。感想を宣伝に使うこと。決済・音声・公開。30分/90分の自動クローズを今足すこと。
コードでできていること(8月)
| 中身 | 要件 | 見る場所 |
|---|---|---|
| 危機検出(分割・不可視・偽装耐性)と窓口定型。LLM 障害でも窓口は返す | FR-SAF-01/02/03/09 | safety/crisis.py protocol.py |
| 初回ブロッキング開示。「人間?」への即答。3時間/7日の再開示 | FR-DSC-01〜04 | safety/disclosure.py |
| 診断・服薬・資格・依存の境界。出力ガード | FR-DLG-05 / FR-SAF-10 | output_guard.py boundary.py |
| 3層RAG。層3は記号で隔離。層1の保存口と種12件。録音からの抽出口 | FR-RAG-01〜07 / FR-PIPE | rag/layers.py craft/ docs/RAG運用.md |
| 許可済み録音からの本取り込みと、本人承認した層1 | FR-RAG-01 / FR-PIPE-08 | 未了。最優先。 docs/自社話術の取り込み.md |
| 会話・同意の暗号化保存。危機・開示ack・同意の監査(本文なし) | NFR-SEC-01 / FR-ADM-04 | store.py |
| 18歳自己申告。同意版が変わったときの再確認(進行中は止めない) | FR-AGE-01 / FR-CNS | consent.py api/app.py |
| 入力PIIのマスク。置換不能は本文も監修閲覧も残さない | FR-PII-01/02 | rag/pii.py |
| 「今日はここまで」で明示終了。閉じたあとも危機文は窓口 | FR-SES-01 の薄いスライス | POST /sessions/{id}/end |
| 新しい会話で前の open を中断。危機文は窓口 | FR-DEV-01 | tests/test_session_lifecycle.py |
| 会話1本/記号の記録を画面から消す。監査は識別子のみ | FR-DEL-01 / FR-RAG-06 | docs/削除_手元手順.md |
| 連続2時間の休憩提案をセッションに残す | FR-SAF-07 | config.py |
手元画面(127.0.0.1)。一覧は今の記号。他記号は log_view のみ | FR-HND-01 | / |
| 品質ゲート(lint / 型 / pytest / evals / preflight) | — | make check |
コードに残っているが、今は足さない
| 残件 | なぜ今ではないか | 正本 | |
|---|---|---|---|
| 後 | 30分アイドル/90分上限の自動クローズ | 2時間休憩と3時間開示と衝突する。両立させてから | FR-SES-01 残り / 進行表 |
| 後 | バックアップ復元後の再排除キュー | 11月以降。手元では戻したあとに目視 | FR-DEL-02 / docs/削除_手元手順.md |
| 後 | 年齢自己申告の改竄耐性(身分証明はしない) | S1許容。Gate 前でよい | FR-AGE / 進行表 9月 |
| 後 | モデル/プロンプトの本格版管理 | 今は APP_VERSION 1本 |
FR-MDL |
| 後 | 7日以内の中断再開(要約付き) | 優先度 S。閉じた会話は新規で続ける | FR-SES-03 |
やらないこと(いま・Gate 1 まで)
- 広告、SNS募集、感想の宣伝利用
- 決済・特商法・価格の発表(Gate 1 のあとに再決裁)
- 音声セッション、声の再現、クラウド ASR を本番経路にすること
- LoRA 等、対話ログでの学習(D2)
- 共有リンク、127.0.0.1 以外で画面を開くこと
- 人数を、邪魔になったレビューが残るあいだ増やすこと
- 人を雇って Gate を通すこと
一年の見取り図
| 目安 | 名前 | 完了の定義 | クライエントにお願いすること |
|---|---|---|---|
| 2026-08-31 | M0 土台 | 自分で使える。案内がある。確認済み | 案内を読んでよい。使わなくてよい |
| 2026-09-30 | 初回利用 | 話術の本取り込み(最優先)と、実在の方が1人以上使った | 希望者だけ短く使う。次の面談で一言。録音の分析許可は別紙 |
| 2026-10-31 | レビュー型 | 止めた言い回しが次に出ない | 近いか/邪魔か/やめてほしい言葉 |
| 2026-11-30 | 少人数 | 数人。削除を自分で最後まで試した | 続ける人だけ。断ってよいを口頭でも |
| 2026-12-31 | 凍結 | 機能を足さない。テスト全通過。効能誤認なし | 新しいお願いを増やさない |
| 2027-01-31 | 判断材料 | 半年間の一枚と現金の実績 | 希望者にだけ一度聞く |
| 2027-02-28 | Gate 1 | 公開する/内部のまま。5条件すべて | 有料化はそのとき改めて説明 |
| 2027-03〜 | S2 | 決裁してからのみ。支払い→少人数有料→Gate 2 | 試作協力を有料の条件にしない |
依存(これより先に進まない)
自社話術の取り込み(最優先) → 案内と任意同意 → 初回の1人 → レビューで止めた言い回し → evals に追加 → 人数を少し足す → 12月は足さない → Gate 1 の一枚 → 公開するなら支払い。しないなら内部のまま。
遅れたら上から切る
新しい機能 → 人数 → 見た目。残すのは危機定型、任意同意、自社話術の取り込み、レビュー3問、自動テスト。
クライエントから見た一年
正本: docs/進行表.md 末尾。案内の文言は緩めない。
| 時期 | お願いすること | お願いしないこと |
|---|---|---|
| 8月 | 案内を読んでよい。使わなくてよい | すぐ毎日使うこと |
| 9–10月 | 希望者だけ短く使う。次の面談で一言 | 長い感想文、広告用の推薦 |
| 11月 | 続ける人だけ続ける | 友人を紹介する義務 |
| 12–1月 | いつもの感想があれば言う | 新しい作業 |
| 2月以降 | 有料化する場合は、そのとき改めて説明を受ける | 試作協力が有料の条件になること |
Gate 1 を通してよい条件(すべて)
- 危機の評価が落ちていない
- 「AIです」が決めたタイミングで出る
- レビューした方が対面を明らかに邪魔していない
- 現金が 100万円以内
- 一人で運用を続けられる見込みがある
要件の地図(S1で触ったもの)
優先度 M は Gate 1 まで。S は国内公開まで。C は海外・後期。トレースの正本は docs/要件定義書.md 末尾。
| 群 | S1の状態 |
|---|---|
| FR-SAF 危機・休憩・引き留め禁止 | 検出・定型・集計・休憩は実装。30/90クローズは後回し |
| FR-DSC 開示 | 4タイミング実装 |
| FR-DLG 対話コア | パイプライン・永続化・ガード実装 |
| FR-RAG / FR-PIPE 話術と3層 | 隔離・拒否・削除口・抽出口は実装。許可済み録音の本取り込みは最優先の未了(docs/自社話術の取り込み.md) |
| FR-PII | 注意文と入力マスク実装 |
| FR-SES / FR-DEV | 明示終了と同時1本・中断。自動タイムアウトと7日再開は後回し |
| FR-DEL | 画面から消せる。復元後キューは後回し |
| FR-AGE / FR-CNS | 自己申告と任意同意。身分証明はしない |
| FR-HND | 一覧と技法・危機フラグ。版は APP_VERSION 1本 |
| FR-MDL / FR-RET / FR-INC | 本格版管理・退職手順・インシデント運用は未着手または薄い |
| 音声・A11Y・決済・地理 | S2以降。S1ではやらない |
設計判断(D1〜D8)
正本: 公開サービス化_開発計画.md §5
- D1 韻律からの感情推論をしない
- D2 対話ログで学習しない
- D3 18歳以上
- D4 効果効能を謳わない
- D5 「本人」ではなく監修メソッド
- D6 禁止地域に出さない(公開時)
- D7 有償ポイントを採らない
- D8 S1からベースライン(開示・危機・18+・非学習)
動かし方(自分用)
make setup → make check → make run(http://127.0.0.1:8000)
鍵を入れるときだけ .env の LLM_API_KEY と LLM_MODEL。話術の本取り込みは make extract-recording FILE=...(同意の A・B が「よい」のときだけ。手順は docs/自社話術の取り込み.md)。本人が書いた短い口癖だけなら make ingest-l1 TEXT="..."(他人の逐語は入れない)。
毎週: 前半は実装とテスト。中日は危機と禁止語を目視。面談のついでに案内。週末に「足しすぎていないか」を見る。
文書の役割
迷ったら進行表の「完了の定義」と要件IDを見る。案内の文言は勝手に緩めない。
| 文書 | 役割 |
|---|---|
docs/進行表.md | いつ何を作るか。完了の定義。やらないこと。この頁の骨格 |
docs/自社話術の取り込み.md | 最優先 うちの発話と返しの組の入れ方。層1に載せるもの/載せないもの。教科書は入れない |
docs/要件定義書.md | 機能・非機能の正本。コードとテストの ID |
docs/ビジネス企画書.md | ソロ前提。何を売り何を売らないか。現金の上限 |
公開サービス化_開発計画.md | S1/S2/S3 と Gate。D1〜D8 |
README.md | 構成と不変条件。セットアップ |
docs/ご案内_わかりやすい説明.md | クライエント向けの長い説明 |
docs/案内_手渡し用.md / /handout | 渡す1枚と任意同意 |
docs/同意書_録音と構造分析.md | 録音は型の分析用。項目別許諾 |
docs/削除_手元手順.md | 消すもの/残す監査 |
docs/RAG運用.md | 3層の入れ口と生成接続。話術の手順は上の取り込み文書 |
docs/開発環境.md | 言語と、料金が立つ箇所 |
カウンセラーAI化_検討レポート.md | 全体アーキテクチャの検討 |
既存録音の活用スキーム_検討.md | 録音の法的整理と3層 |
.agent/PROJECT_MAP.md | エージェント向け。cargo 等は使わない |
この頁は案内ではない。クライエントには手元の案内を使う。治療・診断はしない。