内容
# call-laura
[](./LICENSE)
[](#status)
[](https://crates.io/crates/call-laura-core)
**基于Laura Serna Gaviria的Human–AI协同进化研究的文档结构化评审。** 一个MCP(模型上下文协议)服务器:任何代理提交计划或文档,返回四个视角的结构化发现——没有不透明的评分,每个发现都引用了它所反应的文本的确切范围。
**完全确定性和本地化。** 没有网络调用,没有API密钥,没有外部依赖。相同的文档始终产生相同的评审——每个发现都追溯到一个明确的关键词/模式匹配,您可以直接在`laura-core/src/lenses/`中读取。这是故意的权衡:真正的语义理解换来完全的可重复性、透明度和零成本。参见下面的“为什么它不同”以了解这种权衡的实际成本。
与Laura Serna Gaviria(Emergent Interaction Lab)、Simeon Kepp(RFI-IRFOS)和Claude共同设计。是RFI-IRFOS开放核心模型的一部分。
## 状态
**上线**,2026-07-12。Laura审查了实际样本输出后才发布。
`call-laura-core`和`laura-mcp`已在crates.io上发布;`laura-api`已部署在[laura-api.fly.dev](https://laura-api.fly.dev),包括`/mcp`([Smithery](https://smithery.ai)列表使用的)和`/review`。32个单元测试,已针对本地stdio服务器和实时公共URL进行端到端验证。
许可证条款在`LICENSE-LGPL`/`LICENSE-BSL`中仍然明确标记为起始提案,待Laura本人最终确认——在依赖它们进行重用之前,请阅读每个文件顶部的说明。
早期版本的该工具为每个镜头调用LLM(NVIDIA托管)。由于NVIDIA账户遇到持久的`403 Forbidden`,尽管`/v1/models`成功(账户侧的权益差距,经5个不同模型确认),该路径被删除——而不是推迟。相反,每个镜头被重写为确定性的关键词/模式匹配。这被证明是一个真正的改进,而不仅仅是变通方法:零成本,零外部依赖,并且每个决策现在都可以完全在源代码中检查,而不是生活在LLM的判断调用中。
## 归属和来源——在信任任何输出之前请阅读本节
这是README中最重要的部分。下面四个镜头中的每一个都带有强制性的`source`字段,其输出正好是以下之一:
| `source` | 含义 |
|---|---|
| `laura-8layer-2025` / `laura-uip-2025` | 直接来自Laura Serna Gaviria自己的已发布框架——参见她的OSF预印本,*Human–AI Interaction Emergent Co-Evolution*。 |
| `rfi-irfos-operationalization` | 她在论文中提到的概念,但该项目对如何衡量/应用它的定义——**并非直接引用她的定义**。 |
| `rfi-irfos-addition` | 完全不是来自她的框架。 |
只有`eight_layer`和`uip_check`直接来自她——特别是,类别/规则名称。该分类方法(关键词匹配)将这些名称应用于您的文本,是该项目自己的操作化,而不是她的论文中指定的算法。`resonance`使用与她的论文中的CCET指标(比较段落,衡量相似性)类似的想法,但应用于不同的问题(静态文档中的跨部分一致性,而不是实时对话中的回合间稳定性)和更粗糙的机制(共享单词,而不是共享含义)——它明确**不是**CCET。`ecocentric`完全是RFI-IRFOS自己的添加,与她的研究无关;它包含在此工具中,因为共同设计它的团队选择包含它,而不是因为它基于她的研究。
这种纪律直接继承自该项目所提取的生产平台(`emergent-interaction-lab`),出于同样的原因坚持同样的标准:**如果一个评审工具带有命名研究人员的身份,只有当您可以验证每个发现时,它才具有完整性——它是她的工作还是该项目自己的判断调用。**
## 为什么它不同
- **没有不透明的评分。** 每个发现都命名一个`claim`,引用输入文本中它所反应的确切`evidence`范围,并带有`severity`。
`uip_check`/`ecocentric`发现仅从文本中实际存在的范围构建——没有单独的“生成然后验证”步骤可能出错,发现*是*匹配的句子。
- **四个独立的镜头,而不是一个混合的裁决:**
| 镜头 | 检查内容 | 方法 | 来源 |
|---|---|---|---|
| `eight_layer` | 根据Laura的8层分类法对每个部分进行分类,标记完全缺失的层 | 每个层的关键词触发器 | `laura-8layer-2025` |
| `uip_check` | 她的UIP的四个规则:陈述的约束、未经支持的绝对主张、未经验证的“已完成”主张、不可审计的结论 | 句子级模式匹配 | `laura-uip-2025` |
| `resonance` | 标记不同部分之间可能一致的词汇重叠率低(例如目标与成功标准) | 局部词频余弦相似度 | `rfi-irfos-operationalization` |
| `ecocentric` | 缺乏环境/下游/长期/系统考虑 | 关键词-类别存在检查 | `rfi-irfos-addition` |
- **诚实、明确的局限性。** 每个镜头的`attribution_note`都明确说明了关键词匹配无法实现的功能(缺少短语、无关意义上的单词使用,没有真正的语义理解)。这不是回避——这是该版本做出的权衡的实际形状,而不是通过自信的输出暗示。
- **诚实的局部失败。** 镜头如果没有可分类的输入(例如`resonance`在单节文档上)会报告其自己的`error`字段,而不是伪造结果——`call_laura_core::review`独立运行每个镜头。
## 快速开始
```bash
cargo install laura-mcp
claude mcp add laura -s user -- laura-mcp
```
无需API密钥,无需环境设置。然后,从任何MCP连接的代理:
```jsonc
// tools/call, name: "review_plan"
{ "text": "# 目标\n...\n# 成功标准\n..." }
// 省略“lenses”以运行所有四个;或请求一个子集,例如[“eight_layer”,“uip_check”]
```
## 主机API
`laura-api`已部署到Fly.io。同一服务器上的两个表面:
- `POST /mcp` — MCP JSON-RPC over HTTP,无密钥,仅限速率限制。这是[Smithery](https://smithery.ai)列表所指向的内容,因此任何MCP连接的代理都可以使用`review_plan`,无需设置。
- `POST /review` — 普通REST便捷端点,需要`Authorization: Bearer <key>`,JSON主体/响应形状相同。`GET /health`用于健康检查。默认情况下,每个IP每分钟10个请求——滥用/DoS卫生防护,而不是成本防护(由于每个请求没有外部API成本)。
## 工作区布局
```
laura-core/ 纯镜头逻辑 — 包名“call-laura-core”在crates.io上,开源,LGPL-3.0-or-later
laura-mcp/ stdio MCP服务器二进制文件(BSL-1.1)
laura-api/ Fly托管的HTTP接口,仅部署,不发布(BSL-1.1)
laura-team/ 专有15代理“SWAT团队”模块 + Laura编排器(BSL-1.1)
— 付费分析层;免费4镜头核心位于laura-core
```
## 许可证
`call-laura-core`:LGPL-3.0-or-later。`laura-mcp`/`laura-api`:商业源许可证1.1,包含非商业/研究使用许可。**草案,待Laura Serna Gaviria确认** — 参见`LICENSE-LGPL`和`LICENSE-BSL`顶部的说明。完整条款见`LICENSE`。