1ex.me/Blog/status-triggered-agent-loop

use Devin in Obsidian, use Obsidian in Devin

TL;DR

  • Obsidianのステータス更新でDevinが動くしセッションごとのダメ出しもDiscordでできるようにした
  • Loop engineeringってなんというかこう発散しない?

はじめに

use cursor in notion use notion in cursor

かっちょえ〜〜〜〜〜〜! こんなスマートなことやってみてえっすわ

ということでRyo Luさんのこの投稿がインスピレーション元になっています。Notionのデータベース(ボード)でタスクをアサインするとCursorのagentが自動でタスクを消化できるっぽい。誰かにタスクを振ったらカンバンを更新する。ならagentにもそうあるべきだ。なるほどこれはタスク委譲のUXとしていいなと思ったので、自前で作りました。

用意したもの

  • Obsidian Vault
  • Hermes
  • Discord
  • GitHub Actions

やる

Tasksのステータスを用意する

まずObsidian Tasksの書式に、agent起動用のステータスを追加します。とりあえず以下を用意:

ステータス記号
investigate- [@]
in progress- [$]
in review- [#]

記号に意味はあんまりないです。

フローを整える

  1. Obsidianでステータス変更 → git push
  2. GitHub Actions: diff走査で - [@] / - [$] / - [#] 行を検出
  3. ステータスごとに対応するDiscord forum channel に post 作成 + @hermes mention
  4. Hermes (Discord gateway) が mention 検知 → session 開始
  5. git worktree 作成 → タスク実行 → PR 作成
  6. Discord thread に結果を返信

ステータスごとにDiscordのforum channelを分けています(#agentic-investigate / #agentic-progress / #agentic-review)。

Hermes側ではchannelごとにsystem promptを切り替えています。

Discordを一回経由するのは主に

  • 過去ログを参照可能にするため
  • どうせinitial promptを切り分けるから
  • 最悪ダメ出しができる

あたりが理由です。最後については、Notionだとコメント機能がありますが、plainなmdだとちょっと限界があるという事情もあります。

できた

こんな感じになります

Pasted-image-20260630000749

Tasks-kanbanプラグインを使うと、Obsidian TasksのタスクをKanbanボード形式で表示できます。ステータス - [@] / - [$] / - [#] はそれぞれ別のカラムになるので、タスクカードをドラッグ&ドロップで別カラムに移動するだけでワークフローが起動します。

しばらく待つとPRが溜まっているので見たりダメ出ししたりして、大丈夫そうならmerge. conversationがダラダラ続いてダメそうになってきたらもう一回起票してもいい。

Thinoを使えばtodoモードでどんどんデイリーノートにタスクを生やせるので完全にツイッターのUIで壁打ちしまくってトリアージするだけになりました。

Loop engineeringできるんだけど多分ダメな気がする

「push → agent → push → agent」の無限ループは技術的に作れます。cronで今日のニュース調べさせてどんどんまとめたりしてもいいし、積み上がってる事務タスクを無限消化することもできます。現状僕が握っている手綱はTodoの起票とIn Reviewの判定なので

しかしそれをしなかったのは、正直トークンの無駄遣いになるからです。今はHermes AgentのバックエンドをSWE-1.6で置いているので、本当に無限ループさせても一切usageを食わないのですが、あんまりやる気になっていないのが現状です。

agentがハルシネーションを起こしたり、要求の解釈を間違えたりした時、ループが回り続けると延々と無駄な出力を生成し続けてしまいます。さすがにそれは嫌だった。PRを必ず挟むことで、人間がdiffを見て「これでいいか」を判断するチェックポイントができます。変な方向に走っていたらcloseして止めればいいので

おわりに

とりあえず当初の目的の“あれ欲しいなあ”はできました。

ステータスを増やしたりするかは未定です。まあ必要になったらやればいいや。