
Kile mradi huu hufanya
AI Coding Assistant Data Extraction hukusanya mazungumzo yaliyohifadhiwa kwenye kompyuta yako kutoka kwa wasaidizi kadhaa wa uandishi wa msimbo, kisha kuyaandika katika muundo thabiti wa JSONL. Ni muhimu kwa kuhifadhi nakala ya historia ya mazungumzo, kufanya uchanganuzi binafsi, kuandaa data ya fine-tuning, au kuhifadhi mazungumzo kabla programu haijafuta hifadhidata yake ya ndani.
Zana hii hutambua kiotomatiki maeneo ya hifadhi kwenye macOS, Linux na Windows. Inaweza kusoma faili za JSONL, faili za vipindi vya JSON, nakala za Markdown, hifadhidata za SQLite na miti ya hifadhi ya JSON iliyopachikwa bila kuhitaji utegemezi wa Python wa wahusika wengine.
Vyanzo vinavyotumika
Mradi huu kwa sasa unaunga mkono zana zifuatazo:
- Claude Code: Faili za vipindi vya JSONL zilizo chini ya
~/.claude/projects/. - Codex CLI: Faili za uendeshaji za JSONL zilizo chini ya
~/.codex/sessions/. - Cursor: Faili za SQLite
state.vscdbkatika hifadhi ya jumla na ya nafasi za kazi. - Windsurf: Hifadhi ya SQLite inayochanganuliwa kwa mbinu ya makadirio bora.
- Trae: Hifadhi ya SQLite na JSONL inayochanganuliwa kwa mbinu ya makadirio bora.
- Continue: Faili za JSON katika
~/.continue/sessions/. - Gemini CLI: Faili za mazungumzo ya JSON zilizo chini ya
~/.gemini/tmp/. - OpenCode: Miti ya vipindi, ujumbe na sehemu katika JSON.
- Cline na Roo Code: Folda za kazi za JSON zinazohifadhiwa na kiendelezi cha kihariri.
- Aider: Nakala za Markdown zinazoitwa
.aider.chat.history.mdndani ya saraka za miradi.
Usakinishaji na usanidi
Clone au pakua hazina, kisha endesha hati zake kutoka kwenye mzizi wa mradi. Kitoaji hutumia maktaba ya kawaida ya Python pekee. Python 3.9 au mpya zaidi inahitajika, huku Python 3.10 au mpya zaidi ikipendekezwa.
python --version
Hakuna mazingira ya mtandaoni au usakinishaji wa utegemezi unaohitajika kwa kitoaji kikuu. Kabla ya kutoa data, hakikisha kuwa zana husika za uandishi wa msimbo kwa kutumia AI zimetumika kwenye kompyuta hiyo ili faili au hifadhidata za mazungumzo ya ndani ziwepo.
Fanya utoaji wako wa kwanza
Kwa mtiririko wa kazi wa mwingiliano, endesha hati kuu bila hoja. Itaonyesha menyu yenye nambari ili uweze kuchagua vyanzo vya kutoa.
python extract.py
Ili kutoa data kutoka kwa vyanzo vyote vinavyotumika bila maulizo, tumia --all.
python extract.py --all
Pia unaweza kuchagua vyanzo mahususi kwa kutumia orodha iliyotenganishwa kwa koma. Vitambulisho vya vyanzo vinaonyeshwa kwenye jedwali la vyanzo la hazina au kwa kutumia --list.
python extract.py --sources cursor,claude_code,aider
Ili kuona usakinishaji uliotambuliwa bila kutoa mazungumzo yoyote, endesha:
python extract.py --list
Njia fupi ya shell iliyojumuishwa hufanya utoaji kutoka kwa vyanzo vyote kwenye mifumo inayopatikana:
./extract_all.sh
Chagua njia za kutoa na kutafuta
Kwa chaguo-msingi, faili za JSONL zenye muhuri wa muda huandikwa kwenye ./extracted_data. Tumia --output-dir kuchagua eneo tofauti la kuhifadhi.
python extract.py --all --output-dir ./chat-backup
Zana nyingi zina saraka za data za programu zinazotabirika, kwa hiyo kitoaji hutafuta kiotomatiki maeneo ya kawaida ya mifumo ya uendeshaji. Aider ni tofauti: huhifadhi nakala moja ya Markdown ndani ya kila saraka ya mradi badala ya kutumia folda kuu ya data ya programu.
Tumia chaguo moja au zaidi za --search-path wakati miradi au data ya programu yako iko nje ya maeneo ya kawaida.
python extract.py --sources aider \
--search-path ~/client-work \
--search-path /mnt/data/repos
Njia za ziada za kutafuta pia ni muhimu kwa usakinishaji usio wa kawaida wa zana nyingine zinazotumika.
Unganisha mazungumzo kuwa faili moja
Kila chanzo kilichochaguliwa kwa kawaida hupokea faili yake ya kutoa yenye muhuri wa muda. Ongeza --merge ili pia kuunganisha mazungumzo yote yaliyotolewa kwenye all_conversations.jsonl.
python extract.py --all --merge
Saraka ya kawaida ya matokeo inaweza kuwa na faili kama hizi:
extracted_data/
├── claude_code_conversations_20260816_143022.jsonl
├── cursor_conversations_20260816_143022.jsonl
├── aider_conversations_20260816_143022.jsonl
├── cline_conversations_20260816_143022.jsonl
└── all_conversations.jsonl
Elewa muundo uliosanifishwa
Kila mstari katika faili la matokeo huwakilisha mazungumzo moja. Muundo wa kawaida unajumuisha safu ya messages, kitambulisho cha source na session_id. Sehemu nyingine hutegemea kile ambacho zana ya awali ilirekodi.
{
"messages": [
{
"role": "user",
"content": "How do I fix this TypeScript error?",
"code_context": [
{
"file": "/Users/you/project/index.ts",
"code": "const x: string = 123;"
}
],
"timestamp": "2026-01-16T14:30:22Z"
},
{
"role": "assistant",
"content": "The error occurs because a number is assigned to a string type.",
"tool_use": [
{
"name": "edit_file",
"input": {"path": "src/index.ts"}
}
],
"timestamp": "2026-01-16T14:30:25Z"
}
],
"source": "cursor-composer",
"session_id": "c1a2b3...",
"project_path": "/Users/you/project",
"name": "TypeScript Type Error Fix",
"created_at": 1705414222000
}
Sehemu kama code_context, matumizi ya tokeni, njia za miradi, mihuri ya muda, miito ya zana na tofauti hujumuishwa pale chanzo kinapozihifadhi. Sehemu unazoweza kuzitegemea kwa uthabiti ni messages, source na session_id.
Jinsi utoaji unavyofanya kazi
- Programu hutambua mfumo wa uendeshaji na kuunda orodha ya mizizi ya data inayowezekana, ikijumuisha maeneo kama
Application Support,.config,.local/share,%APPDATA%, na%LOCALAPPDATA%. - Kila chanzo hutafuta majina yake yanayojulikana ya folda na faili katika mizizi hiyo.
- Kisomaji kinachofaa hupakia hifadhi ya JSONL, JSON, SQLite, Markdown, au JSON iliyopachikwa.
- Kichujio husawazisha rekodi zilizogunduliwa ziwe katika muundo wa pamoja wa ujumbe.
- Faili za JSONL zenye mihuri ya muda huandikwa kwenye saraka ya matokeo.
Hifadhidata za SQLite hufunguliwa katika hali ya kusoma pekee, jambo linalosaidia kuzuia kuzuia kihariri kinachoendelea kufanya kazi. Visomaji pia hutenganishwa ili faili iliyoharibika au iliyofungwa itoe matokeo ya sehemu badala ya kusimamisha uchimbaji wote.
Kushughulikia miundo ya hifadhi isiyoandikwa
Cursor, Windsurf, na Trae hazichapishi miundo thabiti ya hifadhi. Kichujio cha Cursor hushughulikia wazi miundo kadhaa inayojulikana, ikijumuisha gumzo la ItemTable la nafasi ya kazi, data ya mtunzi iliyopachikwa, na data ya mtunzi iliyogawanywa yenye bubbleId.
Windsurf na Trae hutumia mbinu ya jumla ya kiheuristiki katika extractors/common.py. Hutafuta funguo zinazohusiana na gumzo na kupitia JSON iliyochanganuliwa kutafuta vitu vinavyofanana na jozi za ujumbe zenye jukumu na maandishi. Hii imekusudiwa kuwa juhudi bora. Ikiwa sasisho la baadaye la programu litabadilisha muundo wa hifadhi, huenda thamani husika za KEY_HINTS zikahitaji kusasishwa.
Kutumia matokeo kwa data ya mafunzo
Faili za JSONL zilizosawazishwa zinaweza kupakiwa kwa kutumia maktaba ya Hugging Face datasets. Mfano ufuatao hupakia faili zote zilizotolewa, huhifadhi mazungumzo yenye ujumbe wa msaidizi, na kuyaunda kwa kutumia kiolezo cha gumzo cha tokeniza.
from datasets import load_dataset
dataset = load_dataset(
"json",
data_files="extracted_data/*.jsonl",
split="train"
)
dataset = dataset.filter(
lambda x: any(m["role"] == "assistant" for m in x["messages"])
)
def format_chat(example):
return {
"text": tokenizer.apply_chat_template(
example["messages"],
tokenize=False
)
}
dataset = dataset.map(format_chat)
Kagua na ubadilishe rekodi zaidi kulingana na mahitaji ya modeli yako. Vyanzo tofauti vinaweza kuwa na sehemu za hiari tofauti, kwa hivyo mabomba ya mafunzo yanapaswa kutegemea hasa muundo wa ujumbe wa pamoja.
Kupanua kichujio kwa chanzo kipya
Kila kichujio cha chanzo hufuata kiolesura kidogo cha vitendaji viwili. Kunakili continue_ext.py kunatoa mwanzo rahisi.
DISPLAY_NAME = "My Tool"
SOURCE_ID = "my_tool"
def find_installations(extra_paths: list[Path] | None = None) -> list[Path]:
"""Return directories or files worth scanning."""
def extract(installations: list[Path]) -> list[dict]:
"""Return normalized conversation dictionaries."""
Baada ya kuunda moduli, isajili katika orodha ya REGISTRY iliyo kwenye extract.py. Visomaji vya pamoja na mbinu za jumla za kiheuristiki zinapatikana katika extractors/common.py.
Kulinda data nyeti ya mazungumzo
Historia za gumzo za ndani zinaweza kuwa na funguo za API, msimbo wa umiliki, njia za kibinafsi, taarifa za wateja, na michango ya zana. Kagua faili zilizotolewa kabla ya kuzishiriki au kuzitumia kwa mafunzo.
- Changanua matokeo kutafuta siri.
- Kagua kwa makini sehemu za
code_contextnatool_use. - Usikabidhi
extracted_data/kwenye hazina ya umma. - Hifadhi nakala rudufu nyeti kwenye hifadhi iliyosimbwa kwa njia fiche.
pip install detect-secrets --break-system-packages
detect-secrets scan extracted_data/*.jsonl
Mradi unajumuisha extracted_data/ katika .gitignore, lakini bado unapaswa kuthibitisha desturi zako za hazina na nakala rudufu kabla ya kuchapisha chochote.
Kutatua matatizo
Hakuna usakinishaji uliopatikana
Zana huenda haijasakinishwa, huenda isiwe na historia yoyote ya gumzo iliyohifadhiwa, au huenda ikatumia eneo lisilo la kawaida. Kwanza endesha --list, kisha toa saraka husika kwa --search-path. Unaweza pia kukagua vidhibiti vya SEARCH_DIRS au APP_DIR_NAMES katika kichujio cha chanzo.
Cursor au Windsurf inaripoti hifadhidata iliyofungwa
Vichujio hutumia miunganisho ya SQLite ya kusoma pekee, kwa hivyo programu inayoendelea kufanya kazi kwa kawaida haitazuia uchimbaji. Ikiwa hitilafu zitaendelea, funga programu na uendeshe uchimbaji tena.
Windsurf au Trae inatoa mazungumzo sifuri
Thibitisha kuwa saraka ya programu ilipatikana kwa --list. Ikiwa ilipatikana lakini hakuna gumzo lililotolewa, kagua funguo husika za state.vscdb na uongeze ruwaza zinazolingana kwenye KEY_HINTS katika kichujio husika.
Hitimisho
AI Coding Assistant Data Extraction hukupa njia isiyotegemea vitegemezi ya kuhifadhi na kusawazisha mazungumzo ya ndani ya usimbaji kwenye miundo mingi ya hifadhi na mifumo ya uendeshaji. Anza kwa python extract.py --list, chagua vyanzo unavyohitaji, kagua JSONL iliyozalishwa ili kutafuta taarifa nyeti, kisha utumie rekodi zilizosawazishwa kwa nakala rudufu, uchanganuzi, au michakato ya mafunzo iliyoandaliwa kwa uangalifu.
Zana hii imekusudiwa kwa data kutoka kwa zana za AI zilizosakinishwa kwenye mashine yako mwenyewe. Ni jukumu lako kuwa na haki za kutoa data hiyo, kulinda taarifa nyeti, kutii masharti ya kila zana, na kuchanganua siri kabla ya kushiriki au kufundishia kwa kutumia matokeo.
