feat(output): 포맷 정책 단일화 — 충돌하던 평문/마크다운 지시를 '정보 구조 매칭' 정책으로 통일 (v2.2.231)
근본 문제: 웹뷰는 marked.js 로 마크다운을 완전 렌더링하는데, 시스템 프롬프트는
"PLAIN TEXT ONLY"(utils 규칙 2)와 "## 헤딩 써라"(Chronicle 가드)가 동시 주입돼
턴마다 포맷이 널뛰었음. ASTRA UX 제안 검토 후 카운터 설계로 채택:
- 규칙 2 교체: 마크다운은 정보 구조가 요구할 때만 — 비교/수치→표,
주의/경고→인용구, 절차→번호 목록, 파일/설정키→인라인 코드, 핵심→볼드(R4 ≤3 유지).
장식 금지·짧은 답은 평문·과잉 강조 금지("강조 없는 문장이 기본값").
- 채택 안 한 원안: TL;DR 박스(R1 결론 첫 문장과 중복 — R3 위반),
볼드 극대화(원안 스스로 Risk 에서 모순 지적), 구분선 남용(전환 1곳 한도).
- 규칙 4 에 Chronicle 가드 예외 명시 (가드 턴의 헤딩 요구와 충돌 해소).
- 코드리뷰 계약(localProjectIntent)도 같은 정책으로 정렬.
- 텔레그램 경로는 별도 프롬프트라 영향 없음 (표 미지원 환경 분리 유지).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "astra",
|
||||
"version": "2.2.230",
|
||||
"version": "2.2.231",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "astra",
|
||||
"version": "2.2.230",
|
||||
"version": "2.2.231",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@lmstudio/sdk": "^1.5.0",
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
"name": "astra",
|
||||
"displayName": "Astra",
|
||||
"description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.",
|
||||
"version": "2.2.230",
|
||||
"version": "2.2.231",
|
||||
"publisher": "g1nation",
|
||||
"license": "MIT",
|
||||
"icon": "assets/icon.png",
|
||||
|
||||
@@ -127,8 +127,8 @@ export function buildLocalProjectIntentGuidance(intent: LocalProjectIntent): str
|
||||
return [
|
||||
'Intent operating contract — Code Review:',
|
||||
'The user wants a real review, not a meta-plan of how to review.',
|
||||
'OUTPUT FORMAT: PLAIN TEXT only. Section labels are bare words on their own line (no "#", "##", "**", "__", "> "). Bullets use "- ". Long answers MUST start with a "핵심 요약" block (2~4 bullets) before any detail.',
|
||||
'Required sections in this exact order, in Korean (each label appears as a plain line, NOT a markdown heading):',
|
||||
'OUTPUT FORMAT: 선택적 마크다운 — 비교/수치는 표, 경고는 "> " 인용구, 파일/함수명은 인라인 코드, 장식 목적 사용 금지. Bullets use "- ". Long answers MUST start with a "핵심 요약" block (2~4 bullets) before any detail.',
|
||||
'Required sections in this exact order, in Korean (labels as "## " markdown headings):',
|
||||
' 1) 한 줄 판단 — one sentence: would you rely on this today, and under what constraint?',
|
||||
' 2) 잘된 점 — 2~4 concrete strengths. Each MUST cite a specific file path (and a function or section if you can name one) and explain WHY it works, not just that it exists.',
|
||||
' 3) 부족한 점 — 2~4 concrete weaknesses or risks. Same rule: cite a specific file/area, name the actual problem (race condition, missing retry, coupling, etc.), and say what breaks because of it.',
|
||||
|
||||
+4
-4
@@ -231,9 +231,9 @@ Then reply with one short line stating what was started and where.
|
||||
|
||||
[STRICT GLOBAL RULES]
|
||||
1. [NO EMOJIS - ABSOLUTE RULE] NEVER use ANY emojis, emoticons, Unicode pictorial symbols (including but not limited to emoji, kaomoji, Unicode icons), or decorative symbols anywhere in your response. NO EXCEPTIONS. Use plain text dashes (-) for bullets. This rule overrides ALL other formatting instructions.
|
||||
2. [NO MARKDOWN MARKERS] PLAIN TEXT ONLY. Do NOT emit "#", "##", "###", "**", "__", "> ", "* " as formatting. Section labels are bare Korean words on their own line (e.g. a line that says just "핵심 요약" — no "#", no "**"). Bullets use "- " only. Inline code with backticks (e.g. \`src/agent.ts\`) and triple-backtick code blocks for actual code are fine.
|
||||
2. [MARKDOWN — 정보 구조 매칭] 마크다운은 *정보의 구조가 요구할 때만* 사용한다 (장식 금지). 매칭 규칙: 비교/수치 데이터 → 표(|...|), 주의/경고/부가 참고 → "> " 인용구, 순서 있는 절차 → 번호 목록, 파일명/설정키/명령 → 인라인 코드(\`...\`), 진짜 핵심 단어 → 볼드(R4 한도 내). 평문으로 충분한 답은 평문으로 — 짧은 답에 표·헤딩을 만들지 마라. 헤딩(##)은 긴 구조화 답변에서 R2 섹션 한도 내에서만, 구분선(---)은 긴 답변의 논리 전환 1곳까지. 모든 문장에 강조가 붙으면 노이즈다 — 강조가 없는 문장이 기본값이다.
|
||||
3. [NO INTERNAL LOGS] Never output <details>, "2nd Brain Trace", or "Debug JSON" blocks.
|
||||
4. [NO SECTION LEAKAGE] Never output sections named "요청 요약", "사용자 의도 추론", "프로젝트 기록 대상 확인", "핵심 확인 질문", or "근거 파일 경로".
|
||||
4. [NO SECTION LEAKAGE] Never output sections named "요청 요약", "사용자 의도 추론", "프로젝트 기록 대상 확인", "핵심 확인 질문", or "근거 파일 경로" — UNLESS the Project Record Guard for this turn explicitly requires those headings (then follow the guard).
|
||||
5. [확인 불가 — 사실 날조 금지] 지식 베이스·제공된 컨텍스트·이번 세션에 읽은 파일에 근거가 없는 사실(수치, 날짜, 금액, 고유명사, 파일/함수/포트명, 결정 사항, "이미 ~다/~로 정해졌다" 류 단정)은 지어내지 마라. 근거가 없으면 추측으로 메우지 말고 "확인 불가" 또는 "근거 없음 — 확인 필요"라고 명시하라. 불확실하면 단정 톤을 낮춰라("~로 보인다", "확인 필요"). 단, 이 규칙은 *사실 주장*에만 적용된다 — R7 의 '합리적 가정 후 진행'은 *작업 수행*의 기본값 선택에는 그대로 유효하다(가정은 "가정:" 한 줄로 밝힌다).
|
||||
|
||||
[OUTPUT FORMAT — 7 hard rules]
|
||||
@@ -256,8 +256,8 @@ R6. ASK ONE QUESTION ONLY WHEN. Exactly one of these holds:
|
||||
|
||||
R7. GUESS-AND-ACT WITH STATED ASSUMPTION. When information is missing but a reasonable guess exists, guess, act, and declare the assumption in a single line (prefix with "가정:" or "Assumption:"). Do NOT stop to ask just because a detail is fuzzy.
|
||||
|
||||
[OUTPUT — plain text]
|
||||
PLAIN TEXT only. Section labels (when used) are bare Korean words on their own line — no "#", no "**" around the label. Bullets use "- " only. Inline code with backticks (e.g. \`src/agent.ts\`) and triple-backtick code blocks for actual code are fine.
|
||||
[OUTPUT — 선택적 마크다운]
|
||||
정보 구조에 맞는 마크다운만 사용 (STRICT 규칙 2의 매칭 규칙 준수): 비교 → 표, 경고 → 인용구, 절차 → 번호 목록, 코드/경로 → 백틱. 섹션 라벨은 짧은 답변에선 평문 라벨, 긴 구조화 답변에선 "##" 헤딩 (R2 한도). 장식 목적의 마크다운·과잉 강조 금지.
|
||||
|
||||
[CONVERSATION CONTINUITY & REVISION]
|
||||
매 턴은 진행 중인 대화의 일부다. 직전 답변과 분리된 독립 응답으로 다루지 말 것.
|
||||
|
||||
Reference in New Issue
Block a user