NISHIO Hirokazu[Translate]
AIタスク管理2025-02-27

---
思考
独立して出力されて重複したなら重要度が上がる
では「いまはやらない」をしたら下がる?
1次元の軸にまとめてしまうのは不適切
「何月何日に"いまはやらない"と判断した」と加筆するのが良さそう

---
タスクの追加、タスクの更新がいまいちやりにくい
タスクのバックログを見てAIがいろいろ言ってくれるのはいいけど、更新するところに不安感があるなぁ
そうか、jsonpatchでやろうとして、それはダメだった、というところで、まだいい方法が見つかってないんだな
作った本人が忘れてるのでAIに聞いたら教えてくれたけど、微妙な設計だなw
>タスクの新規追加は、ai_project_manager/scripts/append_tasks.py スクリプトを使用して行います。このスクリプトは、ai_project_manager_data/tasks/new_task.json に記述された新しいタスクを backlog.json に追加します。new_task.json に追加したいタスクを記述し、このスクリプトを実行することでタスクが追加されます。
あー、そうか、そもそもコーディング能力があるAIエージェントがJSONを書き換えるという力技でプロトタイプが作られてるからその能力がないOpenAIからの繋がりが悪いのか


AIPM WebUIをDevinにつくらせる

今まで「養成ギブス」のつもりで自分で書かずにDevinに書かせることをメインにしていた
が、まあDevinを使わないならRoo Codeだよなとも思っていて、そもそもマルチタスク状態がストレスとかCLINEに全部賭けろ(使ってるのはRoo Code)とかを見て、DevinによるスケールアウトとRoo Codeによるスケールアップは両方追い求めるべきだよなと思った

tasks.jsonの雑さによって色々エラーが起きる
IDが空白なのをOKにしてたが、それに起因するバグができた
これはLLMがIDを生成するのが苦手なので空で生成してあとから埋めようと思って忘れてた
taskを生成するスクリプトを書いてみた
type: "task"という情報量のないフィールドがある
createdとupdatedをつけた方がいいんじゃない?
doneになったものもupdatedを更新すれば、doneの一覧で最近doneにしたものがみれるよな


だいたいDevinが作った
ファイルのロードだけやらせるつもりだったのになぜか検索機能まで作ってきた

具体的な画面ができるとやりたかったことを忘れてしまう
Devinに編集させるのではなく自分でo3の出力を見ながら修正して、その振る舞いを観察すると
出力を見て「そのタスクは済んだな」と思ったらmark_done.pyを呼び出している
なら出力からdoneにできればいい
出力だけ見てわからないときはshow_tasks.pyを呼び出している
これも出力をクリックして表示できればいい
複数をまとめてみれることは便利

タスクの追加は現状でも微妙だった
とりあえず最小限必要なtitleとdescriptionだけ受け取って作成するスクリプトをつくった
descriptionも空でもいいのでは
そのときにはタイトルにT/Oをつける

-----
2025-02-28
編集機能

UIにどんどん機能追加をしていく前にテストケースを追加すべき



昔友人が「まずhistoryコマンドを覚えて先輩がやったことを必死に読んで覚えた」という話をしてたんだが(20年以上前の話)
今僕はDevinがPlaywrightでテスト環境を作る流れのログを見ながら「なるほど〜」とやってるw

つまずいたらo3に聞くと親切に教えてくれる
>o3-mini-highnpmスクリプトの場合、npmはローカルのnode_modules/.bin内にあるplaywrightを自動で参照します。しかし、直接シェルで「playwright test」と実行すると、グローバルにplaywrightがインストールされていないとパスに存在せず、コマンドが見つからないというエラーになります。解決策は、npmスクリプトを使うか、もしくは「npx playwright test」を実行する方法です。
なるほど〜〜

まあ書いてくれたテストケースが全然通らないのだけど、それはそれで環境の前提条件の認識に僕とDevinで食い違いがあるということなので早いうちに潰しといた方がいいんだろうなと思っている

結論、僕の環境はCI環境ではないのでlocalhost:3000にすでにサーバがあるときにはそれを再利用する=テストデータではなく本番データを読む、ということ
playwright.config.js
webServer: { command: 'npm run dev', url: 'http://localhost:3000', reuseExistingServer: !process.env.CI, env: { USE_TEST_DATA: 'true', }, },

>ai_project_managerのserverに関して、testsを作ってPlaywrightで簡単にテストできるようにしよう
> サンプルのデータと、サンプルのデータでテストするための環境変数オプションが必要だろう
って日本語で書いただけで環境変数USE_TEST_DATAを使ってデータをロードするAPIの中身で出し分ける実装をしてくれてて助かる

テスト全部通るようになった(根本的にダメなテストは削除した)

AIがガンガン作ってくれるので削る方向のシェイピング
昨日作ってくれたUIから必要ない検索まどはhiddenにした
今回作ってくれたテストケースもいらないのは消した

このテストをCIで走るようにして…とかやりたいけど
ここで開始するとまた「あとちょっとで動きそうなのに」とか言いながら深夜になって健康が害されるのでやらないことにする

---
食器を洗いながらAdvanced Voiceで仕様を説明
それをo1に読ませてissueに起こさせる
質問項目に回答してissueにはる
Devinにそれを送って実装させる
動作テストは明日やるつもりだけどDevinの画面を見るかぎりちゃんと動いてそうだな


2025-03-01



サイドバーのタスクに対してdoneをしたときにファイルが更新されない
これはハンドラを渡してなくてundefinedになっているから

doneを押した時に、ファイルは更新されて、サイドバーからはタスクが消えるべき
できた

CIの設定をしてくれた

ここまででできたものを使って週の振り返りをした
こう言うやりとりを元にタスクのdescriptionを更新して欲しいのだけど、現状はまだその仕組みがない

nishio
ここまでのやりとりを参考にして追加すべきタスクと、更新すべきタスクをリストアップして。
追加すべきタスクは [{"title": ..., "description": ...}, ...] の形のリストにして。
更新すべきタスクは [{"id": ..., "title": ..., "description": ...}, ...] の形のリストにして。
o1 Pro
追加すべきタスク(新規タスク)
json
[ { "title": "3/9 LT発表の資料作成", "description": "3/9のLTに向けて発表資料を作成する。骨子→スライド→ブラッシュアップの順で週内に仕上げる。" }, { "title": "Plurality Tokyo Namerakaigiの動画編集・公開", "description": "録画データを簡単に編集し、YouTube等で公開する。発表内容の鮮度を損なわないよう早めの作業が望ましい。" }, { "title": "Devinに研究をさせる仕組みを構築", "description": "Devinを拡張し、論文調査や実験検証などを自動で行える環境を整備する。具体的な手法や運用方針を検討し、プロトタイプを作る。" }, { "title": "GmailをGeminiに読ませる", "description": "Gmailの内容をGeminiに取り込んで要約や自動仕分けを行う方法を検討・実験する。認証やセキュリティ面の対応も含める。" } ]
更新すべきタスク(既存タスクの内容やタイトルを更新)
json
[ { "id": "T0107", "title": "世論地図のソースコード整理とREADME整備", "description": "Devinのプライベート化が完了したため、世論地図のソースコードを整理し、READMEを追記してOSS公開できるようにする。公開に不要な部分を切り離し、ライセンスや利用方法を明記。" }, { "id": "T0098", "title": "メモ帳+夜AI入力フローの検証 (紙メモ翌朝スタート)", "description": "昼間は紙メモで短期タスクを管理し、夜にAIへまとめて入力する運用を試行。翌朝は紙メモを見ればタスクを把握できるようにし、AIは整理・補足に活用。効果測定と改善策を検討する。" }, { "id": "T0116", "title": "情報チャンネル増加への対応策を検討", "description": "Signal・Slack・ChatGPTなど多数の情報源が増え混乱が大きい。まず主要な混乱要因を洗い出し、最小限の統合・自動化策を試すところから始める。小さく運用を回しながら改善点を検証。" }, { "id": "T0099", "title": "o1を使用したタスク管理スクリプトの開発 (ローカル実行)", "description": "ChatGPT 4.0 ではなく o1 にAPIを置き換えてタスク管理スクリプトを開発。とりあえずローカル環境で実行し、タイムアウト等の問題を回避。基本機能のMVPを作り、効果を確認する。" } ]

---
add_tasks.pyとupdate_tasks.pyとを作ってそれぞれ更新した。
しかし、人間はこういう時に「AIが更新した説明は前のバージョンの大事なところを消してしまってないか?」と不安になる

なのでタスク追加とタスク更新のレビューリストを作って、人間が見て「OK」「リジェクト」「人間が書き換える」をできる必要があるよなー


"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]