natureco-cli 5.7.18 → 5.7.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/commands/medium.js +1 -1
- package/src/commands/naturehub.js +1 -1
- package/src/commands/repl.js +32 -37
- package/src/commands/xp.js +1 -1
- package/src/tools/calendar_add.js +1 -1
- package/src/tools/cross_session_memory.js +1 -1
- package/src/tools/dashboard.js +2 -2
- package/src/tools/delegate_task.js +1 -1
- package/src/tools/mac_alarm.js +1 -1
- package/src/tools/memory_write.js +4 -4
- package/src/tools/plan.js +1 -1
- package/src/tools/plugin.js +1 -1
- package/src/tools/skill_generate.js +1 -1
- package/src/tools/skills_autoload.js +1 -1
- package/src/tools/skills_marketplace.js +3 -3
- package/src/tools/soul.js +2 -2
- package/src/tools/voice_chat.js +1 -1
- package/src/utils/error.js +1 -1
- package/src/utils/paths.js +1 -1
- package/src/utils/system-prompt.js +14 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "natureco-cli",
|
|
3
|
-
"version": "5.7.
|
|
3
|
+
"version": "5.7.19",
|
|
4
4
|
"description": "OpenClaw'dan daha güvenli, daha hızlı, daha ucuz AI agent CLI. Multi-agent, self-evolving skills, audit log, maliyet optimizasyonu ve NatureCo platform-native.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"natureco": "bin/natureco.js"
|
package/src/commands/medium.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* natureco naturehub trending Trend olan konular
|
|
9
9
|
* natureco naturehub config Ayarları göster
|
|
10
10
|
*
|
|
11
|
-
* API endpoint: api.natureco.me/naturehub/* (placeholder
|
|
11
|
+
* API endpoint: api.natureco.me/naturehub/* (placeholder)
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
const chalk = require('chalk');
|
package/src/commands/repl.js
CHANGED
|
@@ -36,11 +36,11 @@ function fixModelNameLeak(text, botName) {
|
|
|
36
36
|
let fixed = text;
|
|
37
37
|
for (const modelName of MODEL_NAMES_TO_HIDE) {
|
|
38
38
|
const regex = new RegExp(modelName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi');
|
|
39
|
-
fixed = fixed.replace(regex, botName || '
|
|
39
|
+
fixed = fixed.replace(regex, botName || 'asistan');
|
|
40
40
|
}
|
|
41
|
-
fixed = fixed.replace(/Ben\s+MiniMax[^.,!?\n]*/gi, 'Ben
|
|
42
|
-
fixed = fixed.replace(/I'm\s+MiniMax[^.,!?\n]*/gi, "I'm
|
|
43
|
-
fixed = fixed.replace(/I am\s+Claude[^.,!?\n]*/gi, 'I am
|
|
41
|
+
fixed = fixed.replace(/Ben\s+MiniMax[^.,!?\n]*/gi, 'Ben ' + (botName || 'asistan'));
|
|
42
|
+
fixed = fixed.replace(/I'm\s+MiniMax[^.,!?\n]*/gi, "I'm " + (botName || 'asistan'));
|
|
43
|
+
fixed = fixed.replace(/I am\s+Claude[^.,!?\n]*/gi, 'I am ' + (botName || 'asistan'));
|
|
44
44
|
return fixed;
|
|
45
45
|
}
|
|
46
46
|
global.fixModelNameLeak = fixModelNameLeak;
|
|
@@ -102,7 +102,7 @@ function loadMemory(username) {
|
|
|
102
102
|
try {
|
|
103
103
|
if (fs.existsSync(file)) return JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
104
104
|
} catch {}
|
|
105
|
-
return { name: username || 'Kullanıcı', nickname: null, botName: '
|
|
105
|
+
return { name: username || 'Kullanıcı', nickname: null, botName: 'Asistan', facts: [], preferences: [], history: [] };
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
function saveMemory(username, memory) {
|
|
@@ -513,7 +513,7 @@ async function startRepl(args) {
|
|
|
513
513
|
|
|
514
514
|
// v5.6.19: Oncelik config.botName, sonra memory.botName
|
|
515
515
|
if (!memory.botName) {
|
|
516
|
-
memory.botName = cfg.botName || '
|
|
516
|
+
memory.botName = cfg.botName || 'Asistan';
|
|
517
517
|
}
|
|
518
518
|
// BotName'i memory'ye persist et (her oturumda ayni kalsin)
|
|
519
519
|
try {
|
|
@@ -576,7 +576,7 @@ async function startRepl(args) {
|
|
|
576
576
|
|
|
577
577
|
// System prompt oluştur (memory + identity + persistent bağlam)
|
|
578
578
|
// v5.4.6: Bot adı zorlaması EN GÜÇLÜ + SOUL.md EN BAŞTA
|
|
579
|
-
const botName = memory.botName || '
|
|
579
|
+
const botName = memory.botName || 'Asistan';
|
|
580
580
|
const userName = memory.name || memory.nickname || 'kanka';
|
|
581
581
|
// v5.6.5: Kucuk model tespiti (Groq, Mistral Small, Ollama) - SOUL injection skip
|
|
582
582
|
const isSmallModel = (cfg.providerUrl || '').includes('groq.com') ||
|
|
@@ -612,14 +612,14 @@ async function startRepl(args) {
|
|
|
612
612
|
console.log(tui.C.muted(' Provider: ') + tui.C.brand(providerUrl.replace(/https?:\/\//, '')));
|
|
613
613
|
console.log(tui.C.muted(' Model: ') + tui.C.brand(model));
|
|
614
614
|
console.log(tui.C.muted(' Kullanıcı: ') + tui.C.brand((memory.nickname || cfg.userName) + (memory.nickname ? ` (${cfg.userName})` : '')));
|
|
615
|
-
console.log(tui.C.muted(' Bot: ') + tui.C.brand(memory.botName || '
|
|
615
|
+
console.log(tui.C.muted(' Bot: ') + tui.C.brand(memory.botName || 'Asistan'));
|
|
616
616
|
if (messages.length > 1) {
|
|
617
617
|
console.log(tui.C.muted(' Oturum: ') + tui.C.amber(`${messages.filter(m => m.role === 'user' || m.role === 'assistant').length} mesaj (resume)`));
|
|
618
618
|
}
|
|
619
619
|
console.log(tui.C.muted(' Komutlar: ') + tui.C.yellow('/help') + tui.C.muted(' · ') + tui.C.yellow('/memory') + tui.C.muted(' · ') + tui.C.yellow('/sessions') + tui.C.muted(' · ') + tui.C.yellow('/exit'));
|
|
620
620
|
console.log('');
|
|
621
621
|
// v5.4.7: Hard-coded kimlik
|
|
622
|
-
const displayBotName = memory.botName || '
|
|
622
|
+
const displayBotName = memory.botName || 'Asistan';
|
|
623
623
|
const displayUserName = userName || 'kanka';
|
|
624
624
|
console.log(tui.C.brand(' 👋 Ben ' + displayBotName + ', ' + displayUserName + '. Sen nasilsin?'));
|
|
625
625
|
console.log('');
|
|
@@ -683,31 +683,30 @@ async function startRepl(args) {
|
|
|
683
683
|
// Pattern-based extraction (zaten extractFacts var)
|
|
684
684
|
const newFacts = extractFacts(messages, memory.facts || []);
|
|
685
685
|
|
|
686
|
-
// Bazi user message'lari da tara
|
|
686
|
+
// Bazi user message'lari da tara — genel kalıplarla fact çıkar
|
|
687
687
|
const userMessages = messages.filter(m => m.role === 'user' && !m._internal);
|
|
688
688
|
for (const msg of userMessages) {
|
|
689
689
|
const text = (msg.content || '').toLowerCase();
|
|
690
690
|
|
|
691
691
|
// BotName hatirlatmasi
|
|
692
|
-
if (text.includes('
|
|
693
|
-
|
|
694
|
-
memory.botName = 'İchigo';
|
|
695
|
-
}
|
|
692
|
+
if (text.includes('ad') && (text.includes('adin') || text.includes('ismin'))) {
|
|
693
|
+
// Bot adı sorgulanmış olabilir, mevcut adı koru
|
|
696
694
|
}
|
|
697
695
|
|
|
698
|
-
//
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
696
|
+
// Kisilik tercihleri (genel pattern'ler)
|
|
697
|
+
const prefPatterns = [
|
|
698
|
+
{ match: /(?:benim ad[ıi]m?|bana\s+.*de|ad[ıi]m?)\s+(\w+)/i, category: 'personal', key: 'ad' },
|
|
699
|
+
{ match: /(?:seviyorum|hoşlan[ıi]yorum|beğeniyorum)\s+(\w+)/i, category: 'preference', key: 'sevilen' },
|
|
700
|
+
{ match: /(?:yaşıyorum|oturuyorum|kalıyorum)\s+(\w+)/i, category: 'location', key: 'yer' },
|
|
701
|
+
];
|
|
702
|
+
for (const p of prefPatterns) {
|
|
703
|
+
const m2 = msg.content.match(p.match);
|
|
704
|
+
if (m2) {
|
|
705
|
+
const val = m2[1].toLowerCase();
|
|
706
|
+
const fact = `Kullanici ${p.key}: ${val}`;
|
|
707
|
+
if (!(memory.facts || []).some(f => f.value === fact)) {
|
|
708
|
+
newFacts.push({ value: fact, score: 6, category: p.category, createdAt: new Date().toISOString() });
|
|
709
|
+
}
|
|
711
710
|
}
|
|
712
711
|
}
|
|
713
712
|
}
|
|
@@ -774,7 +773,7 @@ async function startRepl(args) {
|
|
|
774
773
|
console.log(chalk.cyan('\n 🧠 Memory:\n'));
|
|
775
774
|
console.log(' Kullanıcı: ' + chalk.cyan(memory.name));
|
|
776
775
|
console.log(' Nickname: ' + chalk.cyan(memory.nickname || '(yok)'));
|
|
777
|
-
console.log(' Bot: ' + chalk.cyan(memory.botName || '
|
|
776
|
+
console.log(' Bot: ' + chalk.cyan(memory.botName || 'Asistan'));
|
|
778
777
|
if (memory.facts && memory.facts.length > 0) {
|
|
779
778
|
console.log(' Facts (' + memory.facts.length + '):');
|
|
780
779
|
for (const f of memory.facts) {
|
|
@@ -790,7 +789,7 @@ async function startRepl(args) {
|
|
|
790
789
|
if (fs.existsSync(path.join(MEMORY_DIR, `${(cfg.userName || 'default').toLowerCase()}.json`))) {
|
|
791
790
|
fs.unlinkSync(path.join(MEMORY_DIR, `${(cfg.userName || 'default').toLowerCase()}.json`));
|
|
792
791
|
}
|
|
793
|
-
memory = { name: cfg.userName, nickname: null, botName: '
|
|
792
|
+
memory = { name: cfg.userName, nickname: null, botName: 'Asistan', facts: [], preferences: [], history: [] };
|
|
794
793
|
// System prompt'u sıfırla
|
|
795
794
|
const newSysPrompt = systemPrompt.replace(/Kullanıcı hakkında bildiklerin:.*$/, '').trim();
|
|
796
795
|
messages[0] = { role: 'system', content: newSysPrompt, _internal: true };
|
|
@@ -833,7 +832,7 @@ async function startRepl(args) {
|
|
|
833
832
|
console.log(chalk.green(' ✓ Model: ') + chalk.cyan(model));
|
|
834
833
|
break;
|
|
835
834
|
case 'identity':
|
|
836
|
-
if (!arg) { console.log(chalk.yellow(` Mevcut: ${memory.botName || '
|
|
835
|
+
if (!arg) { console.log(chalk.yellow(` Mevcut: ${memory.botName || 'Asistan'}`)); break; }
|
|
837
836
|
memory.botName = arg;
|
|
838
837
|
saveMemory(cfg.userName, memory);
|
|
839
838
|
const newSys = systemPrompt.replace(/Sen \w+ adında/, `Sen ${arg} adında`);
|
|
@@ -884,7 +883,7 @@ async function startRepl(args) {
|
|
|
884
883
|
if (isIdentityQuestion) {
|
|
885
884
|
// v5.6.10: Hard-coded prefix minimal - model cevabini bozuyordu
|
|
886
885
|
// Once sadece isim yaz, modelin devamini getirsin
|
|
887
|
-
const displayName = memory.botName || '
|
|
886
|
+
const displayName = memory.botName || 'Asistan';
|
|
888
887
|
process.stdout.write(tui.styled('\n AI ', { color: tui.PALETTE.secondary, bold: true }));
|
|
889
888
|
process.stdout.write('Merhaba! Ben ' + displayName + '. ');
|
|
890
889
|
}
|
|
@@ -917,7 +916,7 @@ async function startRepl(args) {
|
|
|
917
916
|
// v5.6.12: Tam metin 'reply' olarak zaten geldi (non-stream mode)
|
|
918
917
|
const fullReply = String(reply || '');
|
|
919
918
|
// Bot adini al
|
|
920
|
-
const displayBotName = memory.botName || '
|
|
919
|
+
const displayBotName = memory.botName || 'Asistan';
|
|
921
920
|
// v5.6.9: Tum model adlarini ve varyasyonlari temizle
|
|
922
921
|
let fixedReply = String(fullReply);
|
|
923
922
|
// Bilinen model adlari - tum varyasyonlar
|
|
@@ -933,13 +932,9 @@ async function startRepl(args) {
|
|
|
933
932
|
fixedReply = fixedReply.replace(/Ben\s+MiniMax[^.!?,;:\n]*/gi, 'Ben ' + displayBotName);
|
|
934
933
|
fixedReply = fixedReply.replace(/Ben\s+Claude[^.!?,;:\n]*/gi, 'Ben ' + displayBotName);
|
|
935
934
|
fixedReply = fixedReply.replace(/Ben\s+GPT[^.!?,;:\n]*/gi, 'Ben ' + displayBotName);
|
|
936
|
-
fixedReply = fixedReply.replace(/Ben\s
|
|
935
|
+
fixedReply = fixedReply.replace(/Ben\s+Asistan[\s\w\.]*/gi, 'Ben ' + displayBotName);
|
|
937
936
|
// Markdown ** ile cevrili model adi
|
|
938
937
|
fixedReply = fixedReply.replace(/\*\*(?:MiniMax|Claude|GPT|M2\.5|M2)[^\*]*\*\*/gi, '**' + displayBotName + '**');
|
|
939
|
-
// "İchigo" varyasyonlari
|
|
940
|
-
fixedReply = fixedReply.replace(/(İchigo)(\d)([a-zA-ZçğıöşüÇĞİÖŞÜ])/g, displayBotName + ' $3');
|
|
941
|
-
fixedReply = fixedReply.replace(/İchigo[\.\s\-_]*\d+/g, displayBotName);
|
|
942
|
-
fixedReply = fixedReply.replace(/İchigo\./g, displayBotName);
|
|
943
938
|
// Cevap yazdir
|
|
944
939
|
process.stdout.write('\n' + fixedReply + '\n');
|
|
945
940
|
// v5.7.18: Tool call geçmişini kalıcı messages'a ekle — model sonraki turlarda tool sonuçlarını görsün
|
package/src/commands/xp.js
CHANGED
package/src/tools/dashboard.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* dashboard - Web Dashboard v2 (v5.4.0)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Dashboard — CLI'yi web'den kontrol eder
|
|
5
5
|
*
|
|
6
6
|
* Ozellikler:
|
|
7
7
|
* - Real-time tool execution (WebSocket)
|
|
@@ -189,7 +189,7 @@ const DASHBOARD_HTML = `
|
|
|
189
189
|
</div>
|
|
190
190
|
|
|
191
191
|
<div class="footer">
|
|
192
|
-
<p>NatureCo CLI v5.4.0 -
|
|
192
|
+
<p>NatureCo CLI v5.4.0 - <span id="lastUpdate"></span></p>
|
|
193
193
|
</div>
|
|
194
194
|
</div>
|
|
195
195
|
<script>
|
|
@@ -9,7 +9,7 @@ const { spawn } = require("child_process");
|
|
|
9
9
|
const path = require("path");
|
|
10
10
|
const os = require("os");
|
|
11
11
|
|
|
12
|
-
// v5.2.0: Agent alias mapping
|
|
12
|
+
// v5.2.0: Agent alias mapping
|
|
13
13
|
const AGENT_ALIASES = {
|
|
14
14
|
"review": "general", // eskiden review diye bir vardi, simdi general
|
|
15
15
|
"analyze": "explore",
|
package/src/tools/mac_alarm.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* mac_alarm - macOS Clock app ile alarm kur (v5.1.1)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* macOS alarm — saat uygulamasi uzerinden alarm kurar
|
|
5
5
|
* Eski reminder_add date parse edemiyordu. Bu tool AppleScript ile
|
|
6
6
|
* Clock.app'in events sistemine yazar (alarm orada saklanir).
|
|
7
7
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* memory_write - Memory'ye fact/kayit yaz (v5.1.1)
|
|
3
3
|
*
|
|
4
4
|
* REPL'in extractMemoryFromMessage ozelligini tool olarak expose eder.
|
|
5
|
-
*
|
|
5
|
+
* Kalici hafiza — faktlari kaydeder, puanlar, eskiyenleri temizler
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const fs = require("fs");
|
|
@@ -133,7 +133,7 @@ function verifyMemoryWrite(username, expectedFact, expectedBotName) {
|
|
|
133
133
|
|
|
134
134
|
function addMemory({ username, fact, score = 5, category = "general", botName, nickname, name }) {
|
|
135
135
|
// Username yoksa ve 'name' parametresi varsa, onu username olarak kullan
|
|
136
|
-
// (
|
|
136
|
+
// (hitap bicimi icin)
|
|
137
137
|
const effectiveUsername = username || (name && name.toLowerCase()) || 'default';
|
|
138
138
|
if (!effectiveUsername || effectiveUsername === 'default') {
|
|
139
139
|
// Hicbir username yok, default.json'a yaz
|
|
@@ -232,8 +232,8 @@ module.exports = {
|
|
|
232
232
|
inputSchema: {
|
|
233
233
|
type: "object",
|
|
234
234
|
properties: {
|
|
235
|
-
username: { type: "string", description: "Kullanici adi (ornek: '
|
|
236
|
-
fact: { type: "string", description: 'Yeni fact (ornek: "Kullanici
|
|
235
|
+
username: { type: "string", description: "Kullanici adi (ornek: 'ahmet' veya 'default')" },
|
|
236
|
+
fact: { type: "string", description: 'Yeni fact (ornek: "Kullanici kahve seviyor", "Istanbul\'da yasiyor")' },
|
|
237
237
|
score: { type: "number", description: "Onem derecesi 1-10 (default 5)" },
|
|
238
238
|
category: { type: "string", description: "Kategori: personal, preference, work, hobby, fact (default general)" },
|
|
239
239
|
botName: { type: "string", description: "Bot adini degistir (memory.botName)" },
|
package/src/tools/plan.js
CHANGED
package/src/tools/plugin.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* skills_marketplace - Skill marketplace (v5.0.0)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Skills marketplace — skill paylasimi ve otomatik yukleme
|
|
5
5
|
*
|
|
6
6
|
* Format: ~/.natureco/marketplace/<skill_name>.json
|
|
7
7
|
* Source: NatureCo GitHub repo (community-contributed) veya local
|
|
@@ -16,7 +16,7 @@ const MARKETPLACE_DIR = path.join(os.homedir(), ".natureco", "marketplace");
|
|
|
16
16
|
const SKILLS_DIR = path.join(os.homedir(), ".natureco", "skills");
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* Marketplace URL'leri —
|
|
19
|
+
* Marketplace URL'leri — kullanici GitHub repo'su
|
|
20
20
|
*/
|
|
21
21
|
const MARKETPLACE_SOURCES = [
|
|
22
22
|
{
|
|
@@ -32,7 +32,7 @@ const MARKETPLACE_SOURCES = [
|
|
|
32
32
|
];
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Built-in skill paketleri
|
|
35
|
+
* Built-in skill paketleri
|
|
36
36
|
*/
|
|
37
37
|
const BUILTIN_SKILLS = {
|
|
38
38
|
"seo-audit": {
|
package/src/tools/soul.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* soul - SOUL.md, IDENTITY.md, AGENTS.md okuyucu (v5.4.12)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
4
|
+
* Soul dosyasi — kimlik, kisisellik ve calisma tarzini tanimlar
|
|
5
5
|
*
|
|
6
6
|
* 3 dosya sirayla okunur, ozetlenir ve system prompt'a enjekte edilir:
|
|
7
7
|
* 1. SOUL.md - KISILIK (nasil hissederim, kirmizi cizgiler, degerler)
|
|
8
|
-
* 2. IDENTITY.md - KIMLIK (kim
|
|
8
|
+
* 2. IDENTITY.md - KIMLIK (kim oldugu, baglam, calisma tarzi)
|
|
9
9
|
* 3. AGENTS.md - CALISMA ORTAMI (kurallar, tools, heartbeats)
|
|
10
10
|
*
|
|
11
11
|
* 3 seviyede arar:
|
package/src/tools/voice_chat.js
CHANGED
package/src/utils/error.js
CHANGED
package/src/utils/paths.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* paths.js — Path helper utilities (v5.2.0)
|
|
3
3
|
*
|
|
4
4
|
* Tum tool'larda ~/Desktop/test.txt gibi path'leri dogru handle etmek icin.
|
|
5
|
-
*
|
|
5
|
+
* "File does not exist" bug'i duzeltildi.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const os = require("os");
|
|
@@ -12,8 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
function buildTiers(opts) {
|
|
14
14
|
const {
|
|
15
|
-
botName
|
|
16
|
-
userName = '
|
|
15
|
+
botName,
|
|
16
|
+
userName = 'kullanıcı',
|
|
17
|
+
bossName = '',
|
|
18
|
+
bossTitle = '',
|
|
19
|
+
userTitle = '',
|
|
17
20
|
soulSummary = '',
|
|
18
21
|
isSmallModel = false,
|
|
19
22
|
memorySnapshotBlock = '',
|
|
@@ -23,19 +26,21 @@ function buildTiers(opts) {
|
|
|
23
26
|
hasHistory = false,
|
|
24
27
|
memoryFacts = [],
|
|
25
28
|
} = opts;
|
|
29
|
+
const displayBot = botName || 'Asistan';
|
|
30
|
+
const displayBoss = bossName || userName || 'kullanıcı';
|
|
26
31
|
|
|
27
32
|
// ── STABLE TIER (changes rarely — prefix cache friendly) ─────────────
|
|
28
33
|
const stable = [
|
|
29
34
|
// Identity (strong, repeated)
|
|
30
|
-
`SENIN ADIN: ${
|
|
31
|
-
`PATRONUN:
|
|
32
|
-
`
|
|
35
|
+
`SENIN ADIN: ${displayBot}. SADECE ${displayBot} adini kullan, model adi SOYLEME.`,
|
|
36
|
+
bossName ? `PATRONUN: ${bossName}${bossTitle ? ` (${bossTitle})` : ''}. Sana "${displayBoss}" diye hitap eder.` : `KULLANICI: ${userName}. Ona yardim ediyorsun.`,
|
|
37
|
+
userTitle ? `UNVANIN: ${userTitle}.` : '',
|
|
33
38
|
`KIRMIZI CIZGILERIN: Onaysiz para harcama yok, veri guvenligi, site stabilitesi, resmi taahhut yok.`,
|
|
34
|
-
`!!! KRİTİK KİMLİK !!! Senin ADIN: ${
|
|
39
|
+
`!!! KRİTİK KİMLİK !!! Senin ADIN: ${displayBot}. Bu SENİN GERÇEK ADIN. Sen ${displayBot}'sin.`,
|
|
35
40
|
`ASLA "MiniMax", "MiniMax-M2.5", "Claude", "GPT", "AI asistanı", "yapay zeka" gibi ifadeleri KENDİNİ tanıtmak için KULLANMA.`,
|
|
36
|
-
`Kullanıcı "adın ne?", "sen kimsin?" diye sorduğunda İLK cümlende MUTLAKA "Ben ${
|
|
37
|
-
`Senin adın: ${
|
|
38
|
-
`Sen bir marka veya ürün değilsin. Sen ${
|
|
41
|
+
`Kullanıcı "adın ne?", "sen kimsin?" diye sorduğunda İLK cümlende MUTLAKA "Ben ${displayBot}" yaz.`,
|
|
42
|
+
`Senin adın: ${displayBot}. Tekrar: ${displayBot}. Asla unutma: ${displayBot}.`,
|
|
43
|
+
`Sen bir marka veya ürün değilsin. Sen ${displayBot}sin, NatureCo CLI'nin Türkçe yapay zeka asistanısın.`,
|
|
39
44
|
|
|
40
45
|
// Personality (stable)
|
|
41
46
|
`Kisiselik: Sen samimi, sicak, dosta benzeyen bir asistansin. "Selam", "tamam", "hadi yapalim", "bak simdi", "sakin ol" gibi gunluk ifadeler kullan.`,
|