Skip to main content
Glama

理脈 limai

El sistema nervioso compartido de 理華 y 理月: un órgano independiente extraído del personaje según primeros principios.

Derivación según primeros principios

Manifestación en el personaje

Esencia

Módulo

Herramientas MCP

Pulso periódico + retroceso ante errores (on_idle.mjs)

Ritmo

heartbeat.mjs

heartbeat_now・vitals_latest・vitals_history

Captura de pantalla / ventanas / portapapeles (screenshot.mjs)

Visión

vision.mjs

screen_capture(devuelve la imagen)・list_windows・read_clipboard

todo-tasks.json + fusión ponderada del pulso

Intención

todo.mjs

todo_add・todo_list・todo_update

Memoria a largo plazo (nombre × palabra clave × contenido)

Memoria

memory.mjs

memory_add・memory_search・memory_list・memory_forget

Las seis herramientas de archivos de o-pi

Acción de archivos

filesys.mjs

fs_ls/read/write/edit/find/grep

o-pi websearch / webfetch

Acción de red

web.mjs

web_search・web_fetch

Descartado: el prompt de tarea del LLM en el rol (la personalidad no se traslada) y el disparador de eval de JS en memoria (seguridad). Esencia conservada: la idea de planificación aleatoria ponderada → el backoff del pulso; la guardia STALE_READ; la protección SSRF; la lectura acotada.

Arranque

npm install
npm run start          # ① stdio → Claude Desktop / Cursor 等本地客戶端
npm run serve:http     # ② HTTP MCP → GPT 客戶端 / 區網 / 遠端
npm run tick           # ③ 手動跑一次心跳(驗證感知層)

CLI diseñado para agentes de IA

limai shot                       # → {"file":...,"width":1920,"height":1080,"bytes":...}
limai win                        # → {"foreground":...,"windows":[{process,title},…]}
limai clip [--json]              # 剪貼簿原文走 stdout(利於管線)
limai tick                       # 心跳一次,生命徵象 JSON
limai web search <q>             # → [{title,url,snippet},…]
limai web fetch <url>            # 正文走 stdout、中繼 stderr;--json 得全包裝
limai fs ls|read|write|edit|find|grep …
limai mem … / limai todo …       # 同前

Contrato del agente:

  • Salida JSON por defecto; los códigos de error van prefijados a los mensajes de stderr (STALE_READ: …); el código de retorno distinto de cero indica fallo.

  • fs edit tiene el mismo contrato estricto que en MCP: debe preceder un fs read; el estado observado se persiste en fs-state.json; la secuencia «leer → editar» se mantiene incluso entre distintas llamadas; los cambios externos siempre se interceptan (--force puede saltárselo).

  • Un fs write exitoso también deja registro de observación y puede conectar con un edit (la misma regla de o-pi de «write con éxito → edit»).

A nivel arquitectónico, MCP es solo una de las interfaces sobre el módulo central: el mismo conjunto de vision/web/filesys/memory/todo/heartbeat sirve a la vez de submayormente CLI y llamada a las herramientas MCP; las dos interfaces comparten los mismos datos y el mismo contrato de seguridad.`

La primera ejecución crea automáticamente ~/.limai/(config.json・memory.json・todo.json・vitals.*・screenshots/) e imprime el token.

Clientes compatibles

local

// claude_desktop_config.json
{ "mcpServers": { "limai": { "command": "node", "args": ["F:\\fount開發項目\\理脈\\src\\cli.mjs", "serve", "--stdio"] } } }

Red local / misma máquina (GPT-Client como Cherry Studio, LobeChat, OpenWebUI…)

node src/cli.mjs serve --http                # 預設 127.0.0.1:8931
# 對區網開放:--host 0.0.0.0 --token <強密碼>
{ "type": "http", "url": "http://192.168.x.x:8931/mcp",
  "headers": { "Authorization": "Bearer <token>" } }

ChatGPT en la nube (Connectors / modo desarrollador)

ChatGPT no puede alcanzar tu localhost; para esto necesita HTTPS público — una línea de túnel:

cloudflared tunnel --url http://127.0.0.1:8931
# → https://xxxx.trycloudflare.com
  • Forma la URL del conector: https://xxxx.trycloudflare.com/msp?token=<token>(la mayoría de clientes GPT no permiten header primitives, por lo que el token se acepta en la query).
    La solución long range: Talhline Funnel (portas no abiertos) o el "reverse proxy" Caddy con dominio propio.

Perímetros de seguridad

  • Archivos: bloqueados por allowedRoots dentro de config.json; .git permanentemente bloqueado; fs_edit debe requerir a un fs_read previo (la guardia de STALE_READ version); el texto old debe position único.

  • Red: rejected localhost / dirección de privado / link-* (SSRF); dirección segura contra saltos de redirection; límite de 2MB; timeout de 30s.

  • Autenticación: Bearer/query-token en toda la HTTP; por defecto se vincula únicamente a 127.0.0.1.

  • Privacidad: el pulso solo registra la ventana de Título–Clip keyboard (hash+); con cambios se guarda un vistazo (primeros 60 chars);

Significado (latido) Semantic del heredado en 理華

15 unreduced min (configurable heartbeat.intervalMin). Cada latido recoge: ventana activa, ventanas (más 8), inactividad (s), cambios del portapapeles, todo abierto count. En un fallo el intervalo se duplica ×2 (up to 8×) y se restaura con éxito. El log se resalta en vitals.ndjson.

Upgrade (o-pi)

  • 2026-08-23 founded : esta cantidad de commits es intern (HTE restructuring in file-tools/web-tools/filesystem/lsp); the behavior contracts not applying; duckduckgo-html-provider preserves their rutea — the extraction fidelity stays.

  • Stipulation adds capability read to pages with PDF (d762209): limiting fs_read returns a structural error UNSUPPORTED_MEDIA_PDF for .pdf (introducing pdfjs breaks the zero-dep principle, stays as cast list for "roadmap").

  • OS-skill URI / bash / approval paroes should be wherever domain, not in the scope.

  • Same-second review (d795f92 new approval UI) : only the src/approval/* touched + TUI; file-tools/web-tools unchanged. Then geneldtofull the contract of grep: bad regex fallback to exact only literal matches → literal_fallback arise; otherwise with match to lowercase; otherwise INVALID_REGEX not attempt empty; the tests pass.

Sponsor and Source (License & Attribution)

This project is distributed under GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later); see the complete terms in LICENSE.

Code source statements:

  • File tools (src/core/filesys.mjs: ls/read/write/edit/find/grep) y web tools (src/core/web.mjs: web_find/web_fetch) contract + design deren from Orion-zhen/o-pi (Pi's design docs under AGPL-3.0). 理脈 is an independent implementation (zero-depencies), not code copying, backscrapped/opening "back-project" under the same AGPL clause.

  • The shared pulse/todo/memory/vision prims were extracted from steve02081504/fount; the character design by 拉华 case is MIT. Only arch-insights (inflated-time poll backoff, weighted queuing, memory of name × keyword × content) are for reference, not the code.

El MCP protocol base on official @modelcontextprotocol/sdk.

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

  • Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/win10ogod/Rimai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server