Zbuduj narzędzie CLI, które składa końcowy prompt tekstowy poprzez:
[[key]])xclip)System jest zaprojektowany do procesów komponowania promptów, gdzie wielokrotnie używane grupy plików (np. fragmenty kodu, dokumenty, pakiety kontekstu) są dynamicznie wstrzykiwane do szablonu.
Dodaj logikę do parsowania surowego ciągu szablonu i podziału go na uporządkowane tokeny dwóch typów:
[[key]]Zasady:
[[key]] oznacza blok dołączania[[ pojawi się bez odpowiadającego ]], zgłoś ValueError("Unclosed include: missing ']]'")Struktura wyjściowa:
list[tuple[bool, str]]
# (is_include, value)
Gdzie:
is_include = False → surowy tekstis_include = True → klucz mapowaniaWprowadź plik mapowania JSON o strukturze:
{
"root": "/base/path",
"some_key": [
"path/or/pattern1",
"path/or/pattern2"
]
}
Zachowanie:
root określa katalog bazowy dla ścieżek względnych (domyślnie katalog pliku mapowania)Każdy klucz mapuje na listę wpisów plików:
**)Zaimplementuj funkcję do rozwijania każdego klucza dołączania w blok treści plików.
Dla każdego wpisu mapowania:
root, jeśli nie jest bezwzględnaglob(..., recursive=True)Jeśli żaden wzorzec glob nie pasuje:
Następnie:
Format wyjściowy na plik:
# Plik: <file_path>
<zawartość pliku>
Połącz wszystkie bloki plików za pomocą:
"\n\n"
Główna funkcja:
assemble(template_path: Path, mapping_path: Path) -> str
Przebieg:
Określ ścieżkę root:
Dla każdego tokenu:
Jeśli dołączany:
Dodaj punkt wejścia wiersza poleceń:
python assemble_prompt.py TEMPLATE MAP
Zachowanie:
assemble()xclip -selection clipboard
poprzez:
subprocess.run(..., input=result, text=True, shell=True, check=True)
Copied result to clipboard.
Kody wyjścia:
0 sukces1 nieprawidłowe użycie[[...]] → zgłoś ValueError[[key]] są poprawnie parsowane na tokeny tekstowe i dołączane w odpowiedniej kolejności*, **) są rozwijane rekurencyjnie# Plik: <path> w wynikachxclip