惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threatpost
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
L
LINUX DO - 最新话题
博客园_首页
博客园 - Franky
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
C
Cisco Blogs
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
罗磊的独立博客
MyScale Blog
MyScale Blog
Last Week in AI
Last Week in AI
A
About on SuperTechFans
G
GRAHAM CLULEY
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
D
DataBreaches.Net
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
I
InfoQ
T
The Exploit Database - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
博客园 - 叶小钗
Project Zero
Project Zero

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Your AI coding agent forgets everything outside the chat. I built OpenContext to fix that.
glenn chen (cg33) · 2026-05-30 · via DEV Community

Every morning, I found myself onboarding a new AI agent.

Not a new human teammate.
A new Claude Code / Codex / Cursor session.

The pattern was always the same:

I would open a fresh session and say something like:

Continue the bug I was debugging this morning.

And the agent would basically ask:

What bug? What files? What changed? What failed? What have you already tried?

Which is reasonable. The agent was not there.

It did not know which shell commands I had run.
It did not know which files I had touched.
It did not know which build failed.
It did not know which browser docs I had been reading.
It did not know which previous agent session already explored and rejected a certain approach.

So I had to explain my own work history again.

That felt wrong.

We are building increasingly capable coding agents, but most of them still only know what happens inside the current chat. The rest of your workday is invisible to them.

That is the problem I built OpenContext to explore.

GitHub: https://github.com/ohmyctx/opencontext

The problem: agent memory stops at the chat boundary

Most AI coding tools are powerful inside a single session.

They can read files, edit code, run commands, explain errors, and help you reason through a task.

But once you start a new session, a lot of useful context disappears:

  • What did I work on yesterday?
  • Which files did I edit?
  • Which commands failed?
  • Which tests passed?
  • Which docs did I read?
  • What did I already ask another agent?
  • What did I decide not to do?
  • What was I trying to accomplish before I got interrupted?

This is especially painful for coding agents because software work is not just “the current prompt”.

It is a stream of activity across many tools:

  • terminal
  • editor
  • browser
  • git
  • issue trackers
  • email
  • chat
  • previous agent sessions

A fresh agent session usually sees none of that unless you manually paste it in.

So every new session starts with a small onboarding tax.

For small tasks, that is annoying.
For large projects, it becomes a real bottleneck.

Existing memory tools mostly remember conversations

There are already many agent memory systems.

Some remember facts from previous chats.
Some store vector embeddings.
Some let agents write notes to themselves.
Some act as a long-term memory backend.

Those are useful, but they often start from the conversation itself.

I wanted to explore a slightly different layer:

What if agents could remember the work signals around the conversation?

Not just what you told the agent, but what you actually did:

  • ran go test ./...
  • edited platform/slack/slack.go
  • opened a GitHub issue
  • searched docs about Cursor hooks
  • started a new Codex session
  • asked a previous Claude Code session about the same bug
  • switched branches
  • committed a fix

These are not random logs. They are work context.

And they are exactly the kind of context a new coding agent needs before it can help.

OpenContext: memory beyond the chat

OpenContext is a local-first work memory layer for AI coding agents.

The idea is simple:

Collect lightweight work signals, store them locally, filter them through subscriptions and privacy rules, then compile them into agent-readable memory.

The first interface is intentionally boring:

memory.md

Why Markdown?

Because every coding agent can read it.

Claude Code can read it.
Codex can read it.
Cursor can read it.
Any local agent can read it.

No special vector database required.
No complex agent runtime required.
No cloud service required.

The current flow looks like this:

collectors
  -> events
  -> local SQLite store
  -> subscriptions / filters
  -> compiled memory.md
  -> agent reads context before helping

The goal is not to build another time tracker.

The goal is to make this possible:

You open a blank agent session and say: “Continue what I was doing this morning.”

And the agent already has enough recent context to understand where to start.

What OpenContext collects

OpenContext is based on collectors.

Collectors observe lightweight work signals from tools you already use.

Current / planned collectors include:

  • shell commands
  • Claude Code hooks
  • Codex hooks
  • Cursor hooks
  • OpenCode / OpenClaw / Hermes hooks
  • browser activity
  • macOS / Windows activity
  • git-related context
  • agent prompts and tool calls

A shell event might look like this:

{
  "source": "shell",
  "type": "command",
  "cwd": "/code/opencontext",
  "command": "go test ./...",
  "exit_code": 1,
  "duration_ms": 18420
}

An agent prompt event might look like this:

{
  "source": "cursor",
  "type": "user_prompt",
  "prompt": "Continue the hook integration from this morning",
  "workspace": "/code/opencontext"
}

A browser event might look like this:

{
  "source": "browser",
  "type": "page_view",
  "url": "https://cursor.com/docs/hooks",
  "title": "Cursor Hooks",
  "duration_ms": 240000
}

Individually, these events are small.

Together, they tell a story:

The user was integrating Cursor hooks, reading the Cursor hooks docs, editing the OpenContext repo, and running tests that failed.

That is context.

What OpenContext does not try to do

This boundary is important.

OpenContext is not meant to copy your entire workspace.

It should capture activity, not duplicate all content.

For example, if you edit a file, OpenContext does not need to store the full file by default.

It can store:

  • file path
  • project
  • timestamp
  • git branch
  • action type
  • optional summary
  • pointer to the original source

The agent can read the actual file later if needed.

Same with emails, docs, browser pages, or GitHub issues.

OpenContext should tell the agent:

Something important happened here. This is where to look.

It should not automatically become a giant warehouse of all your private content.

A useful distinction is:

content = the thing itself
context = your interaction with the thing

A document is content.
Opening it, editing it, sharing it, returning to it repeatedly, or leaving a comment unresolved — that is context.

OpenContext focuses on the second part.

Privacy model

This kind of tool can easily become creepy if designed badly.

So OpenContext starts with a few constraints:

  • local-first by default
  • no screenshots by default
  • no keyboard logging
  • raw events stay local
  • sensitivity levels for collected events
  • subscriptions decide what becomes agent-readable memory
  • users should be able to inspect what was collected

The default goal is not:

Record everything the user does.

The goal is:

Capture enough work context to help agents continue where the user left off.

Those are very different products.

OpenContext should feel like a personal memory layer, not employee monitoring software.

Subscriptions: not every agent needs every memory

Another idea in OpenContext is subscriptions.

Not every agent should see every event.

A coding agent may need:

  • recent shell commands
  • touched files
  • failed tests
  • git branch
  • recent coding prompts

A PM-style agent may need:

  • summaries
  • open loops
  • project progress
  • decisions
  • blockers

A writing agent may need:

  • drafts
  • browser research
  • notes
  • previous writing style

So instead of dumping all events into every agent context, OpenContext lets memory be filtered.

Conceptually:

raw events
  -> subscriptions
  -> scoped memory
  -> agent-readable context

This matters because memory is not just storage.
Memory is selection.

Too little context and the agent is lost.
Too much context and the agent is distracted.

Why Markdown first?

The first version compiles memory into Markdown.

That may sound primitive, but it has a few advantages:

  1. It is transparent.
  2. It is easy to inspect.
  3. It works with almost every coding agent.
  4. It avoids forcing users into a specific database or runtime.
  5. It is easy to version, diff, edit, and delete.

A generated memory file might contain:

# Recent Work Memory

## Current Project: opencontext

### Recent Activity
- Worked on Cursor hook integration.
- Captured beforeSubmitPrompt events from Cursor.
- Ran local tests for shell collector.
- Investigated how to inject memory into fresh agent sessions.

### Recent Commands
- go test ./...
- oc collector cursor install
- curl http://localhost:6060/health

### Open Loops
- Verify Cursor sessionStart hook behavior.
- Improve memory.md formatting.
- Add browser collector examples.

### Relevant Files
- cmd/oc
- internal/collector
- docs/hooks.md

This is not the final form of memory.

But it is a useful first interface.

Later, OpenContext can add MCP tools, richer querying, embeddings, event graphs, or temporal memory.

But Markdown gives us a simple baseline: the agent can read it today.

How this differs from time tracking

OpenContext may sound similar to time tracking tools at first.

But the question is different.

A time tracker asks:

Where did my time go?

OpenContext asks:

What context should my agent know before it helps me?

That changes the output.

The main output is not a dashboard.
It is not productivity analytics.
It is not employee monitoring.

The main output is agent-usable context:

  • what changed
  • what failed
  • what was tried
  • what is still open
  • where the agent should look next

This is closer to a continuity layer for coding agents.

Humans work continuously.
Agent sessions are fragmented.

OpenContext tries to bridge that gap.

A small example

Imagine you spent the morning debugging a Slack integration bug.

During that time you:

  • edited platform/slack/slack.go
  • ran go test ./...
  • opened Slack API docs in the browser
  • asked Codex about mention parsing
  • committed a test case
  • left one release-test issue unresolved

Later, you open a fresh agent session and type:

Continue the Slack bug from this morning.

Without OpenContext, the agent asks for background.

With OpenContext, it can see something like:

## Recent Work: cc-connect

This morning the user worked on a Slack mention parsing bug.

Evidence:
- Edited `platform/slack/slack.go`
- Ran `go test ./...`
- Opened Slack API documentation
- Added/updated mention parsing tests
- Related prompt: "handle @Bot/status without a space"
- Open loop: verify release-test phantom session behavior

That is enough for the agent to start in the right place.

It does not need your entire life story.
It just needs the relevant trail.

Why I built this

I am interested in coding agents, local-first tools, and agent infrastructure.

The more I use agents, the more I feel the bottleneck is not only model intelligence.

A big bottleneck is context continuity.

We keep building smarter agents, but we still ask users to manually explain what just happened in their own workflow.

That feels backwards.

If agents are going to become useful long-term collaborators, they need memory beyond the chat.

Not unlimited surveillance.
Not raw screen recording.
Not a giant personal data dump.

Just enough structured work context to understand what happened and where to continue.

That is what OpenContext is trying to explore.

Current status

OpenContext is early.

The first version is focused on local developer workflows and coding agents.

It currently includes the basic pieces:

  • local event collection
  • SQLite storage
  • collector architecture
  • sensitivity levels
  • subscriptions
  • Markdown memory output
  • hooks for several agent tools
  • optional browser / OS collectors

There is still a lot to improve:

  • better event schema
  • better privacy controls
  • better summarization
  • better MCP integration
  • better UI for inspecting collected events
  • better support for Cursor / Codex / Claude Code workflows
  • better distinction between raw events, summaries, and long-term memory

But the core idea already feels useful:

A new agent session should not start from zero.

Try it

GitHub:

https://github.com/ohmyctx/opencontext

If you use Claude Code, Codex, Cursor, or similar coding agents, I would love feedback.

Especially on:

  • Is Markdown memory a good first interface?
  • What work signals are actually useful?
  • What should never be collected?
  • How should subscriptions work?
  • How should this differ from time trackers and memory databases?

I do not think this space is solved yet.

But I do think “memory beyond the chat” will become a necessary layer for serious AI agent workflows.