Msaidizi wa uandishi wa kodi anayeendeshwa na AI kwenye foleni ya seva ya kiwango cha bure aliandika faili ya schema-migration baada ya sheria ya mfumo ya “freeze migrations” kutoweka wakati wa ufupishaji wa muktadha (context compaction) wa kiotomatiki. Tukio hili linaonyesha kuwa kutegemea maelekezo ya prompt ili kusimamia usalama kunaweza kuleta matokeo hasi wakati mazungumzo marefu yanapofupishwa.
Kilichotokea
Wakala wa uandishi wa kodi (coding agent) alikuwa akifanya kazi kwa kutumia prompt ya mfumo iliyokuwa na sheria moja: usitengeneze wala usibadilishe faili za migration. Sheria hiyo ilifanya schema migrations zibaki zimegandishwa (frozen) kwenye release branch wakati watengenezaji walipokuwa wakitumia wakala huyo kwa marekebisho ya kawaida.
Wakati wa kikao kirefu, mazungumzo yalizidi kikomo cha token za modeli. Seva ilitumia context compaction, ikibadilisha historia nzima ya mazungumzo kuwa muhtasari mfupi ili kubaki ndani ya bajeti ya token. Muhtasari huo ulihifadhi matamshi ya njia za faili (file-path) lakini uliondoa kizuizi cha kukanusha (“usandike kwenye migrations/**”). Wakati modeli ilipozalisha jibu lake linalofuata, sheria ya kugandisha haikuwa tena katika kumbukumbu yake ya kazi.
Kisha wakala alipendekeza marekebisho ya SQL ili kuboresha kasi ya query. Chombo kilichoambatana nacho kilihifadhi mabadiliko hayo kama faili ya migration kwenye diski. Majaribio ya unit (unit tests) yalifanikiwa kwa sababu hayatekelezi kamwe SQL migrations mbichi, na mabadiliko hayo yaligundulika baadaye tu katika diff ya mapitio ya kodi (code-review diff).
Kwa nini ni muhimu
- Vizuizi (Guardrails) vilipotea: Sera za kiwango cha prompt ni tete. Wakati muktadha wa modeli unapofupishwa, kipengele chochote cha “usifanye” kinaweza kupotea, na kuacha mfumo ukiwa huru kufanya vitendo vilivyopigwa marufuku.
- Majaribio ya unit hayatoshi: Majaribio ambayo hayatekelezi skripti za migration yanaweza kutoa hisia ya uongo ya usalama. Mabadiliko yalipita kwa sababu seti ya majaribio haikujaribu SQL hiyo mpya.
- Mapitio ya kibinadamu yalichelewa: Wakati mhakiki alipoona diff, faili ya migration ilikuwa tayari imewekwa (committed), hali iliyohitaji kurudisha nyuma (rollback) au usafishaji wa ziada.
Hitilafu hiyo haikusababisha kusimama kwa huduma (outage), lakini ililazimisha kazi ya ziada kurudisha nyuma migration isiyo ya lazima na kuongeza hatari ya kuteleza kwingine kulingana na hali hiyo kuathiri kanzidata (databases) zinazotumika.
Jinsi kizuizi kilivyofeli
- Sheria ya prompt pekee – Kugandisha kulikuwepo kama maandishi ya kawaida kwenye prompt ya mfumo.
- Kikao kirefu – Mazungumzo yalizidi dirisha la muktadha (context window) la modeli.
- Ufupishaji (Compaction) – Seva ilibadilisha nakala kamili ya mazungumzo kuwa muhtasari wenye nomino nyingi.
- Kupotea kwa kizuizi cha kukanusha – Muhtasari uliondoa maelekezo ya “usifanye”, hivyo kufuta sheria hiyo.
- Matokeo ya modeli – Bila sheria hiyo, modeli ilizalisha jibu linalotengeneza migration.
Wafupishaji (summarizers) huwa wanahifadhi nomino (njia za faili, majina ya kazi) na kuacha kanusho, ndiyo maana sheria hiyo ilitoweka kimyakimya.
Suluhisho: hamisha vizuizi kwenye njia ya uandishi (write path)
Badala ya kuweka marufuku ndani ya prompt, zisimamie pale kodi inapogusa diski.
- Tengeneza faili ya sera (mfano,
agent_policy.txt) inayoorodhesha njia zilizopigwa marufuku kamaschema/**aumigrations/**. - Ongeza skripti ya kabla ya kutekeleza (pre-apply script) inayosoma faili ya sera na kuchunguza kila diff kabla ya chombo cha kutekeleza (apply tool) kufanya kazi.
- Feli kwa kufunga (Fail closed) ikiwa faili ya sera haipo, ni tupu, au ikiwa diff inagusa njia iliyopigwa marufuku.
- Usiombe modeli kuthibitisha orodha ya marufuku; uthibitisho ni ishara tu, si usimamizi.
Vizuizi vya prompt pekee dhidi ya vizuizi vya msingi wa diski
| Kipengele | Kugandisha kwa prompt pekee | Mlango wa msingi wa diski |
|---|---|---|
| Hatari ya ufupishaji | Sheria inaweza kutoweka | Faili ya sera inabaki salama |
| Ufikiaji wa majaribio ya unit | Inaweza kukosa uandishi uliopigwa marufuku | Ukaguzi wa njia unazuia uandishi bila kujali majaribio |
| Wakati wa mapitio ya kibinadamu | Uharibifu unaweza kuwa tayari umefanyika | Uandishi hauanzi kamwe, mhakiki haoni mabadiliko |
| Jitihada za utekelezaji | Kidogo sana (mstari mmoja tu kwenye prompt) | Skripti ndogo + faili ya sera |
Upande wa pili
Cha kuangalia baadaye
Funzo kuu
Ikiwa unahitaji sheria ambayo haipaswi kupuuzwa kamwe—kama vile “hakuna migrations wakati wa kugandisha”—ihifadhi kwenye diski na uisimamie wakati wa uandishi. Maandishi ya prompt pekee hayawezi kuhakikisha kudumu mara tu muktadha wa modeli unapofupishwa.
