
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ファイルを読む」で動いていて、その申し送りにも「毎回遵守できている」と書いてあります。サーバーは要りません。
いまは、もう少し大きなプロジェクトを考えています。