Medium/heavy coding users pay large prompt tokens for the version-evolution diff block; make MEMORY_CODING_CHAIN_BLOCK_ENABLED opt-in (default false). Write-side observe is unchanged; HCM_BLOCK_OFF remains an advanced kill switch. Co-authored-by: alvinfei <alvinfei@tencent.com> Co-authored-by: Cursor <cursoragent@cursor.com>
141 lines
7.9 KiB
Bash
141 lines
7.9 KiB
Bash
# ============================================================
|
||
# HY Memory 环境变量配置示例
|
||
# 复制为 .env 并填入实际值
|
||
#
|
||
# 这里只列常用且当前有效的配置。完整列表见 docs/env_reference.md。
|
||
# ============================================================
|
||
|
||
# ── 通用 ──
|
||
# MEMORY_DATA_DIR=~/.hy_memory # 数据存储根目录
|
||
# MEMORY_LOG_DIR= # 运行日志根目录;pipeline JSONL 默认在 {DATA_DIR}/logs/pipeline
|
||
# MEMORY_LOG_LEVEL=INFO # DEBUG | INFO | WARNING | ERROR
|
||
# MEMORY_LOG_FORMAT=text # text | json
|
||
# HY_MEMORY_SERVER_HOST=127.0.0.1
|
||
# HY_MEMORY_SERVER_PORT=19527
|
||
|
||
# ── 可观测性(落库开关)──
|
||
# MEMORY_PIPELINE_TRACE_ENABLED=true # pipeline_logs 表(LLM 调用链中间结果,供 Inspector)。JSONL 文件日志始终写入,不受此开关影响
|
||
# MEMORY_MEMORY_OPERATIONS_ENABLED=false # memory_operations 表(知识库 ADD/UPDATE 审计日志)。默认关闭
|
||
# MEMORY_LOG_LLM_CONTENT=false # 危险调试开关;true 才记录完整 LLM prompt/response
|
||
|
||
# ── LLM(记忆提取/处理用,OpenAI 兼容协议)──
|
||
MEMORY_LLM_MODEL=deepseek-chat
|
||
MEMORY_LLM_API_KEY=sk-your-key
|
||
MEMORY_LLM_BASE_URL=https://api.deepseek.com
|
||
# MEMORY_LLM_TEMPERATURE=0.1
|
||
# MEMORY_LLM_OMIT_TEMPERATURE=false # true: 请求中完全不发送 temperature
|
||
# MEMORY_LLM_MAX_TOKENS=1024
|
||
# MEMORY_AGENT_MAX_TOKENS=2000
|
||
# MEMORY_LLM_TIMEOUT=180
|
||
# MEMORY_LLM_MAX_RETRIES=5
|
||
# MEMORY_LLM_RETRY_DELAY=1.0
|
||
# MEMORY_LLM_EXTRA_HEADERS={} # JSON,透传请求头
|
||
# MEMORY_LLM_EXTRA_BODY={} # JSON,透传请求体
|
||
|
||
# ── Embedding(向量化,OpenAI 兼容协议)──
|
||
MEMORY_EMBEDDER_MODEL=text-embedding-v4
|
||
MEMORY_EMBEDDER_API_KEY=sk-your-key
|
||
MEMORY_EMBEDDER_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
||
MEMORY_EMBEDDING_DIMS=1024
|
||
# MEMORY_EMBEDDER_TIMEOUT=15
|
||
# MEMORY_EMBEDDER_MAX_RETRIES=2
|
||
# MEMORY_EMBEDDER_RETRY_DELAY=0.3
|
||
# MEMORY_EMBEDDER_EXTRA_HEADERS={}
|
||
# MEMORY_EMBEDDER_EXTRA_BODY={}
|
||
|
||
# ── 向量存储 ──
|
||
# 可选: chroma (默认,本地文件) | qdrant | faiss
|
||
MEMORY_VECTOR_STORE=chroma
|
||
# MEMORY_COLLECTION_NAME=agent_memories
|
||
# MEMORY_VECTOR_API_KEY= # 远程向量后端 API Key
|
||
# MEMORY_PERSIST_DIR= # 本地向量库持久化目录
|
||
|
||
# --- Qdrant ---
|
||
# MEMORY_VECTOR_HOST=localhost
|
||
# MEMORY_VECTOR_PORT=6333
|
||
|
||
# ── 图数据库(默认关闭)──
|
||
# MEMORY_ENABLE_GRAPH=false # 仅 pro 生效;lite 强制关闭,ultra 强制开启
|
||
# MEMORY_GRAPH_PROVIDER=kuzu # kuzu (默认) | neo4j
|
||
# MEMORY_GRAPH_DB_PATH= # Kuzu 数据库目录
|
||
# --- Neo4j ---
|
||
# NEO4J_URL=bolt://localhost:7687
|
||
# NEO4J_USERNAME=neo4j
|
||
# NEO4J_PASSWORD=
|
||
# NEO4J_DATABASE=neo4j
|
||
|
||
# ── 缓存 ──
|
||
# MEMORY_CACHE_BACKEND=sqlite # sqlite (默认) | mysql
|
||
# MEMORY_CACHE_DB_PATH= # SQLite 路径(默认 {DATA_DIR}/data/cache.db)
|
||
# MEMORY_MYSQL_HOST=localhost
|
||
# MEMORY_MYSQL_PORT=3306
|
||
# MEMORY_MYSQL_USER=root
|
||
# MEMORY_MYSQL_PASSWORD=
|
||
# MEMORY_MYSQL_DATABASE=hy_memory
|
||
# MEMORY_MYSQL_POOL_SIZE=10
|
||
# MEMORY_MYSQL_POOL_RECYCLE=3600
|
||
|
||
# ── 处理模式 ──
|
||
# MEMORY_MODE=pro # lite | pro | ultra
|
||
|
||
# ── Coding Memory(生产力 / 编码场景独立链路,默认开启)──
|
||
# 独立于 chat 记忆的一套链路:写入端对 messages 判类,coding 场景抽「任务→方案」存 sqlite;
|
||
# 搜索端 scene=productivity 时走这套库(见 query rewrite / working memory 融合逻辑)。
|
||
# 也可通过 from_config({"coding": {...}}) 按 client 配置(键名去掉 MEMORY_CODING_ 前缀,小写)。
|
||
# MEMORY_CODING_ENABLED=true # false: 关闭 coding 链,所有 add 走 chat 链
|
||
# MEMORY_CODING_DB_PATH= # coding_memory.db 路径(默认 {DATA_DIR}/data/coding_memory.db)
|
||
# MEMORY_CODING_TOOL_RESULT_MAX_BYTES=2048 # 单条 tool_result 截断字节上限
|
||
# MEMORY_CODING_VERBATIM_FALLBACK_ENABLED=false # 模型无结果时是否保存原文 fact;默认关,避免 tool trace 外泄
|
||
# MEMORY_CODING_CHAIN_BLOCK_ENABLED=false # search 是否注入版本演进链块(diff);默认关,省 token
|
||
# MEMORY_EXTRACT_HISTORY_TURNS=5 # 除本次 write 外,额外注入 extractor 的历史 user-turn 数
|
||
|
||
# ── 写入流程开关 ──
|
||
# RECONCILE_ENABLED=true # false: 跳过 reconcile,extractor 结果直插 VDB
|
||
# MEMORY_ENABLE_SEARCH_QUERY=false # true: reconcile 前 LLM 扩写 search query(默认关,用 hybrid 直接搜)
|
||
# MEMORY_FEW_SHOT_ENABLED=false # true: extractor 与 reconcile prompt 附加 few-shot 示例(默认关)
|
||
# MEMORY_ENABLE_INTENTION=true # false: 不抽取/写入 L7 intention
|
||
|
||
# ── System 2 (ultra 模式) ──
|
||
# SWEEPER_ENABLED=true # false: 跳过 cross-domain sweeper
|
||
# MEMORY_SUMMARY_ENABLED_IN_SYS2=false # true: S2 preprocess 扫描包含 L3_SUMMARY
|
||
# MEMORY_EVOLING_BALANCED_CATALOG_ENABLED=false # Ultra evolve: 从 active/latest L2 选择 exact、分领域 catalog,默认关
|
||
# MEMORY_EVOLING_BALANCED_CATALOG_MAX_FACTS=120 # 写侧最多审阅的 L2 数
|
||
# MEMORY_EVOLING_BALANCED_CATALOG_CONTENT_CHARS=180 # 写侧 prompt 每条 L2 截断;可见 catalog 保留完整 exact L2
|
||
# MEMORY_EVOLING_BALANCED_CATALOG_MAX_TOKENS=512 # catalog 编号选择的最大输出 tokens
|
||
# MEMORY_EVOLING_SPECIFIC_SUPPLEMENT_ENABLED=false # Ultra evolve: 生成 exact-evidence supplement
|
||
# MEMORY_USER_PROFILE_BALANCED_CATALOG_ENABLED=false # get_user_profile: 附加 active balanced catalog,默认关
|
||
# MEMORY_USER_PROFILE_SPECIFIC_SUPPLEMENT_ENABLED=false # get_user_profile: 附加 active specific supplement,默认关
|
||
|
||
# ── Sweeper 碰撞参数 ──
|
||
# MEMORY_CROSS_DOMAIN_ENABLE=true # sweeper 内部开关
|
||
# MEMORY_CROSS_DOMAIN_MIN_BASICS=5 # 碰撞扫描最低 schema 数(beh_embed 不受此限制)
|
||
# MEMORY_CROSS_DOMAIN_BEH_THRESHOLD=0.70 # 行为相似度碰撞阈值
|
||
# MEMORY_CROSS_DOMAIN_CON_THRESHOLD=0.60 # 内容相似度碰撞阈值(低于此值才算跨域)
|
||
|
||
# ── Reader 配置 ──
|
||
# HY_MEMORY_READER=legacy # legacy | hybrid
|
||
# MEMORY_LOCAL_RERANK_ENABLED=false # 本地 cross-encoder rerank;默认关闭
|
||
# MEMORY_LOCAL_RERANK_MODEL=nreimers/mmarco-mMiniLMv2-L6-H384-v1
|
||
# MEMORY_LOCAL_RERANK_POOL_FACTOR=3
|
||
# MEMORY_LOCAL_RERANK_MAX_LENGTH=512
|
||
# MEMORY_LOCAL_RERANK_BATCH_SIZE=16
|
||
# MEMORY_LOCAL_RERANK_DEVICE=auto
|
||
|
||
# ── Query Rewrite(搜索端指代消解 + 时间跨度,client 级,默认关)──
|
||
# 针对「我昨天说的那个 xx」「上周聊的重要的事」这类缺时间/指代的 query。开启后 search 调一次
|
||
# LLM 用 queries 上下文改写成简洁 query,相对时间换算成 created_after 下界过滤。与 working
|
||
# memory(coding.enable)同开时合并为一次 LLM(判类+改写),chat 场景不走两次 LLM。
|
||
# MEMORY_ENABLE_QUERY_REWRITE=false # 只控制 default + 显式 queries=[...];default 单 query 始终零 LLM
|
||
# MEMORY_QUERY_REWRITE_MAX_CHARS=1000 # default 多-query 的长度保护;agentic 使用内部有界视图
|
||
|
||
# ── Memory Strength(基于闲置时长的时间衰减排序,默认关闭)──
|
||
# strength = (1 + log(access_count)) * exp(-idle_days / tau),乘进 normal 通道分数
|
||
# MEMORY_RECALL_STRENGTH_ENABLED=false # 总开关(默认关闭):开启后才做 strength 重排 + 回写 access
|
||
# MEMORY_RECALL_STRENGTH_TAU=180 # 衰减时间常数(天)
|
||
# MEMORY_RECALL_ACCESS_TRACKING=true # 搜索后回写 access_count/last_accessed_at(受总开关约束)
|
||
|
||
# ── Entity Store(默认关闭)──
|
||
# 仅控制写入侧为 L2_FACT 建立独立 entity collection;当前 reader 不直接消费该 collection。
|
||
# 旧数据可用 client.build_entity_store(user_id) 补建;需要 spaCy en_core_web_sm。
|
||
# MEMORY_ENTITY_STORE_ENABLED=false
|