feat(retrieval): 청킹/평가 하니스 + 검색 인덱스 개선
- src/retrieval/chunker.ts: 문서 청킹 로직 추가 - src/retrieval/evalHarness.ts + src/extension/evalCommands.ts: 검색 품질 평가 하니스 - brainIndex.ts / retrieval/index.ts / memoryContext.ts: 인덱싱·컨텍스트 빌더 개선 - config.ts / extension.ts / sidebarProvider.ts / package.json 갱신 - ADR-0030~0032 및 개발 기록, .astra 런타임 상태 동기화 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3,15 +3,15 @@
|
||||
<!-- ASTRA:AUTO-START -->
|
||||
|
||||
## Snapshot
|
||||
- **Workspace**: `connectai` `v2.2.200` _(absolute path varies by environment; resolved from the active VS Code workspace)_
|
||||
- **Workspace**: `connectai` `v2.2.207` _(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**: 431 source files, ~70,417 lines across 5 top-level modules.
|
||||
- **Stats**: 441 source files, ~71,464 lines across 5 top-level modules.
|
||||
|
||||
## Last Refresh
|
||||
- **Time**: 2026-06-01T02:30:44.120Z
|
||||
- **Files newly analysed**: 3
|
||||
- **Files reused from cache**: 428
|
||||
- **Time**: 2026-06-08T10:21:24.781Z
|
||||
- **Files newly analysed**: 0
|
||||
- **Files reused from cache**: 441
|
||||
|
||||
## Directory Map
|
||||
```mermaid
|
||||
@@ -40,11 +40,11 @@ mindmap
|
||||
> Arrows: which top-level module imports from which.
|
||||
```mermaid
|
||||
flowchart LR
|
||||
src["src/<br/>274 files"]
|
||||
src["src/<br/>280 files"]
|
||||
media["media/<br/>6 files"]
|
||||
tests["tests/<br/>37 files"]
|
||||
core_py["core_py/<br/>6 files"]
|
||||
docs["docs/<br/>108 files"]
|
||||
docs["docs/<br/>112 files"]
|
||||
tests --> src
|
||||
```
|
||||
|
||||
@@ -56,7 +56,7 @@ flowchart LR
|
||||
|
||||
## Hub Files
|
||||
> Imported by many other files — touching these has wide blast radius.
|
||||
- `src/utils.ts` — referenced by **87** files
|
||||
- `src/utils.ts` — referenced by **88** files
|
||||
- `src/config.ts` — referenced by **35** files
|
||||
- `src/agent.ts` — referenced by **34** files
|
||||
- `src/core/services.ts` — referenced by **15** files
|
||||
@@ -67,58 +67,58 @@ flowchart LR
|
||||
|
||||
## Modules
|
||||
|
||||
### `src/` — 274 files, ~52,627 lines
|
||||
### `src/` — 280 files, ~53,468 lines
|
||||
|
||||
**Sub-directories**
|
||||
- `src/features/` (100) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
|
||||
- `src/features/` (103) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
|
||||
- `src/sidebar/` (35) — Brain profile lifecycle 의 pure helpers — sidebarProvider 의 add/edit/delete 흐름에서 modal UI 와 config 쓰기를 제외한 데이터 변환 만 격리. 현
|
||||
- `src/agent/` (29) — Post-answer hook registry — 답변 완료 후 실행되는 부가 작업 모음. 새 hook 추가 = 1 객체 push. agent.ts 는 이 배열을 iterate 만 함. 현재 등록 순서 (v2.2.1
|
||||
- `src/lib/` (29) — Astra Mode Architecture Context Builder. 의도: 사용자가 Astra 자체의 mode 디자인 (Guard vs Multi-Agent 가 별도 모드여야 하는지) 을 묻는 메타 질문에 답할
|
||||
- `src/retrieval/` (16) — Actionability Scoring — 검색 결과를 "현재 작업 상태" 신호로 재가중. 기존 TF-IDF (단어 매칭) + recency (시간) 만으로는 "지금 이 사용자가 하고 있는 작업과 직접 연결 된 문서
|
||||
- `src/retrieval/` (18) — Actionability Scoring — 검색 결과를 "현재 작업 상태" 신호로 재가중. 기존 TF-IDF (단어 매칭) + recency (시간) 만으로는 "지금 이 사용자가 하고 있는 작업과 직접 연결 된 문서
|
||||
- `src/core/` (15) — Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토
|
||||
- `src/extension/` (9) — 9 files (.ts)
|
||||
- `src/memory/` (9) — Distillation Loop — stale Episodic Memory → Long-Term "episode-digest" 승급. 배경: Episodic Memory 가 무한히 누적되면 검색 노이즈. 30일+ 지
|
||||
- `src/extension/` (8) — 8 files (.ts)
|
||||
- `src/docs/` (6) — Bug: Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts ...
|
||||
- `src/integrations/` (6) — Per-chat conversation history for the Telegram bot. Why this exists: the previous bot was stateless — every inbound mess
|
||||
- `src/lmstudio/` (4) — 4 files (.ts)
|
||||
- `src/skills/` (4) — 4 files (.ts)
|
||||
|
||||
**Key files**
|
||||
- `src/utils.ts` (471 lines)
|
||||
- `src/config.ts` (557 lines)
|
||||
- `src/utils.ts` (472 lines)
|
||||
- `src/config.ts` (585 lines)
|
||||
- `src/agent.ts` (1503 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` (176 lines)
|
||||
- `src/sidebarProvider.ts` (3186 lines)
|
||||
- `src/sidebarProvider.ts` (3180 lines)
|
||||
- `src/lib/contextManager.ts` (278 lines) — Context Manager (컨텍스트 한계 관리) "context length = 132k" 는 "답변을 132k 토큰까지 생성해도 된다" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변 + 여유분 ≤ context length 이 모듈은 요청을 보내기 전에 입력 토큰을 추정하고, - 동적으로 출력 상한(maxTokens)을 계
|
||||
- `src/features/company/companyConfig.ts` (896 lines) — State + config plumbing for 1인 기업 모드. Two surfaces: - CompanyState (runtime data: enabled flag, company name, which agents are active, per-agent model overrides). Persisted in VS Code's globalState so
|
||||
- `src/features/datacollect/slashRouter.ts` (1240 lines)
|
||||
- `src/integrations/telegram/telegramClient.ts` (154 lines)
|
||||
- `src/lib/paths.ts` (151 lines)
|
||||
- `src/agent/actions/types.ts` (41 lines)
|
||||
- `src/skills/agentKnowledgeMap.ts` (374 lines)
|
||||
- `src/features/datacollect/slashRouter.ts` (201 lines)
|
||||
- `src/retrieval/types.ts` (66 lines) — Retrieval Types (검색 결과 통합 타입) 모든 검색 소스(Brain, Memory, Project, Episode)의 결과를 통합 인터페이스로 정의합니다.
|
||||
- `src/memory/types.ts` (151 lines) — Memory Type Definitions (메모리 타입 정의) Astra의 5-Layer Cognitive Memory System의 모든 타입을 정의합니다. ① Short-Term ② Long-Term ③ Project ④ Procedural ⑤ Episodic
|
||||
- `src/retrieval/scoring.ts` (541 lines) — Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다.
|
||||
- `src/features/stocks/types.ts` (53 lines) — Stocks 모듈 공유 타입. investresults/targetstocks.json 스키마를 그대로 받아서, ConnectAI 의 <workspace>/.astra/stocks.json 으로 옮긴 뒤 같은 필드명을 유지. 한글 필드명은 사용자의 도메인 데이터라 변경하지 않는다 — 마이그레이션 충돌 회피 + 사용자가 직접 JSON 편집할 때 frictio
|
||||
- `src/lib/contextBuilders/promptDetection.ts` (85 lines) — 사용자 prompt 의 의도 분류 류 detection helpers. 모두 stateless 정규식 매칭. 옛 코드는 agent.ts 의 private 메서드로 박혀 있었는데, system prompt 빌더 (buildJarvisProjectBriefContext 등) 가 이걸 의존하면서 god-file 안에서 서로 얽힘. 헬퍼만 먼저 떼면 의존 그래프가
|
||||
- `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/retrieval/brainIndex.ts` (536 lines) — Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 <brainPath>/.astra/brain-index.json 에
|
||||
- `src/security.ts` (159 lines)
|
||||
- `src/features/secondBrainTrace.ts` (792 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/integrations/telegram/telegramBot.ts` (270 lines)
|
||||
- `src/lib/contextBuilders/localProjectIntent.ts` (233 lines)
|
||||
- `src/lib/engine.ts` (1114 lines)
|
||||
|
||||
### `media/` — 6 files, ~7,671 lines
|
||||
### `media/` — 6 files, ~7,785 lines
|
||||
|
||||
**Key files**
|
||||
- `media/sidebar.css` (2114 lines) — Stylesheet
|
||||
- `media/sidebar.js` (3933 lines)
|
||||
- `media/sidebar.html` (539 lines) — Astra
|
||||
- `media/settings-panel.html` (406 lines) — Astra Settings
|
||||
- `media/settings-panel.css` (210 lines) — Stylesheet
|
||||
- `media/settings-panel.js` (469 lines)
|
||||
- `media/settings-panel.html` (440 lines) — Astra Settings
|
||||
- `media/settings-panel.js` (505 lines)
|
||||
- `media/settings-panel.css` (254 lines) — Stylesheet
|
||||
|
||||
### `tests/` — 37 files, ~5,875 lines
|
||||
*Depends on*: `src/`
|
||||
@@ -165,17 +165,17 @@ flowchart LR
|
||||
- `core_py/optimizer.py` (55 lines)
|
||||
- `core_py/queue_worker.py` (82 lines)
|
||||
|
||||
### `docs/` — 108 files, ~3,835 lines
|
||||
### `docs/` — 112 files, ~3,927 lines
|
||||
|
||||
**Sub-directories**
|
||||
- `docs/records/` (95) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
|
||||
- `docs/records/` (99) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
|
||||
- `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
|
||||
- `docs/Meeting/` (0)
|
||||
|
||||
**Key files**
|
||||
- `docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md` (452 lines) — Telegram Remote Execution 기획서
|
||||
- `docs/AgentEngine_Architecture.md` (314 lines) — AgentEngine Architecture Document
|
||||
- `docs/records/ConnectAI/timeline.md` (236 lines) — Project Timeline
|
||||
- `docs/records/ConnectAI/timeline.md` (248 lines) — Project Timeline
|
||||
- `docs/ASTRA_OFFICE_REFACTOR.md` (198 lines) — Astra Office Refactor — Design Doc
|
||||
- `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
|
||||
@@ -202,8 +202,10 @@ flowchart LR
|
||||
## VS Code Extension Surface
|
||||
- **Extension ID**: `g1nation.astra`
|
||||
- **Activation events**: `onStartupFinished`
|
||||
- **Commands** (29):
|
||||
- **Commands** (31):
|
||||
- `g1nation.newChat` — Astra: New Chat
|
||||
- `g1nation.eval.retrieval` — Astra: 검색 평가 실행 (recall@k / MRR)
|
||||
- `g1nation.embeddings.backfill` — Astra: 두뇌 임베딩 전체 색인
|
||||
- `g1nation.exportChat` — Astra: Export Chat as Markdown
|
||||
- `g1nation.explainSelection` — Astra: Explain Selected Code
|
||||
- `g1nation.focusChat` — Astra: Focus Chat Input
|
||||
@@ -232,9 +234,12 @@ flowchart LR
|
||||
- `g1nation.calendar.refresh` — Astra: Google Calendar 새로고침 📅
|
||||
- `g1nation.calendar.connectOAuth` — Astra: Google Calendar OAuth 연결 (쓰기) 🔐
|
||||
- `g1nation.devilAgent.toggle` — Astra: Toggle Devil Agent 🎭
|
||||
- **Configuration** (122 settings):
|
||||
- **Configuration** (129 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.datacollectBridgeTarget` *(string)* _(default: `"local"`)_
|
||||
- `g1nation.datacollectBridgeUrl` *(string)* _(default: `"http://127.0.0.1:3002"`)_ — [local 타깃] Wiki/Datacollect MCP Bridge URL. /benchmark, /youtube, /wikify chat slash commands route here. The Bridge must be running (`npm run bridge` in the Datacollect project).
|
||||
- `g1nation.datacollectBridgeNasUrl` *(string)* _(default: `""`)_
|
||||
- `g1nation.datacollectBridgeNasToken` *(string)* _(default: `""`)_
|
||||
- `g1nation.datacollectSavePath` *(string)* _(default: `""`)_
|
||||
- `g1nation.datacollectCrawlDepth` *(number)* _(default: `1`)_
|
||||
- `g1nation.datacollectMaxPages` *(number)* _(default: `8`)_
|
||||
@@ -290,10 +295,7 @@ flowchart LR
|
||||
- `g1nation.skillKnowledgeMap` *(object)* _(default: `{}`)_ — Inline fallback for the agent ↔ knowledge mapping. Used only when the JSON file is missing. Shape: { defaultAgent?, agents: [{ name, knowledgeFolders, model?, description? }] }. Folder paths can be ab
|
||||
- `g1nation.agentSkillsPath` *(string)* _(default: `""`)_ — Absolute path to the agent skills folder (`.agent/skills/*.md`). When empty, defaults to '<workspace>/.agent/skills'. Use this on Windows or when your skills live outside the workspace.
|
||||
- `g1nation.embeddingModel` *(string)* _(default: `""`)_ — Embedding model registered in LM Studio / Ollama (e.g. 'text-embedding-bge-small-en-v1.5', 'nomic-embed-text', 'multilingual-e5-small'). When empty, Astra uses TF-IDF only. When set, the brain is embe
|
||||
- `g1nation.embeddingBlendAlpha` *(number)* _(default: `0.5`)_ — Hybrid score blend: 0 = pure TF-IDF (sparse / keyword), 1 = pure embedding cosine (dense / semantic), 0.5 = balanced. Only used when g1nation.embeddingModel is set. Default 0.5.
|
||||
- `g1nation.conflictHighlightingEnabled` *(boolean)* _(default: `true`)_ — Conflict Surface — 검색된 출처에서 충돌/논란 신호 감지 시 [CONFLICT WARNINGS] 블록을 시스템 프롬프트에 주입. LLM 이 상충되는 관점을 명시하고 사용자 판단에 위임하도록. 기본 켜짐.
|
||||
- `g1nation.conflictSeverityThreshold` *(string)* _(default: `"medium"`)_ — Conflict 자기-신호 surface 시 최소 severity 임계. low=가장 민감(노이즈 가능), medium=균형(기본), high=강한 충돌만.
|
||||
- _…and 62 more_
|
||||
- _…and 69 more_
|
||||
|
||||
## Dependencies
|
||||
- **Runtime** (2): `@lmstudio/sdk`, `pdf-parse`
|
||||
@@ -341,7 +343,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
|
||||
**Designed for High-Performance Decision Making.**
|
||||
Copyright (C) **g1nation**. All rights reserved.
|
||||
|
||||
_Last auto-scan: 2026-06-01T02:30:44.120Z · signature `a95021db`_
|
||||
_Last auto-scan: 2026-06-08T10:21:24.781Z · signature `e8d4a49a`_
|
||||
<!-- ASTRA:AUTO-END -->
|
||||
|
||||
## Purpose
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 1,
|
||||
"generatedAt": "2026-06-01T02:30:44.174Z",
|
||||
"generatedAt": "2026-06-08T10:21:24.842Z",
|
||||
"files": {
|
||||
"src/agent/actions/brainOps.ts": {
|
||||
"mtimeMs": 1779764602582.9768,
|
||||
@@ -462,9 +462,9 @@
|
||||
]
|
||||
},
|
||||
"src/config.ts": {
|
||||
"mtimeMs": 1780039183821.263,
|
||||
"size": 31114,
|
||||
"lines": 557,
|
||||
"mtimeMs": 1780910530256.6797,
|
||||
"size": 32937,
|
||||
"lines": 585,
|
||||
"role": "",
|
||||
"imports": []
|
||||
},
|
||||
@@ -647,6 +647,20 @@
|
||||
"src/features/calendar"
|
||||
]
|
||||
},
|
||||
"src/extension/evalCommands.ts": {
|
||||
"mtimeMs": 1780913394558.156,
|
||||
"size": 12681,
|
||||
"lines": 228,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/config",
|
||||
"src/utils",
|
||||
"src/retrieval",
|
||||
"src/retrieval/brainIndex",
|
||||
"src/retrieval/embeddings",
|
||||
"src/retrieval/evalHarness"
|
||||
]
|
||||
},
|
||||
"src/extension/initialSetup.ts": {
|
||||
"mtimeMs": 1779764602604.987,
|
||||
"size": 2982,
|
||||
@@ -725,13 +739,14 @@
|
||||
]
|
||||
},
|
||||
"src/extension.ts": {
|
||||
"mtimeMs": 1780280902153.7483,
|
||||
"size": 17342,
|
||||
"lines": 358,
|
||||
"mtimeMs": 1780909035802.1045,
|
||||
"size": 17590,
|
||||
"lines": 362,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/features/teamops/handlers",
|
||||
"src/features/system/handlers",
|
||||
"src/features/datacollect/handlers",
|
||||
"src/utils",
|
||||
"src/config",
|
||||
"src/agent",
|
||||
@@ -757,6 +772,7 @@
|
||||
"src/extension/providerCommands",
|
||||
"src/extension/scaffoldCommand",
|
||||
"src/extension/lessonCommands",
|
||||
"src/extension/evalCommands",
|
||||
"src/extension/telegramCommands",
|
||||
"src/extension/settingsSetup",
|
||||
"src/integrations/telegram/telegramSetup",
|
||||
@@ -902,7 +918,7 @@
|
||||
]
|
||||
},
|
||||
"src/features/calendar/oauth.ts": {
|
||||
"mtimeMs": 1779869692244.0415,
|
||||
"mtimeMs": 1780654426655.6082,
|
||||
"size": 10986,
|
||||
"lines": 236,
|
||||
"role": "Google OAuth 2.0 — loopback (Desktop app) 흐름. Google 은 Desktop 앱 OAuth client 에 대해 http://127.0.0.1:<ephemeralport> redirect URI 를 허용한다. 본 모듈은: 1. ephemeral port 에 일회용 HTTP 서버 띄움 2. 사용자 브라우저로 Google 로",
|
||||
@@ -964,9 +980,9 @@
|
||||
]
|
||||
},
|
||||
"src/features/company/dispatcher.ts": {
|
||||
"mtimeMs": 1779764602614.1453,
|
||||
"size": 70872,
|
||||
"lines": 1366,
|
||||
"mtimeMs": 1780367676001.7544,
|
||||
"size": 70731,
|
||||
"lines": 1364,
|
||||
"role": "Sequential dispatcher for 1인 기업 모드. Drives one company \"turn\": user prompt → CEO planner (JSON {brief, tasks}) → for each task in plan: dispatch one specialist (sequentially) - build specialist prompt",
|
||||
"imports": [
|
||||
"src/core/services",
|
||||
@@ -1021,9 +1037,9 @@
|
||||
]
|
||||
},
|
||||
"src/features/company/intentAlignment.ts": {
|
||||
"mtimeMs": 1779764602615.1484,
|
||||
"size": 16048,
|
||||
"lines": 343,
|
||||
"mtimeMs": 1780366738786.6855,
|
||||
"size": 18078,
|
||||
"lines": 367,
|
||||
"role": "Intent Alignment — 사용자의 자연어 요청을 실행 가능한 작업 조건으로 변환. 사용자는 자기 의도와 배경지식이 에이전트에게 충분히 전달되었다고 착각하는 경향이 있다 (투명성의 착각·지식의 저주·공통 기반 부족). 그래서 에이전트가 즉시 작업에 돌입하면 사용자가 머릿속에 가진 것과 다른 결과를 만들어 낸다. 이 모듈은 그 격차를 메꾸는 한 단계 ",
|
||||
"imports": [
|
||||
"src/core/services",
|
||||
@@ -1042,9 +1058,9 @@
|
||||
]
|
||||
},
|
||||
"src/features/company/pipelineTemplates.ts": {
|
||||
"mtimeMs": 1779065453876.108,
|
||||
"size": 15403,
|
||||
"lines": 278,
|
||||
"mtimeMs": 1780367702872.9678,
|
||||
"size": 16572,
|
||||
"lines": 285,
|
||||
"role": "Built-in pipeline templates for 1인 기업 모드. These are blueprints, not data — they're surfaced in the manage panel's \"템플릿에서 추가\" dropdown so a non-developer user can stamp out a working pipeline in one cl",
|
||||
"imports": [
|
||||
"src/features/company/types"
|
||||
@@ -1149,16 +1165,42 @@
|
||||
]
|
||||
},
|
||||
"src/features/datacollect/bridgeClient.ts": {
|
||||
"mtimeMs": 1779764602617.1548,
|
||||
"size": 7210,
|
||||
"lines": 164,
|
||||
"mtimeMs": 1780624716182.2822,
|
||||
"size": 8197,
|
||||
"lines": 177,
|
||||
"role": "",
|
||||
"imports": []
|
||||
},
|
||||
"src/features/datacollect/handlers.ts": {
|
||||
"mtimeMs": 1780624678671.3047,
|
||||
"size": 35540,
|
||||
"lines": 666,
|
||||
"role": "Datacollect handlers — /benchmark · /youtube · /blog · /wikify · /meet. (/research(NotebookLM)는 v2.2.205 에서 제거 — 로컬 Datacollect 앱 전용으로 분리) v2.2.201 에서 slashRouter.ts 에서 분리. Datacollect bridge (port 30",
|
||||
"imports": [
|
||||
"src/features/datacollect/slashRouter",
|
||||
"src/features/datacollect/llm",
|
||||
"src/features/datacollect/bridgeClient",
|
||||
"src/features/datacollect/prompts/synthesisPrompt",
|
||||
"src/features/datacollect/prompts/youtubePrompts",
|
||||
"src/features/datacollect/prompts/wikifyPrompt",
|
||||
"src/features/datacollect/prompts/meetPrompt",
|
||||
"src/features/calendar",
|
||||
"src/features/datacollect/scheduling/calendarHelpers"
|
||||
]
|
||||
},
|
||||
"src/features/datacollect/llm.ts": {
|
||||
"mtimeMs": 1780281843749.1597,
|
||||
"size": 6940,
|
||||
"lines": 122,
|
||||
"role": "Datacollect LLM 호출 인프라 — bridge /api/lm 프록시 통해 OpenAI 호환 chat completion 단발 호출. v2.2.201 에서 slashRouter.ts 에서 분리. 옛 위치는 slashRouter.callLmSynthesis 였으나 datacollect handlers + teamops/communication 양쪽이",
|
||||
"imports": [
|
||||
"src/features/datacollect/bridgeClient"
|
||||
]
|
||||
},
|
||||
"src/features/datacollect/prompts/meetPrompt.ts": {
|
||||
"mtimeMs": 1779764602618.1577,
|
||||
"size": 2593,
|
||||
"lines": 72,
|
||||
"mtimeMs": 1780626429387.7917,
|
||||
"size": 7379,
|
||||
"lines": 95,
|
||||
"role": "회의 녹취 텍스트 → 사실 기반 구조화 회의록(Actionable Minutes) LLM 프롬프트. 사용자 정의 규칙: Fact/Discussion/Decision/Risk/Action 분류, 메타데이터 우선.",
|
||||
"imports": []
|
||||
},
|
||||
@@ -1169,6 +1211,13 @@
|
||||
"role": "/benchmark 보고서의 3 파트 분할 — 1: 4-렌즈 / 2: IA + 토큰 / 3: 재구축 명세.",
|
||||
"imports": []
|
||||
},
|
||||
"src/features/datacollect/prompts/weeklyPrompt.ts": {
|
||||
"mtimeMs": 1780554147645.3784,
|
||||
"size": 4702,
|
||||
"lines": 96,
|
||||
"role": "/weekly 주간 보고서 LLM 프롬프트. 입력: 캘린더(Google Tasks)에서 버킷팅된 금주/차주 task 목록 + 각 task 의 제목·마감·상태·메모(= /meet·/task 가 넣은 \"작업 상세 / 맥락\"). 금주/차주 분류는 호출부(coordination.ts)에서 due/completed 날짜로 이미 끝낸 상태로 들어온다. 이 프롬프트는 ",
|
||||
"imports": []
|
||||
},
|
||||
"src/features/datacollect/prompts/wikifyPrompt.ts": {
|
||||
"mtimeMs": 1779764602619.1604,
|
||||
"size": 4597,
|
||||
@@ -1184,33 +1233,23 @@
|
||||
"imports": []
|
||||
},
|
||||
"src/features/datacollect/scheduling/calendarHelpers.ts": {
|
||||
"mtimeMs": 1779764602620.1636,
|
||||
"size": 4222,
|
||||
"lines": 89,
|
||||
"mtimeMs": 1780538342100.897,
|
||||
"size": 4615,
|
||||
"lines": 97,
|
||||
"role": "/meet 슬래시 명령의 후처리 — 회의록에서 action items 를 뽑아 캘린더 task 일정을 계산하는 stateless helpers. slashRouter 의 inline 블록을 분리. - addBusinessDays(base, n) — 토·일 제외 영업일 n 일 후 날짜 - toYmd(d) — Date → 'YYYY-MM-DD' - extrac",
|
||||
"imports": []
|
||||
},
|
||||
"src/features/datacollect/slashRouter.ts": {
|
||||
"mtimeMs": 1780280990100.2815,
|
||||
"size": 67318,
|
||||
"lines": 1240,
|
||||
"mtimeMs": 1780281950731.9368,
|
||||
"size": 10210,
|
||||
"lines": 201,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/utils",
|
||||
"src/features/datacollect/bridgeClient",
|
||||
"src/features/calendar",
|
||||
"src/sidebar/managers/chronicleProjectStore",
|
||||
"src/memory",
|
||||
"src/config",
|
||||
"src/retrieval/terminologyBlock",
|
||||
"src/agent/termValidator",
|
||||
"src/features/teamops/handlers/_shared",
|
||||
"src/features/datacollect/llm",
|
||||
"src/features/setup/datacollectSetup",
|
||||
"src/features/datacollect/prompts/synthesisPrompt",
|
||||
"src/features/datacollect/prompts/youtubePrompts",
|
||||
"src/features/datacollect/prompts/wikifyPrompt",
|
||||
"src/features/datacollect/prompts/meetPrompt",
|
||||
"src/features/datacollect/scheduling/calendarHelpers"
|
||||
"src/features/stocks"
|
||||
]
|
||||
},
|
||||
"src/features/devilAgent/devilPrompt.ts": {
|
||||
@@ -1460,9 +1499,9 @@
|
||||
]
|
||||
},
|
||||
"src/features/settings/settingsPanelProvider.ts": {
|
||||
"mtimeMs": 1779764602623.2012,
|
||||
"size": 33801,
|
||||
"lines": 707,
|
||||
"mtimeMs": 1780882651758.066,
|
||||
"size": 35067,
|
||||
"lines": 728,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/integrations/telegram/telegramClient",
|
||||
@@ -1475,8 +1514,8 @@
|
||||
]
|
||||
},
|
||||
"src/features/setup/datacollectSetup.ts": {
|
||||
"mtimeMs": 1779764602624.204,
|
||||
"size": 12689,
|
||||
"mtimeMs": 1780624672053.5078,
|
||||
"size": 12679,
|
||||
"lines": 267,
|
||||
"role": "Datacollect 의존성(Python 패키지) 자동 설치/검증 모듈. 의도: Astra extension 만 깔고 끝나면 /youtube, /research 같은 datacollect 슬래시 명령은 bridge 의 Python 의존성 (yt-dlp, youtube-transcript-api) 이 없어서 실패한다. 사용자가 그걸 매번 수동으로 깔아야 하는",
|
||||
"imports": [
|
||||
@@ -1664,8 +1703,8 @@
|
||||
]
|
||||
},
|
||||
"src/features/system/handlers.ts": {
|
||||
"mtimeMs": 1780280889224.8892,
|
||||
"size": 20518,
|
||||
"mtimeMs": 1780624661739.6692,
|
||||
"size": 20556,
|
||||
"lines": 394,
|
||||
"role": "System handlers — /memory · /glossary · /help (인프라·관리·발견). v2.2.200 에서 slashRouter.ts 에서 분리. 4인 팀 운영 도메인 아닌 \"ASTRA 자체 인프라\" 슬래시 명령. teamops handlers 와 같은 패턴.",
|
||||
"imports": [
|
||||
@@ -1693,32 +1732,35 @@
|
||||
"imports": []
|
||||
},
|
||||
"src/features/teamops/handlers/communication.ts": {
|
||||
"mtimeMs": 1780280515102.4714,
|
||||
"size": 13781,
|
||||
"lines": 254,
|
||||
"mtimeMs": 1780281864898.1965,
|
||||
"size": 13821,
|
||||
"lines": 255,
|
||||
"role": "TeamOps Communication — /draft · /feedback (외부 출력·기록). v2.2.199 에서 slashRouter.ts 에서 분리. (원래는 v2.2.200 예정이었으나 coordination 추출 시 register 라인이 인접해 묶여 함께 진행.)",
|
||||
"imports": [
|
||||
"src/features/datacollect/slashRouter",
|
||||
"src/features/datacollect/llm",
|
||||
"src/features/feedback/feedbackStore"
|
||||
]
|
||||
},
|
||||
"src/features/teamops/handlers/coordination.ts": {
|
||||
"mtimeMs": 1780280322364.4475,
|
||||
"size": 30738,
|
||||
"lines": 572,
|
||||
"mtimeMs": 1780554184648.2307,
|
||||
"size": 35565,
|
||||
"lines": 665,
|
||||
"role": "TeamOps Coordination — /task · /decisions · /onesie · /blocked · /standup. v2.2.199 에서 slashRouter.ts 에서 분리. 작업·결정·1:1·블로커·스탠드업 등 \"팀 운영의 실시간 부분\" 클러스터. 공통 헬퍼는 ./shared.ts 에서. 옛 slashRouter 의 local pars",
|
||||
"imports": [
|
||||
"src/features/datacollect/slashRouter",
|
||||
"src/features/teamops/handlers/_shared",
|
||||
"src/features/calendar",
|
||||
"src/sidebar/managers/chronicleProjectStore"
|
||||
"src/sidebar/managers/chronicleProjectStore",
|
||||
"src/features/datacollect/llm",
|
||||
"src/features/datacollect/prompts/weeklyPrompt"
|
||||
]
|
||||
},
|
||||
"src/features/teamops/handlers/dashboards.ts": {
|
||||
"mtimeMs": 1780279486170.9111,
|
||||
"size": 42079,
|
||||
"lines": 806,
|
||||
"role": "TeamOps Dashboards — /morning · /evening · /cohort · /weekly (CEO 일·주 리듬). v2.2.198 에서 slashRouter.ts 에서 분리. cross-data 합성 (Tasks + customers + hire + runway + Chronicle ADR) 으로 일/주/월 단위 시야 제공. 공통 헬퍼는",
|
||||
"mtimeMs": 1780554715659.2327,
|
||||
"size": 26379,
|
||||
"lines": 493,
|
||||
"role": "TeamOps Dashboards — /morning · /evening · /cohort (CEO 일·월 리듬). v2.2.198 에서 slashRouter.ts 에서 분리. cross-data 합성 (Tasks + customers + hire + runway + Chronicle ADR) 으로 일/월 단위 시야 제공. (구 /weekly CEO 리뷰 ",
|
||||
"imports": [
|
||||
"src/features/datacollect/slashRouter",
|
||||
"src/features/teamops/handlers/_shared",
|
||||
@@ -1918,9 +1960,9 @@
|
||||
]
|
||||
},
|
||||
"src/lib/contextBuilders/memoryContext.ts": {
|
||||
"mtimeMs": 1780276328602.9944,
|
||||
"size": 16862,
|
||||
"lines": 328,
|
||||
"mtimeMs": 1780911285246.217,
|
||||
"size": 17357,
|
||||
"lines": 331,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/agent",
|
||||
@@ -2185,18 +2227,18 @@
|
||||
]
|
||||
},
|
||||
"src/memory/LongTermMemory.ts": {
|
||||
"mtimeMs": 1780029930791.1965,
|
||||
"size": 10507,
|
||||
"lines": 281,
|
||||
"mtimeMs": 1780625897996.766,
|
||||
"size": 13457,
|
||||
"lines": 322,
|
||||
"role": "Long-Term Memory (장기 기억) 사용자의 취향, 프로젝트 목표, 반복 규칙, 과거 결정 사항을 영구적으로 저장하고 관리합니다. 저장 위치: {brainPath}/memory/longterm.json",
|
||||
"imports": [
|
||||
"src/memory/types"
|
||||
]
|
||||
},
|
||||
"src/memory/MemoryExtractor.ts": {
|
||||
"mtimeMs": 1778028987415.8738,
|
||||
"size": 3953,
|
||||
"lines": 115,
|
||||
"mtimeMs": 1780625907142.6775,
|
||||
"size": 4402,
|
||||
"lines": 120,
|
||||
"role": "Memory Extractor (기억 추출기) 대화 종료 시 히스토리를 분석하여 각 메모리 레이어에 저장할 정보를 자동으로 추출합니다. LLM 호출 없이 패턴 매칭 기반으로 동작합니다.",
|
||||
"imports": [
|
||||
"src/memory/LongTermMemory",
|
||||
@@ -2249,16 +2291,24 @@
|
||||
]
|
||||
},
|
||||
"src/retrieval/brainIndex.ts": {
|
||||
"mtimeMs": 1778667252738.4248,
|
||||
"size": 13270,
|
||||
"lines": 325,
|
||||
"mtimeMs": 1780911242607.242,
|
||||
"size": 22019,
|
||||
"lines": 536,
|
||||
"role": "Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 <brainPath>/.astra/brain-index.json 에",
|
||||
"imports": [
|
||||
"src/retrieval/scoring",
|
||||
"src/retrieval/lessonHelpers",
|
||||
"src/retrieval/chunker",
|
||||
"src/utils"
|
||||
]
|
||||
},
|
||||
"src/retrieval/chunker.ts": {
|
||||
"mtimeMs": 1780910566332.277,
|
||||
"size": 6927,
|
||||
"lines": 174,
|
||||
"role": "Markdown Section Chunker (Phase 1-가) 긴 노트를 #~###### 헤딩 경계로 섹션 청크 로 나눈다. 파일 단위 색인은 5000자 다주제 문서를 하나의 흐릿한 단위로 만들어 검색 정밀도를 떨어뜨린다 — 섹션 단위로 쪼개면 질의가 정확히 해당 섹션에 매치된다 (제2뇌의 \"문서 청킹 전략\" 지식 그대로). 규칙: - 각 헤딩 ~ 다음",
|
||||
"imports": []
|
||||
},
|
||||
"src/retrieval/citationTrace.ts": {
|
||||
"mtimeMs": 1780032397612.986,
|
||||
"size": 2348,
|
||||
@@ -2279,9 +2329,9 @@
|
||||
]
|
||||
},
|
||||
"src/retrieval/contextBudget.ts": {
|
||||
"mtimeMs": 1779764602653.6396,
|
||||
"size": 5276,
|
||||
"lines": 140,
|
||||
"mtimeMs": 1780654426656.6118,
|
||||
"size": 6442,
|
||||
"lines": 156,
|
||||
"role": "Context Budget Manager (컨텍스트 예산 관리) 시스템 프롬프트의 토큰 예산을 관리하여 로컬 모델의 context window를 효율적으로 활용합니다.",
|
||||
"imports": [
|
||||
"src/retrieval/types"
|
||||
@@ -2305,6 +2355,13 @@
|
||||
"src/utils"
|
||||
]
|
||||
},
|
||||
"src/retrieval/evalHarness.ts": {
|
||||
"mtimeMs": 1780908975047.264,
|
||||
"size": 9812,
|
||||
"lines": 218,
|
||||
"role": "Retrieval Evaluation Harness 골든셋(질문 → 기대 문서)으로 brain 검색 품질을 recall@k / MRR 로 결정적으로 측정한다. 청킹·re-rank·embedding alpha 등 어떤 변경이 실제로 recall 을 올렸는지 숫자로 증명하기 위한 토대 — 이게 있어야 RAG 개선이 \"감(感)\" 이 아니라 무결성 있는 엔지니어링",
|
||||
"imports": []
|
||||
},
|
||||
"src/retrieval/hierarchicalLevel.ts": {
|
||||
"mtimeMs": 1780030714979.2786,
|
||||
"size": 5908,
|
||||
@@ -2315,9 +2372,9 @@
|
||||
]
|
||||
},
|
||||
"src/retrieval/index.ts": {
|
||||
"mtimeMs": 1780030794352.5571,
|
||||
"size": 26702,
|
||||
"lines": 549,
|
||||
"mtimeMs": 1780913354474.1672,
|
||||
"size": 36447,
|
||||
"lines": 747,
|
||||
"role": "RetrievalOrchestrator — Unified RAG Pipeline Astra의 모든 검색 소스를 통합 관리하는 오케스트레이터입니다. 검색 흐름: ① Query Planning — 의도 분류 + 검색 전략 결정 ② Parallel Search — Brain + Memory + Project + Episode 동시 검색 ③ Result Fusio",
|
||||
"imports": [
|
||||
"src/config",
|
||||
@@ -2386,7 +2443,7 @@
|
||||
]
|
||||
},
|
||||
"src/retrieval/types.ts": {
|
||||
"mtimeMs": 1779764602656.6587,
|
||||
"mtimeMs": 1780654426658.6223,
|
||||
"size": 2485,
|
||||
"lines": 66,
|
||||
"role": "Retrieval Types (검색 결과 통합 타입) 모든 검색 소스(Brain, Memory, Project, Episode)의 결과를 통합 인터페이스로 정의합니다.",
|
||||
@@ -2752,9 +2809,9 @@
|
||||
]
|
||||
},
|
||||
"src/sidebarProvider.ts": {
|
||||
"mtimeMs": 1779764602678.0857,
|
||||
"size": 153639,
|
||||
"lines": 3186,
|
||||
"mtimeMs": 1780907511341.9016,
|
||||
"size": 157039,
|
||||
"lines": 3180,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/utils",
|
||||
@@ -2867,9 +2924,9 @@
|
||||
"imports": []
|
||||
},
|
||||
"src/utils.ts": {
|
||||
"mtimeMs": 1779764602679.089,
|
||||
"size": 26357,
|
||||
"lines": 471,
|
||||
"mtimeMs": 1780626069575.9587,
|
||||
"size": 27057,
|
||||
"lines": 472,
|
||||
"role": "",
|
||||
"imports": [
|
||||
"src/config",
|
||||
@@ -2877,23 +2934,23 @@
|
||||
]
|
||||
},
|
||||
"media/settings-panel.css": {
|
||||
"mtimeMs": 1778549008877.4587,
|
||||
"size": 4756,
|
||||
"lines": 210,
|
||||
"mtimeMs": 1780882667511.7163,
|
||||
"size": 6041,
|
||||
"lines": 254,
|
||||
"role": "Stylesheet",
|
||||
"imports": []
|
||||
},
|
||||
"media/settings-panel.html": {
|
||||
"mtimeMs": 1779764602573.4797,
|
||||
"size": 23829,
|
||||
"lines": 406,
|
||||
"mtimeMs": 1780882658555.451,
|
||||
"size": 26332,
|
||||
"lines": 440,
|
||||
"role": "Astra Settings",
|
||||
"imports": []
|
||||
},
|
||||
"media/settings-panel.js": {
|
||||
"mtimeMs": 1779764602573.4797,
|
||||
"size": 22596,
|
||||
"lines": 469,
|
||||
"mtimeMs": 1780881704898.5125,
|
||||
"size": 24963,
|
||||
"lines": 505,
|
||||
"role": "",
|
||||
"imports": []
|
||||
},
|
||||
@@ -3494,7 +3551,7 @@
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/chronicle.config.json": {
|
||||
"mtimeMs": 1780281037893.3647,
|
||||
"mtimeMs": 1780914060109.104,
|
||||
"size": 371,
|
||||
"lines": 11,
|
||||
"role": "JSON configuration",
|
||||
@@ -3703,6 +3760,27 @@
|
||||
"role": "ADR: 여전히 오타가 있어. 그러고 어색한 답변도 있네. 오타 및 문맥 수정 사항 S.M.A.T -> S.M.A.R.T: 하드디스크의 자가 진단 기능을...",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/decisions/ADR-0030-outlook에서도-이메일-내용을-가져올-수-있나.md": {
|
||||
"mtimeMs": 1780655594198.4128,
|
||||
"size": 1444,
|
||||
"lines": 19,
|
||||
"role": "ADR: outlook에서도 이메일 내용을 가져올 수 있나?",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/decisions/ADR-0031-아래-프로젝트의-로직을-분석하고-어떻게-하면-astra가-더-정확하고-정교하게-개선할-수-있는-부분이-있는지.md": {
|
||||
"mtimeMs": 1780908096070.1074,
|
||||
"size": 1660,
|
||||
"lines": 19,
|
||||
"role": "ADR: 아래 프로젝트의 로직을 분석하고 어떻게 하면 astra가 더 정확하고, 정교하게 개선할 수 있는 부분이 있는지 검토해주고 의견을 주면 좋겠어. ...",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/decisions/ADR-0032-아래-프로젝트의-로직을-분석하고-어떻게-하면-astra가-더-정확하고-정교하게-개선할-수-있는-부분이-있는지.md": {
|
||||
"mtimeMs": 1780914029189.1228,
|
||||
"size": 1660,
|
||||
"lines": 19,
|
||||
"role": "ADR: 아래 프로젝트의 로직을 분석하고 어떻게 하면 astra가 더 정확하고, 정교하게 개선할 수 있는 부분이 있는지 검토해주고 의견을 주면 좋겠어. ...",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": {
|
||||
"mtimeMs": 1778028987330.4185,
|
||||
"size": 1564,
|
||||
@@ -3948,6 +4026,13 @@
|
||||
"role": "Development Log: 아스트라를 지금 보다 더 날카롭고 신뢰감이 높은 아이 그리고 나의 의도를 잘 파악하게 하기 위해서는 어떤부분을 강화하는게 좋을까?",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/development/2026-06-08_아니-지금-코드-업데이트를-했거든-다시-코드를-검토하고-의견을-줘_implementation.md": {
|
||||
"mtimeMs": 1780914060075.0564,
|
||||
"size": 1413,
|
||||
"lines": 23,
|
||||
"role": "Development Log: 아니 지금 코드 업데이트를 했거든. 다시 코드를 검토하고 의견을 줘.",
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업-할-거야.md": {
|
||||
"mtimeMs": 1778720117404.2578,
|
||||
"size": 668,
|
||||
@@ -4047,9 +4132,9 @@
|
||||
"imports": []
|
||||
},
|
||||
"docs/records/ConnectAI/timeline.md": {
|
||||
"mtimeMs": 1780281037885.788,
|
||||
"size": 15049,
|
||||
"lines": 236,
|
||||
"mtimeMs": 1780914060076.0566,
|
||||
"size": 15782,
|
||||
"lines": 248,
|
||||
"role": "Project Timeline",
|
||||
"imports": []
|
||||
},
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "직답 결과 — single-pass mock 응답입니다.",
|
||||
"createdAt": 1780367973993,
|
||||
"createdAt": 1780882719870,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "---\nid: wiki_on\ndate: 2026-06-02T02:39:33.994Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\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- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (25ms)\n",
|
||||
"createdAt": 1780367973995,
|
||||
"result": "---\nid: wiki_on\ndate: 2026-06-08T01:38:39.872Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\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- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (21ms)\n",
|
||||
"createdAt": 1780882719872,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"missionId": "wiki_on",
|
||||
"status": "completed",
|
||||
"startTime": "2026-06-02T02:39:33.967Z",
|
||||
"totalElapsedMs": 28,
|
||||
"startTime": "2026-06-08T01:38:39.847Z",
|
||||
"totalElapsedMs": 26,
|
||||
"results": {
|
||||
"direct": "직답 결과 — single-pass mock 응답입니다."
|
||||
},
|
||||
@@ -12,16 +12,16 @@
|
||||
{
|
||||
"from": "idle",
|
||||
"to": "direct",
|
||||
"durationMs": 25,
|
||||
"durationMs": 21,
|
||||
"message": "답변 작성 중... (단일 호출 fast-path)",
|
||||
"ts": "2026-06-02T02:39:33.992Z"
|
||||
"ts": "2026-06-08T01:38:39.868Z"
|
||||
},
|
||||
{
|
||||
"from": "direct",
|
||||
"to": "completed",
|
||||
"durationMs": 3,
|
||||
"durationMs": 5,
|
||||
"message": "미션 완료",
|
||||
"ts": "2026-06-02T02:39:33.995Z"
|
||||
"ts": "2026-06-08T01:38:39.873Z"
|
||||
}
|
||||
],
|
||||
"resilienceMetrics": {
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "Final report with inconsistencies. This should be long enough to pass validation.",
|
||||
"createdAt": 1780367980792,
|
||||
"createdAt": 1780882727041,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "Final report with inconsistencies. This should be long enough to pass validation.",
|
||||
"createdAt": 1780367980791,
|
||||
"createdAt": 1780882727039,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]",
|
||||
"createdAt": 1780367980787,
|
||||
"createdAt": 1780882727035,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
|
||||
"createdAt": 1780367980789,
|
||||
"createdAt": 1780882727037,
|
||||
"modelVersion": "unknown"
|
||||
}
|
||||
+10
-10
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"missionId": "stress_conflict_1780367980767",
|
||||
"missionId": "stress_conflict_1780882727018",
|
||||
"status": "completed",
|
||||
"startTime": "2026-06-02T02:39:40.767Z",
|
||||
"totalElapsedMs": 26,
|
||||
"startTime": "2026-06-08T01:38:47.018Z",
|
||||
"totalElapsedMs": 24,
|
||||
"results": {
|
||||
"outline": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]",
|
||||
"section_0": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
|
||||
@@ -14,30 +14,30 @@
|
||||
{
|
||||
"from": "idle",
|
||||
"to": "outline",
|
||||
"durationMs": 19,
|
||||
"durationMs": 15,
|
||||
"message": "답변 구조 잡는 중...",
|
||||
"ts": "2026-06-02T02:39:40.786Z"
|
||||
"ts": "2026-06-08T01:38:47.033Z"
|
||||
},
|
||||
{
|
||||
"from": "outline",
|
||||
"to": "section",
|
||||
"durationMs": 3,
|
||||
"message": "본문 작성 중...",
|
||||
"ts": "2026-06-02T02:39:40.789Z"
|
||||
"ts": "2026-06-08T01:38:47.036Z"
|
||||
},
|
||||
{
|
||||
"from": "section",
|
||||
"to": "polish",
|
||||
"durationMs": 1,
|
||||
"durationMs": 2,
|
||||
"message": "최종 다듬기 중...",
|
||||
"ts": "2026-06-02T02:39:40.790Z"
|
||||
"ts": "2026-06-08T01:38:47.038Z"
|
||||
},
|
||||
{
|
||||
"from": "polish",
|
||||
"to": "completed",
|
||||
"durationMs": 2,
|
||||
"durationMs": 4,
|
||||
"message": "미션 완료",
|
||||
"ts": "2026-06-02T02:39:40.792Z"
|
||||
"ts": "2026-06-08T01:38:47.042Z"
|
||||
}
|
||||
],
|
||||
"resilienceMetrics": {
|
||||
Reference in New Issue
Block a user