Skip to content

Commit 55deb5c

Browse files
authored
Merge pull request #28 from itsflaid/codex/refine-ask-output
Refine ask retrieval and init UX
2 parents 82b99a5 + ff234d6 commit 55deb5c

11 files changed

Lines changed: 706 additions & 94 deletions

File tree

docs/for-me-personal/DEBUG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -744,3 +744,51 @@ TypeScript. Retry rate limit memakai satu cabang `if`, bukan loop berbatas.
744744

745745
TypeScript type assertion tidak memvalidasi data runtime. Semua data persisted
746746
harus melewati boundary validation sebelum dipakai oleh command lain.
747+
748+
## 14. Ask Output Terlalu Ramai Dan Jawaban Berulang
749+
750+
**Tanggal:** 2026-06-16
751+
**Status:** Selesai
752+
753+
### Gejala
754+
755+
`devmap ask` menampilkan `Relevant Files` dengan alasan scoring yang panjang
756+
dan jawaban AI dapat mengulang kalimat, memberi high-level outline terlalu
757+
panjang, atau menampilkan contoh kode padahal user hanya butuh arah file.
758+
759+
### Akar Masalah
760+
761+
Output human-readable memakai detail ranking internal yang lebih cocok untuk
762+
machine/debug output. Keyword extraction juga masih menyimpan connector word
763+
English seperti `to` dan `in`, sehingga partial match dapat menaikkan file yang
764+
tidak relevan. Prompt `ask` belum memberi kontrak format yang cukup tegas.
765+
766+
### Solusi
767+
768+
- Human output `Relevant Files` hanya menampilkan path.
769+
- Alasan scoring tetap dipertahankan pada `ask --json`.
770+
- Connector word English umum dikeluarkan dari keyword ranking.
771+
- Action word English dipisahkan menjadi intent generik, bukan hardcoded ke
772+
satu topik atau satu file.
773+
- Path/export scoring lebih memprioritaskan exact search terms daripada
774+
substring match.
775+
- Retrieval menambahkan confidence dan minimum relevance threshold. Jika tidak
776+
ada file yang melewati threshold, `ask` berhenti dengan jawaban lokal
777+
low-confidence tanpa memanggil Groq.
778+
- Context file menyiapkan field `exports`, `topFunctions`, dan `purpose` untuk
779+
function-level navigation berikutnya tanpa mengubah scope extraction sekarang.
780+
- Prompt `ask` meminta direct answer, `Key Files`, `Evidence` jika perlu,
781+
`Limits` jika context kurang, dan melarang repetisi serta code example panjang
782+
kecuali diminta. Untuk pertanyaan implementasi, prompt mengarahkan jawaban ke
783+
file/fungsi existing dalam context sebelum menyarankan file baru.
784+
785+
### Verifikasi
786+
787+
- `pnpm --filter devmap exec tsx --test test/context-builder.test.ts test/ask-command.test.ts test/ai-client.test.ts`
788+
789+
### Pelajaran
790+
791+
Informasi ranking bagus untuk agent dan debugging, tetapi terlalu bising untuk
792+
terminal manusia. Human mode harus ringkas; machine detail harus berada di JSON.
793+
Untuk MVP, `ask` adalah navigation helper berbasis snapshot, bukan coding
794+
agent. Low-confidence harus hemat token dan jujur, bukan meminta AI menebak.

docs/for-me-personal/PROGRESS.md

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,50 @@
11
# Progress DevMap
22

3-
Terakhir diperbarui: 2026-06-15
3+
Terakhir diperbarui: 2026-06-16
4+
5+
## Update 2026-06-16
6+
7+
### Ask Output Polish
8+
9+
- Human-readable `devmap ask` sekarang hanya menampilkan path pada bagian
10+
`Relevant Files`; alasan scoring tetap tersedia di `--json`.
11+
- Query understanding memisahkan intent umum (`add_feature`, `change`,
12+
`debug`, `explain`, `navigate`, `general`) dari keyword pencarian agar
13+
action word seperti `add`, `change`, atau `where` tidak mengganggu ranking.
14+
- Retrieval sekarang menyimpan `confidence` (`high`, `medium`, `low`) dan
15+
`topScore` pada `QuestionContext`.
16+
- Minimum relevance threshold mencegah file dengan skor lemah dikirim hanya
17+
karena menjadi kandidat terbaik dari hasil yang sama-sama tidak relevan.
18+
- Jika tidak ada file melewati threshold, `relevantFiles` kosong dan `ask`
19+
memberi jawaban lokal low-confidence tanpa memanggil Groq.
20+
- Context keyword extraction mengabaikan connector word English seperti `to`
21+
dan `in` agar file seperti `doctor.ts` tidak menang hanya karena partial
22+
stop-word match.
23+
- Scoring path/export sekarang memprioritaskan exact search term dibanding
24+
substring match, sehingga ranking lebih stabil untuk berbagai jenis
25+
pertanyaan.
26+
- Prompt `ask` sekarang meminta jawaban langsung, tidak mengulang pertanyaan,
27+
tidak mengulang section/sentence, dan tidak memberi contoh kode panjang
28+
kecuali user memintanya eksplisit.
29+
- Prompt `ask` menerima intent generik dan diarahkan untuk memulai dari file
30+
atau fungsi existing yang tersedia di context sebelum menyarankan file baru.
31+
- Context file sudah menyiapkan field future-oriented seperti `exports`,
32+
`topFunctions`, dan `purpose`; extraction fungsi lengkap belum masuk scope.
33+
- Scoring kembali memakai data project map utama seperti route metadata dan
34+
entry points agar `ask` tetap navigation helper berbasis snapshot.
35+
- Focused tests mencakup keyword extraction, ranking anti stop-word, output
36+
terminal ringkas, intent extraction generik, relevance confidence, threshold
37+
low-confidence, dan prompt contract.
38+
- Verification lulus untuk `pnpm test:cli`, `pnpm build:cli`, dan
39+
`git diff --check`.
40+
41+
### Init UX Polish
42+
43+
- `devmap init` human-mode sekarang menampilkan DevMap welcome brand panel di
44+
awal command.
45+
- Provider tidak lagi diprompt terpisah karena MVP hanya mendukung Groq.
46+
Output cukup menampilkan `Provider Groq`, lalu meminta Groq API key.
47+
- Focused verification lulus untuk init dan welcome tests.
448

549
## Update 2026-06-15
650

docs/for-me-personal/TEST.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,30 @@ Jalankan focused test ranking dan evaluation:
2323
pnpm --filter devmap exec tsx --test test/context-builder.test.ts test/context-builder-eval.test.ts
2424
```
2525

26+
Untuk polish output `ask`, jalankan focused contract test:
27+
28+
```powershell
29+
pnpm --filter devmap exec tsx --test test/context-builder.test.ts test/ask-command.test.ts test/ai-client.test.ts
30+
```
31+
2632
Expected result:
2733

2834
- Pertanyaan produk tidak memilih `test/`, `tests/`, `__tests__/`, fixture,
2935
`*.test.*`, atau `*.spec.*`.
3036
- Pertanyaan testing dalam English dapat memilih file tersebut.
3137
- Pertanyaan navigasi English memilih maksimal dua file dan 60 baris per file.
3238
- Istilah CLI dan web UI memprioritaskan package yang sesuai.
39+
- Connector word English seperti `to` dan `in` tidak menjadi keyword ranking.
40+
- Action word English seperti `add`, `change`, dan `where` dipakai sebagai
41+
intent, bukan keyword ranking.
42+
- Query perubahan fitur yang berbeda topik tetap memilih file existing yang
43+
relevan berdasarkan path/export/import, bukan special-case satu framework.
44+
- Query tanpa match kuat mengembalikan `confidence: "low"`, `topScore: 0`,
45+
dan `relevantFiles: []`, bukan fallback ke critical file acak.
46+
- Query low-confidence tidak memanggil Groq. Command memberi template lokal
47+
agar hemat token dan tidak mengarang file.
48+
- Human-readable `Relevant Files` hanya menampilkan path; alasan scoring tetap
49+
dicek melalui output `--json`.
3350
- Evaluation tetap top-1 accuracy 20/20 dan top-3 recall 20/20.
3451

3552
Manual source-mode check:
@@ -43,6 +60,12 @@ pnpm dev:cli ask "where is the web UI dashboard component?"
4360
Periksa `Relevant Files` dan prompt token usage. Query pertama seharusnya
4461
memprioritaskan production CLI source dan memakai context jauh lebih kecil
4562
daripada default lama lima file dengan maksimal 200 baris per file.
63+
Untuk pertanyaan implementasi, jawaban seharusnya langsung menyebut file yang
64+
perlu diperiksa/diedit lebih dulu dan tidak menampilkan contoh kode panjang
65+
kecuali diminta.
66+
Jika confidence rendah, jawaban seharusnya mengatakan tidak ada strong match,
67+
tidak menampilkan `Asking Groq`, dan tidak menyebut file random sebagai sumber
68+
pasti.
4669

4770
## Model Routing And Override
4871

0 commit comments

Comments
 (0)