Small agent tweaks
This commit is contained in:
@@ -186,6 +186,17 @@ export class MemoryManager {
|
||||
|
||||
constructor(private llm: any) {}
|
||||
|
||||
private ghostNodes(memories: Memory[]): string[] {
|
||||
const names = new Set(memories.map(m => m.name));
|
||||
const ghosts = new Set<string>();
|
||||
for (const m of memories) {
|
||||
for (const link of m.links) {
|
||||
if (!names.has(link)) ghosts.add(link);
|
||||
}
|
||||
}
|
||||
return [...ghosts];
|
||||
}
|
||||
|
||||
static normalize(m?: Memory[] | MemoryCache | MemoryOptions) {
|
||||
if(!m) return null;
|
||||
const raw = m instanceof MemoryCache || Array.isArray(m);
|
||||
@@ -458,6 +469,8 @@ ${currentBody}
|
||||
|
||||
private async factAgent(conversation: string, memories: Memory[], options: LLMRequest, weekKey: string): Promise<FactBucket[]> {
|
||||
const buckets = new Map<string, string[]>();
|
||||
const ghosts = this.ghostNodes(memories);
|
||||
|
||||
await this.llm.ask(conversation, {
|
||||
model: options.model,
|
||||
temperature: 0.2,
|
||||
@@ -472,14 +485,15 @@ Rules:
|
||||
- If nothing worth remembering was said, do not call any tools
|
||||
|
||||
When extracting facts, you MUST also decide the exact destination path:
|
||||
- Use an existing node name if the facts clearly belong there
|
||||
- Reuse node names (including ghost) as much as possible IF the facts belongs there
|
||||
- All information primarily about the user should go under "People/User"
|
||||
- When required, create a new path following collection/subject format (e.g., People/Sarah, Projects/Oxide) — you are not limited to any fixed list of collections, use whatever fits
|
||||
- For journal entries, use "Journal"
|
||||
|
||||
Available nodes:
|
||||
- Journal
|
||||
${this.listNodes(memories).filter(n => !n.name.includes('Journal')).map(n => `- ${n.name}: ${n.description}`).join('\n') || 'None yet.'}`,
|
||||
${this.listNodes(memories).filter(n => !n.name.includes('Journal')).map(n => `- ${n.name}: ${n.description}`).join('\n') || 'None yet.'}
|
||||
${ghosts.length ? `${ghosts.map(g => `- ${g}: (Ghost)`).join('\n')}` : ''}`,
|
||||
tools: [{
|
||||
name: 'facts_extract',
|
||||
description: 'Submit facts with their destination',
|
||||
|
||||
Reference in New Issue
Block a user