Additional
Relationship Agent Architecture
Synced from github.com/CoWork-OS/CoWork-OS/docs
1) Product Goal
CoWork OS should behave as a persistent personal agent that can:
- Talk naturally with the user, not only execute tasks.
- Understand user intent per message and choose the right operating mode.
- Remember the user across time (identity, preferences, context, history, commitments).
- Execute end-to-end actions safely and still finish with a complete response under pressure.
2) System Architecture
A. Intent Layer (Conversation Brain)
IntentRouterclassifies every task prompt into:chatadviceplanningexecutionmixed
- Output includes confidence, intent signals, and default conversation mode.
B. Strategy Layer (Execution Brain)
TaskStrategyServicemaps intent to execution strategy:conversationMode(chat/hybrid/task)qualityPasses- answer-first behavior
- bounded research + timeout-finalize bias
- Strategy no longer injects default
maxTurnsfor ordinary user-facing tasks. - Explicit turn-budget controls (
maxTurns,windowTurnCap,turnBudgetPolicy) are preserved when a caller or helper flow sets them intentionally. - Strategy is embedded into prompt contract so execution is completion-oriented.
C. Relationship Memory Layer (Memory Brain)
RelationshipMemoryServicestores structured continuity memory:identitypreferencescontexthistorycommitments
- Memory is persisted in secure settings and merged into prompt context.
UserProfileServiceremains active and now composes with relationship memory.
D. Runtime Orchestration Layer (Daemon)
- On task creation:
- derive intent + strategy
- enrich prompt with strategy contract and memory context
- default agent settings to fit intent
- On execution start:
- re-apply strategy for legacy/queued tasks
- persist strategy defaults when needed, without inventing an implicit turn cap
- On completion:
- record successful outcomes into relationship memory (top-level tasks).
E. Reliability Layer (Completion Contract)
- Timeout recovery path in
TaskExecutoralready ensures best-effort final answer. - Cancellation reason tracking distinguishes
usercancellation fromtimeoutcancellation to preserve completion behavior. - Strategy contract explicitly reinforces:
- answer-first
- bounded loops
- never end silently
3) Strategy
Phase 1 (Implemented)
- Intent routing.
- Strategy derivation and prompt contract injection.
- Relationship memory service with layered storage and prompt context.
- Daemon lifecycle wiring (create, start, complete).
- Timeout recovery finalization (implemented in prior patch).
Phase 2 (Implemented)
- Explicit soft-deadline switching before hard timeouts.
- Commitment lifecycle tooling (
open,done,due soon) and reminders. - Better mixed-mode orchestration defaults (
answer_first=truein mixed/planning/advice strategy).
Phase 3 (Implemented in API Layer)
- Explainable memory controls (read/update/delete) for relationship memory.
- Commitment retrieval endpoints (
open,due soon) for proactive UX reminders. - Personalization feedback loop from accepted/rejected suggestions persists into layered memory.
UI Layer (Implemented)
- Memory Settings now exposes relationship memory controls:
- list/edit/forget items
- mark commitments done/reopen
- view due-soon commitment reminders
4) Operations & Verification
- Use
docs/relationship-agent-uat.mdas the release acceptance checklist. - Key runtime signal for cancellation diagnostics:
Task cancelled - not logging as error (reason: <reason>)
- Timeout cases should still produce a final user-facing answer via recovery finalization path.
5) Guardrails
- Keep shared-channel memory isolated unless explicitly trusted.
- Preserve approval boundaries for risky actions.
- Keep completion-first guarantees even when research is partial.
Was this page helpful?Edit this page on GitHub