Eigenstyle

ai.qompass由 qompass.ai 发布v0.1.1更新于 Nov 2, 2026

MCP server for a personal voice profile: corpus, fingerprint, and draft-checking tools.

已验证STDIO仅桌面知识与记忆开发者工具

概览

AI 生成的概览

本地 MCP 服务器,维护一份可量化的写作风格档案,让助手据此检查草稿、取用范例段落并添加样本。

可以做什么
  • 对草稿(文本或文件)按风格档案打分,给出判定、偏差值、主要影响特征和避用清单命中,并可核对来源文本中的数字与网址
  • 按体裁返回已收录样本中的原文范例段落
  • 读取可读版档案与指纹摘要,包括区间、避用清单和用户修正
  • 从文本、文件路径或抓取的网址添加写作样本,标题、体裁和署名必填
  • 列出语料清单,含元数据、字数与总计
  • 从已收录样本重新计算指纹与区间,保存前可先做试运行预览
适用场景
适合希望助手按自己可量化的文风起草或修改文字,并检查草稿是否偏离该文风的场景;也适合把自己的写作语料作为起草时的范例库。
运行要求
以 stdio 本地进程运行;README 说明需从 Rust 工作区构建并使用固定工具链,另提供打包的 mcpb 版本。数据存放在 EIGENSTYLE_HOME 或默认本地目录,首次打开时写入初始语料。未声明认证或 API 密钥。桌面 GUI 需要 Wayland 会话。
安装前请注意
添加样本和重新计算指纹会写入本地存储;重算需显式触发并提供试运行预览,样本为只追加。按网址添加样本时服务器会抓取该页面。GUI 仅限 Wayland,文本输入功能受限。草稿与样本会作为工具参数发送给助手。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Eigenstyle,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

eigenstyle — your voice profile as a tool

A Rust workspace that turns a measured writing fingerprint (built 2026-10-11 in the matt-voice skill) into a living system: an MCP server agents can call, a terminal UI, and a GPUI desktop GUI — all over one core library, all fed by a corpus you keep adding to. [License: Apache 2.0]

The fingerprint is measured, not vibes: sentence-length distribution, function-word profile, punctuation rates, parentheticals, hyphenated compounds, hedge/assertive balance, first-person rate — the same features, tokenizer, rounding, and leave-one-out band calibration as the skill's Python reference. A parity test suite proves the Rust engine reproduces the Python numbers on the seed corpus (features and bands identical; checker deltas on the held-out pieces match: JAS 1.196, Cureus 1.088, synthetic 1.253).

The three front-ends

Front-endBinaryRun it
MCP server (stdio)eigenstylecargo run --release -p eigenstyle (add --home <dir> to choose the store)
Terminal UIeigenstyle-tuicargo run --release -p eigenstyle-tui
Desktop GUIeigenstyle-guicargo run --release -p eigenstyle-gui (Wayland session)

All three share one store: $EIGENSTYLE_HOME, else ~/.local/share/eigenstyle/. First open seeds it from the skill's corpus (6 pieces, 7,674 words), fingerprint, and readable profile.

MCP tools

ToolWhat it does
check_draftScore a draft (text or file): verdict CLOSE / DRIFTING / OFF-VOICE / UNRELIABLE, delta, top contributing features, avoid-list hits. With source_text/source_file_path, also accounts for every number and URL from the source — dropped numbers and dropped/broken URLs are reported.
get_exemplarsVerbatim exemplar paragraphs from included samples of one genre (the retrieval bank agents draft against).
get_profileThe readable profile + fingerprint summary (effective values, which are user-corrected), bands, avoid list.
ingest_sampleAdd writing (exactly one of text / file_path / url). Title, genre, and authorship (sole/blended) are required — attribution is never silently defaulted. Never recomputes the fingerprint.
list_corpusThe corpus manifest: metadata, word counts, included flags, totals.
recompute_fingerprintRecompute from included samples and re-derive the bands. dry_run: true previews the induced feature deltas and band shifts without saving — review before you apply.

Protocol: MCP over stdio on rmcp 3.8 (the official Rust MCP SDK), modern era only (protocol version 2026-07-28). Sessions open with server/discover and every request carries its protocol version in _meta — there is no initialize handshake. Legacy-era contact is refused at the stdio front door with the typed -32022 unsupported-version error. Fail-closed throughout: malformed frames, unknown tools, strict argument schemas, named size bounds everywhere.

Versions (1.0 release): the MCP server eigenstyle, the TUI, and the GUI are 1.0.0. eigenstyle-core stays at 0.1.0 — that version is already published on crates.io and does not move with this release.

Adding your writing

  • MCP: an agent calls ingest_sample (or you ask for a URL fetch — the core fetches it, bounded, HTML reduced to text).
  • TUI: Add writing screen (key 2) — title, genre, authorship toggle, source, then a file path (Enter loads it) or pasted text; Ctrl+S saves.
  • GUI: Add writing tab — same fields as clickable boxes; the authorship button toggles sole/blended; Add sample saves.

In every flow the same rules hold: samples are append-only (exclude a sample from the fingerprint instead of deleting history), and the fingerprint never changes silently — recompute is explicit, with a dry-run preview first.

Correcting the fingerprint

The fingerprint dashboard (TUI Fingerprint screen, GUI Fingerprint tab) lists every feature's mean/SD. Select one, type a corrected mean, apply: the value is stored as a user correction overlaid on the computed reference. Corrections survive recompute, are marked wherever they show, and can be cleared wholesale to restore computed values exactly.

Patterns adapted from same-kind tools

  • HumanifyMe — the editable, human-readable fingerprint, and the deterministic post-draft verify gate (dropped numbers / broken URLs in check_draft).
  • brandvoice-mcp — ingest → chunk → exemplar retrieval bank (get_exemplars serves corpus paragraphs by genre).
  • book-writer-mcp / Eden — per-genre style profiles (the dashboard shows pooled per-genre stats), and the builder flow where induced rules are shown for correction before they are saved (recompute dry-run preview → apply).
  • Arcitext — tone-fit via an explicit avoid list, enforced by the checker and editable in the Profile view.

Bounds (named, enforced)

Sample text ≤ 256 KiB and ≥ 10 tokens; draft ≤ 1 MiB, < 200 words = UNRELIABLE verdict (integrity/avoid checks still run); URL fetch ≤ 1 MiB, 15 s, HTTP(S) only, ≤ 3 redirects; JSON-RPC line ≤ 4 MiB; fingerprint build needs ≥ 2 included pieces (leave-one-out calibration is undefined below that) and fails closed otherwise.

Platform notes

  • Toolchain pinned to Rust 1.99.0 (rust-toolchain.toml), matching the estate. GPUI is pinned exactly: gpui-ce = =0.2.2 + gpui_ce_platform = =0.1.0 (features wayland, x11).
  • GUI rendering is verified on Wayland (primo's desktop is Hyprland; the smoke runs under a headless wlroots compositor). Under Xvfb/X11 this GPUI build presents black frames — use a Wayland session.
  • GUI text entry is click-to-focus, append/backspace only (no selection/IME yet) — a stated limit, tracked in PROGRESS.md.

Layout

crates/eigenstyle-core   corpus store, stylometry, fingerprint build, checker, fetchcrates/eigenstyle    stdio MCP server (6 tools)crates/eigenstyle-tui    ratatui TUI (eigenstyle-tui --snapshot <screen> renders headlessly)crates/eigenstyle-gui    GPUI GUIscreenshots/        smoke evidence (GUI corpus + fingerprint views, probe)

License

This project is licensed under the Apache License, Version 2.0.

来源:README.md,提交 db3351d

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.1最新Oct 19, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分