最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hermes Desktop安裝Hindsight 完整指南(含踩坑)

  發(fā)布時間:2026-07-20 10:28:15   作者:Merge · Merged   我要評論
本文詳細介紹了如何在 Windows 10 環(huán)境下為 Hermes Desktop 安裝配置 Hindsight 長期記憶系統(tǒng),內(nèi)含hindsight安裝、踩坑記錄和MCP配置等核心技巧,幫你徹底解決記憶丟失問題,獲得穩(wěn)定可靠的長期記憶體驗

本文記錄從 0 到 1 在 Hermes Desktop 中安裝、配置 Hindsight 長期記憶系統(tǒng)的完整過程,包含所有踩過的坑和解決方案?;?Windows 10 + Hermes Desktop + Hindsight v0.8.3 環(huán)境。

一、Hindsight 是什么

Hindsight 是一個專為 AI Agent 設(shè)計的長期記憶系統(tǒng)(Long-term Memory),通過知識圖譜、實體解析和多策略檢索,讓 AI 擁有跨會話的持久記憶能力。

核心能力:

  • hindsight_retain:存儲信息到長期記憶
  • hindsight_recall:語義搜索歷史記憶
  • hindsight_reflect:跨記憶合成推理

三層架構(gòu):

hindsight-api                ← 后端引擎(數(shù)據(jù)平面)
    ↓                           http://localhost:8888
hindsight-control-plane      ← Web 管理界面(控制平面)
    ↓                           http://localhost:9998
Hermes Desktop               ← 客戶端集成

二、前置條件

組件版本要求說明
Windows10/11本文基于 Windows 環(huán)境
Node.js≥ v18.xHindsight 運行依賴
npm≥ v9.x通常隨 Node.js 安裝
Python3.11+Hermes Desktop 自帶
PostgreSQL可選Hindsight 默認使用 SQLite,生產(chǎn)環(huán)境建議 PostgreSQL

三、安裝 hindsight-api(后端引擎)

3.1 安裝 Hindsight 包

# 全局安裝 hindsight-api(推薦)
npm install -g hindsight-api

# 或者本地安裝
npm install hindsight-api

3.2 配置環(huán)境變量(永久生效)

關(guān)鍵:使用 setx 命令永久設(shè)置,設(shè)置后必須重新打開終端才能生效!

坑點警示:set 命令只在當(dāng)前 CMD 窗口生效,關(guān)閉后全部丟失;setx 寫入注冊表永久保存。之前用 set 配置后重啟終端導(dǎo)致所有變量丟失,出現(xiàn) 401/400 錯誤。

REM ===== LLM 配置(DeepSeek)=====
setx HINDSIGHT_API_LLM_PROVIDER "deepseek"
setx DEEPSEEK_API_KEY "sk-你的deepseek密鑰"
setx HINDSIGHT_API_LLM_MODEL "deepseek-v4-flash"

REM ===== Embedding 配置(SiliconFlow)=====
setx HINDSIGHT_API_EMBEDDINGS_PROVIDER "openai"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_API_KEY "sk-你的硅基流動密鑰"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_BASE_URL "https://api.siliconflow.cn/v1"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_MODEL "Qwen/Qwen3-Embedding-0.6B"

REM ===== Reranker 配置(SiliconFlow)=====
setx HINDSIGHT_API_RERANKER_PROVIDER "siliconflow"
setx HINDSIGHT_API_RERANKER_SILICONFLOW_API_KEY "sk-你的硅基流動密鑰"
setx HINDSIGHT_API_RERANKER_MODEL "BAAI/bge-reranker-v2-m3"

REM 設(shè)置后需重新打開終端

3.3 啟動 hindsight-api

# 直接啟動(前臺)
hindsight-api
# 指定參數(shù)啟動
hindsight-api --host 0.0.0.0 --port 8888 --log-level info

驗證啟動成功:

curl http://localhost:8888/health
# 返回: {"status":"healthy","database":"connected"}

四、安裝 Control Plane(Web 管理界面)

# 通過 npx 啟動(無需全局安裝)
npx @vectorize-io/hindsight-control-plane --api-url http://localhost:8888 --port 9998

啟動后訪問:http://localhost:9998

五、Hermes Desktop 集成配置

5.1 方式一:通過 Hermes Desktop 客戶端界面配置(推薦)

Hermes Desktop 支持直接在客戶端界面中配置 Hindsight,無需手動編輯配置文件。

操作步驟:

  1. 打開 Hermes Desktop 客戶端
  2. 進入設(shè)置頁面:點擊左下角 ?? 設(shè)置圖標
  3. 找到「記憶提供方」或「Memory Provider」選項卡
  4. 選擇 Provider:從右上角下拉菜單中選擇 Hindsight
  5. 展開 Hindsight settings:點擊向下的箭頭展開配置區(qū)域
  6. 填寫配置參數(shù):
參數(shù)當(dāng)前值說明
ModeLocal External連接已存在的 Hindsight 實例
API key(空)Hindsight API 認證密鑰
API URLhttp://0.0.0.0:8888Hindsight API 服務(wù)地址
Bank IDhermes記憶庫名稱/命名空間
Recall budgetmid召回預(yù)算(low/mid/high)

注意:API key 字段在 Local External 模式下通常不需要填寫(本地服務(wù)無認證),但如果看到 API key not set 紅色提示,可留空或填寫任意值。

  1. 點擊右下角「Save」按鈕保存配置
  2. 重啟 Hermes Desktop 使配置生效

配置界面截圖參考:

驗證配置:

  • 重啟后, 嘗試發(fā)送一條消息,檢查是否能正常存儲到 Hindsight
  • 訪問 http://localhost:9998 查看 Control Plane「記憶」頁面是否有新內(nèi)容

5.2 方式二:手動編輯配置文件(備用)

如需手動配置,或客戶端界面配置未生效時,可直接編輯配置文件:

memory:
  provider: hindsight
  memory_enabled: true
  user_profile_enabled: true

同時創(chuàng)建 hindsight/config.json

{
  "mode": "local_external",
  "api_url": "http://0.0.0.0:8888",
  "bank_id": "hermes",
  "recall_budget": "mid"
}

5.3 驗證 Hermes 集成

無論通過哪種方式配置,重啟 Hermes Desktop 后都需要驗證:

  1. 檢查工具列表:在對話界面中應(yīng)該能看到以下三個工具

    • hindsight_retain — 存儲信息到長期記憶
    • hindsight_recall — 語義搜索歷史記憶
    • hindsight_reflect — 跨記憶合成推理
  2. 測試存儲功能:發(fā)送一條消息,檢查是否能正常存儲到 Hindsight

  3. 驗證 Control Plane:訪問 http://localhost:9998,查看「記憶」頁面是否有新內(nèi)容

六、踩坑記錄(重點?。?/h2>

? 坑 1:MCP 包名錯誤 —@hindsight/mcp-servervshindsight-mcp

現(xiàn)象:
配置 Hindsight MCP 時,需要參數(shù)的工具(retain、recall、reflect 等)全部返回 422 錯誤,因為工具定義中 properties 為空導(dǎo)致無法傳參;而 getBankStats 等不需要參數(shù)的只讀工具正常工作。

根因:
使用了錯誤的 npm 包名 @hindsight/mcp-server,該包與 Hindsight 服務(wù)端 API 不匹配。

解決:

# 錯誤的
npm install -g @hindsight/mcp-server

# 正確的
npm install -g hindsight-mcp

正確包信息:

  • 包名:hindsight-mcp
  • 版本:1.1.3
  • 維護者:jeanibarz
  • GitHub:hindsight-ai/hindsight-ai

? 坑 2:Embedding 模型兼容性問題 — BAAI/bge-large-zh-v1.5 返回 20015 錯誤

現(xiàn)象:
Mental Model(tech-stack、ops-playbook)刷新失敗,content 始終為空。SiliconFlow 的 BAAI/bge-large-zh-v1.5 模型返回 20015 錯誤(參數(shù)無效)。

排查過程:

  1. 最初懷疑是 SiliconFlow 賬戶欠費(余額 -29.30)
  2. 實際測試發(fā)現(xiàn):同一 API Key 下,Qwen/Qwen3-Embedding-0.6B 模型完全正常
  3. 確認是模型兼容性問題,非欠費

解決:

方案 A:更換 embedding 模型(永久生效)

setx HINDSIGHT_API_EMBEDDINGS_OPENAI_MODEL "Qwen/Qwen3-Embedding-0.6B"
REM 設(shè)置后需重新打開終端

關(guān)鍵參數(shù):

  • 維度:1024(與原有數(shù)據(jù)庫兼容,無需遷移數(shù)據(jù))
  • API 端點:保持 https://api.siliconflow.cn/v1
  • Provider:保持 openai

關(guān)鍵教訓(xùn):之前用 set 臨時設(shè)置,重啟終端后失效導(dǎo)致問題復(fù)發(fā),改用 setx 永久生效。

修復(fù)驗證:

  • tech-stack:成功生成 4775 字符
  • ops-playbook:成功生成 5856 字符

? 坑 3:DeepSeek-v4-flash 在 structured reflect 路徑下返回空內(nèi)容

現(xiàn)象:
Mental Model 刷新時,user-profile 和 hindsight-setup 成功,但 tech-stack 和 ops-playbook 的 content 為空。

根因分析:

  • 成功的模型走同步路徑
  • 失敗的模型走異步 Worker 路徑(structured reflect)
  • DeepSeek-v4-flash 在 structured reflect 路徑下返回空內(nèi)容(finish_reason=length
  • 而 plain reflect 路徑正常工作

解決:

方案 A:更換 reflect LLM 模型(永久生效)

setx HINDSIGHT_API_LLM_MODEL "xopglm52"
REM 或其他支持 structured output 的模型
REM 設(shè)置后需重新打開終端

方案 B:分離 LLM 配置(永久生效)

REM retain 繼續(xù)使用 DeepSeek-v4-flash(簡單事實提取)
setx HINDSIGHT_API_LLM_MODEL "deepseek-v4-flash"

REM reflect 換用其他模型(需要 structured output 支持)
setx HINDSIGHT_API_REFLECT_LLM_MODEL "xopglm52"
REM 注意:此配置需 Hindsight v0.8.4+ 支持

關(guān)鍵教訓(xùn):set 命令只在當(dāng)前終端會話生效,重啟后丟失;setx 才能永久保存到系統(tǒng)環(huán)境變量。之前用 set 配置后重啟終端導(dǎo)致失效,改用 setx 解決。

? 坑 4:環(huán)境變量傳遞問題導(dǎo)致 SiliconFlow Reranker/Embeddings 401/400 錯誤

現(xiàn)象:
Hindsight API 的 SiliconFlow Reranker 和 Embeddings 因環(huán)境變量傳遞問題導(dǎo)致 401/400 錯誤,LLM reflect 正常。日常對話和記憶存儲不受影響,但 mental model 自動刷新和深度搜索受影響。

解決:

編寫專用啟動腳本 start-hindsight.bat,確保環(huán)境變量正確傳遞(永久生效):

@echo off
REM start-hindsight.bat
REM 確保所有環(huán)境變量正確設(shè)置后啟動 hindsight-api
REM 注意:以下變量已通過 setx 永久設(shè)置,此處僅為保險起見

set HINDSIGHT_API_LLM_PROVIDER=deepseek
set DEEPSEEK_API_KEY=sk-xxx
set HINDSIGHT_API_LLM_MODEL=deepseek-v4-flash

set HINDSIGHT_API_EMBEDDINGS_PROVIDER=openai
set HINDSIGHT_API_EMBEDDINGS_OPENAI_API_KEY=sk-xxx
set HINDSIGHT_API_EMBEDDINGS_OPENAI_BASE_URL=https://api.siliconflow.cn/v1
set HINDSIGHT_API_EMBEDDINGS_OPENAI_MODEL=Qwen/Qwen3-Embedding-0.6B

set HINDSIGHT_API_RERANKER_PROVIDER=siliconflow
set HINDSIGHT_API_RERANKER_SILICONFLOW_API_KEY=sk-xxx
set HINDSIGHT_API_RERANKER_MODEL=BAAI/bge-reranker-v2-m3

hindsight-api

永久設(shè)置環(huán)境變量(推薦先用 setx):

setx HINDSIGHT_API_LLM_PROVIDER "deepseek"
setx DEEPSEEK_API_KEY "sk-xxx"
setx HINDSIGHT_API_LLM_MODEL "deepseek-v4-flash"
setx HINDSIGHT_API_EMBEDDINGS_PROVIDER "openai"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_API_KEY "sk-xxx"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_BASE_URL "https://api.siliconflow.cn/v1"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_MODEL "Qwen/Qwen3-Embedding-0.6B"
setx HINDSIGHT_API_RERANKER_PROVIDER "siliconflow"
setx HINDSIGHT_API_RERANKER_SILICONFLOW_API_KEY "sk-xxx"
setx HINDSIGHT_API_RERANKER_MODEL "BAAI/bge-reranker-v2-m3"
REM 設(shè)置后需重新打開終端

關(guān)鍵教訓(xùn):set 只在當(dāng)前 CMD 窗口生效,關(guān)閉后全部丟失;setx 寫入注冊表永久保存。之前用 set 配置后新開 CMD 窗口啟動 hindsight-api,導(dǎo)致所有變量丟失,出現(xiàn) 401/400 錯誤。

? 坑 5:attrs模塊未安裝導(dǎo)致no attribute 'models'錯誤

現(xiàn)象:
Hermes 啟動時報錯 module has no attribute 'models'。

解決:

# 必須在 Hermes 的 venv 中安裝,不能裝在系統(tǒng) Python 中
pip install attrs

# 然后重啟 Hermes Desktop

永久生效方案(Windows):

setx PATH "%PATH%;C:\Users\gongc\AppData\Local\hermes\venv\Scripts"
REM 設(shè)置后需重新打開終端

設(shè)置后需重新打開終端,確保 Hermes 的 venv 在 PATH 中優(yōu)先。

關(guān)鍵教訓(xùn):set 只在當(dāng)前終端生效;setx 才能永久保存到系統(tǒng)環(huán)境變量。之前用 set 配置 PATH 后重啟終端失效,改用 setx 解決。

? 坑 6:Mental Model 刷新異步路徑 Bug(Worker 隊列問題)

現(xiàn)象:
tech-stack 和 ops-playbook 的 Mental Model 刷新失敗,執(zhí)行 11 次 refresh 全部失敗,而 user-profile 和 hindsight-setup 成功。

排查過程:

  1. 最初懷疑是 Worker 異步路徑存在 bug——任務(wù)被 queued 但從未執(zhí)行或結(jié)果未保存
  2. 后續(xù)確認根因是 SiliconFlow embedding 模型問題(見坑 2)
  3. LLM 請求 875 次全部成功,排除 LLM 問題

解決:

  1. 修復(fù) embedding 模型(更換為 Qwen/Qwen3-Embedding-0.6B)
  2. 重啟 hindsight-api 服務(wù)
  3. 重新觸發(fā) Mental Model 刷新

? 坑 7:Windows CMD 中 curl 命令操作 Mental Model

清空并刷新 Mental Model:

REM 清空 tech-stack
curl -X PATCH http://localhost:8888/banks/hermes/mental-models/tech-stack -H "Content-Type: application/json" -d "{\"content\":\"\",\"history\":[]}"}

REM 清空 ops-playbook
curl -X PATCH http://localhost:8888/banks/hermes/mental-models/ops-playbook -H "Content-Type: application/json" -d "{\"content\":\"\",\"history\":[]}"}

REM 觸發(fā)刷新
curl -X POST http://localhost:8888/banks/hermes/mental-models/tech-stack/refresh
curl -X POST http://localhost:8888/banks/hermes/mental-models/ops-playbook/refresh

注意: setx 設(shè)置的環(huán)境變量需要重新打開終端才能生效。

七、Mental Model 配置最佳實踐

7.1 推薦配置參數(shù)

基于踩坑經(jīng)驗,以下配置組合最穩(wěn)定:

{
  "source_query": "技術(shù)棧與工具配置",
  "max_tokens": 2048,
  "mode": "delta",
  "tags": ["config", "tech-stack"]
}

關(guān)鍵發(fā)現(xiàn):

  • 所有成功刷新的 Mental Model 都使用了 delta 模式 + tags 篩選
  • delta 模式有空內(nèi)容時自動回退到 full 的 fallback 機制
  • max_tokens 2048 比 4096 更穩(wěn)定

7.2 四個 Mental Model 配置示例

模型名稱source_querymax_tokensmodetags
user-profile用戶畫像2048delta[user]
hindsight-setupHindsight 配置2048delta[config]
tech-stack技術(shù)棧與工具配置2048delta[config, tech-stack]
ops-playbook操作經(jīng)驗與踩坑記錄2048delta[ops, troubleshooting]

八、Cherry Studio MCP 配置

8.1 方案一:使用 stdio wrapper(推薦,已驗證)

適用場景:Cherry Studio 通過 Python 腳本直接連接本地 Hindsight API,無需 npm 包。

創(chuàng)建 wrapper 腳本:

文件:C:\Users\gongc\AppData\Local\Programs\Python\Python311\Scripts\hindsight-mcp-stdio.py

#!/usr/bin/env python3
"""
Hindsight MCP stdio wrapper for Cherry Studio
Connects to local Hindsight API via HTTP and exposes MCP tools via stdio
"""
import sys
import json
import requests
API_BASE = "http://localhost:8888"
BANK_ID = "cherry"
def handle_request(req):
    method = req.get("method")
    params = req.get("params", {})
    if method == "tools/list":
        # Return available tools
        return {
            "tools": [
                {
                    "name": "retain",
                    "description": "Store information to long-term memory",
                    "inputSchema": {
                        "type": "object",
                        "properties": {
                            "items": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "content": {"type": "string"},
                                        "context": {"type": "string"},
                                        "tags": {"type": "array", "items": {"type": "string"}}
                                    },
                                    "required": ["content"]
                                }
                            }
                        },
                        "required": ["items"]
                    }
                },
                {
                    "name": "recall",
                    "description": "Search long-term memory",
                    "inputSchema": {
                        "type": "object",
                        "properties": {
                            "query": {"type": "string"},
                            "limit": {"type": "integer", "default": 10}
                        },
                        "required": ["query"]
                    }
                },
                {
                    "name": "reflect",
                    "description": "Synthesize reasoning across memories",
                    "inputSchema": {
                        "type": "object",
                        "properties": {
                            "query": {"type": "string"},
                            "budget": {"type": "string", "default": "mid"}
                        },
                        "required": ["query"]
                    }
                },
                {
                    "name": "getBankStats",
                    "description": "Get memory bank statistics",
                    "inputSchema": {
                        "type": "object",
                        "properties": {}
                    }
                }
            ]
        }
    elif method == "tools/call":
        tool_name = params.get("name")
        arguments = params.get("arguments", {})
        if tool_name == "retain":
            items = arguments.get("items", [])
            response = requests.post(
                f"{API_BASE}/banks/{BANK_ID}/memories",
                json={"items": items}
            )
            return {"content": [{"type": "text", "text": json.dumps(response.json())}]}
        elif tool_name == "recall":
            query = arguments.get("query")
            limit = arguments.get("limit", 10)
            response = requests.post(
                f"{API_BASE}/banks/{BANK_ID}/recall",
                json={"query": query, "limit": limit}
            )
            return {"content": [{"type": "text", "text": json.dumps(response.json())}]}
        elif tool_name == "reflect":
            query = arguments.get("query")
            budget = arguments.get("budget", "mid")
            response = requests.post(
                f"{API_BASE}/banks/{BANK_ID}/reflect",
                json={"query": query, "budget": budget}
            )
            return {"content": [{"type": "text", "text": json.dumps(response.json())}]}
        elif tool_name == "getBankStats":
            response = requests.get(f"{API_BASE}/banks/{BANK_ID}/stats")
            return {"content": [{"type": "text", "text": json.dumps(response.json())}]}
    return {"error": {"code": -32601, "message": "Method not found"}}
def main():
    for line in sys.stdin:
        try:
            req = json.loads(line)
            result = handle_request(req)
            response = {
                "jsonrpc": "2.0",
                "id": req.get("id"),
                "result": result
            }
            print(json.dumps(response), flush=True)
        except Exception as e:
            error_response = {
                "jsonrpc": "2.0",
                "id": req.get("id") if 'req' in locals() else None,
                "error": {"code": -32603, "message": str(e)}
            }
            print(json.dumps(error_response), flush=True)
if __name__ == "__main__":
    main()

配置 Cherry Studio mcp.json:

文件路徑:C:\Users\gongc\AppData\Roaming\CherryStudio\mcp.json

{
  "mcpServers": {
    "hindsight-cherry": {
      "type": "stdio",
      "command": "python",
      "args": [
        "C:\\Users\\gongc\\AppData\\Local\\Programs\\Python\\Python311\\Scripts\\hindsight-mcp-stdio.py"
      ],
      "env": {
        "HINDSIGHT_API_BASE_URL": "http://localhost:8888",
        "HINDSIGHT_MCP_BANK_ID": "cherry"
      }
    }
  }
}

關(guān)鍵參數(shù):

  • HINDSIGHT_API_BASE_URL:Hindsight API 地址
  • HINDSIGHT_MCP_BANK_ID:記憶庫 ID(與 Hermes 的 bank_id 不同,這里是 cherry)
  • command:Python 解釋器路徑
  • args:wrapper 腳本完整路徑

8.2 方案二:使用 npm hindsight-mcp 包(備選)

如果 prefer npm 方式:

npm install -g hindsight-mcp

配置:

{
  "mcpServers": {
    "hindsight": {
      "command": "npx",
      "args": ["-y", "hindsight-mcp"],
      "env": {
        "HINDSIGHT_API_BASE_URL": "http://localhost:8888",
        "HINDSIGHT_MCP_BANK_ID": "cherry"
      }
    }
  }
}

注意:npm 包的 hindsight-mcp 只有 11 個工具,而本地 Hindsight API 有 32 個工具。stdio wrapper 方案可直接訪問全部 32 個工具,且無需安裝 npm 包。

兩種方案工具數(shù)量對比:

方案工具數(shù)量來源備注
npm hindsight-mcp11 個npm 包官方封裝,但工具不全
stdio wrapper32 個本地 Hindsight API推薦,功能完整

stdio wrapper 優(yōu)勢:

  • ? 訪問全部 32 個工具(npm 包只有 11 個)
  • ? 無需安裝 npm 包,直接用 Python 腳本
  • ? 與 Hindsight API 版本完全同步
  • ? 支持心智模型、指令、標簽等高級功能
    ![[Pasted image 20260629220757.png]]

8.3 驗證 MCP 工具

重啟 Cherry Studio 后,應(yīng)看到以下工具:

  • retain — 存儲記憶
  • syncRetain — 同步存儲
  • recall — 搜索記憶
  • reflect — 合成推理
  • getBankStats — 獲取統(tǒng)計信息

測試 retain:

{
  "items": [
    {
      "content": "測試 Cherry Studio 到 Hindsight 的記憶存儲",
      "context": "MCP 配置測試",
      "tags": ["test", "cherry-studio"]
    }
  ]
}

配置成功后應(yīng)看到 32 個工具:

分類工具說明
核心retain存儲記憶
sync_retain同步存儲
recall搜索記憶
reflect合成推理
記憶庫管理list_banks列出記憶庫
create_bank創(chuàng)建記憶庫
get_bank獲取記憶庫信息
get_bank_stats獲取統(tǒng)計信息
update_bank更新記憶庫
delete_bank刪除記憶庫
clear_memories清空記憶
心智模型list_mental_models列出心智模型
get_mental_model獲取心智模型
create_mental_model創(chuàng)建心智模型
update_mental_model更新心智模型
delete_mental_model刪除心智模型
refresh_mental_model刷新心智模型
clear_mental_model清空心智模型
指令list_directives列出指令
create_directive創(chuàng)建指令
delete_directive刪除指令
記憶list_memories列出記憶
get_memory獲取記憶
update_memory更新記憶
invalidate_memory作廢記憶
文檔list_documents列出文檔
get_document獲取文檔
delete_document刪除文檔
操作list_operations列出操作
get_operation獲取操作
cancel_operation取消操作
標簽list_tags列出標簽

九、開機自啟動配置

9.1 創(chuàng)建 VBS 啟動腳本

' start-hindsight.vbs
' 后臺啟動 hindsight-api,無 CMD 窗口

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd /c start-hindsight.bat", 0, False
Set WshShell = Nothing

9.2 添加到啟動文件夾

  1. Win + R,輸入 shell:startup
  2. 創(chuàng)建快捷方式,指向 start-hindsight.vbs
  3. 重啟電腦驗證

十、驗證清單

10.1 服務(wù)狀態(tài)檢查

# 1. hindsight-api 健康檢查
curl http://localhost:8888/health

# 2. Control Plane 訪問
# 瀏覽器打開 http://localhost:9998

# 3. MCP 工具列表
curl http://localhost:8888/mcp/default/tools

10.2 Mental Model 狀態(tài)檢查

# 查看所有 mental models
curl http://localhost:8888/banks/hermes/mental-models

# 檢查具體內(nèi)容長度
curl http://localhost:8888/banks/hermes/mental-models/tech-stack

正常狀態(tài):

  • user-profile:~500 字符
  • hindsight-setup:~800 字符
  • tech-stack:~4000+ 字符
  • ops-playbook:~5000+ 字符

十一、故障排查速查表

問題排查方向解決
Mental Model content 為空檢查 embedding 模型是否正常工作換 Qwen/Qwen3-Embedding-0.6B,用 setx 永久設(shè)置
422 錯誤(MCP 工具)檢查 MCP 包名是否正確用 hindsight-mcp 而非 @hindsight/mcp-server
401/400 錯誤(SiliconFlow)檢查環(huán)境變量是否正確傳遞用 setx 永久設(shè)置,或 bat 腳本啟動
no attribute 'models'attrs 模塊未安裝pip install attrs + setx PATH 永久生效
環(huán)境變量不生效是否用 setx 而非 setsetx 寫入注冊表永久保存,set 僅當(dāng)前窗口生效
端口沖突8888 或 9998 被占用使用 --port 指定其他端口

核心教訓(xùn)匯總:set = 臨時(當(dāng)前窗口),setx = 永久(寫入注冊表)。所有環(huán)境變量配置統(tǒng)一使用 setx,設(shè)置后必須重新打開終端。之前多次踩坑都是因為用了 set 導(dǎo)致重啟后失效。

十二、Windows 環(huán)境變量終極指南(防坑必備)

setvssetx對比

命令作用范圍生效時間適用場景
set當(dāng)前 CMD 窗口立即臨時測試
setx系統(tǒng)/用戶級別需重新打開終端生產(chǎn)環(huán)境、永久配置

踩坑實錄

錯誤做法(踩坑):

set HINDSIGHT_API_LLM_MODEL=deepseek-v4-flash
REM 關(guān)閉 CMD 窗口后,變量全部丟失!
REM 新開窗口啟動 hindsight-api → 401/400 錯誤

正確做法(永久生效):

setx HINDSIGHT_API_LLM_MODEL "deepseek-v4-flash"
REM 關(guān)閉當(dāng)前 CMD,重新打開新窗口
REM 變量永久保存,重啟電腦仍然有效

常用 setx 命令模板

REM ===== 一次性設(shè)置所有 Hindsight 變量 =====
setx HINDSIGHT_API_LLM_PROVIDER "deepseek"
setx DEEPSEEK_API_KEY "sk-xxx"
setx HINDSIGHT_API_LLM_MODEL "deepseek-v4-flash"

setx HINDSIGHT_API_EMBEDDINGS_PROVIDER "openai"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_API_KEY "sk-xxx"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_BASE_URL "https://api.siliconflow.cn/v1"
setx HINDSIGHT_API_EMBEDDINGS_OPENAI_MODEL "Qwen/Qwen3-Embedding-0.6B"

setx HINDSIGHT_API_RERANKER_PROVIDER "siliconflow"
setx HINDSIGHT_API_RERANKER_SILICONFLOW_API_KEY "sk-xxx"
setx HINDSIGHT_API_RERANKER_MODEL "BAAI/bge-reranker-v2-m3"

REM 設(shè)置后必須重新打開 CMD 窗口

驗證環(huán)境變量

REM 查看單個變量
echo %HINDSIGHT_API_LLM_MODEL%

REM 查看所有 Hindsight 變量
set HINDSIGHT

REM 驗證是否生效
curl http://localhost:8888/health

更新日志

日期內(nèi)容
2026-06-28首次安裝 hindsight-api,配置 DeepSeek + SiliconFlow
2026-06-28發(fā)現(xiàn) Mental Model 刷新失敗,開始排查
2026-06-29確認 embedding 模型兼容性問題,更換為 Qwen/Qwen3-Embedding-0.6B
2026-06-29所有 Mental Model 刷新成功,tech-stack 4775 字符,ops-playbook 5856 字符
2026-06-29整理本文檔

經(jīng)驗教訓(xùn): 不要輕信錯誤代碼表面含義——Hindsight 中錯誤代碼 20015 報告"參數(shù)無效",但實際根因是 embedding 失敗導(dǎo)致的模型兼容性問題。遇到 embedding 失敗時先測試同一平臺其他模型;更換 embedding 模型時需確保維度兼容(1024 維),否則需要遷移數(shù)據(jù)庫。另外,所有環(huán)境變量配置必須使用 setx 而非 set,之前多次踩坑都是因為用了 set 導(dǎo)致重啟后變量丟失,出現(xiàn) 401/400 錯誤。

到此這篇關(guān)于Hermes Desktop安裝Hindsight 完整指南(含踩坑)的文章就介紹到這了,更多相關(guān)Hermes Desktop安裝Hindsight內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hermes Desktop 多模型接入的實現(xiàn)步驟

    本文詳解訊飛星火MaaSCoding API接入過程,包括單模型配置、多模型接入、Desktop 下拉菜單不顯示的排查,以及最終的解決方案,附帶實用配置模板和避坑指南,感興趣的可以了解
    2026-07-09
  • Hermes Desktop極簡安裝教程

    Hermes Desktop 是 Hermes Agent 的桌面客戶端——和終端里用的 hermes 是同一個 agent術(shù)語解釋Agent具備自主性、能調(diào)用工具以完成目標的 AI 程序,本文介紹Hermes Desktop
    2026-07-02

最新評論

谷城县| 星座| 和平区| 潮州市| 尚义县| 翁牛特旗| 贵州省| 修文县| 高要市| 苍梧县| 台江县| 大姚县| 惠水县| 平度市| 张北县| 玉溪市| 莲花县| 井陉县| 蒙山县| 青冈县| 大方县| 衢州市| 海林市| 渭南市| 福建省| 翼城县| 揭阳市| 托里县| 获嘉县| 视频| 万载县| 页游| 应城市| 大方县| 左云县| 栖霞市| 务川| 衡山县| 元阳县| 河津市| 金坛市|