Vlk MemAct

io.github.aranajhonny由 GitHub 帳號 aranajhonny 發布v0.3.0更新於 Oct 28, 2026

Stateful memory for AI agents. Temporal awareness, error loop detection, and preventive constraints.

發布方自己的服務:core.blue

已驗證STDIO僅桌面知識與記憶AI 與機器學習

概覽

AI 產生的概覽

為 AI 代理提供本機 SQLite 記憶層,區分過去、現在與未來狀態,並打斷重複的錯誤迴圈。

可以做什麼
  • 把日誌與錯誤記錄為目前記憶槽,並自動對重複錯誤做指紋辨識
  • 取得乾淨的上下文,改寫互相矛盾的記憶並攔截已偵測到的迴圈
  • 歸檔目前上下文並注入預防性限制,也可撤銷錯誤學到的限制
  • 稽核完整時間軸、依關鍵字搜尋日誌與限制、列出提煉出的模式
  • 彙總工作階段狀態與 token 估算,查看背景整合代理的運作狀態
  • 固定或取消固定模式,使其免於被自動遺忘
適用情境
適合代理反覆嘗試同一失敗做法(例如同一編譯錯誤在不同檔案中重複出現)時,讓它停下來並記住教訓。也適合需要受限上下文、自動歸檔過時記錄,並與其他記憶系統並用的情境。
執行需求
以本機二進位檔透過 stdio 執行;README 說明需以 Rust 建置,SQLite 隨套件提供。環境變數 DATABASE_URL 指定 SQLite 資料庫路徑(預設 sqlite:vlk.db?mode=rwc)。未宣告任何驗證。
安裝前請注意
它會自主寫入與改寫記憶:背景週期會歸檔、遺忘與整合項目,檢索時也可能改寫被判定為矛盾的記憶。注入上下文的限制會影響代理行為,出錯時應撤銷。README 說明對不存在 ID 的固定/取消固定、高負載下的預算控制以及衝突解決尚未測試。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Vlk MemAct,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Vlk² — Temporal State Machine for AI Agents

Vlk² gives AI agents a sense of time: what's happening now (PRESENT), what's already been tried (PAST), and what should guide future decisions (FUTURE). It runs as a single binary over MCP, backed by SQLite, and manages these temporal transitions autonomously.

The killer demo: when an agent repeats the same Rust/TS/Python/Go error 3 times, Vlk² auto-archives the loop and injects a preventive constraint so the agent stops retrying the same broken approach. But the architecture is general — the temporal state machine can track any kind of past→present→future transition across any agent framework.

What It Does

  • Temporal state machine — each memory has a state: PRESENT (active context), PAST (archived, hidden from context), FUTURE (preventive constraints), PURGED (forgotten). A background agent transitions entries between states without agent intervention.
  • Cross-language loop detection — fingerprints errors by language, not by string match. Recognizes Rust (error[E0277]), TypeScript/JS (TS2345, TypeError), Python (ValueError, KeyError), Go (panic: nil pointer), HTTP (503 Service Unavailable), test frameworks (expected: X, got: Y), with a timestamp-stripping fallback. When the same fingerprint appears ≥3 times, Vlk² auto-archives the loop to PAST and injects a FUTURE constraint.
  • Reconsolidation on retrieval — every recall checks current beliefs; if contradictory, the memory rewrites itself.
  • Token budget enforcement — every 30s, estimates total tokens in PRESENT + FUTURE. If over budget (8K default), archives lowest-importance entries until under budget.
  • Autonomous consolidation — background task (30s cycle) evaluates importance, archives stale entries, and forgets disconnected ones.

Why Not Just a Memory System?

General memory systems (agentmemory, Hindsight, Mem0, Supermemory) store facts, preferences, and context. Vlk² does one thing they don't: detect that the same Rust compile error repeated 3 times across different files and inject a constraint so the agent stops retrying the same broken approach. It's not a replacement — it's a specialized fault-detection layer that runs alongside them.

CapabilityVlk²agentmemoryHindsightSupermemory
Fact/persona memory—✅ 53 tools✅ hooks✅ keywords
Cross-language error fingerprinting✅ 7 strategies———
Autonomous loop breaking✅ ≥3 repeats auto-archive———
Reconsolidation on retrieval✅———
Token-bounded context✅ 8K default———

Quick Start

bash
cd vlk-corecargo build --releaseDATABASE_URL="sqlite:vlk.db?mode=rwc" ./target/release/vlk-core

Any MCP client connects via stdin/stdout — JSON-RPC 2.0, one line per message.

MCP Tools

ToolPurpose
vlk_record_statePush a log/error as a PRESENT slot for loop detection
vlk_fetch_contextClean context with reconsolidation + loop interception
vlk_time_travelArchive PRESENT → PAST and inject a FUTURE constraint
vlk_get_historyFull timeline audit
vlk_search_memoryKeyword search across logs and constraints
vlk_summarize_sessionState counts + token estimates
vlk_revoke_futureRemove incorrectly learned constraints
vlk_get_factsRetrieved distilled patterns
vlk_consolidation_statusShow consolidation agent state with token bar
vlk_pin_memoryProtect a pattern from forgetting
vlk_unpin_memoryRestore normal forgetting eligibility

How Loop Detection Works

  1. Each error is fingerprinted by type: Rust error[E...], TS TS..., Python TypeError:, Go panic:, HTTP 503, test assertion, or first-80-chars fallback
  2. Fingerprints group near-duplicates — same error code with different timestamps/line numbers count as one pattern
  3. At ≥3 repeats → auto-archives the loop + injects [SYSTEM ANCHOR] preventive constraint
  4. Future context fetches include the constraint, so the agent stops repeating

Architecture

memory_contents (immutable, team-agnostic)  └── FK ──► agent_timeline (PRESENT / PAST / FUTURE / PURGED)               ├── memory_metadata (temporal vectors, importance, connectivity)               └── semantic_facts (distilled patterns from errors)                    └── fact_contradictions (resolution tracking)
Consolidation Agent (background tokio, 30s cycle)  SCAN → EVALUATE importance → BUDGET_CHECK → ARCHIVE low-value → FORGET stale

Verification

What's tested: the core loop detection path is verified: 3 identical Rust errors → auto-archive to PAST + FUTURE constraint injection. All 13 MCP tools respond correctly.

Not yet tested: pin/unpin with non-existent timeline_ids, token budget enforcement under load, conflict resolution.

Loop detection smoke test — sends the same Rust error[E0277] 3 times and verifies auto-archive + constraint injection:

python
import subprocess, json, tempfile, os, sys
db = tempfile.mktemp(suffix='.db')proc = subprocess.Popen(['./target/release/vlk-core'],    stdin=subprocess.PIPE, stdout=subprocess.PIPE,    stderr=subprocess.DEVNULL,    env={'DATABASE_URL': f'sqlite:{db}?mode=rwc'})
def rpc(msg):    proc.stdin.write((json.dumps(msg) + '\n').encode())    proc.stdin.flush()    return json.loads(proc.stdout.readline())
# Initrpc({'jsonrpc':'2.0','id':1,'method':'initialize','params':{    'protocolVersion':'2024-11-05','capabilities':{},    'clientInfo':{'name':'test','version':'1.0'}}})
# Send the same Rust error 3 times to trigger loop detectionerror = 'error[E0277]: cannot add `str` to `str`'for i in range(3):    r = rpc({'jsonrpc':'2.0','id':i+2,'method':'tools/call','params':{        'name':'vlk_record_state',        'arguments':{'raw_log': error, 'file_context': f'lib.rs:{i*10}'}}})    assert 'PRESENT state recorded' in r['result']['content'][0]['text']    print(f'  Record {i+1}: OK')
# fetch_context triggers loop detection → auto-archive → constraint injectionr = rpc({'jsonrpc':'2.0','id':5,'method':'tools/call','params':{    'name':'vlk_fetch_context','arguments':{}}})txt = r['result']['content'][0]['text']assert 'E0277' in txt, 'error missing after fetch'assert any(kw in txt for kw in ['SYSTEM ANCHOR', 'PREVENTIVE', 'CONSTRAINT']), \    'no constraint injected'print(f'  Fetch: loop archived + constraint injected')
proc.terminate(); proc.wait()for f in (db, db + '-wal', db + '-shm'):    try:        os.remove(f)    except FileNotFoundError:        passprint('PASS: loop detection works')

Integration

Add to Hermes, OpenCode, Claude Code, Codex, or any MCP host:

yaml
# ~/.hermes/config.yaml or equivalentmcp_servers:  vlk2:    command: "vlk2"    env:      DATABASE_URL: "sqlite:~/.hermes/vlk/vlk.db?mode=rwc"    timeout: 30

Compatible with any MCP client. Works alongside agentmemory, Hindsight, Supermemory, or Hermes built-in memory.

Requirements

  • Rust 2021 edition
  • SQLite (bundled via sqlx)
  • 6.4MB binary

Current Status

Actively developed. The core loop detection and corrective memory cycle is implemented and E2E-tested. Vlk² is a specialized complement to general memory systems — not a replacement.

來源:README.md,提交 e14635c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Core 整合