<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Wenwei Lin</title>
    <description>The latest articles on DEV Community by Wenwei Lin (@wenweilin).</description>
    <link>https://dev.to/wenweilin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F785273%2F1a86313f-1a14-44ef-bb1f-3de7ecae5d00.JPG</url>
      <title>DEV Community: Wenwei Lin</title>
      <link>https://dev.to/wenweilin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wenweilin"/>
    <language>en</language>
    <item>
      <title>Pip: a desktop pet that notices you, not just your words</title>
      <dc:creator>Wenwei Lin</dc:creator>
      <pubDate>Wed, 11 Nov 2026 04:24:16 +0000</pubDate>
      <link>https://dev.to/wenweilin/pip-a-desktop-pet-that-notices-you-not-just-your-words-20ln</link>
      <guid>https://dev.to/wenweilin/pip-a-desktop-pet-that-notices-you-not-just-your-words-20ln</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/presage-2026-11-04"&gt;Presage SmartSpectra SDK Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;Pip is a little octopus who lives in a tide pool in the corner of my desktop. I can talk to it, and it talks back.&lt;/p&gt;

&lt;p&gt;Most AI on my desktop works &lt;em&gt;for&lt;/em&gt; me, and it only knows what I type or say. Pip is the other half. It notices &lt;em&gt;me&lt;/em&gt;: whether I'm smiling or frowning, how often I blink, roughly how fast my heart and breath are going. When I told it "no" with a little smile, it answered: "Funny thing is, you're smiling a little while you say that."&lt;/p&gt;

&lt;p&gt;What Pip does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reacts to your face, even when you're quiet.&lt;/strong&gt; Smile and hearts pop up. Look surprised and it jumps. Frown and it frowns back. Nod and it nods. Blink and it blinks back. Stare at it long enough and it gets shy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talks with you.&lt;/strong&gt; You speak normally; Pip listens, thinks for a moment, and answers out loud with its mouth moving. Every reply starts with a small action (happy, shy, nod, comfort…) that Pip acts out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hears more than words.&lt;/strong&gt; Along with what you said, Pip's brain gets a short note of what the camera saw while you said it: expression, blink count, heart and breathing rate, and whether they went up or down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breathes with you.&lt;/strong&gt; The water in its pool rises and falls with your chest, and it glows faintly with each heartbeat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a pet, not a tool. It can't open files, read the page I'm on, or browse, and that's on purpose. Agents that read your screen and use your computer already exist, and I didn't want to build yet another harness that I'd never use. I built the one piece I hadn't seen: an agent that can read the person in front of it. The idea is that this piece could later plug into other desktop pets and agents, rather than living only inside Pip. So this is a small demo of that one ability.&lt;/p&gt;

&lt;p&gt;The octopus is just one look. The sensing doesn't care what the pet is: a fish, a cat, a little robot, whatever you like. Any of them gets the same new senses, your expressions, your heartbeat, your breathing, and can respond to them in its own way. What I'm really adding is more ways for desktop AI to perceive the person; Pip is one way to show it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/qs8Pmj9zVEU" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;In the video I'm reading DEV. Pip can't see the page; it only sees me. I react to the posts, and Pip reacts to me. A few things it said, unscripted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Hello hello! You look a bit surprised to see me."&lt;/li&gt;
&lt;li&gt;"I'm good, just bobbing about in my pool. You're blinking a lot though."&lt;/li&gt;
&lt;li&gt;"Funny thing is, you're smiling a little while you say that."&lt;/li&gt;
&lt;li&gt;"I can chat, keep you company, and sometimes notice things like a smile or a frown. I can't use your computer or look stuff up yet though."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It isn't perfect: a couple of times it didn't catch what I said, and once it told me my message got cut off. Heartbeat and breathing are there (the glow and the water) but subtle on screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/wenwei-lin" rel="noopener noreferrer"&gt;
        wenwei-lin
      &lt;/a&gt; / &lt;a href="https://github.com/wenwei-lin/tidepal" rel="noopener noreferrer"&gt;
        tidepal
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Tidepal&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Pip is a desktop pet that notices you, not just your words: a little octopus who lives in a tide pool on your desktop. You can talk to it.&lt;/p&gt;
&lt;p&gt;Voice assistants only hear your words. Pip also sees how you look while you say them: it uses the &lt;a href="https://smartspectra.presagetech.com/docs" rel="nofollow noopener noreferrer"&gt;SmartSpectra SDK&lt;/a&gt; to read your face, blinks, breathing and heartbeat through an ordinary webcam, and passes that along with what you said. So when you say "I'm fine" with a frown, Pip can notice.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Talk&lt;/strong&gt; — speak normally. Pip listens (the ring around the pool follows your voice), thinks, and answers out loud, moving its mouth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Face&lt;/strong&gt; — Pip blinks when you blink, blushes when you smile, jumps when you look surprised, nods along when you nod, and gets shy if you stare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breath&lt;/strong&gt; — the water in Pip's pool rises and falls with your chest; Pip glows with your heartbeat.&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/wenwei-lin/tidepal" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Electron app. Setup is in the README: &lt;code&gt;npm install&lt;/code&gt;, put your keys in &lt;code&gt;.env&lt;/code&gt;, &lt;code&gt;npm start&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Responds to Human Signals
&lt;/h2&gt;

&lt;p&gt;The SmartSpectra Node SDK runs inside the Electron renderer and reads the webcam on the device. I request the breathing, cardio and face metric groups and decode the protobuf stream.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What Pip does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Expressions (happy, surprise, sad, angry)&lt;/td&gt;
&lt;td&gt;Mirrors you in real time; tells the chat model how you looked while speaking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blinking&lt;/td&gt;
&lt;td&gt;Blinks back; blink count goes to the chat model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Talking&lt;/td&gt;
&lt;td&gt;Tilts its head and listens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Face landmarks&lt;/td&gt;
&lt;td&gt;Eyes follow you; nod and shake detection; the "stare" reaction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing trace and rate&lt;/td&gt;
&lt;td&gt;The water level; rate and trend go to the chat model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pulse trace and rate&lt;/td&gt;
&lt;td&gt;The heartbeat glow; rate and trend go to the chat model (stable readings only)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The conversation loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;camera ─► SmartSpectra (on device) ─► face, blinks, heart, breathing ─┐
                                                                      ├─► DeepSeek V4.1 Flash ─► reply + action tag
mic ─► cut at pauses ─► speech-to-text (SenseVoice) ─► your words ────┘              │
                                                       Pip acts out the tag, macOS speaks the reply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Things I learned on the way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The chest matters.&lt;/strong&gt; Breathing needs your shoulders and chest in view, which fights with how close we sit to a laptop. Expressions and pulse come through fine from the face alone, so Pip leans on those and only nags about the chest when it really needs breathing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw breathing is jumpy.&lt;/strong&gt; Drawn as-is, the water jerked up and down. I remove the slow drift, let the size of the swing adapt over a few seconds, and move the water with a soft spring. Now it glides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Face present" should come from expressions.&lt;/strong&gt; Landmarks sometimes stop while the SDK waits for a better view; expression scores keep coming, so I count those as "I can see you."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Only stable numbers.&lt;/strong&gt; Heart rate jumps around for the first seconds. Pip shows "measuring" until the SDK marks the reading stable, and only stable readings reach the chat model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;p&gt;Most Creative or Delightful Use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Consent and Data Handling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consent.&lt;/strong&gt; On first launch Pip explains, in plain words, what the camera and microphone are for, and asks. "Just looking" never turns either on. A button turns the camera off any time. A small mirror shows exactly what the camera sees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video stays on the computer.&lt;/strong&gt; The SmartSpectra SDK processes frames locally. Nothing is recorded, saved or uploaded. The SDK contacts Presage only to check the key and download its models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDK telemetry is off&lt;/strong&gt; (&lt;code&gt;enableTelemetry: false&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice.&lt;/strong&gt; When you pause, the piece you just said is sent to a speech-to-text service (SiliconFlow SenseVoice) and turned into text. Audio is not saved. The mic is ignored while Pip is thinking or speaking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI service.&lt;/strong&gt; Your words, plus a one-line description of what the camera saw (for example "face while speaking: frowning; heart rate about 81/min, faster than earlier"), go to DeepSeek V4.1 Flash to write Pip's reply. Nothing else is sent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention.&lt;/strong&gt; The conversation lives in memory and is gone when you quit. Only your consent choice and language are saved locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not medical.&lt;/strong&gt; Pip is told never to diagnose or interpret your numbers, and to say it's just a little octopus if you ask about health.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Pip is a pet on purpose. But the same "eyes for the person" could sit next to other agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coding agents.&lt;/strong&gt; Codex already has desktop pets: little companions that float over your windows and react to what the agent is doing, "thinking" or "task done". They look at the work. A pet with Pip's eyes could also look at the person: notice you frowning at a diff, or grinning when the tests pass, and respond to that. Coding agents like Codex or Claude Code already have the computer and the web; add how you're doing, and an agent could slow down and explain more when you look lost. I don't know of anyone doing this yet, and it seems like a fun interaction to try.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speaking practice.&lt;/strong&gt; When you practise a language or a talk, the moments you frown or hesitate are the parts you haven't figured out yet. Pip could mark them and go over them with you afterwards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coaching.&lt;/strong&gt; A coach could get a small timeline of your expressions next to the transcript, to see which questions landed and which didn't.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calm moments.&lt;/strong&gt; A short breathing break where the tide follows your breath. I built a version of this and set it aside for now.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>presagechallenge</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My personal agent is just a folder</title>
      <dc:creator>Wenwei Lin</dc:creator>
      <pubDate>Wed, 11 Nov 2026 01:42:13 +0000</pubDate>
      <link>https://dev.to/wenweilin/my-personal-agent-is-just-a-folder-5dok</link>
      <guid>https://dev.to/wenweilin/my-personal-agent-is-just-a-folder-5dok</guid>
      <description>&lt;p&gt;&lt;em&gt;If you've wondered what a "personal agent" looks like in practice, this is mine: no app, no server, just a folder of Markdown files and a coding agent pointed at it. At the end there's a folder layout and the rules file, so you can start your own.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Yesterday I was a bit tired and almost skipped the gym. Before heading out, I asked the AI offhand: "If I train back today, which exercises should I do?" It said that if I was tired I should go lighter, taking 20 to 30 percent off last time's weights, then lined up four exercises, three sets each. With the plan in front of me, I actually wanted to go.&lt;/p&gt;

&lt;p&gt;In the evening I told it, one by one, what I'd eaten at each meal and how much each cost, and finally asked: "How much did I spend today? Did I get enough protein?" It worked out how much protein I was still short, reminded me to have a scoop of protein powder, logged the spending in my ledger, and checked it against this month's budget while it was at it.&lt;/p&gt;

&lt;p&gt;I didn't type a word of this. I said it all into my phone's voice input. Small things that used to take me ages to decide, I now say in a sentence and hand over.&lt;/p&gt;

&lt;p&gt;What does these things for me is my personal agent. It isn't an app, just a folder on my computer. I open it in Claude Code, and the agent works inside it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like
&lt;/h2&gt;

&lt;p&gt;Fitness is only one of its modules. The whole folder looks roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjjyc6v7iec4fj6gfrr1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjjyc6v7iec4fj6gfrr1d.png" alt="My personal agent folder: four parts, Origin/Life, Origin/Library, Self and Modules" width="800" height="723"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I described this diagram to it, and it drew it. The folder also opens directly in Obsidian: the AI writes in it, and I read in Obsidian. Files link to each other with wikilinks, so one click takes you to the source, and you can see everywhere a note is referenced.&lt;/p&gt;

&lt;p&gt;I think four parts are useful to everyone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Daily records.&lt;/strong&gt; Notes, journals, recordings, photos and conversations with AI, all filed by date, along with the books and articles I've read. This is the AI's memory of me.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowledge.&lt;/strong&gt; I borrowed the idea of Luhmann's slip box: ideas we've settled on after discussion go into a wiki, one by one. What matters most is sources and indexes: every entry links back to where it came from, and indexes the AI generates tie them together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;About me.&lt;/strong&gt; What I've done, my personality, my experience and projects. When I write a résumé or introduce myself, this is where the material comes from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;People around me.&lt;/strong&gt; The AI doesn't know what has happened between me and each person, and transcripts often get names wrong; one teacher's name came out spelled two or three different ways. So I keep a file for each person: who they are, how their name is written, and what we've been through. There are over thirty so far.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything else is modules, added as needed. Everyone lives differently, so everyone needs different modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fitness.&lt;/strong&gt; What I trained each time, the weights and sets, an exercise library, a training plan, and whether I'm getting enough protein each day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing.&lt;/strong&gt; A list of topics I want to write, am writing and have written; one folder per blog post; and a style guide that gains a rule each time I finish revising a piece.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Games.&lt;/strong&gt; If you play &lt;em&gt;Genshin Impact&lt;/em&gt;, you could make a Genshin folder for character builds, team comps and resource planning, plus a guide noting which game version it's for. Mine is for an auto-battler I play, with line-ups and counters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I need something new, I make a new folder and write its rules at the top of its main file. The fitness and spending modules came about a few days ago when I casually said "I'd like to log this every day", and it built them on the spot.&lt;/p&gt;

&lt;p&gt;The more I use it, the more I notice tasks with fixed steps that keep coming back, so I distil them into skills: a write-up of the steps, sometimes with a script. The ones worth keeping show up while doing the work: this will come up again, and it'd be useful elsewhere too. There are seven now, such as converting recording transcripts to Markdown, importing ebooks, making Xiaohongshu cards (Xiaohongshu is a Chinese lifestyle social app), and pushing articles into my WeChat Official Account's drafts. How to write Xiaohongshu copy could be distilled the same way later; writing it down is what keeps it consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting from zero: moving the past in
&lt;/h2&gt;

&lt;p&gt;For the folder to be useful, it needs enough material. But at first it was empty.&lt;/p&gt;

&lt;p&gt;I didn't write any scripts to move things in. I just gave the AI my Notion and flomo API keys, let it pull everything itself, and watched. Later I gave it access to the whole computer to dig through old records, and installed Claude Code on my old university laptop too. Personal projects, little demos, my graduation project and lab reports: it turned them all up, one by one.&lt;/p&gt;

&lt;p&gt;Once it finds things, it also files them in the right places. When it found which zip file held my graduation project's code, it added that to my university experience while it was there.&lt;/p&gt;

&lt;p&gt;My dated records now go back to June 2021, more than 1,200 days. That's the foundation of how it knows me. Later I'd like to photograph my handwritten journals and bring them in too, to see how I've changed over the years.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I use it for
&lt;/h2&gt;

&lt;p&gt;Fitness and meals are only the most everyday uses. Over the past month I've also used it for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Job hunting.&lt;/strong&gt; Revising my résumé, preparing for interviews, and reviewing afterwards which questions I didn't answer well. It knows what I've done, and it can dig up experiences from old material that even I had forgotten.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;My blog.&lt;/strong&gt; Publishing posts, switching frameworks, going live, adding analytics: I did all of it together with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An information officer.&lt;/strong&gt; It filters my information sources and picks out what's worth reading. I wrote a whole post about that.&lt;sup id="fnref1"&gt;1&lt;/sup&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diagrams.&lt;/strong&gt; I describe one and it draws it. In university, lab reports ran to dozens of pages, and whenever I needed a figure I had to switch tools and drag flowcharts together bit by bit in Visio. It tires me out just remembering it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writing.&lt;/strong&gt; It drafts and I edit. This post was written that way too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understanding my feelings.&lt;/strong&gt; Anxiety after an interview, going round in circles after a decision: I say it out loud, and it helps me take it apart bit by bit. I've also asked it to find things people have said in praise of me.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reading and learning new fields deserve a few more words.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reading
&lt;/h3&gt;

&lt;p&gt;Reading has become a conversation. As I read, I tell the AI what I'm thinking: a line that struck me, a word I don't know, a question the page raises. It annotates along with me, explains things, and fills in the background.&lt;/p&gt;

&lt;p&gt;Sometimes it draws a map. When I was reading &lt;em&gt;Paris&lt;/em&gt; from Bloom's Literary Places, I didn't know much about the city. It just drew me a map of Paris with the places from the book, so I didn't have to go searching websites myself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvfh2kgj5l24yckg8uep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqvfh2kgj5l24yckg8uep.png" alt="A map of writers' Paris: where Hugo, Balzac, Baudelaire, Wilde, Stein, Hemingway and Beckett lived, plus Shakespeare and Company and the Saint-Germain cafés" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A book also leads somewhere else. Napoleon came up while I was reading about Paris, and I realised I didn't really know what he had done. So I asked, and he went onto my list of things I want to understand.&lt;/p&gt;

&lt;p&gt;All of these conversations are saved in the book's own folder, next to the book. When I finish, we go through my notes a few at a time and build a mind map together, each node linking back to its place in the book. Reading used to end when I closed the book; now what I thought along the way stays.&lt;/p&gt;

&lt;h3&gt;
  
  
  Turning the vague into the definite
&lt;/h3&gt;

&lt;p&gt;When I want to understand an unfamiliar field, I often feel I know nothing and can't tell where I stand. Actually I know some of it; I just can't put it into words. Once I'm afraid, I can't break things down. AI happens to be good at structure. It splits the field into a few steps, I check myself against each one, and I can see how far I've come.&lt;/p&gt;

&lt;p&gt;At my previous job I always felt I didn't understand manufacturing. Then I had it break a factory into six parts: taking orders, design and process, planning, purchasing and warehousing, production, and quality control and shipping. Checking against them, I found I understood some parts and genuinely didn't understand others. It wasn't as scary as I'd thought. What drops you into worry all at once is often just the vagueness.&lt;/p&gt;




&lt;p&gt;My thinking used to be scattered. It can find things scattered all over, piece them together, and think with me about what they might add up to.&lt;/p&gt;

&lt;p&gt;It also keeps a complete record of how something got done. I used to note down only the final conclusion; how I got there was mostly lost. Now every step of how I reached a conclusion is recorded. This post went through several drafts, and each time, what I said and why I changed it is saved as a conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a folder
&lt;/h2&gt;

&lt;p&gt;Before this, I built several versions, and they left me two lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I stored memories but didn't know what to do with them.&lt;/strong&gt; At first I wrote my own scripts to store memories and built a little agent on top of models like Kimi and Zhipu. Later I gave my rawest journals to an AI and had it summarise what kind of person I am, hoping other agents could use the summary. I had memories and a summary, but not much information, and I hadn't figured out what to use them for. It felt hollow, with no loop closing back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't build the tools yourself.&lt;/strong&gt; After that I built my own agent with all sorts of tools; it could discuss books with me as I read, which was a step forward. But it wasn't powerful enough, the interface wasn't pretty, and I had to maintain the tools and the folder myself. In the end it was never as convenient as Claude Code or Codex.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After a few tries I realised what matters most is what I actually use it for. So in this version the agent is just off-the-shelf Claude Code or Codex. I only look after the folder's structure and put my attention on using it. The idea came from a talk by ciaoye.&lt;sup id="fnref2"&gt;2&lt;/sup&gt; Everything in the folder is plain text, so whatever model or tool I switch to, my material stays in my own hands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start your own
&lt;/h2&gt;

&lt;p&gt;You don't need my exact layout. This is the skeleton I'd start from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Origin/    raw material, kept as-is
  Life/YYYY/YYYY-MM/YYYY-MM-DD/   notes, recordings, photos, chats with AI
  Library/                        books, articles, podcasts, talks
Self/      who I am, what I've done, what I want, people around me
Wiki/      ideas settled after discussion, written like an encyclopedia
Modules/   state and lists: fitness, reading shelf, projects, blog...
Index/     AI-generated indexes, can be rebuilt anytime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I wrote the agent just one manual, &lt;code&gt;AGENTS.md&lt;/code&gt;, at the root of the folder. It describes the layout above, plus a few rules. The ones that matter most:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep original material exactly as it is.&lt;/strong&gt; No rewriting, no polishing, no silent corrections. If something must be fixed, keep the original and say what changed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be clear about who is speaking.&lt;/strong&gt; My words, outside sources and the agent's words are kept apart. The AI's replies are not my views.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When unsure, write "to be confirmed".&lt;/strong&gt; Never guess dates, speakers, names or numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link back to the source.&lt;/strong&gt; Every summary links to the original note or recording, so I can always check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the rules short.&lt;/strong&gt; When changing a rule, delete or merge old ones first, so the file fits on a screen or two.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last one I learned the hard way: rules that keep growing get ignored.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I've learned using it
&lt;/h2&gt;

&lt;p&gt;My biggest takeaway is to trust it, and hand over as much as I can of the things that take me ages to decide. I used to use a workout app, searching for exercises and tapping through them one by one. Now it's more like having a coach: it makes the plan, I just train, and I keep an eye on details like not using momentum. Bookkeeping is the same. No need to build an app; I say one sentence in the chat, and it's logged in Markdown and CSV. I learned this from Lan Xiaohuan, who gave AI his genetic and exercise data for health analysis.&lt;sup id="fnref3"&gt;3&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Logging my meals is something I could never manage before. In 2022 I saw a traditional Chinese medicine doctor, an elderly woman, who told me to write down my three meals every day. I found it a hassle and didn't want to do it at all. Looking back, she was right: only by writing down what you eat can you see how to adjust. Now one sentence logs it, and after a while I naturally get a sense of how to eat and live more healthily.&lt;/p&gt;

&lt;p&gt;Handing things over doesn't mean not caring at all.&lt;/p&gt;

&lt;p&gt;What it pieces together is sometimes off: I did one thing and it recorded another. When I notice, I have it go back and fix it at the source. Every entry links to what I originally said, so the source can always be found. On the whole I can trust it, and I proofread the details. After all, only I know best what I've been through.&lt;/p&gt;

&lt;p&gt;It also won't know what I want on its own. It could only make that training plan after I told it how many times a week I train and which muscle groups to rotate. I have to think clearly first about how I want to use it, then see whether it can do it.&lt;/p&gt;

&lt;p&gt;And plans can't keep up with reality. That day at the start, the AI had my back workout neatly planned, and it talked me out the door. At the gym, every back machine was taken, so I trained shoulders instead. (Next time I could ask for a backup plan.) However well it plans, it can't know whether the machines are free.&lt;/p&gt;

&lt;p&gt;That has to do with where it lives. My personal agent is a local folder on my Mac, not in the cloud. I can only use it at my computer; once I'm in the gym, I'm on my own. I think that's fine. I plan with it at home and make my own calls on the spot. I don't need AI with me every moment.&lt;/p&gt;

&lt;p&gt;I've always had a picture in mind: Ineffa from &lt;em&gt;Genshin Impact&lt;/em&gt;. She's a robot Aino built, a kind of housekeeper who plans and organises Aino's life, like splitting the budget into money for the workshop and money for snacks. In April this year I told the AI I wanted to build an assistant like her. In May it struck me that she wasn't like that from the start either; she went through many generations of trial and error before becoming who she is. My personal agent is the same. The earlier versions were trial and error, and with this one it finally has the beginnings of a life assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  How would you use it?
&lt;/h2&gt;

&lt;p&gt;My way isn't necessarily right. As I see it, personal agents are still in an in-between stage. Everyone is experimenting, and that in itself is a lot of fun.&lt;/p&gt;

&lt;p&gt;Products like Muse live in the cloud, connected to email, calendar and LinkedIn, usable anywhere, anytime. One writer took it on a trip to the US and got a meeting with someone they'd wanted to meet.&lt;sup id="fnref4"&gt;4&lt;/sup&gt; But products like that mostly keep your data inside their own walls. If I want to dig out a few ideas from long ago and look at them together, or let a coding agent read them too, it isn't easy. Mine only works at home, but it remembers my own past, and it's all plain text that any tool can read.&lt;/p&gt;

&lt;p&gt;I can't say what it will grow into. Seeing Muse, though, I'd like to learn from how it keeps tracking things, and add scheduled tasks to the folder so it can keep an eye on what I've been following lately. How exactly to do it, I'm still thinking about.&lt;/p&gt;

&lt;p&gt;If you've built something similar, or keep your life in a folder some other way, I'd love to hear how you set it up.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was first published on &lt;a href="https://www.wenwei.site/en/writings/personal-agent-folder" rel="noopener noreferrer"&gt;my blog&lt;/a&gt;. I wrote it in Chinese and translated it with AI help.&lt;/em&gt;&lt;/p&gt;




&lt;ol&gt;

&lt;li id="fn1"&gt;
&lt;p&gt;Wenwei Lin, "Letting an agent rebuild my information diet", 2026-11-05, &lt;a href="https://www.wenwei.site/en/writings/information-sources" rel="noopener noreferrer"&gt;https://www.wenwei.site/en/writings/information-sources&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn2"&gt;
&lt;p&gt;ciaoye, a talk on a personal OS (in Chinese), &lt;a href="https://ciaoye.github.io/agent-self-tech-talk/" rel="noopener noreferrer"&gt;https://ciaoye.github.io/agent-self-tech-talk/&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn3"&gt;
&lt;p&gt;Hosted by Yu Yi dev, with Lan Xiaohuan as guest, "Conversation with Lan Xiaohuan: inside AI, don't force old theories onto a new reality" (in Chinese), podcast &lt;em&gt;AI Lens&lt;/em&gt;, 2026-09-02, &lt;a href="https://www.xiaoyuzhoufm.com/episode/6a967e42f03e74ee6b0332ad" rel="noopener noreferrer"&gt;https://www.xiaoyuzhoufm.com/episode/6a967e42f03e74ee6b0332ad&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;li id="fn4"&gt;
&lt;p&gt;Xiaoxin, "Ten days travelling in the US: Muse helped me get a meeting with economist Tyler Cowen" (in Chinese), WeChat Official Account "Agent Universe", 2026-11-02, &lt;a href="https://mp.weixin.qq.com/s/PMLJvEg4-bmXGxBSIfwnZA" rel="noopener noreferrer"&gt;https://mp.weixin.qq.com/s/PMLJvEg4-bmXGxBSIfwnZA&lt;/a&gt;&amp;nbsp;↩&lt;/p&gt;
&lt;/li&gt;

&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>obsidian</category>
      <category>claude</category>
    </item>
  </channel>
</rss>
