paeg-lang-style
paeg-lang-style
한국어 | English
이것은 무엇인가
paeg-lang-style은 중국어 언어 규범 모듈 — 3계층 아키텍처(사용자 요구사항):
계층 | 기능 | 핵심 파일 |
문법 규칙 제약(가장 중요) | 어휘/문장/구두점 규칙을 시스템 프롬프트로 사용하여 LLM이 완전한 단어, 완전한 문장 구조, 충분한 부사어를 사용하도록 지휘 — 누가 사용해도 적용 |
|
금지어 최후 방어 | 동적으로 유지되는 금지어 사전(AI 말투/공허한 큰 단어/가짜 공감/싸구려 격려/인터넷 용어), LLM이 말을 안 들을 때의 최후의 보루 |
|
재작성 스크립트 | LLM 출력 후처리: 규칙 적중 감지 → 규칙 ID 포함 피드백 → 다중 라운드 Self-Refine 재작성 |
|
PAEG 교육 에이전트(v0.12-v0.71 반복)에서 유래, 호스트 의존성 제로의 독립 플러그인으로 개조 — 모든 Python 프로젝트에서 연결 가능.
Related MCP server: Chinese Sensitive Words MCP Server
핵심 기능
확장 가능한 규칙 세트: 규칙을
data/rules.json에 외부화, 추가 즉시 핫로드(RuleRegistry)일반 원칙이 LLM을 지휘: 어휘 완전성/문장 완전성/충분한 부사어 일반 원칙으로 LLM이 단어별 암기가 아닌 일반화를 수행( "倦만 疲倦으로 고치는" 편협함 방지)
결정적 최후 방어: 열거 계층 규칙("我在这里听着你。"→"我就在这里听你说说。")으로 LLM이 말을 안 들을 때 대비
규칙 ID 피드백 폐루프: 재작성 피드백에 "违反 #rule-lx-001" 포함, 규칙-생성-피드백 폐루프 형성
동적 금지어 사전: 런타임 증감 + 외부 JSON 핫로드
주입식 설계:
chat_fn강제 주입 — 자신의 LLM 호출을 연결, 호스트 결합도 제로profile 3단계: general / teaching / confessional — 시나리오별 시스템 프롬프트 조립
AI 말투 감지: 문장 길이 변이/전환어 밀도/3단 구성/대시/문단 대칭 5차원 신호
8+ 문법 규칙: GB/T 15834 구두점 규범 + 병문 6가지 유형 + 교수 언어 규범
75개 테스트 전체 통과 + 20개 구간 행동 일관성(vs 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 server 방식으로 연결(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 시스템 프롬프트에 직접 이어 붙이면 됩니다. 이것이 "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을 편집하고 규칙 하나를 추가하면 즉시 핫로드됩니다:
{
"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개 샘플 vs 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 deployed
Maintenance
Related MCP Connectors
中文内容合规检查:广告法违禁词 + AI 标识规则,逐条给出法条依据。Chinese content compliance: ad-law banned terms + AI labeling.
Chinese web novel MCP: 36 tools (outline, prose, review, coach, KD export). BYOK, no API key.
DraftCheck: flags AI-writing patterns in prose with fix hints. Deterministic linter, not a detector.
Toxicity, sentiment, NER, PII detection, and language identification tools
Related MCP Servers
- FlicenseAqualityBmaintenanceL1-aware grammar, style, translation & tone tools with 70 local rules. Zero API keys needed.4-
- AlicenseAqualityCmaintenanceDetects Chinese sensitive/forbidden words across platforms like Xiaohongshu, Douyin, Kuaishou, and Bilibili, with risk levels and replacement suggestions.240 npm104MIT
- AlicenseBqualityBmaintenanceLocal-first toolkit with 16 tools for Chinese web-novel (网文) authors: style baselines, foreshadowing and plot-thread tracking, continuity & OOC audits, keyword and sentence-pattern analysis, and offline semantic search. No API key, no network — everything runs on your machine.19986 npm22MIT
- AlicenseAqualityCmaintenanceProvides AI models with tools to proofread and format Chinese text before delivery, covering typos, punctuation, casing, spacing, and platform-specific character limits. It runs as a zero-dependency MCP service so the model checks and fixes its own Chinese writing automatically.41MIT