
HEXIS ni nini?
HEXIS ni kifurushi cha Python na zana ya mstari wa amri inayokusanya ujuzi wa wakala, unaowakilishwa na hati ya SKILL.md, kuwa mashine ya hali yenye kikomo iliyopanuliwa. Badala ya kuomba modeli ya lugha itafsiri ujuzi mzima na kuchagua kila hatua inayofuata, HEXIS hutumia hali, vigeu, walinzi na mipito ya kiprogramu ili kulazimisha mpangilio wa utendaji.
Modeli za lugha bado hufanya uelekezaji na uzalishaji ndani ya hali husika. Hata hivyo, mashine huamua operesheni inayofuata, vigeu vinavyopatikana, wakati mizunguko inapaswa kusimama, na matokeo ya mwisho yanayofikiwa. Muundo huu hupunguza hatari ya wakala kuruka, kubadilisha mpangilio, au kutumia isivyo sahihi masharti yaliyoandikwa kwenye ujuzi.
HEXIS imetolewa chini ya leseni ya MIT na kwa sasa imeainishwa kuwa programu ya alpha. Inaambatana na makala Compiling Agent Skills into Extended Finite State Machines.
Mtiririko mkuu wa kazi
Mtiririko wa kawaida wa HEXIS una hatua tatu:
- Kusanya: Modeli husoma hati ya ujuzi, ingizo za kazi, ufafanuzi wa zana na sheria za ujuzi, kisha huandaa mashine ya
efsm-v1. HEXIS hukagua skimu yake, walinzi, ufikikaji, ukomeshaji, ufunikaji wa vifungu na marejeleo ya zana. Rasimu zisizo sahihi hurudishwa kwa modeli ili zifanyiwe marekebisho. - Sasisha: Fuatiliaji mpya wa utekelezaji hubadilishwa kuwa matukio. Kwa kila hatua ya ufuatiliaji, modeli, faili la maamuzi au kipangaji cha kiotomatiki huamua iwapo itaendana na hali iliyopo, itaunda hali, itapuuza kelele, au itaondoa ufuatiliaji.
- Tekeleza: Mazingira ya utekelezaji hufanya kitendo kinachohusishwa na hali ya sasa, huhifadhi matokeo yaliyotangazwa, na kuchukua mpito wa kwanza ambao mlinzi wake hutathminiwa kuwa kweli.
Mashine iliyosasishwa hukubaliwa tu inapopitisha ukaguzi unaohitajika na inaweza kucheza tena ufuatiliaji mpya pamoja na kila ufuatiliaji uliokubaliwa hapo awali. Uthibitishaji ukishindwa, mashine iliyopo hubaki bila kubadilishwa.
Vipengele muhimu
- Ukusanyaji unaooana na OpenAI: Chagua modeli, kituo cha mwisho na kigeu cha mazingira cha ufunguo wa API kutoka kwenye mstari wa amri.
- Sasisho zinazoegemea ufuatiliaji: Jumuisha tabia ya utekelezaji iliyofaulu uamuzi mmoja kwa wakati bila kubatilisha ufuatiliaji uliokubaliwa hapo awali.
- Mashine za JSON zinazosomwa: Mashine hutumia muundo wa kawaida wa JSON wa
efsm-v1wenye vigeu vilivyo na aina na mipito iliyo wazi. - Aina nyingi za vitendo: Hali zinaweza kutekeleza vitendo vya
tool,model,judge,userauend. - Mtiririko wa udhibiti wenye mipaka: Walinzi waliopangwa na vihesabu vya mizunguko huwezesha matawi na mipaka ya majaribio tena.
- Nyaraka zinazozalishwa: Kila uundaji wa kawaida hujumuisha
GUIDE.mdnaPROMPT.md. - Tabia ya akiba: Hali ya akiba hujaribu tena kuanzia hatua ya hivi karibuni ya zana na inaweza kukabidhi kazi kwenye utekelezaji unaotafsiriwa wa ujuzi wa awali.
- Misingi ya zana: Mashine zinaweza kutumia zana za OpenCode, kitekelezaji cha Bash cha ndani, au zana zilizobainishwa kwenye sajili na kutekelezwa na modeli.
- Maj testing hermetic: Hazina ina zaidi ya majaribio 350 ambayo hayahitaji ufunguo wa API, kituo cha mwisho cha modeli au muunganisho wa mtandao.
Usakinishaji na mahitaji ya awali
Usakinishe kutoka PyPI
HEXIS inahitaji Python 3.11 au 3.12. Sakinisha kifurushi kwa pip:
pip install hexis-agent
Kifurushi huingizwa kwenye Python kama hexis, huku kitekelezi chake cha mstari wa amri kikiitwa hexis-agent.
Usakinishe kutoka kwenye checkout
pip install .
Kwa vitegemezi vya usanidi kama pytest, Ruff, build na Twine, tumia usakinishaji wa kuhaririwa:
pip install -e ".[dev]"
Mahitaji ya wakati wa utekelezaji
Kukusanya na kuendesha mashine zinazotegemea modeli kunahitaji kituo cha mwisho cha mazungumzo kinachoendana na OpenAI. Kihifadhi chaguo-msingi cha utekelezaji pia kinatarajia OpenCode iwe kwenye PATH. Ikiwa mashine inahitaji Bash pekee, chagua --executor local ili kuendesha amri katika subprocess ya ndani bila OpenCode.
Jaribu uanzishaji wa haraka nje ya mtandao
Kifurushi kinajumuisha mfano mdogo wa hermetic unaoitwa table_clean. Unatumia modeli iliyoandikwa, zana zilizoandikwa na mfumo wa faili wa kumbukumbu, hivyo unaweza kuendeshwa bila ufikiaji wa mtandao.
from hexis.execution import runtime
from hexis.examples import table_clean as tc
machine = tc.reference_machine()
task = tc.gen_tasks(1, seed=0)[0]
result = runtime.run_task(
machine,
task,
model=tc.build_model(),
tools=tc.build_registry(tc.MemFS(task["files"])),
doc=tc.skill_doc(),
)
print(
result.stopped,
" -> ".join(result.path()),
tc.verify(task, result.trace),
)
Mfano huo unapaswa kumalizia kwa matokeo ya mwisho, kuchapisha njia ya hali, na kuripoti iwapo ufuatiliaji uliotengenezwa unapita kithibitishaji cha mfano. Ni njia muhimu ya kuthibitisha kuwa usakinishaji umefaulu kabla ya kusanidi kituo cha mwisho cha nje.
Sanidi kituo cha mwisho cha modeli
HEXIS husoma kitambulisho cha modeli, URL ya msingi na ufunguo wa API kutoka kwenye chaguo za mstari wa amri au vigeu vya mazingira. Usanidi wa msingi wa shell unaonekana hivi:
export API_KEY=your-key
export MODEL=qwen3.6-flash
export BASE_URL=https://your-endpoint/v1
Pia unaweza kuweka MODEL, BASE_URL na API_KEY katika faili la .env. HEXIS hutafuta kuelekea juu kutoka kwenye saraka ya kazi, na vigeu ambavyo tayari vipo kwenye mazingira hupewa kipaumbele.
Ili kuhifadhi hoja za kituo cha mwisho zinazoweza kutumika tena katika kigeu cha shell:
M="--model qwen3.6-flash --base-url https://your-endpoint/v1"
Chaguo la --api-key-env NAME huchagua kigezo tofauti cha mazingira kwa ajili ya ufunguo. Funguo za API hazipitishwi kwenye mstari wa amri wala kuhifadhiwa kwenye manifesti ya uundaji.
Kusanya ujuzi kuwa mashine
Elekeza mkusanyaji kwenye njia ya ujuzi na uchague saraka ya matokeo:
hexis-agent compile \
--skill path/to/skill \
--out build/ \
$M
Saraka ya ujuzi inapaswa kuwa na SKILL.md. Inaweza pia kuwa na compile.json, ambayo inaweza kutangaza vituo, lebo za matukio zilizotokana, mahitaji, na masharti ya vituo. Kila kanuni katika faili hilo hunukuu sentensi iliyotumika kuitoa.
Ikiwa compile.json haipo, mkusanyaji huiomba modeli itoe kanuni kutoka kwenye ujuzi na hukagua maandishi yaliyonukuliwa dhidi ya hati. Kisha usanidi unaotumika huhifadhiwa kama rules.json.
Yaliyomo kwenye saraka ya uundaji
machine.jsonhuhifadhi mashine ya sasa.machine_init.jsonhuhifadhi mashine ya awali iliyokusanywa.build.jsonhurekodi maelezo ya chanzo, mipangilio ya amri, maelezo ya modeli, matokeo, na matumizi ya tokeni, lakini kamwe si ufunguo wa API.skill/SKILL.md,tools.json, narules.jsonhuhifadhi vipengele vya kuingiza vilivyotumika katika mkusanyaji.traces/huwa na nakala zenye heshi za ufuatiliaji zilizotumiwa na uundaji.progress.jsonhurekodi matokeo ya ufuatiliaji na ufuatiliaji uliokubaliwa unaolinda mashine.decisions.jsonlhuhifadhi kwa muda maswali na majibu ya masasisho.report.md,context.json, na faili za kumbukumbu hutoa taarifa za uchunguzi.GUIDE.mdhueleza vipengele vya kuingiza, zana, hali, mabadiliko, mizunguko, na tabia ya kurejea.PROMPT.mdhutoa kidokezo cha mfumo kwa wakala anayetumia zana ili kutekeleza hali za mashine moja baada ya nyingine.
Kuelewa modeli ya mashine
Mashine ya HEXIS ni hati ya JSON inayotumia umbizo la efsm-v1. Vipengele vyake vikuu ni vigezo, hali, vitendo, mabadiliko, vituo, na hali ya kurejea.
Vigezo
Vigezo vinaweza kuanzishwa kutoka kwenye sehemu za ingizo la kazi kwa kutumia init_from, au kutoka kwenye thamani thabiti kwa kutumia init. Vitendo huandika matokeo yake kwenye vigezo vilivyotangazwa pekee.
Vitendo
- Modeli: Hutengeneza vigezo vilivyotangazwa kutoka kwenye kidokezo maalum cha hali na vigezo vya ingizo vilivyochaguliwa.
- Zana: Huita zana iliyopewa jina. Marejeo kama
${command}hubadilishwa wakati wa utekelezaji. - Jaji: Huchagua lebo kutoka kwenye seti isiyobadilika au kurudisha lebo ya
abstain. - Mtumiaji: Huomba ingizo kutoka kwa mtumiaji.
- Maliza: Husimamisha utekelezaji kwa matokeo ya kituo.
Mabadiliko na masharti
Mabadiliko hutathminiwa kwa mpangilio baada ya kitendo cha hali kumaliza. Wakati wa utekelezaji huchukua mabadiliko ya kwanza ambayo sharti lake limetimia. Sharti tupu halina masharti na linapaswa kuwa la mwisho. Mabadiliko yanaweza pia kuongeza kihesabu kupitia inc, hivyo kuwezesha mizunguko ya majaribio yenye kikomo.
Masharti hutumia lugha ya vielezi yenye vikwazo inayotekelezwa na hexis.machine.cond. Inaauni uchanganuzi tuli wa sifa kama vile kutotegemeana na mipaka ya mizunguko, na haitumii eval ya Python.
Kusasisha mashine kutoka kwenye ufuatiliaji
Ufuatiliaji wa utekelezaji ni faili za JSON Lines. Huanzia na metadata ya kazi na uamuzi, ikifuatiwa na tukio moja kwa kila mstari. Ufuatiliaji unaweza kuwa na miito ya zana, matokeo ya modeli, na tukio la mwisho.
Kwanza hakiki ufuatiliaji unaosubiri bila kufanya miito ya modeli au kuandika mabadiliko:
hexis-agent update \
--build build/ \
--traces traces/ \
--show 3
Kisha fanya sasisho:
hexis-agent update \
--build build/ \
--traces traces/ \
$M
Kwa kila hatua ya ufuatiliaji, mtoa uamuzi huchagua mojawapo ya matokeo manne:
matchhutumia tena hali iliyopo na kuongeza mabadiliko ikihitajika.newhuunda hali kulingana na madhumuni yaliyotajwa.ignorehuondoa kelele za mfumo wa majaribio kwenye uzingatiaji.excludehuacha ufuatiliaji mzima nje.
Jibu la modeli pia hutambua hali inayopendekezwa, hueleza madhumuni ya hatua, na linaweza kuihusisha na kifungu cha ujuzi. HEXIS huidhinisha mashine inayopendekezwa na kuendesha tena ufuatiliaji wote uliolindwa kabla ya kuikubali.
Kuendelea na kudhibiti gharama za sasisho
Majibu ya modeli huhifadhiwa kwenye decisions.jsonl. Kurudia amri ileile hutumia tena majibu hayo, huku uendeshaji uliokatizwa wenye hali ya kutoka 3 ukiweza kuendelea kutoka kwenye maendeleo yaliyohifadhiwa. Tumia --no-cache tu unapokusudia modeli ijibu tena.
Sasisho kwa kawaida hugharimu karibu mwito mmoja wa modeli kwa kila hatua ya ufuatiliaji. Tumia --max-traces N kuweka kikomo cha uendeshaji. Kwa njia mbadala zisizotumia modeli, toa maamuzi ya binadamu au ya nje kupitia --decisions FILE, au chagua ulinganishaji unaobainishwa kwa kutumia --decider align.
Kabla ya kuchakata ufuatiliaji mpya, HEXIS hukagua mashine ya sasa na kuendesha tena kila ufuatiliaji uliokubaliwa. Ikiwa uhariri wa mkono au ufafanuzi wa zana uliobadilishwa umevunja uundaji, amri hutoka ikiwa na hali 2 bila kuubadilisha.
Kuendesha mashine iliyokusanywa
Kagua build/GUIDE.md kabla ya utekelezaji. Hati hiyo inaeleza ingizo za kazi zinazohitajika, zana zinazopatikana, vitendo vya hali, mpangilio wa mabadiliko, mipaka ya majaribio tena, na tabia ya kurejea.
Endesha mashine kwa kutumia ingizo za kazi za jozi ya ufunguo na thamani:
hexis-agent run \
--machine build/ \
--input request="Process this task" \
--workdir work/ \
--executor local \
$M
Pitisha chaguo za ziada za --input KEY=VALUE kwa kila ingizo linalotarajiwa na mashine. Ili kuhifadhi utekelezaji kama ufuatiliaji wa JSON Lines unaoweza kutumika tena, ongeza:
--json run-trace.jsonl
Kitekelezaji chaguo-msingi hutumia zana za OpenCode. Kitekelezaji cha ndani huendesha amri za Bash katika mchakato mdogo. Wakati wa utekelezaji, mashine inaweza kutumia tu zana zinazotolewa na mfumo wake wa nyuma au zilizobainishwa katika sajili ya zana; HEXIS haibadilishi kimya kimya zana zinazokosekana.
Tumia mashine kutoka Python
Sehemu kuu ya kuanzia wakati wa utekelezaji ni hexis.execution.runtime.run_task. Toa mashine iliyopakiwa, jukumu lenye kitu cha input, adapta ya modeli, sajili ya zana, na hati ya ujuzi wakati utekelezaji wa akiba unaweza kuhitaji hati hiyo.
from hexis.execution import runtime
result = runtime.run_task(
machine,
{"input": {
"request": "Answer the question",
"output_path": "answer.txt",
}},
model=model,
tools=tools,
doc=skill_document,
)
print(result.stopped)
print(result.path())
print(result.trace)
API zinazohusiana zinajumuisha hexis.machine.schema.load_machine kwa kupakia mashine, hexis.llm.llm_client.client_from_env kwa kusanidi kituo cha mwisho, na vitendaji vya hexis.guide kwa kutoa miongozo, vidokezo, na michoro ya Mermaid.
Fanya kazi na mashine za mifano zilizotolewa
Hifadhi hii inajumuisha mashine nne zilizokusanywa katika examples/machines/:
- dabench: Hujibu swali la uchanganuzi wa data kuhusu faili ya data kwa kutumia hesabu.
- livemath: Hujibu swali la hisabati la chaguo nyingi linalotegemea nadharia.
- sealqa: Hujibu swali kutoka kwenye mkusanyo wa ndani na kujumuisha ushahidi.
- spreadsheet: Huhariri kitabu cha kazi bila kubadilisha muundo wake.
Mashine hizi kwa kawaida hutumia hali ya modeli kuandika amri ya ganda, hali ya zana kuitekeleza, majaribio ya kurudia yaliyolindwa kulingana na returncode, hatua ya zana inayosoma jibu, na hali ya mwamuzi inayochagua kituo cha mwisho kilichothibitishwa au kisichothibitishwa.
Kwa mfano, endesha mashine ya LiveMath kwa:
hexis-agent run \
--machine examples/machines/livemath \
--input request="..." \
--input output_path=answer.txt \
--workdir work/ \
--executor local \
$M
Mashine za mifano zinaweza kupakiwa na kukaguliwa kimuundo bila modeli, lakini kuziendesha kunahitaji kituo cha mwisho cha modeli kilichosanidiwa.
Vidokezo vya kina
Tengeneza upya nyaraka
Ukusanyaji na masasisho hutengeneza nyaraka kiotomatiki isipokuwa --no-guide itumike. Zitenge upya kwa mikono kwa:
hexis-agent guide --build build/
Unaweza pia kuelekeza amri moja kwa moja kwenye machine.json. Ongeza --embed-skill unapotaka kidokezo cha wakala kilichozalishwa kijumuishe ujuzi wa asili, hivyo kuruhusu utekelezaji uliotafsiriwa baada ya utekelezaji wa akiba.
Toa ufafanuzi dhahiri wa zana
Pitisha --tools registry.json wakati mashine inatumia zana maalum. Majina ya zana hushughulikiwa kama vitambulishi visivyo na maana maalum wakati wa ukusanyaji. Wakati wa utekelezaji, zana zilizobainishwa kwenye sajili zinaweza kutekelezwa kama amri za ganda na modeli, huku zana asili zikihitaji kutolewa na mfumo wa nyuma uliochaguliwa.
Rekebisha maombi ya modeli
Ukusanyaji na masasisho yanaunga mkono chaguo zikiwemo --temperature, --max-tokens, --llm-timeout, --llm-retries, --stream, na --extra-body JSON. Kwa vituo vya mwisho vinavyooana na Qwen, hoja za wakati wa utekelezaji zinaweza kudhibitiwa kwa --no-think, --think-budget, na --judge-think-budget.
Tumia vigezo vya mazingira maalum kwa mtoa huduma
Chaguo la --provider NAME husoma NAME_MODEL, NAME_BASE_URL, na NAME_API_KEY. Chaguo-msingi zilizojengewa ndani zinapatikana kwa majina ya watoa huduma MiniMax na DeepSeek.
Jua hali za kutoka
0huonyesha mafanikio.2huonyesha tatizo la matumizi, usanidi, au ujenzi.3huonyesha hitilafu au kukatizwa kwa kituo cha mwisho cha modeli; maendeleo huhifadhiwa ili kuendelezwa tena.
Endesha ukaguzi wa uendelezaji
pytest
ruff check src tests
python -m build && twine check --strict dist/*
Seti ya majaribio ni hermetiki. Majaribio mahususi ya OpenCode hurukwa wakati kitekelezi cha opencode hakipatikani.
Usalama na faragha
HEXIS inaweza kutekeleza hoja za zana zinazozalishwa na modeli za lugha, zikiwemo amri za ganda. Endesha mizigo ya kazi isiyoaminika katika mazingira yaliyotengwa, na tumia tu mashine, ujuzi, sajili, na faili za majukumu unazoziamini.
Mchakato wa kusasisha hutuma hatua za ufuatiliaji, matokeo mafupi ya zana, na vifungu vya ujuzi kwenye kituo cha mwisho cha modeli kilichosanidiwa. Saraka za ujenzi huhifadhi nakala za ufuatiliaji na maswali ya modeli. Aidha, PROMPT.md ina mashine kamili na vidokezo vilivyotokana na ujuzi. Kagua vitu hivi kabla ya kuvishiriki.
Muda wa utekelezaji huwekea kila mwito wa modeli kikomo cha kidokezo cha hali inayotekelezwa kwa sasa, badala ya kufichua mashine nzima kwa kila mwito.
Hitimisho
HEXIS hubadilisha maagizo ya wakala yaliyo katika lugha asilia kuwa mtiririko wa kazi ulio wazi na uliothibitishwa. Kwa kuchanganya hoja za modeli ndani ya hali na mabadiliko ya kiprogramu, uchezaji upya wa ufuatiliaji, majaribio ya kurudia yenye mipaka, vizuizi vya zana, miongozo iliyozalishwa, na ushughulikiaji wa utekelezaji wa akiba, inatoa njia iliyopangwa ya kufanya utekelezaji wa ujuzi uwe wa kutabirika zaidi. Anza na mfano wa nje ya mtandao, kusanya ujuzi mdogo unaoaminika, kagua mwongozo uliotengenezwa, kisha anzisha ufuatiliaji hatua kwa hatua huku ukifuatilia matokeo ya uthibitishaji.
