跳到正文
DEV Community· Nathan C.·· 2 小時前AI 評分51

Flash 為 AI 智能體加入 TikTok 式晨間資訊流

I gave my AI agent a TikTok feed. Now it's the first thing I open.

AI 導讀

開源 AI 智能體 Flash 新增 Briefing 晨間資訊流,把用戶離開期間的未讀郵件、iMessage、spark 報告、已完成或放棄的等待事項等整理成可逐張瀏覽的卡片。

正文

I build Flash, an open source AI agent that runs in your terminal and in a web UI. It reads my email, texts people, runs background agents (I call them sparks), waits on things for me, and since last week, it can even drive my mouse.

Every morning I had the same problem. Flash had been busy all night and the results were scattered: a spark's report here, a finished wait there, three unread emails, a chat that answered after I closed the tab.

So I gave it a feed.

Briefing: your morning, one swipe at a time

Hit Alt+B (or Briefing in the sidebar, or /briefing) and Flash goes full screen. One card at a time, scroll-snapped, just like a video feed. Swipe on a phone, j and k on a keyboard.

Each card is one thing that happened while you were away:

  • an unread email or iMessage
  • a spark's report you haven't read
  • a wait that finished, or gave up
  • a chat that answered after you left
  • a reminder coming up in the next day (these go first)
  • something new from a connector a spark is watching

Every card gets the same four actions, down the right side:

  • Reply: Flash opens a new chat with the reply already started (Reply to the email from Ada about "Can we move Thursday's review?". Say:), and you finish the sentence.
  • Open: the chat, the spark's report, or the email itself.
  • Ask Flash: a new chat with the card's contents already in the box.
  • Dismiss: gone for good. It never comes back, even if you refresh.

r, o, a and d do the same from the keyboard, and Esc closes the feed with a fade. A rail on the right shows how far you are, and the last card says you're all caught up, with Dismiss all if you just want a clean slate.

A few decisions I'm happy with:

  1. It looks back one day. A briefing that shows you last week isn't a briefing, it's an inbox.
  2. A source that's down doesn't break the feed. If your mail server times out, you still get everything else, and the last card says what it couldn't reach.
  3. Each card's colour is its kind. Blue for email, green for iMessage, purple for sparks. After two days you stop reading the label.

Teams report in

Sparks can work in teams, with a lead, a team chat, and shared rules. With five sparks on a team, five separate report cards were noise.

So a team gets one card, and only when something changed since your last briefing:

Launch crew                      2 of 3 with news
Scout: Found two new issues on the repo and labelled both.
Fixer (needs you): The tunnel fix is ready. May I merge it?
3 new messages in the team chat
1 other: nothing new

Open takes you straight into the team chat. Open the briefing again and nothing has changed? No team card. Silence is a feature.

Forks: try another way without losing this one

Every chat app makes you choose: edit a message and lose what came after, or start over in a new chat.

In Flash you fork from any reply. You stay in the same chat, it carries on from that reply, and the way it went before is kept. Once a chat has forks, a Forks button appears at the top and shows them as a tree: forks of forks, each under the reply it came from, with its last words and how long it is. Click one to carry on where it left off.

And because trees get messy, every fork has a bin. Delete one and its own forks move up a level. Delete the one you're on and you go back to where it came from. Get down to one fork and the button disappears, because a chat with one fork is just a chat.

Loaders that tell you what the agent is doing

"Thinking..." with three dots tells you nothing. Flash's loader now shows what it's actually doing, each one a little line drawing:

  • a hand with a quill, writing, while it edits files
  • a magnifier hopping across lines of text while it searches
  • a terminal typing a command while it runs one
  • a book turning its pages while it reads
  • a camera focusing and flashing while it looks at a page or your screen
  • a paper plane looping off while it sends an email or a message

Two confessions here.

First, I originally made these stop motion, choppy on purpose, a few frames a second. It looked charming in a screenshot. After living with it, it felt like the page was lagging. Now every sketch is redrawn on every frame and glides.

Second, "looking" used to be an eye. It looked around. It blinked. It was watching me take screenshots of my own screen. That was creepy, so now it's a camera.

When Flash isn't doing anything specific, the loader morphs into a different one every ten seconds, including Singularity, a black hole that pulls every dot in and blows them back out. That's on by default now.

Everything else that shipped

  • Diagrams and slide decks. Flash draws Mermaid diagrams inline, and writes Markdown slide decks with ten themes, per-slide backgrounds and transitions (fade, slide, push, zoom, flip, rise, wipe). Hit Present and it's full screen.
  • Project memory. Each project keeps its own memory, separate from yours. What Flash learns about one codebase stays there.
  • Files from other chats. + > From another chat lists every file across your chats, including ones Flash made, like that post your agent wrote yesterday. Pick one and it's attached again.
  • Pinned chats, and a down arrow that appears whenever you scroll up in a chat.
  • A waiting bar. When a chat is frozen waiting for something, a bar over the message box says what for, with Cancel right there.
  • Voice settings that make sense. Listening and speaking models are grouped by engine, and the terminal got its own pickers: /voice listen and /voice speak.
  • Sunrise, a new palette: warm cream, a bright orange, and a stepped red-into-yellow stripe on the send button.

What I learned

  1. A feed beats a dashboard. A dashboard shows you everything at once and you read none of it. One card at a time, with an action on each, and you actually clear it.
  2. Group by who, not by what. A team's status is one thought. Five report cards from the same team are five interruptions.
  3. Charming in a screenshot isn't charming at 60 seconds. Choppy animation and a staring eye both looked great in a demo, and both had to go once I'd lived with them.
  4. Never make the user choose between two versions of a conversation. Forking is cheap. Losing a good answer isn't.

Flash is open source: github.com/Natuworkguy/Flash. All of this is on the dev branch right now.

What would you want in your morning briefing? And would you rather swipe through your inbox or keep reading it top to bottom? Tell me in the comments.

來源:DEV Community · dev.to