DeerFlow per-user memory: issue #1772 is open, but main already isolates memory
---
title: "DeerFlow per-user memory: issue #1772 is open, but main already isolates memory"
published: true
canonical_url: memorysync.hashnode.dev
description: "DeerFlow issue #1772 asks for per-user memory. It's still open, but current main stores memory per user. How it works and what to check."
tags: ai, python, agents, langgraph
---
Disclosure: I work on MemorySync (I'm Mohammed, the founder). I drafted this page with AI assistance and checked it against the source issue and the DeerFlow source on its main branch (commit d4ed400, Oct 28, 2026). I read the code; I didn't run DeerFlow for this page.
The question
bytedance/deer-flow#1772, "Support per-user memory isolation for multi-tenant deployment", reports that DeerFlow's memory.json is global and shared across all users, and asks for per-user storage such as memory/{user_id}.json. A maintainer replied that memory shared across users "can easily get mixed up" in a multi-user setup and assigned it.
Status (checked Oct 28, 2026): the issue is still open, last updated Apr 3, 2026. But the code has moved on. If you're reading the issue and assuming every user still shares one file, check your version first.
> Skip the memory plumbing around this fix. Once the fix below is in, the MemorySync agent memory guide shows how to add per-user memory with MemorySync. MemorySync doesn't fix this error itself. When you're ready, see MemorySync. Founding offer: use code FOUNDING30 for 30% off Starter for your first 3 months (Settings → Billing).
What current main does
From the memory module's AGENTS.md and the DeerMem config in the repo (main, Oct 28, 2026):
- The default backend (manager_class: deermem) stores memory per user:
{base_dir}/users/{user_id}/memory.json
{base_dir}/users/{user_id}/agents/{agent_name}/facts/...
- memory.backend_config.storage_path is a root directory. Empty means DeerFlow's base dir. A non-empty value becomes the root, with per-user memory still under {storage_path}/users/{uid}/memory.json. If it points at an existing file (for example an old memory.json path from before), config validation raises and tells you to point it at a directory.
- The user comes from server-side identity, not from the client. In order: the LangGraph Agent Server's authenticated user, langgraph_auth_user_id, the gateway's auth-validated runtime.context["user_id"], the auth middleware's context variable, and finally "default". The Gateway strips client-supplied langgraph_auth_user and langgraph_auth_user_id before the graph is built.
- Background memory updates capture user_id when the work is queued, so the identity survives the debounce timer.
The catch: no-auth mode is still one shared user
Per AGENTS.md, no-auth mode uses DEFAULT_USER_ID, which is "default". If you run DeerFlow as a service without authentication, every caller resolves to the same user and shares the same users/default/ memory, which is the behaviour the issue describes. Per-user isolation only helps once requests carry an authenticated identity.
Checklist for a multi-user deployment
1. Turn on authentication so the gateway or LangGraph server supplies a real user. Without it, you're on "default".
2. Check storage_path. Leave it empty or point it at a directory. Don't point it at a .json file.
3. Migrate old global data. The repo ships backend/scripts/migrate_user_isolation.py. Run it with --dry-run first. It assigns legacy memory.json, agents/, skills/ and the global USER.md to --user-id (default default), and moves threads/ to their recorded owner. Pick the --user-id deliberately, because that user inherits everything that used to be shared.
4. Verify on disk. After two different signed-in users chat, you should see two directories under users/. If you see only users/default/, identity isn't reaching memory.
5. Mind multiple workers. A separate open RFC, #2283, describes a last-writer-wins race when several worker processes write the same memory.json. Per-user files narrow it to one user's concurrent turns, but don't remove it.
Common questions
Is DeerFlow memory shared between users?
On current main, not if requests are authenticated: memory lives under users/{user_id}/. In no-auth mode everyone is "default", so it is shared.
Why is issue #1772 still open?
The issue thread doesn't say. As of Oct 28, 2026 it has no closing comment, and its last update was Apr 3, 2026. Treat the source on your installed version as the answer, not the issue state.
How do I move existing global memory to a user?
Use backend/scripts/migrate_user_isolation.py --dry-run, then run it without --dry-run and with the --user-id you want the legacy data assigned to.
Skip the plumbing with MemorySync
If you want per-user memory in a managed memory service instead of files on the gateway's disk, MemorySync scopes every user-scoped memory call by an end-user ID (X-End-User-ID / end_user_id), and its docs recommend a stable opaque ID, not an email address. There's no DeerFlow integration, so you'd call it from your own code. Read the MemorySync authentication and scoping guide first. For an overview of MemorySync, see the MemorySync homepage.
From the guide:
import os
from memorysync import MemorySyncClient
client = MemorySyncClient(
api_key=os.environ["MEMORYSYNC_API_KEY"],
base_url="https://api.memorysync.io",
project_id=os.environ.get("MEMORYSYNC_PROJECT_ID") or None,
end_user_id="user-123",
)
result = client.query("What constraints and prior decisions matter for this task?", k=5)
for memory in result.memories:
print(memory.text)
Snippet adapted from the MemorySync agent memory guide; unverified (not run) for this page. It keeps the guide's base_url line because MemorySyncClient requires it.
Starter template: memorysyncio/memorysync-first-memory.
Sources
- bytedance/deer-flow#1772, "Support per-user memory isolation for multi-tenant deployment" (open; read 2026-10-28)
- bytedance/deer-flow#2283, "RFC: Single-Writer Memory Queue" (open; read 2026-10-28)
- DeerFlow main @ d4ed400 (2026-10-28): backend/packages/harness/deerflow/agents/memory/AGENTS.md, .../backends/deermem/deermem/config.py, .../runtime/user_context.py, backend/scripts/migrate_user_isolation.py, config.example.yaml
- MemorySync docs: docs.memorysync.io/api/authentication
Next step: read the MemorySync agent memory guide, then see MemorySync. Founding offer: use code FOUNDING30 for 30% off Starter for your first 3 months (Settings → Billing).
@Suercha007 README 有个部署细节:K8s 每个 Pod 只有一个 worker,进程数检查看不出多副本。需声明 deployment.multi_instance=true 才会触发多实例前置校验。二开时可以测一下:只增加 replicas、缺共享存储配置,启动能否拦住。 github.com/bytedance/deer-flow/blob/main/README.md
186 views
DeerFlow 2.0: ByteDance's Open-Source Super Agent Harness, Setup and Walkthrough
A complete walkthrough of bytedance/deer-flow, the open-source super agent harness that orchestrates sub-agents, memory, and sandboxes, powered by extensible skills. We cover what DeerFlow 2.0 is, the tools around it, how to install and configure models, and how to run it with Docker or local development.
Chapters:
0:00 Introduction
0:48 What DeerFlow Is
2:08 The Ecosystem Around DeerFlow
3:46 Installing DeerFlow
5:50 Configuring Models
8:38 Running the Application
10:25 Who DeerFlow Is For
11:19 Summary
Link:
- bytedance/deer-flow: bytedance/deer-flow
Narrated with an AI clone of the creator's own voice. Facts come from each project's or site's own pages.
#OpenSource #GitHub #AI
1 like · 1 comment · 29 views
This Free GitHub Repo Turns One Question Into a Finished Project
It's called DeerFlow, and it comes from ByteDance. Most AI answers once and stops. DeerFlow keeps going, researching, writing code and creating files, even on tasks that take hours.
Get it free here: bytedance/deer-flow
Follow for more AI tips.
#github #opensource #aiagents #bytedance #aitools #shorts
[ar] هذا المستودع المجاني على GitHub يحول سؤالاً واحداً إلى مشروع متكامل
يُسمى هذا البرنامج DeerFlow، وهو من تطوير شركة ByteDance. معظم برامج الذكاء الاصطناعي تستجيب مرة واحدة وتتوقف، بينما يواصل DeerFlow العمل، فيُجري الأبحاث، ويكتب التعليمات البرمجية، ويُنشئ الملفات، حتى في المهام التي تستغرق ساعات.
حمّله مجانًا من هنا: bytedance/deer-flow
تابعنا للمزيد من نصائح الذكاء الاصطناعي.
#github #opensource #aiagents bytedance #aitools #shorts
[bn] এই ফ্রি গিটহাব রিপো একটি প্রশ্নের মাধ্যমেই সম্পূর্ণ প্রজেক্ট তৈরি করে দেয়
এর নাম ডিয়ারফ্লো (DeerFlow), এবং এটি বাইটড্যান্স (ByteDance) থেকে এসেছে। বেশিরভাগ এআই (AI) একবার উত্তর দিয়েই থেমে যায়। ডিয়ারফ্লো চলতেই থাকে, গবেষণা করে, কোড লেখে এবং ফাইল তৈরি করে, এমনকি ঘণ্টার পর ঘণ্টা সময় লাগে এমন কাজও।
এটি এখানে বিনামূল্যে পান: bytedance/deer-flow
আরও এআই টিপসের জন্য ফলো করুন।
#github #opensource #aiagents #bytedance #aitools #shorts
[de-DE] Dieses kostenlose GitHub-Repo macht aus einer einzigen Frage ein fertiges Projekt
Es heißt DeerFlow und stammt von ByteDance. Die meisten KIs antworten nur einmal und hören dann auf. DeerFlow arbeitet kontinuierlich weiter, recherchiert, schreibt Code und erstellt Dateien – selbst bei Aufgaben, die Stunden dauern.
Hier kostenlos herunterladen: bytedance/deer-flow
Folgen Sie uns für weitere KI-Tipps.
#github #opensource #aiagents #bytedance #aitools #shorts
[es-US] Este repositorio gratuito de GitHub convierte una sola pregunta en un proyecto terminado
Se llama DeerFlow y es de ByteDance. La mayoría de las IA responden una vez y se detienen. DeerFlow continúa trabajando, investigando, escribiendo código y creando archivos, incluso en tareas que llevan horas.
Descárgalo gratis aquí: bytedance/deer-flow
Síguenos para más consejos sobre IA.
#github #opensource #aiagents #bytedance #aitools #shorts
[fr-FR] Ce dépôt GitHub gratuit transforme une simple question en un projet complet
Il s'agit de DeerFlow, développé par ByteDance. Contrairement à la plupart des IA qui répondent une seule fois, DeerFlow poursuit ses recherches, écrit du code et crée des fichiers, même pour des tâches qui durent des heures.
Téléchargez-le gratuitement ici : bytedance/deer-flow
Suivez-nous pour plus d'astuces sur l'IA.
#github #opensource #aiagents #bytedance #aitools #shorts
[hi] यह फ्री GitHub रिपो एक सवाल को पूरे प्रोजेक्ट में बदल देता है
इसे डीयरफ्लो कहा जाता है, और यह बाइटडांस द्वारा विकसित किया गया है। अधिकांश एआई एक बार जवाब देकर रुक जाते हैं। डीयरफ्लो लगातार काम करता रहता है, शोध करता है, कोड लिखता है और फाइलें बनाता है, यहां तक कि उन कार्यों पर भी जिनमें घंटों लगते हैं।
इसे यहां से मुफ्त में प्राप्त करें: bytedance/deer-flow
अधिक एआई टिप्स के लिए फॉलो करें।
#github #opensource #aiagents #bytedance #aitools #shorts
[id] Repo GitHub Gratis Ini Mengubah Satu Pertanyaan Menjadi Proyek Jadi
Namanya DeerFlow, dan berasal dari ByteDance. Sebagian besar AI hanya menjawab sekali dan berhenti. DeerFlow terus berjalan, melakukan riset, menulis kode, dan membuat file, bahkan untuk tugas yang memakan waktu berjam-jam.
Dapatkan secara gratis di sini: bytedance/deer-flow
Ikuti untuk tips AI lainnya.
#github #opensource #aiagents #bytedance #aitools #shorts
[it] Questo repository GitHub gratuito trasforma una domanda in un progetto finito
Si chiama DeerFlow ed è sviluppato da ByteDance. La maggior parte delle IA risponde una sola volta e si ferma. DeerFlow, invece, continua a lavorare, effettuando ricerche, scrivendo codice e creando file, anche per attività che richiedono ore.
Scaricalo gratuitamente qui: bytedance/deer-flow
Seguici per altri consigli sull'IA.
#github #opensource #aiagents #bytedance #aitools #shorts
[iw] המאגר החינמי הזה ב-GitHub הופך שאלה אחת לפרויקט מוכן
זה נקרא DeerFlow, וזה מגיע מ-ByteDance. רוב הבינה המלאכותית עונה פעם אחת ועוצרת. DeerFlow ממשיכה, חוקרת, כותבת קוד ויוצרת קבצים, אפילו במשימות שלוקחות שעות.
הורידו אותו בחינם כאן: bytedance/deer-flow
עקבו אחר טיפים נוספים לבינה מלאכותית.
#github #opensource #aiagents #bytedance #aitools #shorts
[ja] たった一つの質問でプロジェクトを完成させるGitHubの無料AIツール
これはByteDanceが開発したDeerFlowというAIです。ほとんどのAIは一度回答すると停止しますが、DeerFlowは調査、コード作成、ファイル作成などを継続し、何時間もかかるタスクにも対応します。
こちらから無料で入手できます:bytedance/deer-flow
AIに関するその他のヒントについては、フォローしてください。
#github #opensource #aiagents #bytedance #aitools #shorts
[ko] 질문 하나로 결과물을 뚝딱, 무료 GitHub 오픈소스 추천
DeerFlow라고 불리는 이 도구는 ByteDance에서 개발했습니다. 대부분의 AI는 한 번 답변하고 멈추지만, DeerFlow는 몇 시간씩 걸리는 작업이라도 계속해서 조사하고, 코드를 작성하고, 파일을 생성합니다.
여기에서 무료로 다운로드하세요: bytedance/deer-flow
더 많은 AI 팁을 보려면 팔로우하세요.
#github #opensource #aiagents #bytedance #aitools #shorts
[ml] ഒരൊറ്റ ചോദ്യത്തിൽ നിന്ന് പൂർണ്ണമായ പ്രോജക്റ്റ് നിർമ്മിക്കുന്ന സൗജന്യ GitHub റിപ്പോസിറ്ററി
ഇതിനെ DeerFlow എന്ന് വിളിക്കുന്നു, ഇത് ByteDance-ൽ നിന്നാണ് വരുന്നത്. മിക്ക AI-കളും ഒരിക്കൽ ഉത്തരം നൽകുകയും നിർത്തുകയും ചെയ്യുന്നു. മണിക്കൂറുകൾ എടുക്കുന്ന ജോലികളിൽ പോലും DeerFlow ഗവേഷണം നടത്തുകയും കോഡ് എഴുതുകയും ഫയലുകൾ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.
ഇവിടെ സൗജന്യമായി നേടൂ: bytedance/deer-flow
കൂടുതൽ AI നുറുങ്ങുകൾക്കായി പിന്തുടരുക.
#github #opensource #aiagents #bytedance #aitools #shorts
[nl-NL] Deze gratis GitHub-repo verandert één vraag in een kant-en-klaar project
Het heet DeerFlow en is ontwikkeld door ByteDance. De meeste AI-systemen geven maar één antwoord en stoppen dan. DeerFlow blijft doorgaan, onderzoek doen, code schrijven en bestanden aanmaken, zelfs bij taken die uren duren.
Download het hier gratis: bytedance/deer-flow
Volg ons voor meer AI-tips.
#github #opensource #aiagents #bytedance #aitools #shorts
[pa] ਇਹ ਮੁਫਤ GitHub ਰਿਪੋ ਇੱਕ ਸਵਾਲ ਨੂੰ ਪੂਰੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਬਦਲ ਦਿੰਦੀ ਹੈ
ਇਸਨੂੰ ਡੀਅਰਫਲੋ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਹ ਬਾਈਟਡਾਂਸ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਏਆਈ ਇੱਕ ਵਾਰ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਅਤੇ ਰੁਕ ਜਾਂਦਾ ਹੈ। ਡੀਅਰਫਲੋ ਘੰਟਿਆਂਬੱਧੀ ਲੱਗਣ ਵਾਲੇ ਕੰਮਾਂ 'ਤੇ ਵੀ, ਖੋਜ, ਕੋਡ ਲਿਖਣਾ ਅਤੇ ਫਾਈਲਾਂ ਬਣਾਉਣਾ ਜਾਰੀ ਰੱਖਦਾ ਹੈ।
ਇਸਨੂੰ ਇੱਥੇ ਮੁਫ਼ਤ ਪ੍ਰਾਪਤ ਕਰੋ: bytedance/deer-flow
ਹੋਰ ਏਆਈ ਸੁਝਾਵਾਂ ਲਈ ਫਾਲੋ ਕਰੋ।
#github #opensource #aiagents #bytedance #aitools #shorts
[pl] To darmowe repozytorium na GitHubie zamienia jedno pytanie w gotowy projekt
Nazywa się DeerFlow i pochodzi od ByteDance. Większość SI odpowiada raz i przestaje. DeerFlow działa dalej, wyszukuje informacje, pisze kod i tworzy pliki, nawet w przypadku zadań, które zajmują wiele godzin.
Pobierz za darmo tutaj: bytedance/deer-flow
Obserwuj, aby uzyskać więcej wskazówek dotyczących SI.
#github #opensource #aiagents #bytedance #aitools #shorts
[pt-BR] Este repositório gratuito do GitHub transforma uma pergunta em um projeto finalizado
Chama-se DeerFlow e é da ByteDance. A maioria das IAs responde uma vez e para. O DeerFlow continua, pesquisando, escrevendo código e criando arquivos, mesmo em tarefas que levam horas.
Baixe gratuitamente aqui: bytedance/deer-flow
Siga para mais dicas de IA.
#github #opensource #aiagents #bytedance #aitools #shorts
[ru] Этот бесплатный репозиторий на GitHub превращает один вопрос в готовый проект
Это называется DeerFlow, и он разработан компанией ByteDance. Большинство ИИ отвечают один раз и останавливаются. DeerFlow же продолжает работу, исследуя, записывая код и создавая файлы, даже в задачах, занимающих несколько часов.
Скачать бесплатно можно здесь: bytedance/deer-flow
Подписывайтесь, чтобы получать больше советов по ИИ.
#github #opensource #aiagents #bytedance #aitools #shorts
[ta] ஒரே கேள்வியை முழுமையான திட்டமாக மாற்றும் இந்த இலவச GitHub களஞ்சியம்
இதற்கு டீர்ஃப்ளோ (DeerFlow) என்று பெயர், இது பைட் டான்ஸ் (ByteDance) நிறுவனத்திடமிருந்து வருகிறது. பெரும்பாலான செயற்கை நுண்ணறிவுகள் (AI) ஒருமுறை பதிலளித்துவிட்டு நின்றுவிடுகின்றன. ஆனால் டீர்ஃப்ளோவோ, பல மணிநேரம் எடுக்கும் பணிகளில்கூட, தொடர்ந்து ஆராய்ச்சி செய்து, நிரல்களை எழுதி, கோப்புகளை உருவாக்கிக் கொண்டே இருக்கிறது.
இதை இங்கே இலவசமாகப் பெறுங்கள்: bytedance/deer-flow
மேலும் செயற்கை நுண்ணறிவு குறிப்புகளுக்குப் பின்தொடரவும்.
#github #opensource #aiagents #bytedance #aitools #shorts
[te] కేవలం ఒక్క ప్రశ్నతో పూర్తి ప్రాజెక్ట్ను సిద్ధం చేసే ఉచిత GitHub రిపోజిటరీ ఇది
దీనిని డీర్ఫ్లో (DeerFlow) అని పిలుస్తారు, మరియు ఇది బైట్డాన్స్ (ByteDance) వారిది. చాలా AIలు ఒకసారి స్పందించి ఆగిపోతాయి. కానీ డీర్ఫ్లో, గంటల సమయం పట్టే పనులలో కూడా, పరిశోధన చేస్తూ, కోడ్ రాస్తూ, ఫైళ్లను సృష్టిస్తూ నిరంతరం పనిచేస్తూనే ఉంటుంది.
దీనిని ఇక్కడ ఉచితంగా పొందండి: bytedance/deer-flow
మరిన్ని AI చిట్కాల కోసం ఫాలో అవ్వండి.
#github #opensource #aiagents #bytedance #aitools #shorts
[uk] Цей безкоштовний репозиторій на GitHub перетворює одне запитання на готовий проєкт
Він називається DeerFlow і походить від ByteDance. Більшість ШІ відповідають один раз і зупиняються. DeerFlow продовжує працювати, досліджуючи, пишучи код і створюючи файли, навіть для завдань, які займають години.
Завантажте його безкоштовно тут: bytandance/deer-flow
Підпишіться, щоб отримати більше порад щодо ШІ.
#github #opensource #aiagents #bytandance #aitools #shorts
156 likes · 28 comments · 7,734 views
Integrating ByteDance deer-flow: Vector Memory Persistence Patterns for Long-Horizon Agents
Context: Why Long-Horizon Agent Memory is Hard
When evaluating ByteDance's deer-flow for our multi-hour autonomous research pipeline, the core challenge wasn't task orchestration—it was semantic memory persistence under high concurrency. Agents running 90+ minute sessions need to recall prior decisions, avoid redundant API calls, and maintain coherent context across sandbox restarts.
Most agent frameworks treat memory as an afterthought. deer-flow takes it seriously with a pluggable memory backend, but integrating it into our existing PostgreSQL + pgvector stack exposed real architectural friction points.
Architecture Overview: Memory Chain in deer-flow
deer-flow splits memory into three layers:
1. Session buffer (ephemeral, in-process)
2. Vector store (semantic retrieval via embeddings)
3. Relational metadata (timestamps, task IDs, lineage)
The critical insight: hybrid search must fuse vector similarity with temporal recency and task ancestry filters. Pure cosine similarity retrieves semantically related memories but ignores causality.
Deliverable 1: PostgreSQL Schema with HNSW Indexing
Here's our battle-tested schema integrating deer-flow's memory interface with pgvector:
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE agent_memories (
id BIGSERIAL PRIMARY KEY,
agent_id TEXT NOT NULL,
task_id TEXT NOT NULL,
content TEXT NOT NULL,
embedding vector(1536) NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
parent_task_id TEXT
);
-- HNSW index for sub-100ms vector search at 100K+ rows
CREATE INDEX ON agent_memories
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);
-- Compound index for filtered vector search
CREATE INDEX ON agent_memories (agent_id, task_id, created_at DESC);
Critical tuning lesson: Setting m=16 and ef_construction=64 gave us 12ms p99 latency under 500 concurrent inserts. Default pgvector settings caused 2+ second insert stalls during batch memory writes.
Deliverable 2: Hybrid Search with Reciprocal Rank Fusion
Pure vector search failed during complex multi-step tasks—agents would retrieve tangentially related memories from 3 hours prior while ignoring critical decisions from 10 minutes ago.
Here's our Python RRF implementation bridging deer-flow's memory interface:
import asyncpg
import numpy as np
from typing import List, Tuple
class HybridMemoryRetriever:
def __init__(self, pool: asyncpg.Pool, k: int = 60):
self.pool = pool
self.k = k # RRF constant
async def retrieve(
self,
agent_id: str,
query_embedding: np.ndarray,
task_id: str,
limit: int = 5
) -> List[Tuple[str, float]]:
async with self.pool.acquire() as conn:
# Vector similarity ranking
vector_results = await conn.fetch(
"""
SELECT id, content,
1 - (embedding <=> $1::vector) AS similarity
FROM agent_memories
WHERE agent_id = $2 AND task_id = $3
ORDER BY embedding <=> $1::vector
LIMIT 20
""",
query_embedding.tolist(), agent_id, task_id
)
# Recency ranking
recency_results = await conn.fetch(
"""
SELECT id, content, created_at
FROM agent_memories
WHERE agent_id = $1 AND task_id = $2
ORDER BY created_at DESC
LIMIT 20
""",
agent_id, task_id
)
# RRF fusion: 1 / (k + rank)
scores = {}
for rank, row in enumerate(vector_results, 1):
scores[row['id']] = scores.get(row['id'], 0) + 1 / (self.k + rank)
for rank, row in enumerate(recency_results, 1):
scores[row['id']] = scores.get(row['id'], 0) + 1 / (self.k + rank)
# Retrieve top-k by fused score
top_ids = sorted(scores.items(), key=lambda x: x[1], reverse=True)[:limit]
final = await conn.fetch(
"SELECT content FROM agent_memories WHERE id = ANY($1)",
[id for id, _ in top_ids]
)
return [(r['content'], scores[r['id']]) for r in final]
Battle scar: We initially used a simple weighted sum instead of RRF. This failed catastrophically when vector scores clustered near 0.85-0.90—recency signals got drowned out. RRF's rank-based scoring proved far more stable.
Production Integration Points
When wiring deer-flow into our existing stack:
Embedding normalization trap: deer-flow doesn't enforce L2 normalization. We saw 22% recall degradation until we added:
def normalize_embedding(vec: np.ndarray) -> np.ndarray:
norm = np.linalg.norm(vec)
return vec / norm if norm > 0 else vec
Concurrency bottleneck: HNSW index locks during bulk inserts caused 5+ second write stalls. Solution: batch memories and use INSERT ... ON CONFLICT DO NOTHING with a 50ms debounce window.
Benchmarking methodology: When testing multi-provider fallback latency through B-Lost's relay gateway (baseURL: "https://b-lost.com/v1"), we clocked 127ms average embedding generation (text-embedding-3-small) which became the bottleneck—not database writes. Consider pre-generating embeddings asynchronously.
Operational Trade-offs
What works:
- Pluggable memory abstraction makes swapping PostgreSQL for Qdrant trivial
- Subagent lineage tracking via parent_task_id enables causal retrieval filters
- Clean separation between ephemeral buffers and durable storage
What hurts:
- No built-in memory compaction—our agents hit 50K+ rows per session, causing index bloat
- Lack of automatic embedding cache invalidation when upstream models change
- Hybrid search logic lives in application code, not the framework
The Open Question
Our biggest unresolved dilemma: when should agents forget? Unlimited memory growth killed performance after 6-hour sessions. Naive LRU eviction broke causal chains. Time-decay scoring helped but introduced new failure modes during context switches.
How do you balance memory retention with retrieval performance when agents run for hours? Curious what approaches others have battle-tested in production long-horizon systems.
I fixed up deer flow: bytedance/deer-flow
What I did was create docker containers with pandoc, compilers (rust, go, python, javascript) and it can create all manner of reports.
I (not the asked) run deer flow: bytedance/deer-flow
DeerFlow(深度探索和高效研究流程)是一个开源的超级代理工具。
它将子代理、内存和沙盒组织结合在一起,再配合可扩展的技能,让代理可以完成几乎任何事情。
🔗 bytedance/deer-flow
70 views
长流程任务一直是 AI Agent 的短板。字节开源的 DeerFlow 带来新解法:定位 SuperAgent 架构,通过编排多子 Agent、持久化记忆与独立沙箱,让大模型能稳定跑完深度长周期研究任务,开发者扩展很方便。
bytedance/deer-flow
3 likes · 90 views
1. bytedance/deer-flow
数分から数時間かかる調査やコード作成を、サブエージェントに分担させて進める枠組み
ここでは素材係。長い調べ物を丸ごと投げて、まとまった結果を出してもらう担当
bytedance/deer-flow t.co
24 views
Mentions
DeerFlow per-user memory: issue #1772 is open, but main already isolates memory --- title: "DeerFlow per-user memory: issue #1772 is open, but main already isolates memory" published: true canonical_url: memorysync.hashnode.dev description: "DeerFlow issue #1772 asks for per-user memory. It's still open, but current main stores memory per user. How it works and what to check." tags: ai, python, agents, langgraph --- Disclosure: I work on MemorySync (I'm Mohammed, the founder). I drafted this page with AI assistance and checked it against the source issue and the DeerFlow source on its main branch (commit d4ed400, Oct 28, 2026). I read the code; I didn't run DeerFlow for this page. The question bytedance/deer-flow#1772, "Support per-user memory isolation for multi-tenant deployment", reports that DeerFlow's memory.json is global and shared across all users, and asks for per-user storage such as memory/{user_id}.json. A maintainer replied that memory shared across users "can easily get mixed up" in a multi-user setup and assigned it. Status (checked Oct 28, 2026): the issue is still open, last updated Apr 3, 2026. But the code has moved on. If you're reading the issue and assuming every user still shares one file, check your version first. > Skip the memory plumbing around this fix. Once the fix below is in, the MemorySync agent memory guide shows how to add per-user memory with MemorySync. MemorySync doesn't fix this error itself. When you're ready, see MemorySync. Founding offer: use code FOUNDING30 for 30% off Starter for your first 3 months (Settings → Billing). What current main does From the memory module's AGENTS.md and the DeerMem config in the repo (main, Oct 28, 2026): - The default backend (manager_class: deermem) stores memory per user: {base_dir}/users/{user_id}/memory.json {base_dir}/users/{user_id}/agents/{agent_name}/facts/... - memory.backend_config.storage_path is a root directory. Empty means DeerFlow's base dir. A non-empty value becomes the root, with per-user memory still under {storage_path}/users/{uid}/memory.json. If it points at an existing file (for example an old memory.json path from before), config validation raises and tells you to point it at a directory. - The user comes from server-side identity, not from the client. In order: the LangGraph Agent Server's authenticated user, langgraph_auth_user_id, the gateway's auth-validated runtime.context["user_id"], the auth middleware's context variable, and finally "default". The Gateway strips client-supplied langgraph_auth_user and langgraph_auth_user_id before the graph is built. - Background memory updates capture user_id when the work is queued, so the identity survives the debounce timer. The catch: no-auth mode is still one shared user Per AGENTS.md, no-auth mode uses DEFAULT_USER_ID, which is "default". If you run DeerFlow as a service without authentication, every caller resolves to the same user and shares the same users/default/ memory, which is the behaviour the issue describes. Per-user isolation only helps once requests carry an authenticated identity. Checklist for a multi-user deployment 1. Turn on authentication so the gateway or LangGraph server supplies a real user. Without it, you're on "default". 2. Check storage_path. Leave it empty or point it at a directory. Don't point it at a .json file. 3. Migrate old global data. The repo ships backend/scripts/migrate_user_isolation.py. Run it with --dry-run first. It assigns legacy memory.json, agents/, skills/ and the global USER.md to --user-id (default default), and moves threads/ to their recorded owner. Pick the --user-id deliberately, because that user inherits everything that used to be shared. 4. Verify on disk. After two different signed-in users chat, you should see two directories under users/. If you see only users/default/, identity isn't reaching memory. 5. Mind multiple workers. A separate open RFC, #2283, describes a last-writer-wins race when several worker processes write the same memory.json. Per-user files narrow it to one user's concurrent turns, but don't remove it. Common questions Is DeerFlow memory shared between users? On current main, not if requests are authenticated: memory lives under users/{user_id}/. In no-auth mode everyone is "default", so it is shared. Why is issue #1772 still open? The issue thread doesn't say. As of Oct 28, 2026 it has no closing comment, and its last update was Apr 3, 2026. Treat the source on your installed version as the answer, not the issue state. How do I move existing global memory to a user? Use backend/scripts/migrate_user_isolation.py --dry-run, then run it without --dry-run and with the --user-id you want the legacy data assigned to. Skip the plumbing with MemorySync If you want per-user memory in a managed memory service instead of files on the gateway's disk, MemorySync scopes every user-scoped memory call by an end-user ID (X-End-User-ID / end_user_id), and its docs recommend a stable opaque ID, not an email address. There's no DeerFlow integration, so you'd call it from your own code. Read the MemorySync authentication and scoping guide first. For an overview of MemorySync, see the MemorySync homepage. From the guide: import os from memorysync import MemorySyncClient client = MemorySyncClient( api_key=os.environ["MEMORYSYNC_API_KEY"], base_url="https://api.memorysync.io", project_id=os.environ.get("MEMORYSYNC_PROJECT_ID") or None, end_user_id="user-123", ) result = client.query("What constraints and prior decisions matter for this task?", k=5) for memory in result.memories: print(memory.text) Snippet adapted from the MemorySync agent memory guide; unverified (not run) for this page. It keeps the guide's base_url line because MemorySyncClient requires it. Starter template: memorysyncio/memorysync-first-memory. Sources - bytedance/deer-flow#1772, "Support per-user memory isolation for multi-tenant deployment" (open; read 2026-10-28) - bytedance/deer-flow#2283, "RFC: Single-Writer Memory Queue" (open; read 2026-10-28) - DeerFlow main @ d4ed400 (2026-10-28): backend/packages/harness/deerflow/agents/memory/AGENTS.md, .../backends/deermem/deermem/config.py, .../runtime/user_context.py, backend/scripts/migrate_user_isolation.py, config.example.yaml - MemorySync docs: docs.memorysync.io/api/authentication Next step: read the MemorySync agent memory guide, then see MemorySync. Founding offer: use code FOUNDING30 for 30% off Starter for your first 3 months (Settings → Billing).
@Suercha007 README 有个部署细节:K8s 每个 Pod 只有一个 worker,进程数检查看不出多副本。需声明 deployment.multi_instance=true 才会触发多实例前置校验。二开时可以测一下:只增加 replicas、缺共享存储配置,启动能否拦住。 github.com/bytedance/deer-flow/blob/main/README.md
DeerFlow 2.0: ByteDance's Open-Source Super Agent Harness, Setup and Walkthrough A complete walkthrough of bytedance/deer-flow, the open-source super agent harness that orchestrates sub-agents, memory, and sandboxes, powered by extensible skills. We cover what DeerFlow 2.0 is, the tools around it, how to install and configure models, and how to run it with Docker or local development. Chapters: 0:00 Introduction 0:48 What DeerFlow Is 2:08 The Ecosystem Around DeerFlow 3:46 Installing DeerFlow 5:50 Configuring Models 8:38 Running the Application 10:25 Who DeerFlow Is For 11:19 Summary Link: - bytedance/deer-flow: bytedance/deer-flow Narrated with an AI clone of the creator's own voice. Facts come from each project's or site's own pages. #OpenSource #GitHub #AI
This Free GitHub Repo Turns One Question Into a Finished Project It's called DeerFlow, and it comes from ByteDance. Most AI answers once and stops. DeerFlow keeps going, researching, writing code and creating files, even on tasks that take hours. Get it free here: bytedance/deer-flow Follow for more AI tips. #github #opensource #aiagents #bytedance #aitools #shorts [ar] هذا المستودع المجاني على GitHub يحول سؤالاً واحداً إلى مشروع متكامل يُسمى هذا البرنامج DeerFlow، وهو من تطوير شركة ByteDance. معظم برامج الذكاء الاصطناعي تستجيب مرة واحدة وتتوقف، بينما يواصل DeerFlow العمل، فيُجري الأبحاث، ويكتب التعليمات البرمجية، ويُنشئ الملفات، حتى في المهام التي تستغرق ساعات. حمّله مجانًا من هنا: bytedance/deer-flow تابعنا للمزيد من نصائح الذكاء الاصطناعي. #github #opensource #aiagents bytedance #aitools #shorts [bn] এই ফ্রি গিটহাব রিপো একটি প্রশ্নের মাধ্যমেই সম্পূর্ণ প্রজেক্ট তৈরি করে দেয় এর নাম ডিয়ারফ্লো (DeerFlow), এবং এটি বাইটড্যান্স (ByteDance) থেকে এসেছে। বেশিরভাগ এআই (AI) একবার উত্তর দিয়েই থেমে যায়। ডিয়ারফ্লো চলতেই থাকে, গবেষণা করে, কোড লেখে এবং ফাইল তৈরি করে, এমনকি ঘণ্টার পর ঘণ্টা সময় লাগে এমন কাজও। এটি এখানে বিনামূল্যে পান: bytedance/deer-flow আরও এআই টিপসের জন্য ফলো করুন। #github #opensource #aiagents #bytedance #aitools #shorts [de-DE] Dieses kostenlose GitHub-Repo macht aus einer einzigen Frage ein fertiges Projekt Es heißt DeerFlow und stammt von ByteDance. Die meisten KIs antworten nur einmal und hören dann auf. DeerFlow arbeitet kontinuierlich weiter, recherchiert, schreibt Code und erstellt Dateien – selbst bei Aufgaben, die Stunden dauern. Hier kostenlos herunterladen: bytedance/deer-flow Folgen Sie uns für weitere KI-Tipps. #github #opensource #aiagents #bytedance #aitools #shorts [es-US] Este repositorio gratuito de GitHub convierte una sola pregunta en un proyecto terminado Se llama DeerFlow y es de ByteDance. La mayoría de las IA responden una vez y se detienen. DeerFlow continúa trabajando, investigando, escribiendo código y creando archivos, incluso en tareas que llevan horas. Descárgalo gratis aquí: bytedance/deer-flow Síguenos para más consejos sobre IA. #github #opensource #aiagents #bytedance #aitools #shorts [fr-FR] Ce dépôt GitHub gratuit transforme une simple question en un projet complet Il s'agit de DeerFlow, développé par ByteDance. Contrairement à la plupart des IA qui répondent une seule fois, DeerFlow poursuit ses recherches, écrit du code et crée des fichiers, même pour des tâches qui durent des heures. Téléchargez-le gratuitement ici : bytedance/deer-flow Suivez-nous pour plus d'astuces sur l'IA. #github #opensource #aiagents #bytedance #aitools #shorts [hi] यह फ्री GitHub रिपो एक सवाल को पूरे प्रोजेक्ट में बदल देता है इसे डीयरफ्लो कहा जाता है, और यह बाइटडांस द्वारा विकसित किया गया है। अधिकांश एआई एक बार जवाब देकर रुक जाते हैं। डीयरफ्लो लगातार काम करता रहता है, शोध करता है, कोड लिखता है और फाइलें बनाता है, यहां तक कि उन कार्यों पर भी जिनमें घंटों लगते हैं। इसे यहां से मुफ्त में प्राप्त करें: bytedance/deer-flow अधिक एआई टिप्स के लिए फॉलो करें। #github #opensource #aiagents #bytedance #aitools #shorts [id] Repo GitHub Gratis Ini Mengubah Satu Pertanyaan Menjadi Proyek Jadi Namanya DeerFlow, dan berasal dari ByteDance. Sebagian besar AI hanya menjawab sekali dan berhenti. DeerFlow terus berjalan, melakukan riset, menulis kode, dan membuat file, bahkan untuk tugas yang memakan waktu berjam-jam. Dapatkan secara gratis di sini: bytedance/deer-flow Ikuti untuk tips AI lainnya. #github #opensource #aiagents #bytedance #aitools #shorts [it] Questo repository GitHub gratuito trasforma una domanda in un progetto finito Si chiama DeerFlow ed è sviluppato da ByteDance. La maggior parte delle IA risponde una sola volta e si ferma. DeerFlow, invece, continua a lavorare, effettuando ricerche, scrivendo codice e creando file, anche per attività che richiedono ore. Scaricalo gratuitamente qui: bytedance/deer-flow Seguici per altri consigli sull'IA. #github #opensource #aiagents #bytedance #aitools #shorts [iw] המאגר החינמי הזה ב-GitHub הופך שאלה אחת לפרויקט מוכן זה נקרא DeerFlow, וזה מגיע מ-ByteDance. רוב הבינה המלאכותית עונה פעם אחת ועוצרת. DeerFlow ממשיכה, חוקרת, כותבת קוד ויוצרת קבצים, אפילו במשימות שלוקחות שעות. הורידו אותו בחינם כאן: bytedance/deer-flow עקבו אחר טיפים נוספים לבינה מלאכותית. #github #opensource #aiagents #bytedance #aitools #shorts [ja] たった一つの質問でプロジェクトを完成させるGitHubの無料AIツール これはByteDanceが開発したDeerFlowというAIです。ほとんどのAIは一度回答すると停止しますが、DeerFlowは調査、コード作成、ファイル作成などを継続し、何時間もかかるタスクにも対応します。 こちらから無料で入手できます:bytedance/deer-flow AIに関するその他のヒントについては、フォローしてください。 #github #opensource #aiagents #bytedance #aitools #shorts [ko] 질문 하나로 결과물을 뚝딱, 무료 GitHub 오픈소스 추천 DeerFlow라고 불리는 이 도구는 ByteDance에서 개발했습니다. 대부분의 AI는 한 번 답변하고 멈추지만, DeerFlow는 몇 시간씩 걸리는 작업이라도 계속해서 조사하고, 코드를 작성하고, 파일을 생성합니다. 여기에서 무료로 다운로드하세요: bytedance/deer-flow 더 많은 AI 팁을 보려면 팔로우하세요. #github #opensource #aiagents #bytedance #aitools #shorts [ml] ഒരൊറ്റ ചോദ്യത്തിൽ നിന്ന് പൂർണ്ണമായ പ്രോജക്റ്റ് നിർമ്മിക്കുന്ന സൗജന്യ GitHub റിപ്പോസിറ്ററി ഇതിനെ DeerFlow എന്ന് വിളിക്കുന്നു, ഇത് ByteDance-ൽ നിന്നാണ് വരുന്നത്. മിക്ക AI-കളും ഒരിക്കൽ ഉത്തരം നൽകുകയും നിർത്തുകയും ചെയ്യുന്നു. മണിക്കൂറുകൾ എടുക്കുന്ന ജോലികളിൽ പോലും DeerFlow ഗവേഷണം നടത്തുകയും കോഡ് എഴുതുകയും ഫയലുകൾ സൃഷ്ടിക്കുകയും ചെയ്യുന്നു. ഇവിടെ സൗജന്യമായി നേടൂ: bytedance/deer-flow കൂടുതൽ AI നുറുങ്ങുകൾക്കായി പിന്തുടരുക. #github #opensource #aiagents #bytedance #aitools #shorts [nl-NL] Deze gratis GitHub-repo verandert één vraag in een kant-en-klaar project Het heet DeerFlow en is ontwikkeld door ByteDance. De meeste AI-systemen geven maar één antwoord en stoppen dan. DeerFlow blijft doorgaan, onderzoek doen, code schrijven en bestanden aanmaken, zelfs bij taken die uren duren. Download het hier gratis: bytedance/deer-flow Volg ons voor meer AI-tips. #github #opensource #aiagents #bytedance #aitools #shorts [pa] ਇਹ ਮੁਫਤ GitHub ਰਿਪੋ ਇੱਕ ਸਵਾਲ ਨੂੰ ਪੂਰੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਬਦਲ ਦਿੰਦੀ ਹੈ ਇਸਨੂੰ ਡੀਅਰਫਲੋ ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਹ ਬਾਈਟਡਾਂਸ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਏਆਈ ਇੱਕ ਵਾਰ ਜਵਾਬ ਦਿੰਦਾ ਹੈ ਅਤੇ ਰੁਕ ਜਾਂਦਾ ਹੈ। ਡੀਅਰਫਲੋ ਘੰਟਿਆਂਬੱਧੀ ਲੱਗਣ ਵਾਲੇ ਕੰਮਾਂ 'ਤੇ ਵੀ, ਖੋਜ, ਕੋਡ ਲਿਖਣਾ ਅਤੇ ਫਾਈਲਾਂ ਬਣਾਉਣਾ ਜਾਰੀ ਰੱਖਦਾ ਹੈ। ਇਸਨੂੰ ਇੱਥੇ ਮੁਫ਼ਤ ਪ੍ਰਾਪਤ ਕਰੋ: bytedance/deer-flow ਹੋਰ ਏਆਈ ਸੁਝਾਵਾਂ ਲਈ ਫਾਲੋ ਕਰੋ। #github #opensource #aiagents #bytedance #aitools #shorts [pl] To darmowe repozytorium na GitHubie zamienia jedno pytanie w gotowy projekt Nazywa się DeerFlow i pochodzi od ByteDance. Większość SI odpowiada raz i przestaje. DeerFlow działa dalej, wyszukuje informacje, pisze kod i tworzy pliki, nawet w przypadku zadań, które zajmują wiele godzin. Pobierz za darmo tutaj: bytedance/deer-flow Obserwuj, aby uzyskać więcej wskazówek dotyczących SI. #github #opensource #aiagents #bytedance #aitools #shorts [pt-BR] Este repositório gratuito do GitHub transforma uma pergunta em um projeto finalizado Chama-se DeerFlow e é da ByteDance. A maioria das IAs responde uma vez e para. O DeerFlow continua, pesquisando, escrevendo código e criando arquivos, mesmo em tarefas que levam horas. Baixe gratuitamente aqui: bytedance/deer-flow Siga para mais dicas de IA. #github #opensource #aiagents #bytedance #aitools #shorts [ru] Этот бесплатный репозиторий на GitHub превращает один вопрос в готовый проект Это называется DeerFlow, и он разработан компанией ByteDance. Большинство ИИ отвечают один раз и останавливаются. DeerFlow же продолжает работу, исследуя, записывая код и создавая файлы, даже в задачах, занимающих несколько часов. Скачать бесплатно можно здесь: bytedance/deer-flow Подписывайтесь, чтобы получать больше советов по ИИ. #github #opensource #aiagents #bytedance #aitools #shorts [ta] ஒரே கேள்வியை முழுமையான திட்டமாக மாற்றும் இந்த இலவச GitHub களஞ்சியம் இதற்கு டீர்ஃப்ளோ (DeerFlow) என்று பெயர், இது பைட் டான்ஸ் (ByteDance) நிறுவனத்திடமிருந்து வருகிறது. பெரும்பாலான செயற்கை நுண்ணறிவுகள் (AI) ஒருமுறை பதிலளித்துவிட்டு நின்றுவிடுகின்றன. ஆனால் டீர்ஃப்ளோவோ, பல மணிநேரம் எடுக்கும் பணிகளில்கூட, தொடர்ந்து ஆராய்ச்சி செய்து, நிரல்களை எழுதி, கோப்புகளை உருவாக்கிக் கொண்டே இருக்கிறது. இதை இங்கே இலவசமாகப் பெறுங்கள்: bytedance/deer-flow மேலும் செயற்கை நுண்ணறிவு குறிப்புகளுக்குப் பின்தொடரவும். #github #opensource #aiagents #bytedance #aitools #shorts [te] కేవలం ఒక్క ప్రశ్నతో పూర్తి ప్రాజెక్ట్ను సిద్ధం చేసే ఉచిత GitHub రిపోజిటరీ ఇది దీనిని డీర్ఫ్లో (DeerFlow) అని పిలుస్తారు, మరియు ఇది బైట్డాన్స్ (ByteDance) వారిది. చాలా AIలు ఒకసారి స్పందించి ఆగిపోతాయి. కానీ డీర్ఫ్లో, గంటల సమయం పట్టే పనులలో కూడా, పరిశోధన చేస్తూ, కోడ్ రాస్తూ, ఫైళ్లను సృష్టిస్తూ నిరంతరం పనిచేస్తూనే ఉంటుంది. దీనిని ఇక్కడ ఉచితంగా పొందండి: bytedance/deer-flow మరిన్ని AI చిట్కాల కోసం ఫాలో అవ్వండి. #github #opensource #aiagents #bytedance #aitools #shorts [uk] Цей безкоштовний репозиторій на GitHub перетворює одне запитання на готовий проєкт Він називається DeerFlow і походить від ByteDance. Більшість ШІ відповідають один раз і зупиняються. DeerFlow продовжує працювати, досліджуючи, пишучи код і створюючи файли, навіть для завдань, які займають години. Завантажте його безкоштовно тут: bytandance/deer-flow Підпишіться, щоб отримати більше порад щодо ШІ. #github #opensource #aiagents #bytandance #aitools #shorts
Integrating ByteDance deer-flow: Vector Memory Persistence Patterns for Long-Horizon Agents Context: Why Long-Horizon Agent Memory is Hard When evaluating ByteDance's deer-flow for our multi-hour autonomous research pipeline, the core challenge wasn't task orchestration—it was semantic memory persistence under high concurrency. Agents running 90+ minute sessions need to recall prior decisions, avoid redundant API calls, and maintain coherent context across sandbox restarts. Most agent frameworks treat memory as an afterthought. deer-flow takes it seriously with a pluggable memory backend, but integrating it into our existing PostgreSQL + pgvector stack exposed real architectural friction points. Architecture Overview: Memory Chain in deer-flow deer-flow splits memory into three layers: 1. Session buffer (ephemeral, in-process) 2. Vector store (semantic retrieval via embeddings) 3. Relational metadata (timestamps, task IDs, lineage) The critical insight: hybrid search must fuse vector similarity with temporal recency and task ancestry filters. Pure cosine similarity retrieves semantically related memories but ignores causality. Deliverable 1: PostgreSQL Schema with HNSW Indexing Here's our battle-tested schema integrating deer-flow's memory interface with pgvector: CREATE EXTENSION IF NOT EXISTS vector; CREATE TABLE agent_memories ( id BIGSERIAL PRIMARY KEY, agent_id TEXT NOT NULL, task_id TEXT NOT NULL, content TEXT NOT NULL, embedding vector(1536) NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW(), parent_task_id TEXT ); -- HNSW index for sub-100ms vector search at 100K+ rows CREATE INDEX ON agent_memories USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64); -- Compound index for filtered vector search CREATE INDEX ON agent_memories (agent_id, task_id, created_at DESC); Critical tuning lesson: Setting m=16 and ef_construction=64 gave us 12ms p99 latency under 500 concurrent inserts. Default pgvector settings caused 2+ second insert stalls during batch memory writes. Deliverable 2: Hybrid Search with Reciprocal Rank Fusion Pure vector search failed during complex multi-step tasks—agents would retrieve tangentially related memories from 3 hours prior while ignoring critical decisions from 10 minutes ago. Here's our Python RRF implementation bridging deer-flow's memory interface: import asyncpg import numpy as np from typing import List, Tuple class HybridMemoryRetriever: def __init__(self, pool: asyncpg.Pool, k: int = 60): self.pool = pool self.k = k # RRF constant async def retrieve( self, agent_id: str, query_embedding: np.ndarray, task_id: str, limit: int = 5 ) -> List[Tuple[str, float]]: async with self.pool.acquire() as conn: # Vector similarity ranking vector_results = await conn.fetch( """ SELECT id, content, 1 - (embedding <=> $1::vector) AS similarity FROM agent_memories WHERE agent_id = $2 AND task_id = $3 ORDER BY embedding <=> $1::vector LIMIT 20 """, query_embedding.tolist(), agent_id, task_id ) # Recency ranking recency_results = await conn.fetch( """ SELECT id, content, created_at FROM agent_memories WHERE agent_id = $1 AND task_id = $2 ORDER BY created_at DESC LIMIT 20 """, agent_id, task_id ) # RRF fusion: 1 / (k + rank) scores = {} for rank, row in enumerate(vector_results, 1): scores[row['id']] = scores.get(row['id'], 0) + 1 / (self.k + rank) for rank, row in enumerate(recency_results, 1): scores[row['id']] = scores.get(row['id'], 0) + 1 / (self.k + rank) # Retrieve top-k by fused score top_ids = sorted(scores.items(), key=lambda x: x[1], reverse=True)[:limit] final = await conn.fetch( "SELECT content FROM agent_memories WHERE id = ANY($1)", [id for id, _ in top_ids] ) return [(r['content'], scores[r['id']]) for r in final] Battle scar: We initially used a simple weighted sum instead of RRF. This failed catastrophically when vector scores clustered near 0.85-0.90—recency signals got drowned out. RRF's rank-based scoring proved far more stable. Production Integration Points When wiring deer-flow into our existing stack: Embedding normalization trap: deer-flow doesn't enforce L2 normalization. We saw 22% recall degradation until we added: def normalize_embedding(vec: np.ndarray) -> np.ndarray: norm = np.linalg.norm(vec) return vec / norm if norm > 0 else vec Concurrency bottleneck: HNSW index locks during bulk inserts caused 5+ second write stalls. Solution: batch memories and use INSERT ... ON CONFLICT DO NOTHING with a 50ms debounce window. Benchmarking methodology: When testing multi-provider fallback latency through B-Lost's relay gateway (baseURL: "https://b-lost.com/v1"), we clocked 127ms average embedding generation (text-embedding-3-small) which became the bottleneck—not database writes. Consider pre-generating embeddings asynchronously. Operational Trade-offs What works: - Pluggable memory abstraction makes swapping PostgreSQL for Qdrant trivial - Subagent lineage tracking via parent_task_id enables causal retrieval filters - Clean separation between ephemeral buffers and durable storage What hurts: - No built-in memory compaction—our agents hit 50K+ rows per session, causing index bloat - Lack of automatic embedding cache invalidation when upstream models change - Hybrid search logic lives in application code, not the framework The Open Question Our biggest unresolved dilemma: when should agents forget? Unlimited memory growth killed performance after 6-hour sessions. Naive LRU eviction broke causal chains. Time-decay scoring helped but introduced new failure modes during context switches. How do you balance memory retention with retrieval performance when agents run for hours? Curious what approaches others have battle-tested in production long-horizon systems.
I fixed up deer flow: bytedance/deer-flow What I did was create docker containers with pandoc, compilers (rust, go, python, javascript) and it can create all manner of reports.
I (not the asked) run deer flow: bytedance/deer-flow
DeerFlow(深度探索和高效研究流程)是一个开源的超级代理工具。 它将子代理、内存和沙盒组织结合在一起,再配合可扩展的技能,让代理可以完成几乎任何事情。 🔗 bytedance/deer-flow
长流程任务一直是 AI Agent 的短板。字节开源的 DeerFlow 带来新解法:定位 SuperAgent 架构,通过编排多子 Agent、持久化记忆与独立沙箱,让大模型能稳定跑完深度长周期研究任务,开发者扩展很方便。 bytedance/deer-flow
1. bytedance/deer-flow 数分から数時間かかる調査やコード作成を、サブエージェントに分担させて進める枠組み ここでは素材係。長い調べ物を丸ごと投げて、まとまった結果を出してもらう担当 bytedance/deer-flow t.co