paeg-lang-style
paeg-lang-style
日本語 | English
これは何か
paeg-lang-style は中国語言語規範モジュール——三層アーキテクチャ(ユーザー要件):
層 | 能力 | コアファイル |
構文ルール制約(最重要) | 語彙/構文/句読点ルールをシステムプロンプトとして、LLM に完全な語、完全な構文、十分な副詞句の使用を指示——誰が使っても通用する |
|
禁止語フォールバック | 動的に維持する禁止語辞書(AI 腔/空虚な大言壮語/偽共感/安っぽい励まし/ネット用語)、LLM が言うことを聞かない場合の最後の砦 |
|
リライトスクリプト | LLM 出力後処理:ルール命中の検出 → ルール ID 付きフィードバック → 複数回の Self-Refine リライト |
|
PAEG 教育エージェント(v0.12-v0.71 のイテレーション)に由来し、ホスト依存ゼロの独立プラグインとして再設計——あらゆる Python プロジェクトに接続可能。
コア機能
拡張可能なルールセット:ルールを
data/rules.jsonに外部化、追記するだけでホットロード(RuleRegistry)通則で LLM を指揮:語彙完全/構文完全/十分な副詞句の通則により、LLM が単語単位で暗記するのではなく汎化する(「倦」を「疲倦」に直すだけの狭さを回避)
決定的フォールバック:列挙層ルール(「我在这里听着你。」→「我就在这里听你说说。」)で LLM が言うことを聞かない場合に備える
ルール ID フィードバックループ:リライトフィードバックに「违反 #rule-lx-001」を含め、ルール-生成-フィードバックのループを形成
動的禁止語辞書:実行時の追加/削除 + 外部 JSON のホットロード
注入型設計:
chat_fnを強制注入——自身の LLM 呼び出しを接続、ホスト結合ゼロprofile 3 段階:general / teaching / confessional——シナリオに応じてシステムプロンプトを組み立て
AI 味検出:文長の変動/接続詞密度/三段構成/ダッシュ/段落対称性の 5 次元シグナル
8+ 構文ルール:GB/T 15834 句読点規範 + 病文 6 分類 + 教学言語規範
75 項目のテスト全緑 + 20 セグメントの動作一貫性(PAEG オリジナル実装と文字列一致)
インストール
# 方式 1:pip 安装(推荐)
pip install -e /path/to/paeg-lang-style-plugin
# 方式 2:直接引用(零安装)
# 把 src/ 加入 sys.path 即可
import sys
sys.path.insert(0, "/path/to/paeg-lang-style-plugin/src")要件: Python 3.9+。サードパーティ製ランタイム依存ゼロ。
MCP サーバーとして接続(MCP のようにインストールするだけで即使用可能)
到達可能性基準(§3.109):任意のプロジェクトで
pip install後、MCP クライアント設定で宣言するだけで接続可能——ゼロコードブリッジ、ゼロホスト依存。
# 方式 1:console_scripts 入口(pip install 后)
paeg-lang-style-mcp
# 方式 2:python -m 入口(源码运行)
python -m paeg_lang_style.mcp_serverMCP クライアント設定宣言(例: config/mcp_servers.json):
{
"mcpServers": {
"paeg-lang-style": {
"command": "python",
"args": ["-m", "paeg_lang_style.mcp_server"],
"cwd": "D:/wbo-workspace/paeg_project/paeg-lang-style-plugin"
}
}
}公開 MCP ツール(7 個):
ツール名 | 機能 | read/write |
| テキスト言語規範ゲート(L0 ルール + L2 リライト) | read |
| AI 味検出 + 禁止語ヒットレポート | read |
| 動的禁止語辞書管理(追加/削除/照会) | write |
| 文法チェック(8 分類ルール) | read |
| AI 味 5 次元シグナル | read |
| システムプロンプト組み立て(誰が使っても通用) | read |
| 拡張可能ルールセット一覧 | read |
クイックスタート
3 ステップ:インストール → プロンプト組み立て → 出力処理。
from paeg_lang_style import RuleRegistry, make_refiner, gate_content
# Step 1: 语法规则拼进你的系统提示词(谁用都拼)
system_prompt = "你是教育智能体,负责讲解数学概念。"
system_prompt += RuleRegistry().build_prompt("teaching") # 通则层指挥 LLM
# Step 2: 注入你的 LLM 调用(改写脚本)
def my_llm(system, user, max_tokens=800, **kw):
return call_my_llm_api(system, user, max_tokens=max_tokens)
refiner = make_refiner(chat_fn=my_llm)
# Step 3: LLM 输出后处理(L0 规则 + L2 重写)
raw_output = "总的来说,让我们一起赋能这个时代!"
clean = gate_content(raw_output, refiner=refiner)
# → "我们把这个时代里的每一个孩子,把他们的潜能一步步唤起。"目次
コアコンセプト
三層アーキテクチャ + ルールセットデータモデル——拡張性はルール定義/検出/プロンプト生成の 3 箇所に貫通:
graph LR
A[LLM 生成文本] --> B[gate_content 守门]
B --> C{L0 规则检测}
C -->|命中列举层| D[确定性替换<br/>听着你→听你说说]
C -->|通则触发| E[L2 refiner.refine<br/>chat_fn 注入 LLM]
E --> F[反馈带规则 ID<br/>违反 #rule-lx-001]
F --> G[多轮 Self-Refine]
D --> H[输出]
G --> H
H --> I[收口: 规则再跑一遍]ルールデータモデル(Rule——外部 JSON で拡張可能):
{
"id": "rule-lx-general-001",
"type": "general",
"category": "lexical",
"pattern": "(倦|乏|沉|累|苦|慌|虚|弱|低|烦|闷|困|急|乱)",
"replacement": null,
"message": "存在单字状态词——应扩展为完整双字词形",
"prompt_block": "### 词法完整通则(指挥 LLM 泛化)...",
"severity": "high",
"enabled": true,
"source": "builtin",
"profile_tags": ["general", "teaching", "confessional"]
}type: "general"(通則層):prompt_blockをシステムプロンプトに組み込み、LLM に汎化を指示——「状態/感覚を表す一文字形容詞はすべて完全な二文字語形に拡張せよ(倦/乏/沉/累/苦/慌/虚/弱/低/烦/闷/困/急/乱)」。LLM は列挙されていない語にも自己汎化する。「倦→疲倦」だけを直すのではない。type: "explicit"(列挙層):pattern + replacementによる決定的フォールバック——LLM が言うことを聞かない場合の最後の防衛線。
外部プロジェクト接続ガイド
ユーザー要件:任意のプロジェクト/エージェントが当構文ルールモジュールを使いたい場合、どうすればよいか?
シナリオ A:単に「構文ルール制約」(システムプロンプト)だけを使いたい
from paeg_lang_style import RuleRegistry
# 语法规则拼进自己的系统提示词(谁用都拼)
system = "你是我的客服机器人。"
system += RuleRegistry().build_prompt("general") # 或 "teaching" / "confessional"build_prompt(profile) が返すルール断片(語彙完全通則/構文完全通則/十分な副詞句通則/句読点規範)を、
そのまま LLM の system prompt に連結する。これが「LLM に完全な語の使用を指示する」本質——当リライターには依存しない。
シナリオ B:「リライトスクリプト」で LLM 出力を処理したい
from paeg_lang_style import make_refiner, gate_content
# 注入你自己的 LLM 调用包装(chat_fn 强制注入,零宿主耦合)
def my_chat(system, user, max_tokens=800, **kw):
return call_your_llm(system, user, max_tokens=max_tokens)
refiner = make_refiner(chat_fn=my_chat)
clean = gate_content(your_llm_output, refiner=refiner) # L0 规则 + L2 重写
# 纯规则(不调 LLM):
clean = gate_content(your_llm_output) # 病句/违禁词确定性修正シナリオ C:「禁止語辞書」を使いたい
from paeg_lang_style import ForbiddenWords
fb = ForbiddenWords() # 内置违禁词(AI 腔/空洞大词/伪共情/网络用语)
fb.load_json("my_words.json") # 合并你自己的词库(动态扩充)
fb.add("你们公司的禁词") # 运行时新增
hits = fb.detect(text) # → ["禁词1", "禁词2"]シナリオ D:ルールを拡張したい(拡張性)
data/rules.json を編集し、ルールを 1 件追記するだけでホットロード:
{
"rules": [
{
"id": "rule-my-001",
"type": "explicit",
"category": "lexical",
"pattern": "你们行业的黑话",
"replacement": "规范说法",
"message": "这是行业黑话,应改规范",
"severity": "medium",
"enabled": true,
"source": "user",
"profile_tags": ["general"]
}
]
}reg = RuleRegistry()
reg.load("data/rules.json") # 合并(追加即生效)
reg.watch("data/rules.json") # mtime 变更自动热重载
reg.check_reload() # 每次调用前检查シナリオ E:完全統合(ルール ID フィードバックループ含む)
from paeg_lang_style import RuleRegistry, make_refiner, gate_content, get_style_prompt
# 1. 系统提示词(规则 + 风格)
system = get_style_prompt("all") + "\n" + RuleRegistry().build_prompt("general")
# 2. 改写器(规则检测 → 反馈带 ID → 重写)
refiner = make_refiner(chat_fn=my_chat)
# 3. 守门(L0 规则 + L2 重写 + 收口)
final = gate_content(raw, refiner=refiner)拡張性
拡張ポイント | 方法 | メカニズム |
構文ルール |
|
|
禁止語 |
| 実行時に動的維持 |
コーパス |
| コンストラクタの |
profile | 新ルール追加時に |
|
LLM バックエンド | 任意の | 強制注入、ホスト結合ゼロ |
ルール ID 契約 | ルール | ルール-生成-フィードバックのループ、telemetry に便利 |
保守性
ホスト依存ゼロ:ホストプロジェクトのモジュールを一切 import せず、独立してテスト可能
旧 API 互換:
rules.py/rules_enhanced.pyは薄いラッパーとして維持、後方互換75 項目のテスト:ルールセット読み込み/ホットリロード/検出/組み立て/ユーザー拡張/破損フォールトトレランスを網羅
動作一貫性:20 セグメントのサンプルが PAEG オリジナル実装と文字列一致(ゼロドリフト)
破損フォールトトレランス:JSON 破損時は前回のルールセットを保持、「空にして実行」は絶対にしない
膨張防止:
token_budgetでシステムプロンプト長を制御(デフォルト 800)明確なパターン:通則層(LLM を指揮)と列挙層(決定的フォールバック)の責務分離
組み込み構文ルール
ID | タイプ | カテゴリ | ルール | トリガーパターン | 修正 |
| 通則 | 語彙 | 語彙完全 | 一文字状態語(倦/乏/沉/累/苦/慌/虚/弱/低/烦/闷/困/急/乱) | 完全な二文字語形に拡張 |
| 通則 | 構文 | 構文完全 | 主語述語目的語/動詞目的語/前置詞/複合文 | 成分が揃っている |
| 通則 | 構文 | 十分な副詞句 | 動詞で始まる短文/孤立した単独動詞 | 時間/場所/方法/条件/対象/目的の副詞句を補う |
| 通則 | 句読点 | 句読点規範(GB/T 15834) | 読点 vs コンマ/発言後のコロン | 句読点規範 |
| 列挙 | 語彙 | 倦→疲倦 |
| 決定的置換 |
| 列挙 | 語彙 | 乏→疲乏 |
| 決定的置換 |
| 列挙 | 語彙 | 道出→说出来 |
| 決定的置換 |
| 列挙 | 語彙 | 探知→探索并了解 |
| 決定的置換 |
| 列挙 | 構文 | 「听着你」の宙吊り |
| 听你说说 |
| 列挙 | 構文 | 宙吊り目的語 |
| 目的語を補う |
| 列挙 | 構文 | 動詞目的語の搭配 |
| 有很重的分量 |
| 列挙 | 構文 | 翻訳調の冗長 |
| 動詞を直接言う |
| 列挙 | 句読点 | 発言後のコンマ |
| コンマに変更 |
十分な副詞句通則の詳細(rule-sx-general-002、ユーザー追加):
各動作/判断に十分な副詞句で明確に説明する——時間、場所、方法、条件、対象、目的。 「复习单词。」 → 「你可以在每天睡前用十分钟复习单词。」 「使用这个软件。」 → 「你可以在每天固定的时间使用这个软件。」
禁止語辞書
カテゴリ | 例 |
AI 腔の決まり文句 | 总的来说 / 综上所述 / 值得注意的是 / 让我们一起 |
空虚な大言壮語 | 赋能 / 点亮 / 激活 / 重塑 / 升级 / 全方位 |
偽共感動詞 | 接住(情绪)/ 托住 / 兜住 / 我懂你 / 心疼你 |
安っぽい励まし | 加油 / 你真棒 / 你一定可以 |
低質なネット用語 | yyds / 绝绝子 / 栓Q / 破防 / 内卷 / 躺平 / 宝子 |
空虚な賛美形容詞 | 深刻 / 全面 / 系统 / 本质 |
拡張方法:ForbiddenWords().load_json("path.json")——JSON 構造 {"extra_forbidden": [...], "ai_tells_extra": [...]}。
API リファレンス
RuleRegistry
メソッド | シグネチャ | 説明 |
|
| 全ルール |
|
| ID でルールを照会 |
|
| 実行時に追加(同 ID は組み込みを上書き) |
|
| 実行時に削除 |
|
| 外部 JSON をマージ(ホットロード) |
|
| mtime 監視 |
|
| チェックしてリロード |
|
| ヒットしたルールを検出 |
|
| 決定的置換 |
|
| システムプロンプトを組み立て |
LanguageRefiner / make_refiner
メソッド | シグネチャ | 説明 |
|
| ファクトリ(chat_fn 必須) |
|
| 複数回 Self-Refine リライト |
|
| 文法チェック |
|
| 禁止語ヒット |
|
| AI 味シグナル |
gate_content / gate_short
関数 | シグネチャ | 説明 |
|
| L0 ルール + L2 リライト |
|
| 短文の高速パス(L0 のみ) |
ForbiddenWords
メソッド | シグネチャ | 説明 |
|
| 実行時に追加/削除 |
|
| 外部辞書をマージ |
|
| ヒット語リスト |
|
| ヒット総数 |
get_style_prompt
パラメータ | 説明 |
| 全量の言語スタイルプロンプト |
| セグメント |
| 複数セグメント連結 |
設定リファレンス
環境変数
変数 | デフォルト値 | 説明 |
|
| ルールセットパスの上書き |
data/ ファイル
ファイル | 用途 | 拡張可能 |
| 構文ルールセット | はい、追記で即ホットロード |
| 禁止語辞書 | はい、動的維持 |
| コーパス few-shot | はい、置換可能 |
アーキテクチャ設計
宿主系统(任何 Python 项目 / 智能体)
system_prompt += RuleRegistry().build_prompt() <- 语法规则拼系统提示词(谁用都拼)
gate_content(output, refiner=make_refiner(chat)) <- 输出后处理
|
| 零宿主依赖(不 import 宿主任何模块)
v
paeg_lang_style(独立插件)
+------------------+ +-----------------+ +-----------------+
| rule_registry | | forbidden.py | | ai_taste.py |
| 可扩充规则集 | | 动态违禁词库 | | AI 味检测 |
+--------+---------+ +--------+--------+ +--------+--------+
| | |
v v v
+-----------------------------------------------------------+
| refiner.py(改写脚本:chat_fn 注入 + 规则 ID 闭环) |
| gate.py(守门入口:L0+L2 编排) |
+-----------------------------------------------------------+
data/(rules.json / forbidden_words.json / 语料)PAEG メインプロジェクトとの統合
PAEG 教育エージェントは唯一のアダプテーション層 infra/lang_plugin_bridge.py を通じて接続(R18/R20 ゼロ破壊の鉄則):
from infra.lang_plugin_bridge import gate_content, get_style_prompt, make_refiner
# 插件挂载 → 走插件;插件未挂载 → 静默回退 PAEG 原实现(旧文件永不删除)詳細は docs/integration_paeg.md を参照。
テスト
python -m pytest tests/ -q
# 75 项:规则集加载/热重载/检测/拼装/用户扩充/损坏容错 + 通则 + 充分状语 + 行为一致性貢献ガイド
貢献歓迎! CONTRIBUTING.md(未作成)をお読みください:
新しい構文ルール:
data/rules.jsonを編集してRuleを追加(テスト含む)新しい禁止語:
ForbiddenWords.load_jsonまたは直接PRを送って組み込み辞書に追加コードスタイル:既存のモジュール構造 + コメント規約に従う
更新履歴
詳細は CHANGELOG.md を参照。
謝辞
PAEG 教育智能体(v0.12-v0.71 イテレーション)——本プラグインはその言語仕様モジュールから抽出された
LanguageTool——ルール宣言型エンジンのパラダイム(dev.languagetool.org)
textstat——可読性測定のパラダイム(github.com/textstat/textstat)
GB/T 15834-2011《标点符号用法》——句読点規則の国家標準
Agent Skills 標準——段階的開示のパラダイム(agentskills.io)
ライセンス
MIT © 2026 PAEG Team — 詳細は LICENSE ファイルを参照。
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
Prose linter + AI-slop detector: weasel words, passive voice, hedging, and research-cited AI tells
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
Lints + auto-fixes how AI coding agents discover any new product. 24 rules, 6 tools, score 0-100.
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/Golden2002/paeg-lang-style-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server