mcpField
S
Signs of AI Writing

Signs of AI Writing

本地服务
github.com/peopleworks科研与教育286 周前更新

关于 Signs of AI Writing

Signs of AI Writing 是面向教育者和写作者的英西双语写作诚信工具集。它通过高亮证据和修改建议解释写作特征,并比较文档中的相似段落,而非给出黑箱判定。

主要功能

  1. 01可解释的 AI 写作特征检查
  2. 02逐项建议与实时改写
  3. 03查找文档间的相似段落
  4. 04跨语言改写检测
  5. 05浏览器本地分析

适用场景

  1. 01与学生一起审阅写作特征
  2. 02修改被标记为疑似 AI 风格的文本
  3. 03比较提交内容中的相似段落
  4. 04检查跨语言的疑似改写

MCP 相关

README 将 MCP 服务列为从其他应用使用该工具集的一种方式,但没有说明其提供的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
nugetSignsOfAI.Mcp0.8.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

✍︎ AI 写作迹象

Live demo Windows app License: MIT .NET 10 Blazor WebAssembly GitHub stars

NuGet Core NuGet CLI NuGet MCP Available on CodeGuilds

你是教师吗?从这里开始 → — 用浅白的语言介绍它能做什么、不能做什么,并用图表展示错误率,而非列成表格。没有徽章,没有区间表示法,也无需安装。支持英语和西班牙语。

试用在线演示 → — 支持英语和西班牙语,可在浏览器中运行。无需注册,分析过程不会上传任何内容。

在编辑器中使用 → — 适用于 Claude Code、Codex、Gemini CLI 和 Cursor 的 Agent 技能,只需一行命令:npx skills add peopleworks/SignsofAI -g。 它遵循引擎评分所用的相同规则进行编辑,绝不凭空编造数字。

下载 Windows 应用 → — 将同一工具放进一个窗口中。安装程序无需管理员权限,并附带 .NET 运行时;如果你不想安装,也可以下载 .zip。

Signs of AI Writing 实时分析文本:随着 AI 写作特征不断出现,分数逐渐升高,随后每项特征都会被标出并附上修改建议

在线演示的真实录屏 — 分数会随着输入实时更新,每处标注都附有修改建议。

想看视频而不是阅读? 这段两分钟的介绍视频: English · Español

一套免费的隐私优先工具包,旨在维护学术诚信与写作诚信。它能做两件事:

  1. 去 AI 化检查器 — 标记 AI 生成文本的特征(过度使用的词汇、惯用的修辞手法、机械的句子节奏),并针对每一项发现,告诉你如何修改。
  2. 原创性检查器 — “这是他们写的,还是抄的?” 对比文档并找出它们共享的段落 — 包括逐字抄袭、改写后的释义(即使跨语言也能识别),以及整个群体的概览 — 并将其作为供人类判断的证据。不是黑箱式判定。

🔒 分析完全在你的浏览器中运行,运行分析时不会上传任何内容。 无需账户,没有 遥测,也没有能看到你文本的服务器。

有四项功能可以将文本发送到设备之外,只有在你主动启用后才会运行,并且会在你选择时 在界面中明确说明:改写检查和困惑度测量(两者都会调用你或我们托管的服务器)、你提供 自己的 API 密钥时使用的实时改写——密钥保留在你的设备上,文本会发送给你选择的服务提供商——以及 针对某个独特短语的可选网页抽查,只有在运营方配置了搜索服务提供商时才会启用。

其他所有内容——每条规则、评分、字符扫描、引用交叉核对、写作者基线和报告——都在本地计算并保留 在本地。桌面应用中的困惑度测量也在本地完成。

Windows 应用还可以检查是否发布了更新版本,因为它没有自动更新功能,而且永远不会有。此操作 不属于上述四项:它不会发送文本、账户信息或标识符——只会向 GitHub 的公开发布列表发送一次请求, 与浏览器发出的请求相同。它会在首次检查前征求同意,每天最多检查一次,而且绝不会替你下载或运行任何内容。

由 Pedro Hernández (PeopleWorks) 使用 .NET 10 和 Blazor WebAssembly 构建,Microsoft .NET MVP——献给 .NET 和 Microsoft 开发者社区,por y para la comunidad educativa。

仓库:https://github.com/peopleworks/SignsofAI

支持英语和西班牙语,两者通过两种相互独立的方式实现:

  • 界面可通过工具栏即时切换 EN ⇄ ES——无需重新加载页面,按浏览器分别记忆设置,首次访问时会遵循浏览器语言。翻译是任何人都可以贡献的纯 JSON 文件:请参阅翻译界面。
  • 分析会使用按语言划分的规则包,可自动检测,也可手动选择。西班牙语规则包是针对西班牙语 AI 写作标记的原创整理。

两者刻意保持独立,这样检测结果就会使用待分析文本的语言:即使界面使用西班牙语,针对英语行文的建议仍会以英语给出,因为建议针对的是英语。


它误判人类文本的频率有多高?

每款 AI 检测器都会被问到这个问题,但几乎没有一款会回答。Docs/CALIBRATION.md 给出了答案:我们以 296 篇 2022 年以前写成的文本为依据进行测量——开放获取研究文章、两种语言中 2022 年以前的百科全书修订内容,以及 206 篇英语学习者在课堂上撰写的作文,每位学生一篇,来自 2006 年至 2012 年间收集的语料库。

在 30/100 的阈值下,它会标记其中 2 篇:观测值为 0.7%,95% 置信区间的上限为 2.4%。 推荐值依据区间中较不乐观的一端制定,而不是采用更好看的数值,因此在语料库规模较小时仍保持谨慎,并会随着语料库扩大而根据数据的变化调整。

学习者正是整个类别被指责会伤害的群体——研究报告称,其他检测器会标记他们 61% 的作文——也正是因为他们加入了测试,阈值才从之前的 25 提高到 30:在 25 的阈值下,工具标记了他们 206 篇作文中的 9 篇,占 4.4%;而 90 篇已发表文本中没有一篇被标记。报告按群体列出了这一数字,没有将其平均掉。这个数值远低于其他工具的报告值,但并非为零。

我们刻意不将其称为准确率。准确率需要一批机器生成文本,而这批文本只是当月可用模型的样本;误报率只需要人类写作文本,并且衡量的是这一类别实际造成的伤害——研究报告称,检测器会标记非英语母语者撰写的 61% 的作文,而没有任何一款检测器公开过自身的这一数据。

报告还列出了哪些规则会误判,并按排名排列。这份列表令人不安,也是这项工作最有用的成果。

语料库采用 JSON 清单,任何人都可以扩充;用于构建和测量语料库的工具位于 tools/SignsOfAI.Calibration,整个流程只需一条命令即可重新运行。请参阅 Docs/Calibration/README.md——我们最期待收到西班牙语学术写作方面的贡献。


写给教师:软件之外的部分

检测器并不是你首先需要的东西。Docs/Teaching/ 提供可直接粘贴使用的教学大纲措辞、一页可在出问题之前发给学生的说明,以及一套在问题进入正式处理程序时使用的流程——全部为双语内容,且不受任何许可、署名或授权要求限制。

这些内容都不需要使用本工具。之所以提供这些材料,是因为在课堂上应对 AI 写作的难点从来不是检测,而是在你早上开始怀疑时,却无人可问,该怎么办。这三份文件都基于同一条原则:绝不能以分数作为对学生作出决定的理由;关于作品的交流,才能解决任何软件都无法解决的问题。


1. AI 写作检查器(“Analyze”)

不同于只给出一个分数的黑盒检测器,这是一款可解释、可操作、具备教育意义的 检查器。粘贴、上传(.docx / .txt / .md),或直接开始输入——0–100 分的评分、标注、 统计信息和针对每项发现的修改建议都会随着你的写作实时更新。

类别示例
词汇delve、tapestry、multifaceted、nuanced、pivotal、underscore、showcase、testament…(根据 ChatGPT 出现后频率的超额增长加权)
修辞否定式平行结构("it's not just X, it's Y")、陈词滥调式开头("in today's digital age")、模糊措辞("it's worth noting that")、虚假范围、三段式
句法避免系动词("serves as a…", "a testament to…")、冗长表达("plays a crucial role")
统计节奏变化度——句子长度的均匀程度。机器文本通常在 0.0–0.2;人类散文在 0.6–0.8
  • 句子节奏可视化——按句显示的柱状图,让节奏变化度一目了然。

  • 针对每项发现的建议——每个被标记的特征都附有具体修改方法及其研究依据。

  • 实时改写(在设备上运行,无需密钥)——并排显示你的文本和去 AI 化版本,每次按键都会重新生成,随着修改进行,评分也会降低。它基于规则包运行——无需模型、网络或 API 密钥——因此即时且免费。每项改动都会列出可选方案,还提供一键式保留此处不改选项。提供三种力度,从仅修改最明显的特征到连空洞的强调词也一并删除。

    它只做诚实而言可通过替换词语完成的修改,并且会拒绝可能改错的编辑:它不会把 “delve into” 改成 “examine into”,不会删掉 "not just X, it's Y" 结构所依赖的 “just”,也不会在阴性名词前加上 “el”。节奏和修辞结构需要真正的改写,因此仍会列在建议中——面板还会说明有多少项。

  • 润色(可选,自带密钥)——连接 AI 服务提供商,一键改写被标记的文本。可选 Anthropic(claude-opus-4-8,可在浏览器中使用)、OpenAI / DeepSeek、Azure OpenAI 或 Ollama(本地运行,无需密钥)。 凭据仅保存在你的浏览器中,并会直接发送给服务提供商。

  • 修改前后对比以及可分享的结果卡片(PNG 摘要,绝不包含你的文本)。

  • 自定义目录(自带规则)——粘贴禁用词或导入规则包 JSON;合并会实时生效。

  • 目录页面——可搜索的 AI 写作特征库,涵盖两种语言,并通过浏览器内的 BM25 索引进行排序。

带注释的文本,其中每个 AI 写作特征都已高亮显示,旁边是解释并逐项给出修改方法的建议列表

区别就在这里:不是“87% 是 AI”,而是哪些词、为何被标记,以及可以改写成什么。

2. 原创性检查器(“Originality”)

“这是 AI 写的、你复制的,还是你为了掩盖抄袭而改写的?” 放入两份或更多文档—— 一篇论文及其来源、一批学生作业——就能准确查看它们有哪些共同内容。我们的原则很明确:呈现证据并高亮标出,由人来判断。我们绝不指责。 这不是像 Turnitin 那样的全网索引。

阶段检查内容方式运行位置
A — 原文复制原文相同的段落,即使大小写或重音符号改变也能识别忽略重音符号和大小写的单词 k-shingles + 贪心最长匹配切分,并逐个词元验证🔒 在你的浏览器中
B — 改写措辞不同的复制内容——意思相同、用词不同——即使跨语言也能识别句子嵌入(Google EmbeddingGemma-300M,ONNX)+ 余弦相似度🌐 可选服务(需主动启用)
C — 班级整体对比一目了然地查看整班学生之间的抄袭关系批量上传 + N×N 重合度热力图;点击单元格即可检查对应文档对🔒 在你的浏览器中
D — 网络抽查检查某段内容是否已在线存在提取文档中最具辨识度的段落,并提供一键精确短语搜索(Google/Bing/DuckDuckGo)🔒 在你的浏览器中
  • 共同段落证据——在并排显示的两份文档中高亮匹配内容;标题中的重合度数字与高亮内容完全一致(证据就是评分)。
  • 阶段 B 是唯一会将内容发送出设备的功能。 该功能需主动启用,且会在界面中明确说明;只会将你选择检查的句子发送到 PeopleWorks 服务。其他所有内容都留在你的设备上。
  • 阶段 D 刻意保持诚实:我们无法索引整个网络,因此不会假装能做到,而是标出值得检查的段落并准备好搜索内容——只有在你点击搜索后,才会发送内容。 服务运营者可以启用可选的自动网络搜索(见下文可选服务)。

班级重合度矩阵,显示哪些文档共享文本,并在下方列出相似度最高的文档对

一目了然地查看整个班级:每份文档与其他所有文档逐一对比,再查看共同段落本身——呈现证据,不作指控。

3. 可预测性指标(可选服务)

以诚实的方式重新诠释困惑度。一个小型语言模型(Qwen2.5-0.5B 或 Microsoft Phi-4-mini,int8 ONNX) 用于衡量文本措辞的可预测程度/通用程度。这不是 AI 与人类的判定结果——在带标签的语料库中,两者的得分重叠严重(记忆下来的人工文本也会被判为可预测)。我们会如实呈现可预测性,将其作为众多信号之一,并按语言进行校准。此功能需主动启用,在 PeopleWorks 服务上运行。模型会按需加载,并在空闲时卸载,以减轻服务负担。

4. 在其他应用中使用 — MCP 服务

以上所有功能也可通过 SignsOfAI.Mcp 提供给 Claude Desktop 和任何 MCP 客户端。它是一个模型上下文协议服务(基于官方的 ModelContextProtocol SDK,使用 stdio 传输)。由于 引擎位于 SignsOfAI.Core 中——纯 .NET,无需浏览器——服务只需将其作为工具公开:

工具功能运行位置
analyze_ai_writing评分 + 判定 + 发现(附修正建议)+ 统计数据🔒 设备本地
check_originality比较 2 篇或更多文档的重合率和共有段落🔒 设备本地
search_catalog搜索 AI 写作特征目录(EN/ES)🔒 设备本地
extract_distinctive_phrases提取独特短语 + 现成的网页搜索链接🔒 设备本地
inspect_characters检查不可见字符和冒充拉丁字母的字符,并标出行号/列号🔒 设备本地
check_citations检查文档中与自身参考书目矛盾之处,并标出各处行号🔒 设备本地
compare_to_baseline根据同一作者以往作品的基线,评估一篇作品的表现🔒 设备本地
write_report将完整分析写成文档,供保存、转发或提交委员会🔒 设备本地
measure_predictability通过可选服务计算困惑度🌐 服务(选择加入)
check_paraphrase通过 EmbeddingGemma 查找改写或翻译后的匹配内容🌐 服务(选择加入)

前 8 项完全在本机运行;后 2 项会明确告知你,它们会将文本发送到服务 (端点通过 SIGNSOFAI_API_ENDPOINT 环境变量设置)。

它已发布到 NuGet,包名为 SignsOfAI.Mcp,因此无需构建。将 Claude Desktop 指向它:

// %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "signs-of-ai": {
  "command": "dnx",
  "args": ["SignsOfAI.Mcp", "--yes"]
}}}

或者只需安装一次全局工具——dotnet tool install --global SignsOfAI.Mcp——然后使用 "command": "signsofai-mcp"。详情请参阅 src/SignsOfAI.Mcp/README.md。

VS Code:该包附带 MCP 清单,因此其 NuGet 页面上有一个 MCP Server 选项卡,其中已生成配置——将其复制到 .vscode/mcp.json 即可。

5. 将其用作 Agent 技能 — /signs-of-ai

技能有独立页面 →,其中并列展示了两种模式,以及它不会做什么。

更喜欢在编辑器中工作?SKILL.md 是一个可直接使用的 Agent 技能,能清理草稿中的低质 AI 文风——或者报告文本中带有哪些特征——支持 英语和西班牙语。它是对同一套 rules.en.json / rules.es.json 分类体系的易读提炼,因此编辑时遵循的规则与引擎评分所用规则相同。

# Claude Code, Codex, Gemini CLI, Cursor and the rest, in one command
npx skills add peopleworks/SignsofAI -g
# …or as a Claude Code plugin, from the marketplace manifest in this repository
/plugin marketplace add peopleworks/SignsofAI
/plugin install signs-of-ai

然后:

/signs-of-ai            <your draft>          # edit mode: rewrite + change summary
/signs-of-ai is this AI slop?  <the text>     # examine mode: the tells, quoted, no rewrite

该技能有意绝不伪造数值评分,也绝不声称文本由谁撰写——若要获得经过校准的 0–100 评分、突发性、原创性、引文、作者基线或困惑度,它会将任务交给此引擎处理(网页应用、CLI 或上文的 MCP 工具)。它沿用报告中的同样 6 条规则,规定一项发现可以声称什么,其中包括任何评分都必须附带的错误率。请参阅 skill/README.md。


6. 在写作时使用 — Word 加载项

Word 中的任务窗格。按下“开始”选项卡上的读取特征,它就会读取打开的文档并在侧边栏中给出答复:无需复制到浏览器,无需上传文件,也无需离开正在写作的页面。

**它使用的是同一个引擎,而非精简版。**所有规则、字符扫描、引文交叉核对和判定规则都通过 SignsOfAI.UI 提供。网页应用和桌面应用也通过这个类库进行呈现。Word 只是第三个宿主。

为什么任务窗格是这款工具的合适位置

任务窗格就是一个浏览器。WebAssembly 引擎只需下载一次,就会在本地设备上运行,这意味着文档永远不会被上传。这正是 Web 应用已经作出的保证,而且是在文档实际所在的应用中作出的保证。

这可不是无关紧要的小事。这个类别中的其他加载项都会把你的文本发送到 API,因为它们的分析是在服务器上进行的。我们的不是,所以根本没有地方可以发送文本。而且,清单申请的是 ReadDocument,而非 ReadWriteDocument:Word 本身会强制确保此加载项只能读取你的文档,而不是要你相信网站上的一句话。

实际文档中的效果

Word 网页版中打开的 Signs of AI Writing 任务窗格,显示 0/100 的评分;由于文档有 357 个单词,未给出判定;下方报告了六个不间断空格

这是 Word 网页版(图中可以看到地址栏),打开了一份 357 个单词的文档。这个窗格值得仔细看两遍。

它拒绝给出判定,并说明了原因:此版本所依据的语料库中,没有短于 649 个单词的文本,所以低于这个长度就没有可供比较的内容,评分也就*"既不能证明文本是机器写的,也不能证明文本是人写的。"* 请参阅校准说明。

但它仍然找到了六个不间断空格,因为字符扫描反映的是文件中的事实,而不是对其文风的判断。它没有长度门槛,因此无论文本多长都适用;它也完全不涉及作者身份,面板对此明确作了说明。

做一个什么都能回答的工具很容易。这是另一种工具。

安装

加载项页面 → — 介绍它的功能、两种安装方式,以及它拒绝做的事,提供英语和西班牙语版本。

简而言之:网页版中依次选择“主页”→“加载项”→“更多加载项”→“我的加载项”→ “上传我的加载项”,并选择 src/SignsOfAI.Word/manifest.xml。Windows 版 Word 没有上传按钮,而是读取共享文件夹目录;src/SignsOfAI.Word/README.md 中介绍了具体步骤。

PowerPoint 是有意做成另一款产品的

演示文稿很少有 649 个单词,所以在 PowerPoint 中使用同一款加载项,大多只会像上面那样:不给出判定。这么做没错,但用处不大。适用于幻灯片篇幅的,是没有长度门槛的部分——字符扫描和具名特征——所以在那里真正值得问的是**“这份演示文稿是否带有文本人性化工具的痕迹”**,而不是“这是不是 AI 写的”。这是另一款产品,目前尚未开发。


架构

SignsOfAI.slnx
├─ src/
│  ├─ SignsOfAI.Core            # Pure C# engines (no UI/server deps)
│  │  ├─ Analyzers/             # Lexical, Pattern, Burstiness (IAnalyzer)
│  │  ├─ Originality/           # OriginalityChecker (shingles+tiling), ParaphraseFinder,
│  │  │                         #   DistinctivePhraseExtractor
│  │  ├─ Rewriting/             # LocalRewriter — on-device de-AI-ifying, no model or network
│  │  ├─ Rules/Packs/           # rules.en.json, rules.es.json (embedded, community-extensible)
│  │  ├─ Text/                  # Tokenizer, sentence splitter, language detector, statistics
│  │  └─ AiWritingAnalyzer      # Public facade: Analyze(text, language)
│  ├─ SignsOfAI.UI              # The whole interface (Analyze, Originality, Catalog) — shared by
│  │  │                         #   both hosts below, so a change lands in web and desktop at once
│  │  └─ wwwroot/i18n/          # UI translations: en.json, es.json + locales.json (community-extensible)
│  ├─ SignsOfAI.Web             # Host: Blazor WebAssembly, runs in the browser
│  ├─ SignsOfAI.Desktop         # Host: WPF + WebView2, runs offline and reaches local models
│  ├─ SignsOfAI.Cli             # `dotnet tool` for CI pipelines
│  ├─ SignsOfAI.Mcp             # MCP server (stdio): the engine as tools for Claude Desktop / any client
│  └─ SignsOfAI.Perplexity.Api  # Optional ASP.NET Core server: predictability + embeddings
│     ├─ Engine/                #   OnnxPerplexityEngine, OnnxEmbeddingEngine (lazy-load + idle-unload)
│     └─ Config/                #   model profiles, calibration, embedding + web-search options
└─ tests/
   └─ SignsOfAI.Core.Tests      # xUnit (120+, incl. guards for the community locale files)

Core 引擎与 UI 和服务器解耦,CLI、Blazor 应用和 API 都可以复用它们。

运行

dotnet run --project src/SignsOfAI.Web
# then open http://localhost:5019

测试

dotnet test

命令行与 CI(dotnet tool)

此代码检查工具以全局工具的形式发布,因此你可以在 CI 中将其用于文风检查:

dotnet tool install --global SignsOfAI.Cli

signsofai check README.md                 # pretty report
signsofai check article.docx --lang en    # Word documents too
signsofai check post.md --json            # machine-readable
signsofai check post.md --max-score 40    # exit 1 if it reads too much like AI → fails CI
signsofai check post.md --rules my-style.json   # your custom catalog
signsofai check ensayo.txt --lang es --reader-lang en --report out.md

--lang 表示文本所用的语言;--reader-lang 表示输出的阅读者所用的语言——证据报告、字符扫描和引文交叉核查都是面向阅读者,而非描述文风。默认情况下,它与文本语言相同,因此只有两者不同时才需要传入此参数。检测结果会有意保留文本所用的语言:西班牙语特征会用西班牙语说明。

分析引擎也可以作为库使用 — dotnet add package SignsOfAI.Core:

var result = new SignsOfAI.Core.AiWritingAnalyzer().Analyze(text, "auto");
Console.WriteLine($"{result.OverallScore}/100 — {result.Verdict}");

可选服务(SignsOfAI.Perplexity.Api)

客户端本身即可完整运行;此服务仅为可选启用功能提供支持(可预测性计量器和 Phase B 改述检查)。它基于 ASP.NET Core(.NET 10),托管 ONNX 模型,并采用延迟加载和空闲卸载,因此占用资源很少。模型文件不在 git 中,首次使用时会下载。

客户端默认连接到托管实例;如需运行自己的实例,请在应用的服务设置中设置端点,并为你的来源配置 CORS。

启用可选的自动网页搜索(Phase D)

默认情况下,Phase D 是设备端的一键搜索体验(无需密钥,点击前不会发送任何内容)。运营人员还可以通过在服务端配置搜索提供商来启用自动网页搜索——这适合用于演示(密钥不会接触浏览器)。除非完成配置,否则此功能始终关闭:

// appsettings.json (or environment variables)
"WebSearch": {
  "Enabled": true,
  "Provider": "brave",              // Brave Search API (free tier); provider-abstracted
  "ApiKey": "",                     // prefer the BRAVE_API_KEY environment variable
  "MaxPhrasesPerDoc": 8,
  "MaxResultsPerPhrase": 5
}

启用后,服务会公布此功能,客户端也会提供自动“搜索网页”操作,报告包含某段文字原文的网页。如果功能关闭、配额用尽或发生错误,界面会回退到手动一键搜索,不会导致功能失效。

扩展规则

在 src/SignsOfAI.Core/Rules/Packs/rules.<lang>.json 中添加条目——词汇规则匹配单个词语词元,模式规则则是用于匹配多词特征的正则表达式。每条规则都会设置 weight、severity 和 suggestion。

词汇规则还可以告知实时改写器应如何处理,而 suggestion 无法做到这一点:该字段是写给人的说明(“混合、融合、变化——或者直接说出具体事物”),程序不应从说明中推断意图。

{ "id": "lex.utilize",  "terms": ["utilize", "utilizes"], "weight": 3.5, "severity": "Medium",
  "suggestion": "use",  "replacements": ["use"] },              // what to substitute, best first
{ "id": "lex.just",     "terms": ["just"],                "weight": 1.0, "severity": "Info",
  "suggestion": "empty intensifier — usually deletable", "delete": true }   // remove the word instead

这两个字段都是可选的。如果没有设置,改写器会退而从 suggestion 中读取以逗号分隔的列表,并拒绝猜测其他内容——单独一个词可能是替换项(“使用”),也可能是描述(“口头禅”),而要区分两者就需要了解语言。因此,没有显式字段的规则只会被报告,不会自动编辑;这就是为什么每条内置规则都明确写出了修正方式(有一项测试会确保这一点)。

翻译界面

如果你懂这种工具尚未支持的语言,就可以添加该语言——而且不需要懂 C#。

界面使用纯 JSON:每种语言对应 src/SignsOfAI.UI/wwwroot/i18n/ 中的一个文件,另有一个 locales.json 清单。添加语言只需复制 en.json,翻译右侧的值,再向清单添加一行。无需构建步骤,也无需阅读代码,语言切换器会自动识别新语言。

不必一次完成。 任何未填写的键都会回退到英语,因此,不完整的翻译也会以部分翻译的形式发布,而不会变成满页空白——翻译导航和主页后,提交拉取请求,之后随时可以回来补完其余内容。贡献者会在语言切换器中获得署名。

每个拉取请求都会运行一组语言区域测试,并准确指出错误——例如键名拼写错误、条目重复或 {0} 占位符丢失——这样就能依据测试结果审核翻译,而不必逐项对照阅读 JSON。这些测试特意不会因翻译不完整而失败。

完整指南 → Docs/TRANSLATING.md

部署

Blazor 客户端是静态文件包(可免费托管在任何地方)。项目包含以下 GitHub Actions:

  • GitHub Pages(deploy-pages.yml)——依次选择 Settings → Pages → Source:“GitHub Actions”。此工作流会重写 base href,并写入 SPA 的 404.html 回退页面。
  • Azure Static Web Apps(azure-static-web-apps.yml)——将部署令牌添加为仓库机密。

可选服务是标准的 ASP.NET Core 应用(对 SignsOfAI.Perplexity.Api 项目运行 dotnet publish)。

致谢

由 Pedro Hernández — PeopleWorks 创建,他是 Microsoft MVP for .NET。检测标记基于 AI 文体分析的语言学研究,详见 Docs/GoogleResearch.md。

chat.* 规则——助手自身的轮次,保留在文档中——改编自 amanmaqsood/prose-humanizer(MIT)的模式集。它是一项写作技能,而非检测器。与此处的所有内容一样,这些规则在加入规则包前都先经过校准语料筛选,六条规则的得分均为零。同一来源的另外 12 个候选规则未被纳入,因为它们会触发 2022 年之前的写作内容。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。