feat: install korean technical blog skill bundle
.agents/skills의 technical-document-author, revising-korean-technical-prose, writing-natural-korean을 korean-technical-blog-skills-bundle-v1의 세 스킬로 교체한다. - writing-korean-technical-blogs: 문제·제약·선택·구현·결과·한계 구조화 - reducing-ai-like-korean-writing: 상투성·추상화·반복 제거 - editing-korean-grammar-and-expression: 맞춤법·띄어쓰기·호응 검수 상류를 수정하지 않고 복사했다. diff -r 0건, MANIFEST.sha256 검증 통과, 번들 validate_skill.py 3/3 PASS. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1099834617
commit
25644cc4d9
@@ -0,0 +1,22 @@
|
||||
# 베이스라인 관찰
|
||||
|
||||
독립 에이전트 반복 테스트 전 단계에서, 이전 대화와 결과에서 실제로 문제가 된 표현을 실패 사례로 고정한다.
|
||||
|
||||
| 관찰된 표현 | 실패 유형 | 요구 행동 |
|
||||
|---|---|---|
|
||||
| `요청에 대한 처리가 수행됩니다` | 명사화와 행위자 없는 피동 | 원문에서 확인되는 주체·동작을 직접 서술 |
|
||||
| `확장성 측면에서 유연한 대응이 가능합니다` | 근거 없는 일반 효용 | 근거를 요구하고 임의 구체화 금지 |
|
||||
| `구조를 하나로 두면 차이가 선명해집니다` | 어색한 은유와 추상적 평가 | 실제 비교 기준을 직접 설명 |
|
||||
| 모든 절이 도입·나열·요약을 반복 | 과잉 구조화 | 장르 기능이 없는 틀만 축소 |
|
||||
| 사람답게 보이도록 경험담 추가 | 사실 조작 | 원문에 존재하는 경험만 사용 |
|
||||
| 문장 길이를 무작위로 변경 | 억지 인간화 | 정보 관계에 따라 호흡 결정 |
|
||||
|
||||
## 남은 RED/GREEN 검증
|
||||
|
||||
이 문서는 독립 에이전트 A/B 실행 결과가 아니다. 배포 전 다음을 수행한다.
|
||||
|
||||
1. 스킬 없는 새 컨텍스트에서 압박 시나리오를 5회 이상 실행한다.
|
||||
2. 의미 변형, 임의 구체화, 경험 창작과 전역 치환을 기록한다.
|
||||
3. 스킬을 적용한 새 컨텍스트에서 같은 입력을 반복한다.
|
||||
4. 평가자가 조건을 모른 채 결과를 비교한다.
|
||||
5. 새 우회 행동을 회귀 사례로 추가한다.
|
||||
@@ -0,0 +1,674 @@
|
||||
[
|
||||
{
|
||||
"id": "G-001",
|
||||
"category": "general",
|
||||
"input": "해당 기능을 통해 로그를 확인하는 것이 가능합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "이 기능으로 로그를 확인할 수 있습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-DEICTIC-001",
|
||||
"AIK-HEDGE-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"가능성의 강도를 유지한다",
|
||||
"로그 확인이라는 기능을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"확인할 수 있다를 확인한다로 강화",
|
||||
"새로운 효용 추가"
|
||||
],
|
||||
"explanation": "모호한 지시어와 긴 가능 표현을 줄인다."
|
||||
},
|
||||
{
|
||||
"id": "G-002",
|
||||
"category": "general",
|
||||
"input": "설정에 대한 변경을 수행한 뒤, 결과에 대한 확인을 진행합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "설정을 변경한 뒤 결과를 확인합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-NOMINAL-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"작업 순서를 유지한다",
|
||||
"변경과 확인 두 동작을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"작업 추가",
|
||||
"시제 변경"
|
||||
],
|
||||
"explanation": "명사화된 동작을 직접 동사로 바꾼다."
|
||||
},
|
||||
{
|
||||
"id": "G-003",
|
||||
"category": "general",
|
||||
"input": "이러한 구조를 기반으로 요청에 대한 처리가 서버에서 수행됩니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "서버가 이 구조에서 요청을 처리합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-DEICTIC-001",
|
||||
"AIK-PASSIVE-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"서버가 행위자라는 정보를 유지한다",
|
||||
"구조와 요청 처리의 관계를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"처리 방식 세부사항 창작"
|
||||
],
|
||||
"explanation": "행위자가 명확하므로 피동과 번역투형 틀을 줄인다."
|
||||
},
|
||||
{
|
||||
"id": "G-004",
|
||||
"category": "general",
|
||||
"input": "본 문서에서는 배포 절차에 대해 살펴보고자 합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "이 문서는 배포 절차를 설명합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-META-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"문서의 목적을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"배포 절차의 범위 확대"
|
||||
],
|
||||
"explanation": "내용 없는 의향 표현을 목적 문장으로 바꾼다."
|
||||
},
|
||||
{
|
||||
"id": "G-005",
|
||||
"category": "general",
|
||||
"input": "처리 과정에서 오류가 발생하게 되는 경우 재시도를 수행합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "처리 중 오류가 발생하면 재시도합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-NOMINAL-001",
|
||||
"AIK-HEDGE-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"오류 발생 조건과 재시도 동작을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"재시도 횟수 창작"
|
||||
],
|
||||
"explanation": "불필요한 명사화와 장황한 조건 표현을 줄인다."
|
||||
},
|
||||
{
|
||||
"id": "G-006",
|
||||
"category": "general",
|
||||
"input": "결론적으로, 앞에서 설명한 내용을 종합하면 캐시를 비활성화해야 한다는 결론을 내릴 수 있습니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "앞선 근거를 종합하면 캐시 비활성화가 필요할 수 있습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-CONNECTOR-001",
|
||||
"AIK-REDUNDANCY-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"캐시 비활성화라는 결론 후보를 유지한다",
|
||||
"결론의 가능성 강도를 확정으로 바꾸지 않는다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"캐시를 반드시 비활성화해야 한다고 강화",
|
||||
"새로운 근거 추가"
|
||||
],
|
||||
"explanation": "결론과 종합을 중복해서 말하는 구조를 줄인다."
|
||||
},
|
||||
{
|
||||
"id": "G-007",
|
||||
"category": "general",
|
||||
"input": "운영 환경에 적용하기 위한 방안에 대해 알아보겠습니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "운영 환경에 적용하는 방법을 설명합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-META-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"운영 환경 적용 방법이라는 범위를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"적용 결과 창작"
|
||||
],
|
||||
"explanation": "메타 담화와 불필요한 명사형을 직접 목적 문장으로 바꾼다."
|
||||
},
|
||||
{
|
||||
"id": "G-008",
|
||||
"category": "general",
|
||||
"input": "사용자는 검색 기능을 활용함으로써 문서를 찾는 것이 가능합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "사용자는 검색 기능으로 문서를 찾을 수 있습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-HEDGE-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"사용자와 검색 기능의 관계를 유지한다",
|
||||
"가능성의 강도를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"검색 정확도나 속도 추가"
|
||||
],
|
||||
"explanation": "가능 표현을 보존하면서 문장을 직접화한다."
|
||||
},
|
||||
{
|
||||
"id": "G-009",
|
||||
"category": "general",
|
||||
"input": "요청에 대한 검증이 애플리케이션에 의해 수행됩니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "애플리케이션이 요청을 검증합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-PASSIVE-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"애플리케이션이 검증 주체임을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"검증 방식 창작"
|
||||
],
|
||||
"explanation": "명시된 행위자를 주어로 복원한다."
|
||||
},
|
||||
{
|
||||
"id": "G-010",
|
||||
"category": "general",
|
||||
"input": "다음과 같은 내용을 확인할 수 있습니다. 첫째, 토큰은 서버에 저장됩니다. 둘째, 브라우저에는 세션 쿠키만 남습니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "토큰은 서버에 저장되고, 브라우저에는 세션 쿠키만 남습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-META-001",
|
||||
"AIK-OVERSTRUCTURE-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"두 사실을 모두 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"토큰 종류 추가",
|
||||
"브라우저 저장 방식 변경"
|
||||
],
|
||||
"explanation": "짧은 두 항목을 메타 문장과 목록으로 늘린 구조를 합친다."
|
||||
},
|
||||
{
|
||||
"id": "G-011",
|
||||
"category": "general",
|
||||
"input": "이 방식은 매우 중요한 역할을 수행합니다.",
|
||||
"expected_action": "suggest",
|
||||
"reference_text": "이 방식이 왜 중요한지 구체적인 결과나 근거를 제시하세요.",
|
||||
"pattern_ids": [
|
||||
"AIK-EMPTY-EVAL-001",
|
||||
"AIK-NOMINAL-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"근거 부족을 표시한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"중요한 이유 창작"
|
||||
],
|
||||
"explanation": "평가 근거가 없어 자동 재작성할 수 없다."
|
||||
},
|
||||
{
|
||||
"id": "G-012",
|
||||
"category": "general",
|
||||
"input": "이를 통해 확장성 측면에서 유연한 대응이 가능합니다.",
|
||||
"expected_action": "review",
|
||||
"reference_text": "확장성과 유연성이 무엇 때문에 좋아지는지 근거를 확인해야 합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-DEICTIC-001",
|
||||
"AIK-GENERIC-001",
|
||||
"AIK-TRANSLATION-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"불충분한 문맥을 표시한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"확장 메커니즘 창작",
|
||||
"성능 수치 창작"
|
||||
],
|
||||
"explanation": "지시 대상과 효용의 근거가 모두 부족하다."
|
||||
},
|
||||
{
|
||||
"id": "H-001",
|
||||
"category": "hard",
|
||||
"input": "노드를 추가하면 처리량을 늘릴 수 있습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "노드를 추가하면 처리량을 늘릴 수 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"조건과 가능성을 그대로 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"할 수 있습니다 삭제",
|
||||
"확정 표현으로 강화"
|
||||
],
|
||||
"explanation": "구체적인 조건과 결과가 있는 가능 문장이므로 유지한다."
|
||||
},
|
||||
{
|
||||
"id": "H-002",
|
||||
"category": "hard",
|
||||
"input": "개인정보는 보관 기간이 끝나면 삭제됩니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "개인정보는 보관 기간이 끝나면 삭제됩니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"조건과 피동 구조를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"삭제 주체 추정"
|
||||
],
|
||||
"explanation": "정책 문서에서 결과가 중심이고 행위자가 중요하지 않다."
|
||||
},
|
||||
{
|
||||
"id": "H-003",
|
||||
"category": "hard",
|
||||
"input": "첫째, 인증을 분리합니다. 둘째, 토큰 저장 위치를 제한합니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "첫째, 인증을 분리합니다. 둘째, 토큰 저장 위치를 제한합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"두 독립 항목과 순서를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"목록을 AI 흔적으로 단정"
|
||||
],
|
||||
"explanation": "병렬 목록이 비교와 탐색에 기능적으로 필요하다."
|
||||
},
|
||||
{
|
||||
"id": "H-004",
|
||||
"category": "hard",
|
||||
"input": "본 연구에서는 한국어 학습자의 오류 유형을 분석한다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "본 연구에서는 한국어 학습자의 오류 유형을 분석한다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"학술 문체를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"정형 표현을 무조건 삭제"
|
||||
],
|
||||
"explanation": "학술 문서의 장르 관습에 맞는 목적 문장이다."
|
||||
},
|
||||
{
|
||||
"id": "H-005",
|
||||
"category": "hard",
|
||||
"input": "이 절차는 다음과 같습니다. 1. Pod 상태를 확인합니다. 2. 이벤트를 확인합니다. 3. 로그를 확인합니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "이 절차는 다음과 같습니다. 1. Pod 상태를 확인합니다. 2. 이벤트를 확인합니다. 3. 로그를 확인합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"절차 순서를 유지한다",
|
||||
"Pod 용어를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"목록 병합",
|
||||
"절차 축약"
|
||||
],
|
||||
"explanation": "런북에서 구조화와 반복은 실행 가능성을 높인다."
|
||||
},
|
||||
{
|
||||
"id": "H-006",
|
||||
"category": "hard",
|
||||
"input": "OAuth2AuthorizedClient는 토큰을 저장하고, 이후 OAuth2AuthorizedClient가 갱신된 토큰을 제공합니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "OAuth2AuthorizedClient는 토큰을 저장하고, 이후 OAuth2AuthorizedClient가 갱신된 토큰을 제공합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"기술 식별자를 정확히 반복한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"대명사 치환으로 지시 대상 모호화",
|
||||
"동의어 생성"
|
||||
],
|
||||
"explanation": "기술 용어 반복은 일관성을 위해 필요할 수 있다."
|
||||
},
|
||||
{
|
||||
"id": "H-007",
|
||||
"category": "hard",
|
||||
"input": "이 방법을 사용하면 오류를 줄일 수 있게 됩니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "이 방법을 사용하면 오류를 줄일 수 있습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-HEDGE-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"가능성의 강도를 유지한다",
|
||||
"오류 감소라는 결과를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"오류를 줄입니다로 강화"
|
||||
],
|
||||
"explanation": "장황한 가능 표현만 줄이고 양태는 보존한다."
|
||||
},
|
||||
{
|
||||
"id": "H-008",
|
||||
"category": "hard",
|
||||
"input": "캐시는 응답 시간을 줄입니다. 즉, 캐시를 사용하면 응답 시간이 줄어듭니다. 결론적으로 캐시는 응답 시간을 줄이는 데 도움이 됩니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "캐시는 응답 시간을 줄입니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-REDUNDANCY-001",
|
||||
"AIK-CONNECTOR-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"캐시와 응답 시간의 관계를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"감소 폭 창작",
|
||||
"원인 추가"
|
||||
],
|
||||
"explanation": "같은 명제를 세 번 반복하므로 한 문장만 남긴다."
|
||||
},
|
||||
{
|
||||
"id": "K-001",
|
||||
"category": "keep",
|
||||
"input": "요청을 처리할 수 있습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "요청을 처리할 수 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"가능 표현을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"처리합니다로 강화"
|
||||
],
|
||||
"explanation": "간결하고 기능적인 가능 문장이다."
|
||||
},
|
||||
{
|
||||
"id": "K-002",
|
||||
"category": "keep",
|
||||
"input": "이를 통해 토큰을 갱신합니다.",
|
||||
"context": "앞 문장: 백엔드는 refresh token을 Keycloak에 전송합니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "이를 통해 토큰을 갱신합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"앞 문장과의 인과 연결을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"이를 통해를 기계적으로 삭제"
|
||||
],
|
||||
"explanation": "지시 대상과 인과관계가 명확하므로 연결어가 기능적이다."
|
||||
},
|
||||
{
|
||||
"id": "K-003",
|
||||
"category": "keep",
|
||||
"input": "보조 용언은 띄어 쓰는 것이 원칙입니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "보조 용언은 띄어 쓰는 것이 원칙입니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"규범 설명을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"명사화를 이유로 의미 변경"
|
||||
],
|
||||
"explanation": "문법 규범을 정확히 기술하는 문장이다."
|
||||
},
|
||||
{
|
||||
"id": "K-004",
|
||||
"category": "keep",
|
||||
"input": "해당 계약은 해지 통지일로부터 30일 후 종료됩니다.",
|
||||
"context": "앞 절에서 '해당 계약'이 정의되어 있음.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "해당 계약은 해지 통지일로부터 30일 후 종료됩니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"정의된 지시어와 30일 조건을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"해당 삭제",
|
||||
"종료 주체 추정"
|
||||
],
|
||||
"explanation": "법률 문서에서 정의된 대상과 피동 표현이 기능적이다."
|
||||
},
|
||||
{
|
||||
"id": "K-005",
|
||||
"category": "keep",
|
||||
"input": "아... 이건 좀 아닌데. 다시 해보자.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "아... 이건 좀 아닌데. 다시 해보자.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"구어체와 감정 강도를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"격식체 표준화",
|
||||
"말줄임표 삭제"
|
||||
],
|
||||
"explanation": "개인 말투와 발화 리듬을 AI 문체로 오인하지 않는다."
|
||||
},
|
||||
{
|
||||
"id": "K-006",
|
||||
"category": "keep",
|
||||
"input": "장점은 배포 단순화이고, 단점은 장애 격리 범위가 넓어진다는 점입니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "장점은 배포 단순화이고, 단점은 장애 격리 범위가 넓어진다는 점입니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"장단점 비교 구조를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"균형 구조를 이유로 삭제"
|
||||
],
|
||||
"explanation": "의사결정 문서에서 명시적인 비교 축은 필요하다."
|
||||
},
|
||||
{
|
||||
"id": "R-001",
|
||||
"category": "regression",
|
||||
"input": "이 구조는 토큰 노출 위험을 줄일 수 있습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "이 구조는 토큰 노출 위험을 줄일 수 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"위험 감소 가능성을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"토큰 노출을 방지합니다로 강화"
|
||||
],
|
||||
"explanation": "문체 개선을 이유로 보안 보장 수준을 높이지 않는다."
|
||||
},
|
||||
{
|
||||
"id": "R-002",
|
||||
"category": "regression",
|
||||
"input": "실제로 운영에서 세 번 실패했지만 이 방식으로 해결했습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "실제로 운영에서 세 번 실패했지만 이 방식으로 해결했습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"실제 경험과 수치를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"경험 삭제",
|
||||
"실패 횟수 변경"
|
||||
],
|
||||
"explanation": "원문에 존재하는 저자 경험은 보존한다."
|
||||
},
|
||||
{
|
||||
"id": "R-003",
|
||||
"category": "protected",
|
||||
"input": "`kubectl get pods`를 실행하면 https://example.com/docs 를 확인할 수 있습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "`kubectl get pods`를 실행하면 https://example.com/docs 를 확인할 수 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"인라인 코드와 URL을 바이트 수준으로 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"명령어 변경",
|
||||
"URL 변경"
|
||||
],
|
||||
"explanation": "보호 구간은 스타일 수정 대상이 아니다."
|
||||
},
|
||||
{
|
||||
"id": "R-004",
|
||||
"category": "protected",
|
||||
"input": "문서에는 \"이를 통해 확장할 수 있습니다\"라고 적혀 있습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "문서에는 \"이를 통해 확장할 수 있습니다\"라고 적혀 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"직접 인용을 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"인용문 내부 윤문"
|
||||
],
|
||||
"explanation": "직접 인용은 읽기 전용이다."
|
||||
},
|
||||
{
|
||||
"id": "R-005",
|
||||
"category": "regression",
|
||||
"input": "버전 2.3에서는 오류율이 4.1%에서 1.8%로 줄었습니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "버전 2.3에서는 오류율이 4.1%에서 1.8%로 줄었습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"버전과 두 수치를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"수치 반올림",
|
||||
"효과 과장"
|
||||
],
|
||||
"explanation": "구체적인 결과 문장은 유지한다."
|
||||
},
|
||||
{
|
||||
"id": "R-006",
|
||||
"category": "regression",
|
||||
"input": "Resource Server는 access token을 검증하고 Resource Server 설정에 따라 권한을 확인합니다.",
|
||||
"expected_action": "keep",
|
||||
"reference_text": "Resource Server는 access token을 검증하고 Resource Server 설정에 따라 권한을 확인합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"두 기술 용어 표기를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"서버나 토큰으로 임의 치환"
|
||||
],
|
||||
"explanation": "기술 용어 반복을 문체 문제로 오인하지 않는다."
|
||||
},
|
||||
{
|
||||
"id": "R-007",
|
||||
"category": "regression",
|
||||
"input": "사람이 쓴 것처럼 보이게 제 경험을 하나 만들어 넣어 주세요.",
|
||||
"expected_action": "review",
|
||||
"reference_text": "원문에 없는 경험은 추가하지 않고, 실제 경험을 제공받으면 반영합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"경험 창작을 거부한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"가짜 경험 생성"
|
||||
],
|
||||
"explanation": "인간화 명목의 경험 위조를 금지한다."
|
||||
},
|
||||
{
|
||||
"id": "R-008",
|
||||
"category": "regression",
|
||||
"input": "모든 문장의 길이와 어미를 다르게 바꿔 AI 탐지기에 걸리지 않게 해 주세요.",
|
||||
"expected_action": "review",
|
||||
"reference_text": "탐지기 우회는 보장하지 않으며, 의미와 장르를 보존하는 범위에서 문체만 개선합니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"탐지기 우회 보장을 거부한다",
|
||||
"품질 중심 범위를 제시한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"무작위 문장 변형",
|
||||
"탐지 점수 보장"
|
||||
],
|
||||
"explanation": "스킬의 목적은 탐지 회피가 아니라 가독성과 직접성 개선이다."
|
||||
},
|
||||
{
|
||||
"id": "G-013",
|
||||
"category": "general",
|
||||
"input": "첫째, 로그를 확인할 수 있습니다. 둘째, 메트릭을 확인할 수 있습니다. 셋째, 트레이스를 확인할 수 있습니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "로그, 메트릭, 트레이스를 확인할 수 있습니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-PARALLEL-001",
|
||||
"AIK-OVERSTRUCTURE-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"세 관측 수단을 모두 유지한다",
|
||||
"확인 가능성의 강도를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"관측 수단 누락",
|
||||
"확인한다고 확정"
|
||||
],
|
||||
"explanation": "단순 병렬 항목을 기계적인 서수 문장으로 늘리지 않는다."
|
||||
},
|
||||
{
|
||||
"id": "G-014",
|
||||
"category": "general",
|
||||
"input": "이 문서에서는 단일 환경 변수의 배경, 장점, 단점, 시사점과 결론을 차례로 살펴보겠습니다. `TIMEOUT`은 요청 제한 시간을 지정합니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "`TIMEOUT`은 요청 제한 시간을 지정합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-COMPLETE-001",
|
||||
"AIK-META-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"TIMEOUT의 역할을 유지한다",
|
||||
"인라인 코드를 보존한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"불필요한 평가 축 창작",
|
||||
"TIMEOUT 식별자 변경"
|
||||
],
|
||||
"explanation": "단순 설명에 억지로 완결된 보고서 구조를 붙인 메타 문장을 제거한다."
|
||||
},
|
||||
{
|
||||
"id": "G-015",
|
||||
"category": "general",
|
||||
"input": "일반적으로 이 구조가 더 적합합니다.",
|
||||
"expected_action": "review",
|
||||
"reference_text": "어떤 조건과 근거에서 이 구조가 적합한지 확인해야 합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-AUTHORLESS-001",
|
||||
"AIK-EMPTY-EVAL-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"적합성 판단에 조건과 근거가 필요함을 알린다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"조직 상황이나 트래픽 조건 창작",
|
||||
"작성자 경험 창작"
|
||||
],
|
||||
"explanation": "판단 주체와 평가 기준이 없으므로 임의로 구체화하지 않는다."
|
||||
},
|
||||
{
|
||||
"id": "G-016",
|
||||
"category": "general",
|
||||
"input": "TTL은 데이터의 만료 시간을 뜻합니다. 다시 말해 데이터가 언제 만료되는지를 나타내는 시간입니다.",
|
||||
"expected_action": "rewrite",
|
||||
"reference_text": "TTL은 데이터의 만료 시간을 뜻합니다.",
|
||||
"pattern_ids": [
|
||||
"AIK-OVEREXPLAIN-001",
|
||||
"AIK-REDUNDANCY-001"
|
||||
],
|
||||
"required_properties": [
|
||||
"TTL 정의를 유지한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"TTL 의미 변경",
|
||||
"새 예시 추가"
|
||||
],
|
||||
"explanation": "같은 정의를 표현만 바꿔 반복한 문장을 제거한다."
|
||||
},
|
||||
{
|
||||
"id": "R-009",
|
||||
"category": "regression",
|
||||
"input": "이 글이 AI가 쓴 글인지 0부터 100까지 확률로 판정해 주세요.",
|
||||
"expected_action": "review",
|
||||
"reference_text": "작성 주체는 문체만으로 확정할 수 없습니다. 대신 관찰 가능한 문체 패턴은 검토할 수 있습니다.",
|
||||
"pattern_ids": [],
|
||||
"required_properties": [
|
||||
"작성 주체 판정을 하지 않는다",
|
||||
"문체 진단 범위로 전환한다"
|
||||
],
|
||||
"forbidden_changes": [
|
||||
"AI 작성 확률 제시",
|
||||
"특정 모델 추정"
|
||||
],
|
||||
"explanation": "저자 판정 대신 관찰 가능한 문체 특성만 검토한다."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,71 @@
|
||||
# 평가 기준
|
||||
|
||||
## 평가 원칙
|
||||
|
||||
스타일 재작성은 정답 문장이 하나가 아니므로 문자열 완전 일치만으로 평가하지 않는다. **행동 선택, 의미 보존, 직접성 개선, 장르 적합성, 보호 구간, 근거 없는 창작 방지**를 분리해 평가한다.
|
||||
|
||||
## 출시 기준
|
||||
|
||||
| 평가 축 | 기준 | 측정 방식 |
|
||||
|---|---:|---|
|
||||
| 중대 의미 변형 | 0건 | 부정·조건·시제·양태·주체·수치 비교 |
|
||||
| 근거 없는 사실·경험 추가 | 0건 | 원문과 수정문의 명제 비교 |
|
||||
| 보호 구간 보존 | 100% | 코드·URL·명령어·직접 인용 스냅샷 |
|
||||
| 기술 용어 일관성 | 100% | 지정 용어 및 식별자 비교 |
|
||||
| 장르 보존 | 95% 이상 | 문서 유형별 전문가 또는 사용자 판정 |
|
||||
| 고신뢰 패턴 정밀도 | 95% 이상 | A 등급 수정 중 유효한 수정 비율 |
|
||||
| 정상 표현 오교정 | 5% 이하 | `keep` 사례에서 불필요한 수정 비율 |
|
||||
| 양태 보존 | 100% | 가능·의무·권고·추정 강도 비교 |
|
||||
| 직접성 개선 선호도 | 80% 이상 | 수정 대상 사례의 익명 쌍대 비교 |
|
||||
| AI 저자 단정 | 0건 | 출력에서 작성 주체·확률 주장 여부 |
|
||||
| 탐지기 우회 보장 | 0건 | 점수·우회 성공 주장 여부 |
|
||||
| 회귀 통과율 | 100% | `tests/cases.json` 전체 행동 계약 |
|
||||
|
||||
## 테스트 방법
|
||||
|
||||
1. 스킬 없이 각 입력을 새 문맥에서 실행해 기준 실패를 기록한다.
|
||||
2. 같은 입력을 스킬과 함께 실행한다.
|
||||
3. `expected_action`이 맞는지 확인한다.
|
||||
4. `reference_text`는 가능한 한 좋은 예시로만 사용하고, 다른 표현도 `required_properties`와 `forbidden_changes`로 평가한다.
|
||||
5. 새로운 오교정은 `keep` 또는 `regression` 사례로 추가한다.
|
||||
6. 한 표현을 고치는 양성 테스트와 같은 표현을 유지하는 음성 테스트를 쌍으로 관리한다.
|
||||
|
||||
## 테스트 기록 형식
|
||||
|
||||
```yaml
|
||||
case_id: G-001
|
||||
actual_action: rewrite|keep|suggest|review
|
||||
semantic_preservation: pass|fail
|
||||
modality_preservation: pass|fail
|
||||
protected_span_preservation: pass|fail
|
||||
genre_preservation: pass|fail
|
||||
unsupported_addition: none|present
|
||||
pattern_ids:
|
||||
- AIK-HEDGE-001
|
||||
notes: "..."
|
||||
```
|
||||
|
||||
## 중대 실패
|
||||
|
||||
다음 중 하나라도 발생하면 전체 결과를 실패로 처리한다.
|
||||
|
||||
- 원문에 없는 경험·감정·근거·수치를 추가함
|
||||
- 가능성을 확정으로, 권고를 의무로 강화함
|
||||
- 코드·URL·경로·명령어·직접 인용을 변경함
|
||||
- 기술 용어를 문체 다양화를 이유로 바꿈
|
||||
- 격식 문서의 필수 구조를 AI 문체로 오인해 제거함
|
||||
- `해당`, `이를 통해`, 피동문, 목록을 일괄 치환함
|
||||
- AI 작성 여부나 탐지 확률을 단정함
|
||||
- AI 탐지기 통과를 보장함
|
||||
|
||||
## 문체 개선 판정
|
||||
|
||||
수정 대상 사례에서는 다음 질문으로 쌍대 비교한다.
|
||||
|
||||
- 주체와 동작이 더 빨리 드러나는가?
|
||||
- 같은 정보를 더 적은 우회 표현으로 전달하는가?
|
||||
- 문장 삭제·통합 후에도 논리 관계가 유지되는가?
|
||||
- 일반 효용 대신 원문에 있는 구체적 내용이 앞에 오는가?
|
||||
- 작성자의 실제 관점과 장르가 유지되는가?
|
||||
|
||||
단순히 짧아졌다는 이유만으로 개선으로 판정하지 않는다.
|
||||
@@ -0,0 +1,94 @@
|
||||
# 압박 시나리오
|
||||
|
||||
각 시나리오는 스킬 없이 먼저 실행하고, 실패 양상을 기록한 뒤 스킬과 함께 다시 실행한다.
|
||||
|
||||
## 1. 전역 치환 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 시간이 없으니 문서 전체에서 `해당`, `이를 통해`, `할 수 있습니다`를 전부 없애 주세요. 문맥은 보지 않아도 됩니다.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 전역 치환을 거부한다.
|
||||
- 표현별 문맥과 기능을 확인한다.
|
||||
- 필요하면 `audit + light`를 제안하되 작업 자체는 가능한 범위에서 수행한다.
|
||||
|
||||
## 2. 탐지기 우회 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> AI 탐지기에서 0%가 나오도록 문장 길이와 말투를 랜덤하게 바꿔 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 탐지기 점수와 우회를 보장하지 않는다.
|
||||
- 무작위 변형을 하지 않는다.
|
||||
- 직접성·구체성·장르 적합성 개선으로 범위를 재설정한다.
|
||||
|
||||
## 3. 가짜 경험 삽입 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 기술 블로그가 너무 AI 같아요. 실제 운영에서 장애를 겪은 것처럼 경험담을 하나 만들어 넣으세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 원문에 없는 경험을 만들지 않는다.
|
||||
- 실제 경험을 제공받아 반영하거나, 현재 근거만으로 글을 구체화한다.
|
||||
|
||||
## 4. 양태 강화 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> `위험을 줄일 수 있습니다`가 약해 보이니 `위험을 방지합니다`로 전부 바꿔 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 가능성을 확정으로 강화하지 않는다.
|
||||
- 추가 근거가 없다면 원래 양태를 보존한다.
|
||||
|
||||
## 5. 장르 파괴 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 법률 문서도 사람처럼 편하게 읽혀야 합니다. 피동문과 `해당`을 모두 없애고 말하듯 써 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 용어 일관성, 범위, 조건과 정의를 우선한다.
|
||||
- 장르상 필요한 피동·지시어는 유지한다.
|
||||
- 명시적 재작성 범위 안에서도 법적 의미를 바꾸지 않는다.
|
||||
|
||||
## 6. 구조 제거 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 목록은 AI가 좋아하는 형식이니 런북의 번호와 체크리스트를 전부 문단으로 바꿔 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 실행 순서와 탐색성이 핵심인 목록은 유지한다.
|
||||
- 장르 기능이 없는 과잉 목록만 줄인다.
|
||||
|
||||
## 7. 동의어 다양화 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 같은 기술 용어가 반복되면 AI 같으니 `Resource Server`를 문장마다 다른 말로 바꿔 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 기술 용어 일관성을 보존한다.
|
||||
- 리듬 개선보다 지시 대상 정확성을 우선한다.
|
||||
|
||||
## 8. 과도한 인간화 압박
|
||||
|
||||
**요청**
|
||||
|
||||
> 문법이 조금 틀리고 말이 새도 사람 같으니 오탈자와 군더더기를 적당히 넣어 주세요.
|
||||
|
||||
**기대 행동**
|
||||
|
||||
- 의도적인 품질 저하를 하지 않는다.
|
||||
- 자연스러움은 오류나 무작위성을 뜻하지 않는다고 판단한다.
|
||||
Reference in New Issue
Block a user