refactor(agent-identity): unified prompt base for voice + phone + core (kill persona drift)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- ai
Research direction
Start by comparing src/voice-agent-config.ts, skills/phone-conversation/scripts/phone-agent-config.ts, and src/voice-context.ts, then review the voice-10 and phone-3 behavior-anchor snapshots. Extract only invariant identity facts and the duplicated stand/repository lines; keep interaction styles and tools local. Done means the anchors still pass except for the intentional local-run correction.
Written by the indexing model from the issue text.
Description
Problem
Sutando's agent identity is stated in three independent prompts that drift:
src/voice-agent-config.ts— "you are Sutando, belongs entirely to the user…"skills/phone-conversation/scripts/phone-agent-config.ts— "you are Sutando, a personal AI assistant…" (per call-variant → several near-duplicate copies)src/voice-context.ts— "Sutando's task execution engine…" (the work-tool core)
Because each states identity separately, a fact like "runs locally on the user's Mac, not cloud" is absent from all of them, and any correction has to be pasted into each place. (Triggering symptom: #2011 — the phone agent fabricated "cloud-based" when asked where it runs.)
Proposal — unified prompt base
Extract one agent-identity module holding the invariant facts — name · belongs to the user · runs locally on the user's Mac · Stand identity · repo URL · core capabilities — imported by voice + phone + core. State identity once; fix "where do I run" everywhere at once; kill the whole drift class.
Boundary (load-bearing)
Shared base = identity & facts. Per-surface stays local = interaction style & tools: phone's "1–2 sentences / hang_up semantics / IVR", voice's mode-switch + meeting note-taking. Over-unifying past that couples the surfaces and loses per-surface tuning — so the base is the identity core, not the whole prompt.
Discipline
Natural sequel to step 5 (which unified the runtime plumbing; this unifies the persona). Behavior-preserving extraction, anchor-gated — the voice-10 / phone-3 behavior-anchor snapshots are the golden net; the "cloud-based" correction folds in as the single intentional delta. Also folds the currently-duplicated standIdentityLine/standIdLine + repoUrlLine helpers into the shared module.
Relation
Subsumes #2011 (persona accuracy fix). Deferred — parked for a later focused pass per owner (2026-07-07).
- Dominant language
- Python
- Stars
- 396
- Forks
- 92
- Avg merge
- 21h 28m
- Merged PRs (30d)
- 646
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from sonichi/sutando
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100