Z User commited on
Commit
3b40213
·
1 Parent(s): 744b9eb

feat: enable Holographic memory + MemPalace MCP

Browse files

A) Memory: holographic provider (local SQLite, FTS5, trust scoring)
- auto_extract: true (auto-extract facts at session end)
- Zero dependencies, zero API keys, fully local

B) MCP: MemPalace via stdio (29 tools for palace ops)
- Removed no_mcp: true
- Added mcp_servers.mempalace (python -m mempalace.mcp_server)
- Palace path: /data/hermes/palace (persistent)

Dashboard: show memory provider name + MCP server list

Files changed (3) hide show
  1. config.yaml +12 -2
  2. dashboard.html +6 -1
  3. entry.py +1 -1
config.yaml CHANGED
@@ -11,13 +11,23 @@ platforms:
11
  domain: feishu
12
  connection_mode: websocket
13
  memory:
14
- provider: none
 
 
15
  compress:
16
  enabled: true
17
  threshold: 50
18
  target_ratio: 20
19
  protect_last: 20
20
- no_mcp: true
 
 
 
 
 
 
 
 
21
  terminal:
22
  backend: cloud
23
  timeout: 180
 
11
  domain: feishu
12
  connection_mode: websocket
13
  memory:
14
+ provider: holographic
15
+ auto_extract: true
16
+ default_trust: 0.5
17
  compress:
18
  enabled: true
19
  threshold: 50
20
  target_ratio: 20
21
  protect_last: 20
22
+ mcp_servers:
23
+ mempalace:
24
+ type: stdio
25
+ command: python3
26
+ args:
27
+ - "-m"
28
+ - mempalace.mcp_server
29
+ env:
30
+ MEMPALACE_PALACE_PATH: /data/hermes/palace
31
  terminal:
32
  backend: cloud
33
  timeout: 180
dashboard.html CHANGED
@@ -217,6 +217,7 @@ body{font-family:-apple-system,"SF Pro Display","Noto Sans SC","PingFang SC","He
217
  <div class="cfg-row"><span class="cfg-k">最大轮数</span><span class="cfg-v" id="x-turns">90</span></div>
218
  <div class="cfg-row"><span class="cfg-k">上下文压缩</span><span class="cfg-v" id="x-comp">--</span></div>
219
  <div class="cfg-row"><span class="cfg-k">记忆系统</span><span class="cfg-v" id="x-mem">--</span></div>
 
220
  <div class="cfg-row"><span class="cfg-k">终端类型</span><span class="cfg-v" id="x-term">--</span></div>
221
  <div class="cfg-row"><span class="cfg-k">时区</span><span class="cfg-v" id="x-tz">北京时间 (UTC+8)</span></div>
222
  </div>
@@ -391,8 +392,12 @@ async function poll(){
391
  document.getElementById('x-turns').textContent=d.config.max_turns||'90';
392
  document.getElementById('x-comp').textContent=d.config.compress?'已开启':'已关闭';
393
  document.getElementById('x-comp').style.color=d.config.compress?'var(--accent)':'var(--tx3)';
394
- document.getElementById('x-mem').textContent=d.config.memory==='none'?'未配置':'MemPalace';
 
395
  document.getElementById('x-mem').style.color=d.config.memory!=='none'?'var(--accent)':'var(--tx3)';
 
 
 
396
  document.getElementById('x-term').textContent=d.config.terminal==='local'?'本地':'云端';
397
  document.getElementById('x-tz').textContent='北京时间 (UTC+8)';
398
  // Sync model selector
 
217
  <div class="cfg-row"><span class="cfg-k">最大轮数</span><span class="cfg-v" id="x-turns">90</span></div>
218
  <div class="cfg-row"><span class="cfg-k">上下文压缩</span><span class="cfg-v" id="x-comp">--</span></div>
219
  <div class="cfg-row"><span class="cfg-k">记忆系统</span><span class="cfg-v" id="x-mem">--</span></div>
220
+ <div class="cfg-row"><span class="cfg-k">MCP 服务</span><span class="cfg-v" id="x-mcp">--</span></div>
221
  <div class="cfg-row"><span class="cfg-k">终端类型</span><span class="cfg-v" id="x-term">--</span></div>
222
  <div class="cfg-row"><span class="cfg-k">时区</span><span class="cfg-v" id="x-tz">北京时间 (UTC+8)</span></div>
223
  </div>
 
392
  document.getElementById('x-turns').textContent=d.config.max_turns||'90';
393
  document.getElementById('x-comp').textContent=d.config.compress?'已开启':'已关闭';
394
  document.getElementById('x-comp').style.color=d.config.compress?'var(--accent)':'var(--tx3)';
395
+ var memNames={holographic:'Holographic',honcho:'Honcho',mem0:'Mem0',hindsight:'Hindsight',openviking:'OpenViking'};
396
+ document.getElementById('x-mem').textContent=memNames[d.config.memory]||(d.config.memory==='none'?'未配置':d.config.memory);
397
  document.getElementById('x-mem').style.color=d.config.memory!=='none'?'var(--accent)':'var(--tx3)';
398
+ var mcpList=d.config.mcp_servers||[];
399
+ document.getElementById('x-mcp').textContent=mcpList.length>0?mcpList.join(', '):'未启用';
400
+ document.getElementById('x-mcp').style.color=mcpList.length>0?'var(--accent)':'var(--tx3)';
401
  document.getElementById('x-term').textContent=d.config.terminal==='local'?'本地':'云端';
402
  document.getElementById('x-tz').textContent='北京时间 (UTC+8)';
403
  // Sync model selector
entry.py CHANGED
@@ -355,7 +355,7 @@ class DashboardHandler(BaseHTTPRequestHandler):
355
  "timezone": cfg.get("timezone", "北京时间 (UTC+8)"),
356
  "max_turns": cfg.get("max_turns", "90"),
357
  "memory": cfg.get("memory", {}).get("provider", "none") if isinstance(cfg.get("memory"), dict) else "none",
358
- "no_mcp": cfg.get("no_mcp", False),
359
  "compress": cfg.get("compress", {}).get("enabled", False) if isinstance(cfg.get("compress"), dict) else False,
360
  },
361
  }
 
355
  "timezone": cfg.get("timezone", "北京时间 (UTC+8)"),
356
  "max_turns": cfg.get("max_turns", "90"),
357
  "memory": cfg.get("memory", {}).get("provider", "none") if isinstance(cfg.get("memory"), dict) else "none",
358
+ "mcp_servers": list(cfg.get("mcp_servers", {}).keys()) if isinstance(cfg.get("mcp_servers"), dict) else [],
359
  "compress": cfg.get("compress", {}).get("enabled", False) if isinstance(cfg.get("compress"), dict) else False,
360
  },
361
  }