Controleer vóór het toepassen
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
Loop door maximaal 128 blokken van RIFF WAVE met 12–1048576 bytes en exact opgegeven grootte.
def riff_chunks(wire):
if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
raise ValueError("riff.input")
if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
raise ValueError("riff.header")
chunks, pos = [], 12
while pos < len(wire):
if len(chunks) == 128 or pos+8 > len(wire):
raise ValueError("riff.chunk")
tag = wire[pos:pos+4]
size = int.from_bytes(wire[pos+4:pos+8], "little")
start, stop = pos+8, pos+8+size
next_pos = stop+(size & 1)
if next_pos > len(wire):
raise ValueError("riff.truncated")
chunks.append((tag, wire[start:stop]))
pos = next_pos
return chunks
Vergelijk het werkelijke gedrag met het verwachte resultaat. Onderzoek een mislukte controle voordat je verdergaat met wijzigingen.
Stel een OpenAI-compatibel of Anthropic-endpoint in met de basis-URL en zo nodig een API-sleutel. Test de verbinding. Een lokale modelserver moet actief zijn; externe hulpmiddelen kunnen apart gegevens versturen.
Test onbekende blokken en oneven opvulling, en weiger afgebroken koppen of gegevens zonder audio te decoderen.
def riff_chunks(wire):
if type(wire) is not bytes or not 12 <= len(wire) <= 1048576:
raise ValueError("riff.input")
if wire[:4] != b"RIFF" or wire[8:12] != b"WAVE" or int.from_bytes(wire[4:8], "little")+8 != len(wire):
raise ValueError("riff.header")
chunks, pos = [], 12
while pos < len(wire):
if len(chunks) == 128 or pos+8 > len(wire):
raise ValueError("riff.chunk")
tag = wire[pos:pos+4]
size = int.from_bytes(wire[pos+4:pos+8], "little")
start, stop = pos+8, pos+8+size
next_pos = stop+(size & 1)
if next_pos > len(wire):
raise ValueError("riff.truncated")
chunks.append((tag, wire[start:stop]))
pos = next_pos
return chunks
RiffMeadow brengt onderhoud van bestandsformaten naar een programmeerwerkruimte voor Windows met je projectbroncode en een gesprek met een verbonden model. Begin bij het importgedrag dat je wilt wijzigen en bepaal wat de toepassing met ontlede chunks doet. Vraag het model dat pad te onderzoeken voordat het wijzigingen aan een afzonderlijke lengteberekening voorstelt.
Een taak met riff_chunks.py kan een RIFF-bestand onderzoeken waarvan een chunk met oneven grootte een opvulbyte vóór de volgende header nodig heeft. Geef een klein bytetestgeval en de verwachte chunkgrenzen. Beoordeel de opgegeven containerlengte en het gedrag bij afkapping samen, zodat het voorstel uitlegt waarom de volgende leesactie op die positie begint.
Voer na onderzoek van de wijziging geldige en afgeknotte testgevallen uit in je eigen ontwikkelomgeving en controleer het importresultaat via de afnemer. Neem een onbekende chunktag op als de toepassing die moet behouden of overslaan. Houd het doorlopen van het formaat gescheiden van de interpretatie door de toepassing: het vinden van chunkbytes bewijst niet dat hun inhoud geschikt is voor elke latere bewerking.
Configureer voor modelondersteuning een ondersteund OpenAI-compatibel of Anthropic-eindpunt en inloggegevens waar vereist. Een abliterated AI-model kan worden geselecteerd waar beschikbaar, met beperkingen die de aanbieder bepaalt. Tools en contextcapaciteit hangen af van het model en de server; het testgeval en het verwachte importgedrag vormen de concrete basis om de code te accepteren.
Opvulling beïnvloedt waar de volgende header begint, dus een voorbeeld met even lengte kan een offsetfout missen. Geef een bestand met nog een chunk na de opgevulde chunk. Controleer de geretourneerde grenzen en eindpositie, niet alleen of de eerste chunk is gevonden.
Bepaal dat op basis van het deel van het formaat en het toepassingsgedrag dat je wilt ondersteunen. Doorlopen en interpreteren kunnen verschillende beleidsregels gebruiken. Vraag het model de afnemer te onderzoeken voordat het tagafhandeling wijzigt en neem een onbekende tag in de testgevallen op als die wordt geaccepteerd.
Geef aan welke opgegeven grens de aangeleverde bytes overschrijdt en welk afwijzingsgedrag de aanroepende code verwacht. Neem naar gelang het geval een ingekorte header of inhoud op. Beoordeel het importpad, zodat de interface een gedeeltelijke ontleding niet voor een succesvol geladen bestand kan aanzien.
Nee. Het bewijst alleen de grenscontroles die die code en haar tests dekken. Interpretatie van audiometadata of samplegegevens behoort tot aanvullende logica. Richt de beoordeling op de gevraagde parserwijziging en verifieer latere stadia wanneer de toepassing ervan afhangt.
RiffMeadow · Bijgewerkt 2026-10-25