mcpField
V
Vlk MemAct

Vlk MemAct

本地服务
github.com/aranajhonny记忆与知识317 周前更新

关于 Vlk MemAct

Vlk MemAct 是基于 SQLite 的 Agent 时序记忆 MCP 服务,用 PRESENT、PAST、FUTURE 状态管理记忆。它面向需要识别重复错误并阻止 Agent 重试的场景,还会执行记忆整合和令牌预算控制。

主要功能

  1. 01按时序状态管理记忆
  2. 02跨语言错误指纹识别
  3. 03重复错误自动归档并注入约束
  4. 04检索时检查并修正矛盾记忆
  5. 05后台整合并清理过时记忆
  6. 06按令牌预算归档低优先级内容

适用场景

  1. 01阻止 Agent 重复尝试已失败的修复方案
  2. 02为后续会话提供当前上下文和预防约束
  3. 03控制活动记忆的令牌占用

MCP 相关

它以单一二进制程序通过 MCP 提供记忆记录、检索、历史查询、搜索和整合状态等工具,客户端通过标准输入输出连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbvlk-core-x86_64-unknown-linux-gnu.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Vlk² — AI Agent 的时间状态机

Vlk² 赋予 AI Agent 时间感:正在发生的事情(PRESENT)、已经尝试过的事情(PAST),以及应当指导未来决策的内容(FUTURE)。它以 MCP 单个二进制文件的形式运行,由 SQLite 提供支持,并自主管理这些时间状态转换。

核心演示:当 Agent 将同一个 Rust/TS/Python/Go 错误重复遇到 3 次时,Vlk² 会自动将该循环归档,并注入一条预防性约束,让 Agent 停止重试同一种错误方法。但其架构具有通用性——这个时间状态机可以在任何 Agent 框架中追踪任意类型的过去→现在→未来状态转换。

功能

  • 时间状态机 — 每条记忆都有一个状态:PRESENT(活跃上下文)、PAST(已归档,不显示在上下文中)、FUTURE(预防性约束)、PURGED(已遗忘)。后台 Agent 会在无需 Agent 干预的情况下转换条目的状态。
  • 跨语言循环检测 — 按语言而非字符串匹配来为错误生成指纹。可识别 Rust(error[E0277])、TypeScript/JS(TS2345、TypeError)、Python(ValueError、KeyError)、Go(panic: nil pointer)、HTTP(503 Service Unavailable)、测试框架(expected: X, got: Y),并在无法匹配时回退为剥离时间戳。当同一指纹出现 ≥3 次时,Vlk² 会自动将该循环归档到 PAST,并注入一条 FUTURE 约束。
  • 检索时重新巩固 — 每次召回都会检查当前信念;如果存在矛盾,记忆会重写自身。
  • 令牌预算强制管理 — 每隔 30s 估算 PRESENT + FUTURE 中的令牌总数。如果超出预算(默认 8K),就归档重要性最低的条目,直到低于预算。
  • 自主整合 — 后台任务(每 30s 一个周期)会评估重要性、归档过时条目,并遗忘彼此无关联的条目。

为什么不直接使用记忆系统?

通用记忆系统(agentmemory、Hindsight、Mem0、Supermemory)会存储事实、偏好和上下文。Vlk² 做了一件它们做不到的事:**检测同一个 Rust 编译错误是否在不同文件中重复出现 3 次,并注入一条约束,让 Agent 停止重试同一种错误方法。**它并非替代品,而是一个可与这些系统并行运行的专用故障检测层。

能力Vlk²agentmemoryHindsightSupermemory
事实/角色记忆—✅ 53 个工具✅ hooks✅ 关键词
跨语言错误指纹识别✅ 7 种策略———
自主打破循环✅ 重复 ≥3 次后自动归档———
检索时重新巩固✅———
受令牌数限制的上下文✅ 默认 8K———

快速开始

cd vlk-core
cargo build --release
DATABASE_URL="sqlite:vlk.db?mode=rwc" ./target/release/vlk-core

任何 MCP 客户端都可通过 stdin/stdout 连接——JSON-RPC 2.0,每条消息占一行。

MCP 工具

工具用途
vlk_record_state将日志/错误推送为 PRESENT 槽位,用于循环检测
vlk_fetch_context获取经过清理的上下文,并进行重新巩固和循环拦截
vlk_time_travel将 PRESENT 归档到 PAST,并注入一条 FUTURE 约束
vlk_get_history完整的时间线审计
vlk_search_memory跨日志和约束进行关键词搜索
vlk_summarize_session状态计数和令牌估算
vlk_revoke_future移除错误学习到的约束
vlk_get_facts检索提炼后的模式
vlk_consolidation_status显示整合 Agent 状态和令牌进度条
vlk_pin_memory保护模式,避免被遗忘
vlk_unpin_memory恢复正常的遗忘资格

循环检测的工作原理

  1. 按类型为每个错误生成指纹:Rust error[E...]、TS TS...、Python TypeError:、Go panic:、HTTP 503、测试断言,或前 80 个字符的回退值
  2. 指纹将近似重复项归为一组——错误代码相同、时间戳或行号不同,也算作同一种模式
  3. 重复次数达到 ≥3 次 → 自动归档循环,并注入 [SYSTEM ANCHOR] 预防性约束
  4. 后续上下文获取会包含该约束,因此 Agent 会停止重复错误

架构

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

验证

已测试内容: 已验证核心循环检测路径:3 次相同的 Rust 错误 → 自动归档至 PAST + 注入 FUTURE 约束。全部 13 个 MCP 工具均能正确响应。

尚未测试: 使用不存在的 timeline_ids 进行固定/取消固定、负载下的令牌预算执行、冲突解决。

循环检测冒烟测试——连续发送相同的 Rust error[E0277] 3 次,并验证自动归档 + 约束注入:

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())

# Init
rpc({'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 detection
error = '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 injection
r = 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:
        pass
print('PASS: loop detection works')

集成

添加到 Hermes、OpenCode、Claude Code、Codex 或任何 MCP 宿主:

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

兼容任何 MCP 客户端。可与 agentmemory、Hindsight、Supermemory 或 Hermes 内置记忆协同工作。

要求

  • Rust 2021 edition
  • SQLite(通过 sqlx 捆绑)
  • 6.4MB 二进制文件

当前状态

正在积极开发。核心循环检测和纠正性记忆周期已实现并通过 E2E 测试。Vlk² 是对通用记忆系统的专业补充,而非替代品。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。