limai
理脈 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 edittiene el mismo contrato estricto que en MCP: debe preceder unfs read; el estado observado se persiste enfs-state.json; la secuencia «leer → editar» se mantiene incluso entre distintas llamadas; los cambios externos siempre se interceptan (--forcepuede saltárselo).Un
fs writeexitoso 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.comForma 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
allowedRootsdentro deconfig.json;.gitpermanentemente bloqueado;fs_editdebe requerir a unfs_readprevio (la guardia de STALE_READ version); el textoolddebe 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-providerpreserves their rutea — the extraction fidelity stays.Stipulation adds capability
readto pages with PDF (d762209): limitingfs_readreturns a structural errorUNSUPPORTED_MEDIA_PDFfor.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_fallbackarise; otherwise withmatchto lowercase; otherwiseINVALID_REGEXnot 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.
This server cannot be installed
Maintenance
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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