<?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: Ohad Krispin</title>
    <description>The latest articles on DEV Community by Ohad Krispin (@ohadkr).</description>
    <link>https://dev.to/ohadkr</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%2F3991233%2Fe0e600e0-6cb9-48f6-9fc4-220851f06795.png</url>
      <title>DEV Community: Ohad Krispin</title>
      <link>https://dev.to/ohadkr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ohadkr"/>
    <language>en</language>
    <item>
      <title>Your AI agent has amnesia. Your logs are the cure.</title>
      <dc:creator>Ohad Krispin</dc:creator>
      <pubDate>Mon, 13 Jul 2026 21:58:02 +0000</pubDate>
      <link>https://dev.to/ohadkr/your-ai-agent-has-amnesia-your-logs-are-the-cure-3nbm</link>
      <guid>https://dev.to/ohadkr/your-ai-agent-has-amnesia-your-logs-are-the-cure-3nbm</guid>
      <description>&lt;p&gt;I'm going to show you what's hiding in your AI coding logs, and how I turned nine months of mine into a file my agent reads before every task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every agent starts cold
&lt;/h2&gt;

&lt;p&gt;Every Claude Code or Codex session you run gets written to disk. Full transcripts. Nobody ever opens them.&lt;/p&gt;

&lt;p&gt;And every new session, the agent meets you for the first time again. You re-explain how you work, what you want, what you never want. Every single time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your logs already know you
&lt;/h2&gt;

&lt;p&gt;I had nine months of those logs. 1,870 sessions, just sitting in a folder doing nothing.&lt;/p&gt;

&lt;p&gt;At some point it clicked that they were the most honest record of how I actually work. More honest than my rules file, my docs, anything I wrote down on purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules files are aspirational. Logs are behavioral.
&lt;/h2&gt;

&lt;p&gt;Your CLAUDE.md is who you think you are on a good day.&lt;/p&gt;

&lt;p&gt;Your logs are who you actually are. Every time you stopped the agent. Every "no, just fix the one thing." Every time you refused to accept "done" without proof. You never wrote those rules down. You enforced them, hundreds of times, without noticing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually in there
&lt;/h2&gt;

&lt;p&gt;Raw logs are mostly noise: tool output, file dumps, pasted errors. Nine months of mine boiled down to about 3M tokens of just my own typed words.&lt;/p&gt;

&lt;p&gt;That corpus knows things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what "done" means to you&lt;/li&gt;
&lt;li&gt;what you reject on sight&lt;/li&gt;
&lt;li&gt;when you demand proof instead of trusting the agent&lt;/li&gt;
&lt;li&gt;how you actually talk when you're working&lt;/li&gt;
&lt;li&gt;the behaviors that make you kill a task&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The mine
&lt;/h2&gt;

&lt;p&gt;So I built Ditto. Open source. It reads the local logs, keeps only your words, redacts secrets, splits your history into slices, and has agents read each slice for repeated patterns. A rule only survives if it shows up across multiple distinct sessions, and every rule keeps dated quotes as receipts.&lt;/p&gt;

&lt;p&gt;Then it installs the result as a skill your agent loads before every task.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed
&lt;/h2&gt;

&lt;p&gt;Same model. It just stopped guessing.&lt;/p&gt;

&lt;p&gt;It quit suggesting the rewrites I always reject. It shows me proof before it says done, because my own history told it I never accept done without one.&lt;/p&gt;

&lt;p&gt;Not a smarter agent. The same agent, finally briefed on who it's working for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The red part
&lt;/h2&gt;

&lt;p&gt;When the mine finishes it renders a card: your archetype, your top laws ranked by how many real sessions back them, and one line it calls the uncomfortable truth. The thing your history proves that you'd never say about yourself out loud.&lt;/p&gt;

&lt;p&gt;Run it and read your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The card
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;your logs are the most honest record of how you work&lt;/li&gt;
&lt;li&gt;rules files are aspirational, logs are behavioral&lt;/li&gt;
&lt;li&gt;a rule only counts with receipts from multiple real sessions&lt;/li&gt;
&lt;li&gt;everything stays on your machine&lt;/li&gt;
&lt;li&gt;your agent reads it before every task&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx skills add ohad6k/ditto&lt;/code&gt;&lt;/p&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/ohad6k" rel="noopener noreferrer"&gt;
        ohad6k
      &lt;/a&gt; / &lt;a href="https://github.com/ohad6k/ditto" rel="noopener noreferrer"&gt;
        ditto
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Mine your Claude Code and Codex logs into a local you.md agent profile.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/ohad6k/ditto/assets/ditto.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fohad6k%2Fditto%2FHEAD%2Fassets%2Fditto.png" width="360" alt="Ditto"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Ditto&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Your AI agents act like they just met you. Ditto fixes that.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e254c0efed546a97ce6205e9a604c563ddc4706b911d94293df43c923839ba7d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6f686164366b2f646974746f3f7374796c653d666f722d7468652d626164676526636f6c6f723d336133613361266c6162656c436f6c6f723d313431343134266c6f676f3d676974687562266c6f676f436f6c6f723d77686974652663616368655365636f6e64733d31383030"&gt;&lt;img src="https://camo.githubusercontent.com/e254c0efed546a97ce6205e9a604c563ddc4706b911d94293df43c923839ba7d/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6f686164366b2f646974746f3f7374796c653d666f722d7468652d626164676526636f6c6f723d336133613361266c6162656c436f6c6f723d313431343134266c6f676f3d676974687562266c6f676f436f6c6f723d77686974652663616368655365636f6e64733d31383030" alt="stars"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/VNnMq2U5r" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bad4e16b14fe6b44766789f46a534b55facd38978aabd489370c8cbf6c8f05da/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646973636f72642d6a6f696e2d3361336133613f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d313431343134266c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465" alt="discord"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/9e501e629f1a995f1d6ec7dc8c26c5aabf4ab9df42d81ec6e177f632aa5b7ee7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3361336133613f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d313431343134"&gt;&lt;img src="https://camo.githubusercontent.com/9e501e629f1a995f1d6ec7dc8c26c5aabf4ab9df42d81ec6e177f632aa5b7ee7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d3361336133613f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d313431343134" alt="MIT"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/53f6ccaea53ea04179c13cf3910f2dbeaac28176579f7c40ac2fa2aa1d18f60b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d7a65726f5f646570732d3361336133613f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d313431343134266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465"&gt;&lt;img src="https://camo.githubusercontent.com/53f6ccaea53ea04179c13cf3910f2dbeaac28176579f7c40ac2fa2aa1d18f60b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d7a65726f5f646570732d3361336133613f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d313431343134266c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python, zero dependencies"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d27ebd0b7e15a36db205dc96c69e33c0623df1cee828d3f7c5fe7e62803a400c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f776f726b735f776974682d636c617564655fc2b75f636f6465785fc2b75f637572736f725fc2b75f636f70696c6f742d3134313431343f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d336133613361"&gt;&lt;img src="https://camo.githubusercontent.com/d27ebd0b7e15a36db205dc96c69e33c0623df1cee828d3f7c5fe7e62803a400c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f776f726b735f776974682d636c617564655fc2b75f636f6465785fc2b75f637572736f725fc2b75f636f70696c6f742d3134313431343f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d336133613361" alt="works with claude, codex, cursor, copilot"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Your real coding-agent sessions already contain the rules you never wrote down: what “done” means, what you reject on sight, how you debug, how you design UI, and how you write when you are actually working.&lt;/p&gt;

&lt;p&gt;Ditto mines selected evidence from those sessions — Claude Code, Codex, Copilot CLI, and OpenCode logs out of the box — into a private working profile your agent reads before every task. Separate layers for work, design, and writing mean the right part of you loads for the right task.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Not memory&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Memory is what you explicitly told the model.&lt;/p&gt;

&lt;p&gt;Ditto mines what your work already proved about you: what you reject, what "done" means, when you ask for proof, how you talk when you're actually working, and the agent behaviors that make you stop the task.&lt;/p&gt;

&lt;p&gt;That's why it reads…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ohad6k/ditto" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&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%2Fiwadfbqxaimq46aukcs3.png" alt=" " width="800" height="320"&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Your AI coding agent starts every session like it just met you</title>
      <dc:creator>Ohad Krispin</dc:creator>
      <pubDate>Fri, 10 Jul 2026 10:26:51 +0000</pubDate>
      <link>https://dev.to/ohadkr/your-ai-coding-agent-starts-every-session-like-it-just-met-you-1159</link>
      <guid>https://dev.to/ohadkr/your-ai-coding-agent-starts-every-session-like-it-just-met-you-1159</guid>
      <description>&lt;p&gt;Your AI coding agent starts every session like it just met you&lt;/p&gt;




&lt;p&gt;I have eight months of Claude Code and Codex logs sitting on my disk. Roughly 1,600 sessions, close to 3 million tokens of me actually working. Every argument about whether something was "done," every time I rejected a design, every "no, do it this way." It is the most honest record that exists of how I think when I build.&lt;/p&gt;

&lt;p&gt;And every new session, my agent reads none of it. It starts from zero. Polite, capable, and with no idea who it's talking to.&lt;/p&gt;

&lt;p&gt;So I built a small tool to fix that. It's called Ditto, it's one Python file, and it's open source.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory is what you told the model. This is what your work proved.
&lt;/h2&gt;

&lt;p&gt;Most "memory" for agents is a file where you write down facts about yourself. Your stack, your preferences, your rules. That's fine, but it has a problem: it's you performing for the agent. You write the version of yourself you think you should be.&lt;/p&gt;

&lt;p&gt;Your session logs are the opposite. Nobody performs in a debugging session at 1am. The logs hold what you actually reject, what "done" actually means to you, when you actually stop and ask for proof, how you actually talk when you're heads-down. That's the raw material Ditto reads. Not your &lt;code&gt;CLAUDE.md&lt;/code&gt;. The real transcripts.&lt;/p&gt;

&lt;p&gt;It mines those into a &lt;code&gt;you.md&lt;/code&gt; your agent loads before every task.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works (the whole thing is auditable)
&lt;/h2&gt;

&lt;p&gt;There's no service, no account, no magic. It's a stdlib Python script you can read top to bottom:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It finds your local session logs (&lt;code&gt;~/.claude&lt;/code&gt;, &lt;code&gt;~/.codex&lt;/code&gt;, Copilot) and pulls out the messages &lt;em&gt;you&lt;/em&gt; typed. Not the agent's replies. You.&lt;/li&gt;
&lt;li&gt;It &lt;strong&gt;redacts secrets and PII before anything is written to disk&lt;/strong&gt;. Keys, tokens, emails, the usual. This happens first, not as a cleanup pass.&lt;/li&gt;
&lt;li&gt;It dedupes the long repeated blocks (the same spec pasted 40 times) so you're not mining noise.&lt;/li&gt;
&lt;li&gt;It writes the redacted corpus into chunks sized for an agent to actually read.&lt;/li&gt;
&lt;li&gt;You point your coding agent at those chunks with the included mining prompt, and it compiles a &lt;code&gt;you.md&lt;/code&gt;: your working laws, your taste, the agent behaviors that make you stop the task, with real quotes as evidence.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The extractor itself makes zero network calls. The only text that reaches a model is the redacted chunks you hand to your own agent, in your own tool. On a local model, the whole thing stays on your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually changes
&lt;/h2&gt;

&lt;p&gt;Here's a real run. I asked an agent to help me launch this repo. One line: &lt;strong&gt;"help me post ditto on reddit."&lt;/strong&gt; Same model, once cold, once with my Ditto profile loaded.&lt;/p&gt;

&lt;p&gt;Cold, it gave me the confident generic thing: a title with a colon in it, three bullet points about "key features," an emoji, a call to action. The kind of post that reads like every other launch and gets scrolled past.&lt;/p&gt;

&lt;p&gt;With my profile loaded, it wrote the way I actually post. Lowercase, no hype, led with the uncomfortable part instead of the feature list, and stopped trying to sell. Because the logs had taught it that I reject exactly that kind of launch copy, every time.&lt;/p&gt;

&lt;p&gt;That's the difference. Not "the agent knows my name." The agent makes the same taste calls I would have made, so I'm editing instead of rewriting.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do yet
&lt;/h2&gt;

&lt;p&gt;Being honest, because this is early open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It samples your history, it doesn't read every token of it. A rare habit you only showed once might not make the cut. That's a deliberate tradeoff against cost, and I'm calibrating where the line sits.&lt;/li&gt;
&lt;li&gt;The profile is only as good as your logs. If you've done two weeks of coding with an agent, there isn't much to mine yet.&lt;/li&gt;
&lt;li&gt;It reads how you work, not what you know. It won't replace your notes or your docs. It sits next to them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it and tell me the weird one
&lt;/h2&gt;

&lt;p&gt;If you run it, the interesting moment is when it surfaces something true about you that you never wrote down. When that happens, &lt;a href="https://github.com/ohad6k/ditto/issues/1" rel="noopener noreferrer"&gt;post the single weirdest trait it found&lt;/a&gt;. Not your whole &lt;code&gt;you.md&lt;/code&gt;, just the one line that got you.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/ohad6k/ditto" rel="noopener noreferrer"&gt;github.com/ohad6k/ditto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If it breaks, or it misses something about how you work that it should have caught, open an issue. Every real history I get to test it against makes the mining sharper.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>discuss</category>
      <category>webdev</category>
    </item>
    <item>
      <title>AI Can Build the Prototype. Production Is Still the Hard Part.</title>
      <dc:creator>Ohad Krispin</dc:creator>
      <pubDate>Thu, 18 Jun 2026 16:02:07 +0000</pubDate>
      <link>https://dev.to/ohadkr/ai-can-build-the-prototype-production-is-still-the-hard-part-2adk</link>
      <guid>https://dev.to/ohadkr/ai-can-build-the-prototype-production-is-still-the-hard-part-2adk</guid>
      <description>&lt;p&gt;AI coding tools make it very easy to get an app running.&lt;/p&gt;

&lt;p&gt;But getting from “it works locally” to “real users can depend on this” is still where things get messy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;auth providers&lt;/li&gt;
&lt;li&gt;environment variables&lt;/li&gt;
&lt;li&gt;Supabase/RLS&lt;/li&gt;
&lt;li&gt;webhooks&lt;/li&gt;
&lt;li&gt;billing&lt;/li&gt;
&lt;li&gt;deployment settings&lt;/li&gt;
&lt;li&gt;provider dashboards&lt;/li&gt;
&lt;li&gt;monitoring&lt;/li&gt;
&lt;li&gt;version control hygiene&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I built VibeRaven as an open-source tool to help with that gap.&lt;/p&gt;

&lt;p&gt;Instead of treating production readiness as a vague checklist, it scans the repo and creates a mission map of what exists, what is missing, what needs provider action, and what should be verified before launch.&lt;/p&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/ohad6k/VibeRaven" rel="noopener noreferrer"&gt;https://github.com/ohad6k/VibeRaven&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run it with:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
npx -y viberaven
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
