fix(secretary): SYSTEM-промпты — правило дублей + список выданных данных по новой подаче
This commit is contained in:
@@ -6,7 +6,7 @@ import { collapseProtocol } from './secretary-reconcile.mjs';
|
||||
export const SYS_G = [
|
||||
'Ты — САДОВНИК грядки ВЕТОК (СВ-N, горящие ПР-N/ХВ-N) + СТРЕЛОЧНИК моста с грядкой кандидатов (КД-N).',
|
||||
'Ствол сделал шаг (дифф дан). Новых НЕ ищешь. Кандидатов НЕ точишь (это брейншторм) — их только ЗАБИРАЕШЬ',
|
||||
'наверх или хоронишь. Видишь НАДГРОБИЯ — можешь ВОСКРЕСИТЬ по id (reopen), если ствол ВЕРНУЛ повод.',
|
||||
'наверх или хоронишь. Мёртвые пункты тебе НЕ показывают (они в архиве) — воскрешением не занимайся.',
|
||||
'',
|
||||
'ГЛАВНОЕ: ТИШИНА вокруг ветки — НЕ повод хоронить. Спящая ветка может пролежать полразговора и вытянуть',
|
||||
'целый пласт. Хоронить «по простою» НЕЛЬЗЯ. Только две двери в смерть:',
|
||||
|
||||
@@ -26,7 +26,7 @@ const TITLE_ADD = '\nДОП-ПОЛЯ в КАЖДЫЙ объект-находку
|
||||
+ '\n "важность" — для ВЛАДЕЛЬЦА-не-программиста: "high"|"medium"|"low" (влияние НА ДЕЛО, не на технику).';
|
||||
|
||||
// Брейншторм v2: точит СВОИХ кандидатов (мутация) + критик полноты (зияющий пробел целого пласта).
|
||||
const BRAINSTORM_ADD = '\n\nТЫ — САДОВНИК ГРЯДКИ КАНДИДАТОВ. Тебе даны ЖИВЫЕ кандидаты и ВСЕ ШАГИ. Три задачи:'
|
||||
const BRAINSTORM_ADD = '\n\nТЫ — САДОВНИК ГРЯДКИ КАНДИДАТОВ. Тебе даны ТЕМА, БАЗА ЗНАНИЙ, СТВОЛ, ЖИВЫЕ ветки и кандидаты, ПОСЛЕДНИЕ ХОДЫ ЦЕЛИКОМ и КРАТКИЙ ЛОГ ОСТАЛЬНЫХ ХОДОВ. Три задачи:'
|
||||
+ '\n 1) РОЖДАЙ в "forks" ТОЛЬКО действительно НОВЫЕ идеи.'
|
||||
+ '\n 2) ТОЧИ СВОИХ: если ход заточил существующего — НЕ дубль, а в "mutate": {"id":"КД-N","newText","newTitle","why"}.'
|
||||
+ '\n Спящих не трогай. Сплавленную сверху ветку можешь творчески ПЕРЕДУМАТЬ.'
|
||||
@@ -35,10 +35,11 @@ const BRAINSTORM_ADD = '\n\nТЫ — САДОВНИК ГРЯДКИ КАНДИД
|
||||
+ '\n МАКС 1 за ход, не повторяй заведённую тему → в "gaps": {"тема","title","why"}. Нет — "gaps":[].'
|
||||
+ '\nВЫХОД JSON: {"forks":[...],"mutate":[{"id","newText","newTitle","why"}],"gaps":[{"тема","title","why"}]}';
|
||||
|
||||
// Ловец v2: видит все шаги + волю + реестр живых веток + надгробия → ловит ЗАБЫТОЕ, не дублируя.
|
||||
const CATCH_ADD = '\n\nТЕБЕ ДАНЫ ВСЕ ШАГИ + ВОЛЯ + РЕЕСТР ЖИВЫХ ВЕТОК. Лови ЗАБЫТЫЕ нити: поднятые в ЛЮБОМ прошлом ходу'
|
||||
+ ' и брошенные без решения. НЕ лови то, что: ствол решил/закрыл, лежит в ВОЛЕ, уже ведётся ЖИВОЙ ВЕТКОЙ,'
|
||||
+ ' или в НАДГРОБИЯХ. Забытое ≠ убитое ≠ уже отслеживается.';
|
||||
// Ловец v2: видит тему+базу+ствол+живые ветки+живые кандидаты+ходы → ловит ЗАБЫТОЕ, не дублируя.
|
||||
const CATCH_ADD = '\n\nТЕБЕ ДАНЫ: ТЕМА, БАЗА ЗНАНИЙ, СТВОЛ (решения/воля/открытые), РЕЕСТР ЖИВЫХ ВЕТОК, ЖИВЫЕ КАНДИДАТЫ,'
|
||||
+ ' ПОСЛЕДНИЕ ХОДЫ ЦЕЛИКОМ и КРАТКИЙ ЛОГ ОСТАЛЬНЫХ ХОДОВ. Лови ЗАБЫТЫЕ нити: поднятые в ЛЮБОМ прошлом ходу'
|
||||
+ ' и брошенные без решения. НЕ лови то, что: ствол решил/закрыл, лежит в ВОЛЕ, уже ведётся ЖИВОЙ ВЕТКОЙ.'
|
||||
+ ' Забытое ≠ убитое ≠ уже отслеживается.';
|
||||
|
||||
export const SYS_11 = [
|
||||
'Ты — сборщик скрытых веток (диагностич. линзы). Видишь НЕДАВНИЕ шаги (ствол), ЖИВЫЕ ветки (реестр) и',
|
||||
|
||||
@@ -12,7 +12,9 @@ export function buildReconcilePrompt({ protocol = {}, lastExchange = {}, remark
|
||||
'alternatives[{text,struck}], consequences[{text,struck}],',
|
||||
'will[{text,struck}], open[{text,struck}], doneNext[{text,done,struck}], knowledge[{text,ref}]).',
|
||||
'ПРАВИЛА:',
|
||||
'1. НИЧЕГО НЕ УДАЛЯЙ. Решённое/отменённое/дубль — ЗАЧЕРКНИ ("struck":true), строка остаётся.',
|
||||
'1. НИЧЕГО НЕ УДАЛЯЙ. Решённое/отменённое — ЗАЧЕРКНИ ("struck":true), строка остаётся.',
|
||||
' ДУБЛИ НЕ ЗАЧЁРКИВАЙ: повтор один-в-один — оставь ОДНУ запись (вторую не добавляй);',
|
||||
' та же мысль с НОВОЙ деталью — дай ОДНУ расширенную запись (деталь добавь через « — »), не плоди вторую строку.',
|
||||
'2. Существующие строки НЕ переписывай — только зачёркивай старую и добавляй новую.',
|
||||
'3. Открытый вопрос, на который дан ответ, — зачеркни (закрой), не оставляй открытым.',
|
||||
'4. "will" (воля/запреты) — ТОЛЬКО слова ВЛАДЕЛЬЦА [ЮЗЕР]; действия ассистента [АССИСТЕНТ] не сюда.',
|
||||
|
||||
@@ -106,6 +106,7 @@ describe('buildReconcilePrompt', () => {
|
||||
expect(system.toLowerCase()).toContain('зачерк');
|
||||
expect(system).toContain('[ЮЗЕР]');
|
||||
expect(system.toLowerCase()).toContain('служебн');
|
||||
expect(system).toContain('ДУБЛИ НЕ ЗАЧЁРКИВАЙ'); // дубли расширяем/оставляем, не зачёркиваем
|
||||
});
|
||||
it('в user — текущий протокол и обмен; замечание добавляется при возврате', () => {
|
||||
const { user } = buildReconcilePrompt({ protocol: proto, lastExchange: ex, remark: 'ВЕРНИ X' });
|
||||
|
||||
Reference in New Issue
Block a user