← 返回日报
略读 预计 3 分钟

Show HN: Kontext – Move an AI chat's full context to another AI in one click

摘要

Kontext 通过读取平台 API(非屏幕抓取)实现全保真捕获,将对话提炼为结构化手稿后一键粘贴到目标 AI 中;同时提供本地 Gemini Nano 总结、原始转录保存、本地库管理、限额检测提示及隐私优先的本地优先架构,支持 Chrome 扩展加载后直接使用。

荐读理由

Chrome 扩展 Kontext 能全保真捕获 ChatGPT/Claude 会话 API、用本地 Gemini Nano 提炼摘要、一键无发送手持给另一 AI,继续你当前项目时绕过消息限

原文

Kontext

Kontext

Hit a chat limit? Carry the whole conversation to another AI — in one click.

Capture any ChatGPT or Claude chat, distill it into a portable kontext, and continue it in the other — local-first, no account.

Chrome Extension Manifest V3 TypeScript Tests License: MIT

On-device AI BYOK No telemetry

"Your context is an asset. Kontext makes it portable."

Full-fidelity capture · on-device summaries · one-click handoff · never auto-sends · nothing leaves your machine.

How It Works · Features · Quick Start · Summarizer · Privacy


        CAPTURE                    DISTILL                    HAND OFF
   ┌────────────────┐        ┌────────────────┐        ┌────────────────┐
   │  ChatGPT /     │        │   Summarize    │        │  Open the other │
   │  Claude chat   │───────▶│  on-device or  │───────▶│  AI, auto-fill  │
   │  (internal API │        │  your own key  │        │  the composer   │
   │   full history)│        │  → a "kontext" │        │  (never sends)  │
   └────────────────┘        └────────────────┘        └────────────────┘
        every turn              summary + raw            clipboard fallback
      not a DOM scrape        stored in a library         always available

              ▲                                                  │
              │           limit banner detected?                 │
              └──────────  "Continue in Claude →"  ◀─────────────┘
                          the moment you hit a cap

Why This Exists

You're deep in a ChatGPT session — decisions made, code written, context built — and you hit the message cap. Continuing in Claude means re-explaining everything, and that backstory eats the new chat's context window before you've asked a single question.

Kontext moves the conversation, not just the text. It reads the full chat through the platform's own API (every turn of the active branch — not a lossy scrape of what happens to be on screen), distills it into a structured handoff, and drops it into the target AI's composer. The other direction works too. Everything stays on your machine.


How It Works

1. CAPTURE   Side panel → content script replays the platform's own
             conversation API with your session. Lossless transcript,
             every turn, active branch only.

2. DISTILL   Summarizer chain turns the transcript into a "kontext":
             Goal · Current state · Decisions · Key facts · Code · Open threads,
             plus the last few turns verbatim. Raw transcript always kept.

3. HAND OFF  "Continue in Claude/ChatGPT" opens the target, waits for the
             composer, and fills it (React-safe insertion). You review and
             hit send — Kontext never sends for you. Context is also copied
             to your clipboard as a guaranteed fallback.

A kontext always stores both the summary and the raw transcript — re-summarize any time, export the raw, nothing is lost.


Features

Feature Detail
🎯 Full-fidelity capture Replays the platform's internal conversation API with your session — every turn, code and all. Not a DOM scrape that breaks on the next UI redesign.
🧠 On-device summaries Chrome's built-in Gemini Nano runs the summary locally — free, private, no key. Long chats are map-reduced to fit its context.
🔑 Bring your own key Fallback to OpenAI, Anthropic, Gemini, or OpenRouter (free-tier models). A toggle flips the order to prefer your key over on-device.
↔️ One-click handoff "Continue in Claude/ChatGPT" auto-fills the target composer. Never auto-sends — you always review first.
⏱️ Limit-moment detection The instant a "you've hit your limit" banner appears, a toast offers to continue elsewhere — meeting you at the exact pain point.
📚 Local library Every kontext is saved: search, view, re-summarize, delete. Your portable memory across AI tools.
📊 Live progress Spinner + stage text (model-download %, "part 2 of 5 (~40s left)"), plus a completion notification for long runs.
🔒 Local-first No server, no account, no telemetry. The only outbound calls are the platforms themselves and — if you opt in — your BYOK provider.

Quick Start

Requirements: Chrome 128+ (for on-device AI) and Node 20+ to build.

git clone https://github.com/anuragmerndev/kontext-ai.git
cd kontext-ai
npm install
npm run build

Then load it:

  1. Open chrome://extensions

  2. Enable Developer mode (top-right)

  3. Load unpacked → select the dist/ folder

  4. Pin Kontext, open a ChatGPT or Claude chat, and hit Capture chat

Develop

Command Does
npm run watch Rebuild on change (hit ⟳ on the extension after)
npm test Unit tests (Vitest) — 65 passing
npm run typecheck Strict TypeScript, no emit
npm run build Production dist/

Summarizer: the fallback chain

Summaries try each engine in order, first available wins:

   ┌──────────────┐      ┌──────────────┐      ┌──────────────┐
   │ Gemini Nano  │      │  Your API    │      │     Raw      │
   │  on-device   │ ───▶ │  key (BYOK)  │ ───▶ │  transcript  │
   │  free, private│      │ 4 providers  │      │  (no engine) │
   └──────────────┘      └──────────────┘      └──────────────┘
  • Gemini Nano — Chrome's built-in model, on your machine, no key, no cost. First run downloads the model (progress shown).

  • BYOK — add a key in Settings for OpenAI, Anthropic, Gemini, or OpenRouter. OpenRouter has free-tier models (default meta-llama/llama-3.3-70b-instruct:free) — a zero-cost summarizer even where Nano isn't available.

  • Prefer my key — a settings toggle flips the order so your provider runs first.

  • Raw fallback — if no engine is available, the kontext keeps the full transcript and the handoff uses that. Never a dead end.


Privacy (non-negotiable)

  • Local-first. Kontexts live in extension storage. Summaries run on-device by default.

  • No account. No server. No analytics. No telemetry.

  • Minimal permissions. storage, sidePanel, clipboardWrite, notifications, plus host access to chatgpt.com and claude.ai only. BYOK provider hosts are optional permissions, requested only when you add a key.

  • The only outbound traffic is the AI platform you're on (the same requests the page itself makes) and — solely if you configure one — your chosen BYOK provider.


Architecture

Manifest V3 · TypeScript (strict) · esbuild · Vitest · zero runtime dependencies · no UI framework.

┌─ Side Panel ─────────┐      ┌─ Service Worker ─────┐
│ capture · library    │ ◀──▶ │ handoff routing      │
│ kontext view · BYOK  │      │ tab + payload relay   │
└──────────────────────┘      └──────────┬───────────┘
                                          │ messages
                     ┌────────────────────┴────────────────────┐
                     │ Content scripts (chatgpt.com / claude.ai)│
                     │ capture adapters · injector · limit-watch│
                     └──────────────────────────────────────────┘

Full design in docs/superpowers/specs; manual test matrix in docs/e2e-checklist.md.


Roadmap

  • Chrome Web Store listing (assets, privacy policy page)

  • Storage-quota warning + cleanup

  • More platforms (Gemini, Grok, DeepSeek)

  • DOM-fallback capture for resilience against API changes

  • MCP server exposing your kontext library to coding agents


License

MIT — see LICENSE.


Built with Claude Code · @anuragmerndev

"You don't need a bigger context window. You need your context to travel."

Hacker News · 项目/工具 · 5 赞 · 0 评 讨论 → 阅读原文 →

这条对你有帮助吗?