feat: v2.2.63 — 한국어 오타 최소화 (채팅 temperature 설정 + anti-glitch 샘플링)

- streamer.ts: LM Studio SDK 호출에 topP/topK/minP/repeatPenalty 추가
  — 저확률 오답 토큰을 잘라 한글 음절 깨짐(붕괴→붕점) 억제
- 채팅 기본 temperature 0.7 → 0.3 (분석/업무형 답변 안정화)
- 신규 설정 g1nation.chatTemperature — Settings 패널 '고급' 섹션에서
  조절 가능 (config.ts / settingsPanelProvider / settings-panel.html+js)

chronicle 기록(ADR-0022, ADR-0023) 포함.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-22 19:09:01 +09:00
parent b0530db6f4
commit 49f941386f
20 changed files with 170 additions and 60 deletions
+18 -18
View File
@@ -3,14 +3,14 @@
<!-- ASTRA:AUTO-START -->
## Snapshot
- **Workspace**: `connectai` `v2.2.62` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Workspace**: `connectai` `v2.2.63` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Description**: The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.
- **Stack**: TypeScript, Node.js, VS Code Extension, LM Studio SDK, Test runner
- **Stats**: 274 source files, ~55,348 lines across 5 top-level modules.
- **Stats**: 276 source files, ~55,424 lines across 5 top-level modules.
## Last Refresh
- **Time**: 2026-05-22T07:17:34.157Z
- **Files newly analysed**: 3
- **Time**: 2026-05-22T10:04:22.779Z
- **Files newly analysed**: 5
- **Files reused from cache**: 271
## Directory Map
@@ -42,7 +42,7 @@ flowchart LR
media["media/<br/>6 files"]
tests["tests/<br/>35 files"]
core_py["core_py/<br/>6 files"]
docs["docs/<br/>88 files"]
docs["docs/<br/>90 files"]
tests --> src
```
@@ -65,7 +65,7 @@ flowchart LR
## Modules
### `src/` — 139 files, ~38,285 lines
### `src/` — 139 files, ~38,303 lines
**Sub-directories**
- `src/features/` (66) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
@@ -83,7 +83,7 @@ flowchart LR
**Key files**
- `src/utils.ts` (408 lines)
- `src/config.ts` (298 lines)
- `src/config.ts` (301 lines)
- `src/features/company/types.ts` (446 lines) — Type definitions for the 1인 기업 (One-Person Company) mode. The mode turns the user into a virtual CEO that dispatches work to a roster of specialist agents. Each turn produces a session directory conta
- `src/core/services.ts` (164 lines)
- `src/lib/paths.ts` (151 lines)
@@ -93,7 +93,7 @@ flowchart LR
- `src/retrieval/scoring.ts` (536 lines) — Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다.
- `src/skills/agentKnowledgeMap.ts` (374 lines)
- `src/retrieval/lessonHelpers.ts` (325 lines) — Lesson / Experience Memory — pure helpers (no vscode dependency) "Lesson" = a markdown file in the active brain that captures a past mistake/risk and how to avoid repeating it. Identified by a lessons
- `src/agent.ts` (3822 lines)
- `src/agent.ts` (3823 lines)
- `src/features/providers/types.ts` (63 lines) — Cloud LLM provider routing — model id prefix → provider id 매핑. Prefix 규칙: openrouter:anthropic/claude-3.5-sonnet → { provider: 'openrouter', model: 'anthropic/claude-3.5-sonnet' } anthropic:claude-3-5
- `src/lib/engine.ts` (906 lines)
- `src/retrieval/brainIndex.ts` (325 lines) — Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 <brainPath>/.astra/brain-index.json 에
@@ -108,15 +108,15 @@ flowchart LR
- `src/features/projectArchitecture/scanner.ts` (644 lines) — Deep static analyser for the Project Architecture Context generator. Walks the project tree (skipping the usual nodemodules / out / dist noise), pulls the role of each interesting file from its leadin
- `src/lib/contextManager.ts` (275 lines) — Context Manager (컨텍스트 한계 관리) "context length = 132k" 는 "답변을 132k 토큰까지 생성해도 된다" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변 + 여유분 ≤ context length 이 모듈은 요청을 보내기 전에 입력 토큰을 추정하고, - 동적으로 출력 상한(maxTokens)을 계
### `media/` — 6 files, ~7,328 lines
### `media/` — 6 files, ~7,342 lines
**Key files**
- `media/sidebar.css` (2078 lines) — Stylesheet
- `media/sidebar.js` (3677 lines)
- `media/sidebar.html` (545 lines) — Astra
- `media/settings-panel.html` (373 lines) — Astra Settings
- `media/settings-panel.html` (381 lines) — Astra Settings
- `media/settings-panel.css` (210 lines) — Stylesheet
- `media/settings-panel.js` (445 lines)
- `media/settings-panel.js` (451 lines)
### `tests/` — 35 files, ~5,969 lines
*Depends on*: `src/`
@@ -161,10 +161,10 @@ flowchart LR
- `core_py/optimizer.py` (55 lines)
- `core_py/queue_worker.py` (82 lines)
### `docs/` — 88 files, ~3,357 lines
### `docs/` — 90 files, ~3,401 lines
**Sub-directories**
- `docs/records/` (75) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/records/` (77) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
- `docs/Meeting/` (0)
@@ -175,7 +175,7 @@ flowchart LR
- `docs/EXPERIENCE_MEMORY_PLAN.md` (122 lines) — Experience Memory (Mistake / Lesson Loop) — Implementation Plan
- `docs/records/ConnectAI/development/2026-05-02_connectai_project_knowledge_overview.md` (121 lines) — Astra Project Knowledge Overview
- `docs/records/ConnectAI/development/2026-05-03_connectai_project_knowledge_overview.md` (121 lines) — Astra Project Knowledge Overview
- `docs/records/ConnectAI/timeline.md` (176 lines) — Project Timeline
- `docs/records/ConnectAI/timeline.md` (182 lines) — Project Timeline
- `docs/Advanced_Features_Implementation_Guide.md` (40 lines) — Advanced Features Implementation Guide
- `docs/docs/records/docs/bugs/BUG-0001-viewed-integration-retrieval-test-ts-1-59-integration-retrie.md` (16 lines) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
- `docs/docs/records/docs/chronicle.config.json` (11 lines) — JSON configuration
@@ -227,13 +227,14 @@ flowchart LR
- `g1nation.calendar.refresh` — Astra: Google Calendar 새로고침 📅
- `g1nation.calendar.connectOAuth` — Astra: Google Calendar OAuth 연결 (쓰기) 🔐
- `g1nation.devilAgent.toggle` — Astra: Toggle Devil Agent 🎭
- **Configuration** (68 settings):
- **Configuration** (69 settings):
- `g1nation.multiAgentEnabled` *(boolean)* _(default: `false`)_ — Enable Multi-Agent Workflow (Planner -> Researcher -> Writer) for complex tasks.
- `g1nation.datacollectBridgeUrl` *(string)* _(default: `"http://127.0.0.1:3002"`)_ — Wiki/Datacollect MCP Bridge URL. /research, /benchmark, /youtube chat slash commands route here. The Bridge must be running (`npm run bridge` in the Datacollect project).
- `g1nation.datacollectSavePath` *(string)* _(default: `""`)_
- `g1nation.datacollectCrawlDepth` *(number)* _(default: `1`)_
- `g1nation.datacollectMaxPages` *(number)* _(default: `8`)_
- `g1nation.datacollectSynthesisTemperature` *(number)* _(default: `0.1`)_
- `g1nation.chatTemperature` *(number)* _(default: `0.3`)_
- `g1nation.memoryEnabled` *(boolean)* _(default: `true`)_ — Enable layered memory injection before each model response.
- `g1nation.memoryShortTermMessages` *(number)* _(default: `8`)_ — Number of recent conversation messages included as short-term memory.
- `g1nation.memoryMediumTermSessions` *(number)* _(default: `5`)_ — Number of recent saved chat sessions included as medium-term memory.
@@ -287,8 +288,7 @@ flowchart LR
- `g1nation.google.clientSecret` *(string)* _(default: `""`)_
- `g1nation.google.calendarId` *(string)* _(default: `"primary"`)_
- `g1nation.google.defaultEventDurationMinutes` *(number)* _(default: `60`)_ — end / duration 둘 다 없는 일정의 기본 길이 (분). agent 가 회의록에서 시각만 추출하고 종료 시각은 명시 안 했을 때 적용.
- `g1nation.google.icalUrl` *(string)* _(default: `""`)_
- _…and 8 more_
- _…and 9 more_
## Dependencies
- **Runtime** (2): `@lmstudio/sdk`, `pdf-parse`
@@ -336,7 +336,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
**Designed for High-Performance Decision Making.**
Copyright (C) **g1nation**. All rights reserved.
_Last auto-scan: 2026-05-22T07:17:34.157Z · signature `c09857de`_
_Last auto-scan: 2026-05-22T10:04:22.779Z · signature `1c723399`_
<!-- ASTRA:AUTO-END -->
## Purpose
+37 -23
View File
@@ -1,11 +1,11 @@
{
"version": 1,
"generatedAt": "2026-05-22T07:17:34.201Z",
"generatedAt": "2026-05-22T10:04:22.814Z",
"files": {
"src/agent.ts": {
"mtimeMs": 1779431481976.8423,
"size": 220892,
"lines": 3822,
"mtimeMs": 1779444190560.5042,
"size": 220916,
"lines": 3823,
"role": "",
"imports": [
"src/utils",
@@ -83,9 +83,9 @@
]
},
"src/config.ts": {
"mtimeMs": 1779268787168.0276,
"size": 14922,
"lines": 298,
"mtimeMs": 1779444175132.1973,
"size": 15153,
"lines": 301,
"role": "",
"imports": []
},
@@ -889,9 +889,9 @@
]
},
"src/features/settings/settingsPanelProvider.ts": {
"mtimeMs": 1779250671140.83,
"size": 32311,
"lines": 686,
"mtimeMs": 1779444222128.0447,
"size": 32643,
"lines": 691,
"role": "",
"imports": [
"src/integrations/telegram/telegramClient",
@@ -1060,9 +1060,9 @@
]
},
"src/lmstudio/streamer.ts": {
"mtimeMs": 1778664139962.1995,
"size": 7924,
"lines": 162,
"mtimeMs": 1779444193875.363,
"size": 8477,
"lines": 171,
"role": "",
"imports": [
"src/lmstudio/client",
@@ -1403,16 +1403,16 @@
"imports": []
},
"media/settings-panel.html": {
"mtimeMs": 1779250684699.01,
"size": 20873,
"lines": 373,
"mtimeMs": 1779444233279.6733,
"size": 21424,
"lines": 381,
"role": "Astra Settings",
"imports": []
},
"media/settings-panel.js": {
"mtimeMs": 1779250701675.4397,
"size": 21239,
"lines": 445,
"mtimeMs": 1779444245246.522,
"size": 21555,
"lines": 451,
"role": "",
"imports": []
},
@@ -1977,7 +1977,7 @@
"imports": []
},
"docs/records/ConnectAI/chronicle.config.json": {
"mtimeMs": 1779434247950.9436,
"mtimeMs": 1779442717216.4915,
"size": 371,
"lines": 11,
"role": "JSON configuration",
@@ -2130,6 +2130,20 @@
"role": "ADR: A팀장이 있어. 팀원으로 B가 있고 C가 있어. A팀장은 0라는 이사의 제안을 받아서 다른 회사로 가기로 했어. 이 소문이 퍼져서 B와 C도 알...",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0022-a팀장이-있어-팀원으로-b가-있고-c가-있어-a팀장은-0라는-이사의-제안을-받아서-다른-회사로-가기로-했어-.md": {
"mtimeMs": 1779442646619.3445,
"size": 2353,
"lines": 19,
"role": "ADR: A팀장이 있어. 팀원으로 B가 있고 C가 있어. A팀장은 0라는 이사의 제안을 받아서 다른 회사로 가기로 했어. 이 소문이 퍼져서 B와 C도 알...",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0023-메일-다듬어줘-안녕하세요-문의-주신-poc-진행-관련하여-아래와-같이-회신드립니다-현재-내부-검토-결과-락인.md": {
"mtimeMs": 1779442717209.4446,
"size": 2164,
"lines": 19,
"role": "ADR: 메일 다듬어줘. 안녕하세요. 문의 주신 POC 진행 관련하여 아래와 같이 회신드립니다. 현재 내부 검토 결과, 락인컴퍼니의 LIAPP 및 LIS...",
"imports": []
},
"docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": {
"mtimeMs": 1778028987330.4185,
"size": 1564,
@@ -2397,9 +2411,9 @@
"imports": []
},
"docs/records/ConnectAI/timeline.md": {
"mtimeMs": 1779434247945.7646,
"size": 11407,
"lines": 176,
"mtimeMs": 1779442717211.4546,
"size": 11829,
"lines": 182,
"role": "Project Timeline",
"imports": []
},
@@ -1,5 +1,5 @@
{
"result": "Final report with inconsistencies. This should be long enough to pass validation.",
"createdAt": 1779431564297,
"createdAt": 1779444327842,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
"createdAt": 1779431564294,
"createdAt": 1779444327840,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
"createdAt": 1779431564292,
"createdAt": 1779444327837,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "---\nid: stress_conflict_1779431564276\ndate: 2026-05-22T06:32:44.299Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (14ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (3ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (3ms)\n",
"createdAt": 1779431564299,
"result": "---\nid: stress_conflict_1779444327825\ndate: 2026-05-22T10:05:27.844Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[PLANNER]** 전략 수립 중... (11ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (2ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (3ms)\n",
"createdAt": 1779444327844,
"modelVersion": "unknown"
}
@@ -1,8 +1,8 @@
{
"missionId": "stress_conflict_1779431564276",
"missionId": "stress_conflict_1779444327825",
"status": "completed",
"startTime": "2026-05-22T06:32:44.276Z",
"totalElapsedMs": 24,
"startTime": "2026-05-22T10:05:27.825Z",
"totalElapsedMs": 20,
"results": {
"planner": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
"researcher": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
@@ -16,30 +16,30 @@
{
"from": "idle",
"to": "planner",
"durationMs": 14,
"durationMs": 11,
"message": "전략 수립 중...",
"ts": "2026-05-22T06:32:44.290Z"
"ts": "2026-05-22T10:05:27.836Z"
},
{
"from": "planner",
"to": "researcher",
"durationMs": 3,
"durationMs": 2,
"message": "핵심 정보 수집 및 분석 중...",
"ts": "2026-05-22T06:32:44.293Z"
"ts": "2026-05-22T10:05:27.838Z"
},
{
"from": "researcher",
"to": "writer",
"durationMs": 3,
"message": "최종 리포트 작성 및 편집 중...",
"ts": "2026-05-22T06:32:44.296Z"
"ts": "2026-05-22T10:05:27.841Z"
},
{
"from": "writer",
"to": "completed",
"durationMs": 4,
"message": "미션 완료",
"ts": "2026-05-22T06:32:44.300Z"
"ts": "2026-05-22T10:05:27.845Z"
}
],
"resilienceMetrics": {