关于 Eigenstyle
Eigenstyle 是基于 Rust 的个人写作风格档案系统,提供 MCP 服务、终端 UI 和桌面 GUI。它从语料库测量风格指纹,并支持草稿检查、范文检索及明确控制档案更新。
主要功能
- 01量化写作风格指纹
- 02草稿评分与完整性检查
- 03按体裁检索范文
- 04语料导入与清单
- 05应用前预览指纹变化
- 06可编辑特征校正
适用场景
- 01依据个人风格档案检查草稿
- 02检索特定体裁的段落范例
- 03向风格档案语料库添加写作样本
- 04重新计算前审查指纹变化
MCP 相关
MCP 服务提供草稿检查、范文检索、档案和语料查询、样本导入及指纹重新计算工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
eigenstyle —— 将你的写作风格档案用作工具
一个 Rust 工作区,可将对 Matt Porter 写作风格的精确分析指纹(于 2026-10-11 在 matt-voice skill 中构建)转化为一个持续演进的系统:Agent 可调用的 MCP 服务、终端 UI 和 GPUI 桌面 GUI——全部基于同一个核心库,并由你不断扩充的语料提供支持。
这份指纹基于实测,而非感觉:句长分布、功能词特征、标点使用率、括号内插语、连字符复合词、保留与断言的平衡、第一人称使用率——使用的特征、分词器、舍入方式和留一法区间校准,均与 skill 的 Python 参考实现一致。奇偶性测试套件证明 Rust 引擎在种子语料上复现了 Python 的数值(特征和区间完全一致;留出文本的检查器差值吻合:JAS 为 1.196,Cureus 为 1.088,合成文本为 1.253)。
三种前端
| 前端 | 二进制文件 | 运行方式 |
|---|---|---|
| MCP 服务(stdio) | eigenstyle | cargo run --release -p eigenstyle(添加 --home <dir> 可选择存储目录) |
| 终端 UI | eigenstyle-tui | cargo run --release -p eigenstyle-tui |
| 桌面 GUI | eigenstyle-gui | cargo run --release -p eigenstyle-gui(Wayland 会话) |
三种前端共用一个存储目录:$EIGENSTYLE_HOME,否则使用
~/.local/share/eigenstyle/。首次打开时,会从 skill 的语料(6 篇文本,共 7,674 个词)、指纹和易读的档案中初始化数据。
MCP 工具
| 工具 | 功能 |
|---|---|
check_draft | 为草稿评分(文本或文件):判定为 CLOSE / DRIFTING / OFF-VOICE / UNRELIABLE,给出差值、主要影响特征和避用列表命中项。指定 source_text/source_file_path 后,还会核对源文中的每个数字和 URL,并报告被删去的数字以及被删去或损坏的 URL。 |
get_exemplars | 返回所选体裁的收录样本中的原文示例段落(Agent 起草文本时使用的检索库)。 |
get_profile | 返回易读的档案和指纹摘要(有效值及经用户修正的项目)、区间和避用列表。 |
ingest_sample | 添加写作内容(text / file_path / url 三选一)。标题、体裁和作者身份(sole/blended)为必填项——绝不会悄然设置默认归属。绝不重新计算指纹。 |
list_corpus | 返回语料清单:元数据、词数、收录标记和总计。 |
recompute_fingerprint | 根据收录样本重新计算指纹并重新推导区间。dry_run: true 可预览由此产生的特征差值和区间变化,但不会保存——应用前请先检查。 |
协议:基于 stdio 传输、以换行符分隔的 JSON-RPC 2.0,采用 estate 的 research-mcp 模式。全程失败即关闭:帧格式错误、未知工具、严格的参数架构,以及各处明确命名的大小限制。
添加你的写作内容
- MCP:Agent 调用
ingest_sample(或者你要求抓取 URL——核心库会在限制范围内抓取,并将 HTML 转换为文本)。 - TUI:打开
Add writing屏幕(按键2)——填写标题、体裁、作者身份开关和来源,然后输入文件路径(按 Enter 加载)或粘贴文本;按 Ctrl+S 保存。 - GUI:打开
Add writing标签页——通过可点击的输入框填写相同字段;作者身份按钮可在 sole/blended 之间切换;点击 Add sample 保存。
所有流程都遵循相同规则:样本只追加不删除(如需将样本排除在指纹计算之外,请将其排除,而不是删除历史记录),并且绝不会悄然更改指纹——必须显式重新计算,而且先预览 dry-run 结果。
修正指纹
指纹仪表板(TUI 的 Fingerprint 屏幕、GUI 的 Fingerprint 标签页)会列出每项特征的均值和标准差。选择一项,输入修正后的均值并应用:该值会作为用户修正值,覆盖计算所得的参考值。重新计算后仍会保留修正;显示修正值的位置都会标明,并且可以一次性全部清除,精确恢复为计算所得的值。
借鉴同类工具的模式
- HumanifyMe — 可编辑、易于阅读的指纹,以及确定性的草稿后验证关卡(
check_draft中检查数字缺失 / URL 损坏)。 - brandvoice-mcp — 摄取 → 分块 → 范例检索库(
get_exemplars按体裁提供语料段落)。 - book-writer-mcp / Eden — 按体裁划分的风格配置文件(仪表板显示汇总后的各体裁统计数据),以及构建器流程:在保存之前先显示推导出的规则以供修正(重新计算试运行预览 → 应用)。
- Arcitext — 通过明确的禁用清单进行语气匹配,并由检查器强制执行;可在 Profile 视图中编辑。
边界(已命名并强制执行)
样本文本 ≤ 256 KiB 且 ≥ 10 个词元;草稿 ≤ 1 MiB,少于 200 个词时判定为 UNRELIABLE(仍会执行完整性 / 禁用项检查);URL 抓取 ≤ 1 MiB、15 秒,仅限 HTTP(S),最多重定向 3 次;JSON-RPC 行 ≤ 4 MiB;指纹构建至少需要 2 个包含的文本片段(少于此数量时无法进行留一校准),否则会安全失败。
平台说明
- 工具链固定为 Rust 1.99.0(
rust-toolchain.toml),与现有环境一致。GPUI 版本精确固定:gpui-ce = =0.2.2+gpui_ce_platform = =0.1.0(特性 wayland、x11)。 - 已在 Wayland 上验证 GUI 渲染(primo 的桌面环境为 Hyprland;冒烟测试在无头 wlroots 合成器下运行)。在 Xvfb/X11 下,此 GPUI 构建会显示黑屏 — 请使用 Wayland 会话。
- GUI 文本输入仅支持点击聚焦、追加 / 退格(暂不支持选择 / IME)— 这是已说明的限制,记录在 PROGRESS.md 中。
布局
crates/eigenstyle-core corpus store, stylometry, fingerprint build, checker, fetch
crates/eigenstyle stdio MCP server (6 tools)
crates/eigenstyle-tui ratatui TUI (eigenstyle-tui --snapshot <screen> renders headlessly)
crates/eigenstyle-gui GPUI GUI
screenshots/ smoke evidence (GUI corpus + fingerprint views, probe)
许可证
本项目采用 Apache License, Version 2.0 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。