<?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: Aditi Chatterji</title>
    <description>The latest articles on DEV Community by Aditi Chatterji (@aditi_chatterji_acb54593a).</description>
    <link>https://dev.to/aditi_chatterji_acb54593a</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%2F3454119%2Fc7d0a822-8fd1-45d6-a560-5a79f3830b29.png</url>
      <title>DEV Community: Aditi Chatterji</title>
      <link>https://dev.to/aditi_chatterji_acb54593a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aditi_chatterji_acb54593a"/>
    <language>en</language>
    <item>
      <title>I built an RL-native memory engine for LLM agents (every memory decision becomes a training signal)</title>
      <dc:creator>Aditi Chatterji</dc:creator>
      <pubDate>Thu, 25 Jun 2026 14:59:37 +0000</pubDate>
      <link>https://dev.to/aditi_chatterji_acb54593a/i-built-an-rl-native-memory-engine-for-llm-agents-every-memory-decision-becomes-a-training-signal-405h</link>
      <guid>https://dev.to/aditi_chatterji_acb54593a/i-built-an-rl-native-memory-engine-for-llm-agents-every-memory-decision-becomes-a-training-signal-405h</guid>
      <description>&lt;p&gt;Here's something that bothered me for a long time.&lt;/p&gt;

&lt;p&gt;Every production agent has some form of memory. You store facts, constraints, user preferences. The agent retrieves them. Tasks succeed or fail. You iterate.&lt;/p&gt;

&lt;p&gt;But there's a gap in the loop: you never know which memory decisions were good.&lt;/p&gt;

&lt;p&gt;Did that constraint actually help? Did retrieving that preference reduce tokens wasted? Did keeping that old session fact cause the task to fail silently? You have no idea. The agent makes memory decisions constantly, and none of them leave a trace you can learn from.&lt;/p&gt;

&lt;p&gt;I started thinking about this differently. Every time an agent decides what to remember, that's a decision. And decisions can be treated as actions in a reinforcement learning sense — with states, rewards, and outcomes you can measure.&lt;/p&gt;

&lt;p&gt;So I built memcell-rl.&lt;/p&gt;

&lt;p&gt;What it actually does&lt;br&gt;
Every memory cell in memcell-rl is typed. It's not just a string — it has a cell_type (constraint, preference, fact, episode), a scope (global, session, task), a criticality score, and a sensitivity level. This metadata is what the policy uses to make decisions.&lt;/p&gt;

&lt;p&gt;When your agent asks "what should I remember right now?", the system runs a policy, selects cells, and — this is the key part — logs the full transition:&lt;/p&gt;

&lt;p&gt;State: what cells were available, token budget, cell types in context&lt;br&gt;
Action: which cells were selected or suppressed&lt;br&gt;
Reward: did the task succeed? Was there a stale memory error? How many tokens were used?&lt;br&gt;
Next state: what memory looks like after&lt;br&gt;
Over time, this builds a dataset. You can export it and train a policy that learns from real outcomes — not just rules someone wrote upfront.&lt;/p&gt;

&lt;p&gt;The current policy is a baseline&lt;br&gt;
baseline_v0 is rule-based. Hard suppression for expired or deleted cells. Quarantine checks before anything sensitive gets used. Token budget enforcement by priority. It works, but it's static.&lt;/p&gt;

&lt;p&gt;The interesting question — the one I'm working toward — is what a learned policy looks like. One that's been trained on real agent sessions and knows, from data, which memory decisions actually lead to better outcomes.&lt;/p&gt;

&lt;p&gt;The repo exports completed transitions at /v1/rl/dataset. The format is clean enough to plug into DQN, behavioral cloning, or anything else. That's the long-term goal.&lt;/p&gt;

&lt;p&gt;It runs locally, no SaaS, no vendor&lt;br&gt;
Everything is SQLite. The API is plain HTTP. You can run it in a Docker container, on a laptop, inside a CI environment. No data leaves your machine.&lt;/p&gt;

&lt;p&gt;The test suite has 42 tests covering the full API — policy enforcement, reward computation, RL transitions, dataset export. They all pass without an API key.&lt;/p&gt;

&lt;p&gt;pytest tests/ -q&lt;br&gt;
42 passed in 1.83s&lt;br&gt;
I'm still early on this. The hardest part isn't the API — it's figuring out the right reward function for memory decisions, and whether the learned policy actually generalizes across different agent workloads.&lt;/p&gt;

&lt;p&gt;If you're building agents with real memory requirements and have run into this problem, I'd genuinely like to talk. Drop a comment or open an issue.&lt;/p&gt;

&lt;p&gt;→ github.com/adu3110/memcell-rl&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MCP server for repo behavior indexing — entrypoints, impact, context packs before the agent edits (FlowIndex)</title>
      <dc:creator>Aditi Chatterji</dc:creator>
      <pubDate>Thu, 25 Jun 2026 00:53:55 +0000</pubDate>
      <link>https://dev.to/aditi_chatterji_acb54593a/mcp-server-for-repo-behavior-indexing-entrypoints-impact-context-packs-before-the-agent-edits-bk7</link>
      <guid>https://dev.to/aditi_chatterji_acb54593a/mcp-server-for-repo-behavior-indexing-entrypoints-impact-context-packs-before-the-agent-edits-bk7</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;I&lt;span class="s1"&gt;'ve been using Cursor on non-trivial repos and kept hitting the same issue: the agent finds a file but misses routes, shared modules, and tests that should run after a change.
I built FlowIndex — a local CLI + MCP server that scans a repo and builds a behavior graph in SQLite (entrypoints, imports/calls, tests, git co-change). No embeddings, no SaaS, no LLM calls in the index itself.
Setup:
pip install "flowindex[mcp]"
In your project: flowindex init flowindex scan
Add to ~/.cursor/mcp.json (use your repo'&lt;/span&gt;s absolute path &lt;span class="k"&gt;for &lt;/span&gt;cwd&lt;span class="o"&gt;)&lt;/span&gt;:
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;"mcpServers"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;"flowindex"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="s2"&gt;"command"&lt;/span&gt;: &lt;span class="s2"&gt;"flowindex"&lt;/span&gt;,
&lt;span class="s2"&gt;"args"&lt;/span&gt;: &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"mcp"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;,
&lt;span class="s2"&gt;"cwd"&lt;/span&gt;: &lt;span class="s2"&gt;"/absolute/path/to/your/repo"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
4. Restart Cursor — you get tools like get_change_impact, suggest_tests, make_context_pack, explain_entrypoint, get_repo_overview.
Example workflow: before editing payments/ledger code, ask the agent to use make_context_pack or get_change_impact on that file — it pulls from the &lt;span class="nb"&gt;local &lt;/span&gt;graph, not a generic file search.
Honest limits: static analysis + git heuristics only. Call paths resolve via imports but aren&lt;span class="s1"&gt;'t compiler-grade. TS/JS is heuristic. Documented in the README.


MIT · pip install flowindex ·&amp;nbsp;https://github.com/adu3110/flowIndex


Curious if others use MCP for repo context and what tools you wish existed. Happy to fix setup issues if anyone tries it.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>agents</category>
      <category>mcp</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
