Crow personas and generated banter
- personas.go: backstory, prompt policy and output policy per crow; Hugin and Munin grounded in Grimnismal 20 and Gylfaginning 38; every working crow also follows a common output policy - Personas go into each crow's instructions; Sentry keeps JSON-only - banter.go: retrieve backstory, relationships and recent flock memory, then the speaking crow generates one line in character; max 2 per list against the list budget, never blocks work, unusable lines dropped - crow.banter event, GET /api/crows, `crows personas` -> PERSONAS.md - UI: epithets on tiles and messages, banter as quiet asides Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
This commit is contained in:
13 files changed
+824
-8
No files matched your search
@@ -196,7 +196,7 @@ func (f *Flock) Triage(ctx context.Context, w Watcher, item string, budgets ...*
|
||||
}
|
||||
|
||||
func (f *Flock) llmTriage(ctx context.Context, w Watcher, item string, budgets ...*Budget) (Triage, error) {
|
||||
text, err := f.ask(ctx, w, "Sentry", sentrySystem, "ITEM: "+item, budgets...)
|
||||
text, err := f.ask(ctx, w, "Sentry", systemFor("Sentry", sentrySystem, false), "ITEM: "+item, budgets...)
|
||||
if err != nil {
|
||||
return Triage{}, err
|
||||
}
|
||||
@@ -256,7 +256,7 @@ func (f *Flock) Execute(ctx context.Context, w Watcher, item string, t Triage, n
|
||||
return f.reconcile(ctx, w, item, crows, tasks, reports, budgets...)
|
||||
default:
|
||||
c := f.pick(nest, 1)[0]
|
||||
ans, err := f.ask(ctx, w, c, crowSystem, "TASK: "+item, budgets...)
|
||||
ans, err := f.ask(ctx, w, c, systemFor(c, crowSystem, true), "TASK: "+item, budgets...)
|
||||
return Outcome{Answer: ans, Crows: []string{c}}, err
|
||||
}
|
||||
}
|
||||
@@ -269,7 +269,7 @@ func (f *Flock) fanOut(ctx context.Context, w Watcher, crows, tasks []string, bu
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
defer wg.Done()
|
||||
reports[i], errs[i] = f.ask(ctx, w, crows[i], crowSystem, "TASK: "+tasks[i], budgets...)
|
||||
reports[i], errs[i] = f.ask(ctx, w, crows[i], systemFor(crows[i], crowSystem, true), "TASK: "+tasks[i], budgets...)
|
||||
}()
|
||||
}
|
||||
wg.Wait()
|
||||
@@ -293,6 +293,6 @@ func (f *Flock) reconcile(ctx context.Context, w Watcher, item string, crows, ta
|
||||
for i := range reports {
|
||||
fmt.Fprintf(&sb, "--- %s on %q:\n%s\n\n", crows[i], tasks[i], reports[i])
|
||||
}
|
||||
ans, err := f.ask(ctx, w, "Elder", elderSystem, sb.String(), budgets...)
|
||||
ans, err := f.ask(ctx, w, "Elder", systemFor("Elder", elderSystem, true), sb.String(), budgets...)
|
||||
return Outcome{Answer: ans, Crows: append(append([]string{}, crows...), "Elder")}, err
|
||||
}
|
||||
Reference in new issue
Block a user