Въз основа на реален случай за автоматично програмиране с Claude Code, споделям някои техники за подсказки

Тази статия, чрез реален случай, ще ви споделя реален пример за използване на Claude Code. Преди да споделя, нека направим едно малко проучване
Първоначално изискване: един уважаван платен потребител пожела в статиите ми да се добави време на промяна на статията
На пръв поглед това изискване изглежда трудно за осъществяване. Защото статиите в моя уебсайт не се съхраняват в база данни, а се изграждат с помощта на SSG на next.js. Те изобщо нямат време на актуализация.
Един трик тук е: при решаване на проблеми, не трябва директно да подаваме първоначалното изискване на Claude Code, поради следните причини
1. Първоначалното изискване е относително неясно, може да бъде разбрано погрешно и ако това се случи, в крайна сметка може да добави време, но това време може да не е надеждно
2. Консумацията на токени на Claude Code е наистина много скъпа, следователно неясните изисквания могат да доведат до безсмислена консумация на голям брой токени
Затова трябва да разбием първоначалното изискване. Първо се консултирах с deepseek, който ми даде две решения
1. Време на изграждане на файлове, при всяко build трябва да получим времето на изграждане на файла, но стратегията за пакетиране на turbopack е малко различна, при всяко изграждане хеш стойността на файла се променя, това време на изграждане може да не е надеждно
2. Време на git commit, помислих си, че това вероятно е по-надеждно
След като имах обща насока за решение, създадох тази проста подсказка: компилирай времето на git commit в заглавната част на всяка .mdx статия
Claude Code е сравнително надежден, ако подсказката е точна, като цяло няма проблем, просто започна да изпълнява
След като изразходвах 7 долара от кредита си, за около 20 минути накрая изпълнението завърши успешно.
Когато всичко изглеждаше наред, се появи проблем, той пропусна промени в 171 файла.
Тук има един много неприятен момент, всъщност пропуснатите файлове само получават допълнителен параметър pass, всичко друго е напълно същото
<PostLayout pass>...Но той не прояви гъвкавост, определи този допълнителен параметър като напълно различен потребителски компонент. И след това пропусна да го обработи ~ ~
import Layout from 'components/post-layout';import { getGitFileInfo } from '@/utils/git-info';export default function Article({ children }: any) { const gitInfo = getGitFileInfo('src/app/вашия_път/page.mdx'); return ( <Layout gitInfo={gitInfo || undefined}> {children} </Layout> );}Но реалната ситуация е, че резултатът, от който се нуждая, е такъв, като работещият резултат е напълно идентичен.
import MdxLayout from 'components/mdx-layout';export default function Article({ children }: any) { return ( <MdxLayout pass filePath="src/app/r19base/(4.compiler)/23.compilerlower/page.mdx"> {children} </MdxLayout> );}И тогава попаднах в капан с подсказката
Въведох отново подсказка: Използвай същия метод като по-горе, за да рефакторираш пропуснатите 171 файла
Този ми израз, ако се замислите, има известна двусмислица. Защото Claude Code вече ми беше предложил вариант, но аз не го одобрявах, моят истински замисъл беше да променя пропуснатите файлове по същия начин като вече променените стотици файлове, но по време на изпълнението той го разбра като: предложения от него по-горе вариант
Тази двусмислица доведе до това, че той да изпълнява по нежелания от мен вариант цели 20 минути, като по средата имаше 2 грешки при самопоправяне, и просто поглъщаше токените ми, двете двусмислици започнаха да се конфронтират, което доведе до грешки.
В крайна сметка трябваше отново да се откажа от това изпълнение и да изясня значението си.
Обобщение
1. В подсказките е добре да се включват относително стабилни и точни решения, колкото по-малко мисли изкуственият интелект, толкова по-малко са халюцинациите.
2. В подсказките за изискванията не трябва да има двусмислици, те могат да доведат до грешки, въпреки че Claude Code в крайна сметка може да ги поправи, но това ще доведе до голяма консумация на токени. И тъй като LLM произвежда резултати на базата на предсказващ механизъм, ранните неразбирателства, двусмислици и т.н. ще доведат до това всяка следваща стъпка да се отдалечава все повече в грешна посока, като той ще се опитва да бъде логически последователен, да генерира неща, които не съществуват, колкото повече пише, толкова по-голям става проблемът, което също увеличава трудността при прегледа от разработчика, ако бъдете заблудени от неговите халюцинации, това може да доведе до сериозни последствия
3. Ограниченията на естествения език не са толкова точни като на кода, включването на имена на файлове, кодови променливи, кодови специфични думи, професионална терминология и т.н. в подсказките значително намалява халюцинациите на Claude Code





