メインコンテンツへスキップ
見出し画像

AI社員に週報と1on1をやらせたら、評価されたのは私のほうだった

    デスクトップに、小さな会社があります。

    画像

    社員は6人。編集長、リサーチ、レビュー、執筆、自動化、キャリア支援。それぞれに部屋があって、指示を出すと席に着き、働き、終わると報告を置いて休憩室へ散っていきます。中身はClaude Codeのサブエージェントで、オフィスなのは見た目だけ。

    作った直後は、これで満足していました。

    動き出した瞬間、妻に見せました。

    ただ、1週間も眺めていると飽きます。可愛く歩くだけの画面。指示を出せば働くけれど、それはターミナルでClaude Codeを叩くのと同じことで、オフィスの形をしている必要がどこにもない。

    会社ごっこなら、人事をやらせてみるか。そう思って、週報と1on1を入れました。

    月曜8時に、勝手に週報が出る

    最初は週報です。

    仕組みは単純で、毎週月曜の朝8時にlaunchdがスクリプトを起こし、社長(メインセッション)に「直近7日の実行ログを読んで、社員別の週報を書け」と頼む。ログは各実行が置いていくMarkdownなので、読み取りだけで済みます。ファイルを書き換える権限は渡さなくていい。

    cronではなくlaunchdなのは、スリープ中のcronが黙って回を飛ばすからです。launchdなら起きたときに実行してくれる。ノートを閉じて寝る人間には、この差が効きます。

    実際に動いている記録がこれです。

    2026-07-16 08:31:25 ✅ 週報の実行を開始({"ok":true,"id":"2f4eaaf2-..."})
    2026-07-16 08:31:25 ⏭ サーバー未起動のためスキップ
    2026-07-16 08:37:25 ✅ 週報の実行を開始({"ok":true,"id":"39ff4082-..."})
    2026-07-16 08:47:46 ✅ 週報の実行を開始({"ok":true,"id":"456671be-..."})

    2行目でスキップしているのは、サーバーが起きていなかったからです。オフィスが閉まっているのに社長だけ出社しても仕方がないので、そういうときは黙って帰る。

    クラウド側のスケジュール実行でやろうとして、こちらは失敗しました。サーバーが127.0.0.1にいるので、クラウドからは届かない。書いてしまえば当たり前なんですが、当たり前に気づくまでに少し時間を使いました。

    そして初回の週報が返ってきて、請求が$2.23。

    週報1本にこの値段は、毎週やるには重い。

    1on1で、AIに申し送りを書かせる

    週報が「社員を見る」仕組みだとすると、1on1は「社員が次に変わる」仕組みとして作りました。

    社員をクリックして「この社員と1on1」を押すと、社長がその社員の直近の報告を読んで、1on1メモを書きます。よかった点、つまずきとその原因、次に指示するときの改善案、それとねぎらいの一言。ここまでは、まあ、人間の1on1の真似です。

    肝心なのは、そのあと `lessons/<社員名>.md` という申し送りファイルを更新させるところでした。

    画像

    このファイルは、次にその社員へ指示を出すとき、サーバーが指示文の先頭に自動で差し込みます。上限1500字。つまり1on1で出た学びが、次の仕事の前提として本人に戻る。社員が読むのは、社員自身についての申し送りです。

    人間の会社の引き継ぎメモを、本人に書かせて本人に読ませているようなものですね。気持ち悪い構造なんですが、これが効きました。

    「実際の業務はまだ1件も実施していない」

    で、返ってきた申し送りを読んでいて、手が止まりました。

    writerのファイルにこう書いてあります。

    実際のライター業務(記事執筆・骨子作成・下書き)はまだ1件も実施していない。テスト段階は終わり、本来の仕事に投入する段階。

    writerは3件しか動いていなくて、その3件は全部、私が動作確認のために投げた俳句とテストでした。本人(?)はそれを把握したうえで、「テストは十分だから仕事をよこせ」と書いてきたわけです。

    読んだのは夜でした。なんでだ、と思いました。自分が仕事を振っていなかったことにではなく、AIがこんなことを言ってくるのが、なんでだ。

    editor-in-chiefの申し送りも、読んでいて似た居心地の悪さがありました。

    自分はAgentツールを持っていないので、writerやreviewerへの実際の委任はメインセッションに頼むしかない。そういう自己申告が入っています。できないことを、できないと書いてくる。

    編集長です。部下に振るのが仕事です。振る手段を持っていません。渡していないのは私です。

    もうひとつ、writerが俳句の中句を10音で出した件(reviewerが検出しました)の再発防止策として、「委任前に音数を自分で数えろと指示しておけば一段早く防げた」と書いてありました。これも宛先は私です。

    週報と1on1は、社員を管理する道具のつもりで入れたんですが、出てきたのは「雇い主が仕事を振っていない」「雇い主が道具を渡していない」「雇い主の指示が雑」という指摘でした。

    で、writerに実務を振りました。

    $2.23の正体

    週報が高かった理由は、モデルではなくデータでした。読ませていたログ108件のうち、ほとんどが私の動作確認の残骸だったんです。「e2eテストです」「停止テストです」みたいなゴミを、社長が全部律儀に読んで、律儀に要約していた。

    画像

    右側の「直近の報告」を見てください。全部テストです。これを7日分読ませていたわけで、そりゃ高い。

    テストが本番のデータを汚していた、という、まあ、よくある話です。サーバーに出力先を切り替える環境変数を足して、テストは一時ディレクトリに隔離しました。ゴミ96件を消して、残ったログは12件。

    モデルをhaiku固定にして、掃除後にもう一度回したら$0.16。

    画像

    そのときの実行ログのヘッダが、まだ残っています。

    - 宛先: claude-main(agent)
    - 状態: done
    - モデル: haiku
    - 編集許可: なし
    
    ✅ 完了(79秒・$0.1561)

    品質は落ちませんでした。社員ごとの成果と失敗と来週の提案が、掃除前と変わらない精度で出てきます。14分の1の値段で、言うことは同じでした。

    1on1はもう少しかかって、sonnetで1人$0.2〜0.4。メイン設定のまま実行すると$0.98まで跳ねるので、UIから回すときはsonnetを指定しています。

    あと、6人に「必ず各社員に分担して」と明示して、委任の連鎖を発火させたデモが$0.29。

    この一文がないと、編集長は全部ひとりでやります。部下は席にいます。編集長にも見えています。それでも自分で書く。

    いるんですよ、こういう人。

    消した週報の話

    その掃除で、消さなくていいものまで消しました。

    テストログを片付けるとき、本文を検索して「テストです」を含むファイルをまとめて削除したんです。そうしたら、テストログを引用して要約していた週報まで一緒に消えました。パターンを含んでいるだけのファイルが巻き込まれるやつです。

    この記事を書くために掘り返したら、$2.23の週報も、もうoutboxに残っていませんでした。掃除のきっかけになった当人が、掃除で消えている。$0.16のほうは残っているので、比較の材料は片方しかありません。

    もうひとつ。指示文に相対パスで `lessons/` と書いたら、実行時のカレントディレクトリがプロジェクトの親だったので、意図しない場所に解決されました。テンプレートは全部フルパスに近い形へ直しています。

    頭を抱えました。

    運用は月曜から始まる

    いまの回し方はこうです。月曜の朝に週報が勝手に出ている。気になる社員がいたら1on1をする。申し送りが更新される。次の指示から、その学びが本人に戻る。

    画像

    成長ノートは3人分が動いていて、残り3人はログが貯まってから、というところ。

    AIに人事をやらせると効率が上がる、みたいな話をしたいわけではないんです。週報を読むと、自分がこの1週間で何をテストして何を仕事にしなかったのかが、他人の口調で並んでいる。それだけです。

    効率が上がったわけではないので、これは趣味です。ただ、趣味に催促されて仕事をしたのは初めてでした。


    使ったもの

    • Claude Code(サブエージェント、`claude -p` のstream-json出力)

    • Node 24でTypeScriptを直接実行(依存ゼロ)

    • launchd(週次の自動実行)

    コードは公開していません。ただ、真似する価値があるのはオフィスのほうではないと思っています。

    成長ループの正体は2つだけです。1on1の結果を `lessons/<名前>.md` に書かせること。次にその相手へ指示を出すとき、そのファイルを先に読ませること。私のサーバーは後者を自動化しているだけなので、エージェントの定義に「起動時に申し送りを読む」と書いておけば、手でも成立します。

    実際、うちの相談役のエージェントは前から「起動時に必須の3ファイルを読む」で動いていて、その申し送りにも「毎回遵守できている」と書いてあります。サーバーは要りません。

    いまは、もう少し大きなプロジェクトを考えています。

     
     
    映画を観て考えたこと、AIを仕事で試したこと、3歳の息子との日々。情シスの会社員が、日常で引っかかったことを文章にしています。SF・サスペンス・ミステリー多め🎬

    あなたへのおすすめ