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

推荐订阅源

D
Docker
Apple Machine Learning Research
Apple Machine Learning Research
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
M
MIT News - Artificial intelligence
腾讯CDC
B
Blog RSS Feed
H
Help Net Security
J
Java Code Geeks
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
博客园_首页
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
博客园 - Franky
B
Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 叶小钗
Martin Fowler
Martin Fowler

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - apvcode/PromptShark: Stop burning tokens on infi...
apvcode · 2026-06-17 · via Hacker News: Show HN

MITM proxy debugger & loop detector for AI Agents

Go C++ SQLite License

Intercept every prompt. Catch every loop. Replay any step.

PromptShark Dashboard

🌍 English · Русский


🇬🇧 English

What is PromptShark?

PromptShark is a transparent local proxy that sits between your AI agent and the OpenAI API. It captures, logs, and visualizes every single request/response pair in a beautiful real-time dashboard — and automatically detects when your agent gets stuck in an infinite tool-calling loop.

One line to integrate. Zero code changes to your agent.
Just swap base_urlhttp://localhost:8080/v1


At a Glance

🔍 Intercept & Inspect

Every API call flows through PromptShark. View structured request/response pairs, collapse raw JSON payloads, and track token usage with per-step Prompt / Completion breakdowns.

🚨 Loop Detection (C++)

A dedicated C++ engine runs via IPC alongside the Go proxy. It hashes every tool call and flags repeating patterns instantly — before they burn through your API balance.

⏪ Time-Travel Replay

Click on any past step, edit the JSON payload in the built-in editor, preview your changes with an interactive diff view, and re-run the agent from that point. Earlier steps are served from the SQLite cache — no extra API costs.

📊 Live Dashboard

Dark-themed glassmorphism UI with WebSocket-powered live streaming. Auto-switching sessions, instant step search, Markdown export, and session management — all in a single embedded HTML page.


Feature Matrix

Category Feature Details
Proxy Drop-in integration Change one URL, keep your existing OpenAI SDK
Proxy Streaming + non-streaming Full support for stream: true and stream: false
Proxy Token tracking Per-step prompt_tokens / completion_tokens split
Proxy USD Cost Tracker Real-time per-step and per-session cost in dollars
Proxy Latency measurement Time-to-first-token (TTFT) displayed on each step
Detection C++ Loop Detector IPC-connected engine with configurable threshold
Detection Configurable sensitivity loop_config.txt — threshold & argument-ignoring
Debug Time-Travel Replay Edit & re-run from any step using cached responses
Debug Interactive Diff View Side-by-side diff of original vs. edited payload
Debug Raw JSON Viewer Collapsible request/response payloads per step
Testing Chaos Mode Toggle to inject fake 429 Rate Limit errors from UI
UI Real-time WebSockets Tokens stream live into the dashboard
UI Session search & filter Instant full-text search across all steps
UI Auto-switching sessions Dashboard follows the active agent run
Export Markdown reports One-click export of entire debug sessions
Export Session management Create, switch, and delete sessions from sidebar

Installation

There are three ways to run PromptShark:

Option A: Docker (Recommended)

Option B: Pre-compiled Binaries

Download the latest .zip or .tar.gz for your OS (Windows, macOS, Linux) from the GitHub Releases page. Extract and run agent_supervisor (or agent_supervisor.exe).

Option C: Build from Source

1 · Build the C++ Core

mkdir -p build && cd build
cmake .. && make

2 · Run the Proxy

cd proxy
go build -o ../build/agent_supervisor .
../build/agent_supervisor

You will see:

    ____                       __  _____ __               __  
   / __ \_________  ____ ___  / /_/ ___// /_  ____ ______/ /__
  / /_/ / ___/ __ \/ __ '__ \/ __ \__ \/ __ \/ __ '/ ___/ //_/
 / ____/ /  / /_/ / / / / / / /_/ /__/ / / / / /_/ / /  / ,<   
/_/   /_/   \____/_/ /_/ /_/ .___/____/_/ /_/\__,_/_/  /_/|_|  
                          /_/                                   
  ──────────────────────────────────────────────────
  🦈 Version     : 0.1.0
  🌐 Dashboard   : http://localhost:8080
  📦 Database    : ../db/promptshark.db
  🎯 Target API  : https://api.openai.com
  🔗 Proxy URL   : http://localhost:8080/v1
  ──────────────────────────────────────────────────

  Point your OpenAI SDK base_url to the Proxy URL above.
  Press Ctrl+C to stop.

Open http://localhost:8080 — the dashboard is ready.

3 · Point your Agent

Python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="sk-..."  # forwarded transparently to OpenAI
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True
)
Node.js
const OpenAI = require("openai");
const client = new OpenAI({
  baseURL: "http://localhost:8080/v1",
  apiKey: "sk-..."
});

const stream = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Hello!" }],
  stream: true,
});

Loop Detector Config

Edit loop_config.txt in the project root:

# Consecutive identical calls before triggering alert
THRESHOLD=3

# Ignore arguments — match function name only
IGNORE_ARGS=false
Parameter Default Effect
THRESHOLD 3 Number of identical consecutive tool calls that trigger a loop alarm
IGNORE_ARGS false When true, only function names are compared (arguments are stripped)

⚙️ CLI Options

Flag Default Description
--port 8080 HTTP server port
--db ../db/promptshark.db Path to SQLite database file
--schema ../db/schema.sql Path to schema.sql file
--target https://api.openai.com Upstream LLM API URL

Environment variables PORT and DB_PATH are also supported (flags take priority).

The server handles graceful shutdown: press Ctrl+C and it will finish in-flight requests, close the database, and exit cleanly.


Tech Stack

Layer Technology Role
Proxy Server Go 1.22+ HTTP reverse proxy, WebSocket hub, REST API, CLI
Loop Engine C++ 17 Real-time tool-call hashing & pattern detection via stdin/stdout IPC
Storage SQLite (WAL) Embedded session & step persistence, zero-config
Dashboard HTML + Tailwind + JS Single-file embedded UI served by Go via go:embed
Diff Engine jsdiff Client-side line-by-line diff rendering for Time-Travel

Roadmap

  • Configurable loop rules via YAML (regex patterns, token budgets)
  • Ollama / Anthropic Claude API support
  • Multi-agent message flow visualizer (network graph)

🇷🇺 Русский

Что такое PromptShark?

PromptShark — это прозрачный локальный прокси, который встает между вашим ИИ-агентом и API OpenAI. Он перехватывает, логирует и визуализирует каждую пару запрос/ответ в красивом дашборде в реальном времени — и автоматически обнаруживает, если агент попал в бесконечный цикл вызова инструментов.

Одна строка для интеграции. Ноль изменений в коде агента.
Просто замените base_urlhttp://localhost:8080/v1


Обзор возможностей

🔍 Перехват и инспекция

Каждый API-вызов проходит через PromptShark. Смотрите структурированные пары запрос/ответ, раскрывайте сырой JSON и отслеживайте использование токенов с разбивкой Prompt / Completion для каждого шага.

🚨 Детектор циклов (C++)

Выделенное C++ ядро работает через IPC параллельно с Go прокси. Оно хэширует каждый вызов инструмента и мгновенно фиксирует повторяющиеся паттерны — до того, как они сожгут ваш бюджет API.

⏪ Машина времени (Replay)

Кликните на любой предыдущий шаг, отредактируйте JSON в встроенном редакторе, проверьте изменения в интерактивном diff-просмотрщике и перезапустите агента с этой точки. Предыдущие шаги отдаются из кэша SQLite — никаких лишних затрат.

📊 Живой дашборд

Темная тема с эффектом стекла, стриминг по WebSocket, авто-переключение между сессиями, мгновенный поиск по шагам, экспорт в Markdown и управление сессиями — всё в одном встроенном HTML-файле.


Матрица возможностей

Категория Функция Подробности
Прокси Drop-in интеграция Измените один URL, оставьте текущий OpenAI SDK
Прокси Стриминг + обычные запросы Полная поддержка stream: true и stream: false
Прокси Трекинг токенов Разбивка prompt_tokens / completion_tokens на каждый шаг
Прокси Калькулятор стоимости Цена каждого шага и всей сессии в долларах в реальном времени
Прокси Замер задержки Время ответа API (TTFT) на каждом шаге
Детекция C++ Loop Detector Движок через IPC с настраиваемым порогом
Детекция Гибкая настройка loop_config.txt — порог срабатывания и игнорирование аргументов
Отладка Time-Travel Replay Редактируй и перезапускай с любого шага через кэш
Отладка Интерактивный Diff Визуальное сравнение оригинала и отредактированного промпта
Отладка Raw JSON Viewer Сворачиваемые JSON запроса/ответа для каждого шага
Тестирование Chaos Mode Тумблер для инъекции фейковых 429 Rate Limit ошибок из UI
UI WebSocket реалтайм Токены стримятся в дашборд в реальном времени
UI Поиск и фильтрация Мгновенный полнотекстовый поиск по всем шагам
UI Авто-переключение Дашборд следует за активным запуском агента
Экспорт Markdown отчёты Экспорт всей сессии одним кликом
Экспорт Управление сессиями Создание, переключение и удаление из сайдбара

Установка

Есть три способа запустить PromptShark:

Вариант А: Docker (Рекомендуется)

Вариант Б: Готовые бинарники

Скачайте актуальный .zip или .tar.gz для вашей ОС (Windows, macOS, Linux) со страницы GitHub Releases. Распакуйте и запустите agent_supervisor (или agent_supervisor.exe).

Вариант В: Сборка из исходников

1 · Сборка C++ ядра

mkdir -p build && cd build
cmake .. && make

2 · Запуск прокси

cd proxy
go build -o ../build/agent_supervisor .
../build/agent_supervisor

Вы увидите:

    ____                       __  _____ __               __  
   / __ \_________  ____ ___  / /_/ ___// /_  ____ ______/ /__
  / /_/ / ___/ __ \/ __ '__ \/ __ \__ \/ __ \/ __ '/ ___/ //_/
 / ____/ /  / /_/ / / / / / / /_/ /__/ / / / / /_/ / /  / ,<   
/_/   /_/   \____/_/ /_/ /_/ .___/____/_/ /_/\__,_/_/  /_/|_|  
                          /_/                                   
  ──────────────────────────────────────────────────
  🦈 Version     : 0.1.0
  🌐 Dashboard   : http://localhost:8080
  📦 Database    : ../db/promptshark.db
  🎯 Target API  : https://api.openai.com
  🔗 Proxy URL   : http://localhost:8080/v1
  ──────────────────────────────────────────────────

  Point your OpenAI SDK base_url to the Proxy URL above.
  Press Ctrl+C to stop.

Откройте http://localhost:8080 — дашборд готов к работе.

3 · Подключите агента

Python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/v1",
    api_key="sk-..."  # прозрачно перенаправляется в OpenAI
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Привет!"}],
    stream=True
)
Node.js
const OpenAI = require("openai");
const client = new OpenAI({
  baseURL: "http://localhost:8080/v1",
  apiKey: "sk-..."
});

const stream = await client.chat.completions.create({
  model: "gpt-4o",
  messages: [{ role: "user", content: "Привет!" }],
  stream: true,
});

Настройка детектора циклов

Отредактируйте loop_config.txt в корне проекта:

# Количество идентичных вызовов подряд до срабатывания тревоги
THRESHOLD=3

# Игнорировать аргументы — сравнивать только имя функции
IGNORE_ARGS=false
Параметр По умолчанию Эффект
THRESHOLD 3 Сколько одинаковых последовательных вызовов считать зацикливанием
IGNORE_ARGS false Если true, сравниваются только имена функций (аргументы игнорируются)

⚙️ Параметры CLI

Флаг По умолчанию Описание
--port 8080 Порт HTTP-сервера
--db ../db/promptshark.db Путь к файлу базы данных SQLite
--schema ../db/schema.sql Путь к файлу схемы
--target https://api.openai.com URL upstream LLM API

Также поддерживаются переменные окружения PORT и DB_PATH (флаги имеют приоритет).

Сервер поддерживает Graceful Shutdown: нажмите Ctrl+C, и он корректно завершит текущие запросы, закроет базу данных и выведет ✅ Goodbye!.


Технологический стек

Слой Технология Роль
Proxy Server Go 1.22+ HTTP reverse proxy, WebSocket хаб, REST API, CLI
Loop Engine C++ 17 Хэширование и детекция паттернов через stdin/stdout IPC
Хранилище SQLite (WAL) Встроенная база сессий и шагов, без настройки
Дашборд HTML + Tailwind + JS Единый встроенный UI через go:embed
Diff Engine jsdiff Клиентский построчный diff для Time-Travel

Дорожная карта

  • Конфигурация правил детектора через YAML (regex паттерны, бюджеты токенов)
  • Поддержка Ollama / Anthropic Claude API
  • Визуализатор потоков мультиагентных систем (граф сети)

[MIT License](LICENSE) — use it, fork it, ship it.