Files
JARVIS/docs/superpowers/plans/2026-03-20-knowledge-brain-phase-1-task-breakdown.md
DESKTOP-72TV0V4\caoxiaozhu 6f594631e9 Refine knowledge brain workflow
Align the brain prompts, graph view, and startup defaults with the
latest phase 1 flow so local runs and navigation stay consistent.
2026-03-22 22:42:47 +08:00

15 KiB
Raw Blame History

Jarvis Knowledge Brain Phase 1 Task Breakdown

Goal

Turn the phase-1 knowledge brain blueprint into an execution-ready development task list tied to the current codebase.


A. Backend Persistence Tasks

A1. Add new brain models

Create new SQLAlchemy models under backend/app/models/:

  • brain_event.py
  • brain_candidate.py
  • brain_memory.py
  • brain_tag.py
  • optional link-table definitions in brain_relations.py or colocated within the above files

Core entities to add:

  • BrainEvent
  • BrainCandidate
  • BrainMemory
  • BrainTag
  • BrainEventTag
  • BrainCandidateTag
  • BrainMemoryTag
  • optional BrainMemoryEvent

Acceptance criteria:

  • All models inherit from the project base model pattern.
  • All required enums/status fields are defined.
  • User ownership and timeline fields exist.
  • Link tables support tag filtering and source traceability.

A2. Register models in model exports

Update:

  • backend/app/models/__init__.py

Acceptance criteria:

  • New brain models are imported and available during metadata initialization.

A3. Add migration / schema evolution support

Depending on current project migration approach, add the required DB migration path for the new tables.

Acceptance criteria:

  • New tables can be created in local/dev environments without breaking existing tables.
  • Indexes for user_id, status, and date-based access patterns are included.

A4. Add Pydantic schemas

Create new schema files under backend/app/schemas/:

  • brain.py

Schema groups to add:

  • overview response
  • memory list/detail response
  • candidate list response
  • tag response
  • timeline response
  • manual learning trigger response
  • memory/tag management payloads

Acceptance criteria:

  • Schemas match the intended /api/brain response shapes.
  • Timeline and traceability structures are explicit, not loosely typed blobs.

B. Backend Service Tasks

B1. Create brain event ingestion service

Add:

  • backend/app/services/brain_event_service.py

Responsibilities:

  • normalize source records into BrainEvent
  • expose helpers such as:
    • record_conversation_event(...)
    • record_document_event(...)
    • record_todo_event(...)
    • record_task_event(...)
    • record_forum_event(...)

Acceptance criteria:

  • Each helper accepts current source-domain inputs without forcing those modules to understand brain internals.
  • Event creation is idempotent enough to avoid obvious duplicate rows for the same source update.

B2. Create brain learning service

Add:

  • backend/app/services/brain_learning_service.py

Responsibilities:

  • load pending BrainEvents for a given date/user scope
  • cluster related events
  • call the LLM to create candidate knowledge
  • score and dedupe candidates
  • promote high-confidence candidates into BrainMemory
  • mark processed events and candidate statuses

Acceptance criteria:

  • Service supports both manual run and scheduler run.
  • Promotion/rejection decisions are explicit and testable.
  • Source event traceability is preserved.

B3. Create brain tag service

Add:

  • backend/app/services/brain_tag_service.py

Responsibilities:

  • attach and score tags
  • split tags into important vs secondary
  • update tag scores after learning runs
  • support cleanup recommendations

Acceptance criteria:

  • Important/secondary classification is persisted, not only computed in the UI.
  • Tag lookups support filtering memories and timeline entries.

B4. Create brain retrieval service

Add:

  • backend/app/services/brain_retrieval_service.py

Responsibilities:

  • retrieve relevant BrainMemory records by query
  • optionally retrieve recent events for recency-sensitive prompts
  • format results for chat injection and API responses

Acceptance criteria:

  • Retrieval has strict limits to prevent prompt bloat.
  • Results support filtering by tags, source type, and time range.

B5. Refactor or extend memory service

Update:

  • backend/app/services/memory_service.py

Tasks:

  • keep existing summary and UserMemory behavior intact
  • extend build_memory_context() to append a 【知识大脑】 block from BrainRetrievalService
  • keep memory context size bounded

Acceptance criteria:

  • Existing conversation summary behavior continues to work.
  • Chat can consume BrainMemory without requiring a full prompt architecture rewrite.

C. Source Ingestion Integration Tasks

C1. Conversation → BrainEvent

Update likely files:

  • backend/app/services/agent_service.py
  • possibly backend/app/services/memory_service.py

Hook points:

  • after user message persistence
  • after assistant response persistence
  • after summary/memory extraction

Acceptance criteria:

  • Important conversation actions produce normalized BrainEvents.
  • Explicit “remember this” signals are captured as stronger events.

C2. Document → BrainEvent

Update likely files:

  • backend/app/routers/document.py
  • backend/app/services/document_service.py
  • backend/app/services/knowledge_service.py

Hook points:

  • upload success
  • indexing completion
  • chunk edit / reindex

Acceptance criteria:

  • Document lifecycle milestones become BrainEvents.
  • Source metadata includes document identity and folder context.

C3. Todo → BrainEvent

Update likely files:

  • backend/app/routers/todo.py
  • backend/app/services/todo_service.py

Hook points:

  • todo creation
  • completion
  • AI-generated todo creation

Acceptance criteria:

  • Todo events reflect both planning and completion signals.
  • AI-generated todos are distinguishable from manual ones.

C4. Task/Kanban → BrainEvent

Update likely files:

  • backend/app/routers/task.py

Hook points:

  • task creation
  • status change
  • completion
  • priority change

Acceptance criteria:

  • Task state changes create meaningful workstream events.
  • Duplicate writes are avoided on no-op updates.

C5. Forum → BrainEvent

Update likely files:

  • backend/app/routers/forum.py
  • optionally backend/app/services/scheduler_service.py

Hook points:

  • post created
  • reply created
  • forum instruction execution

Acceptance criteria:

  • Forum posts/replies that matter to project state become brain events.
  • Source traceability includes whether the event came from a post, reply, or executed instruction.

D. Scheduler and Daily Learning Tasks

D1. Add daily brain learning job

Update:

  • backend/app/services/scheduler_service.py

Add:

  • brain_daily_learning_task()

Responsibilities:

  • run daily for pending events
  • invoke BrainLearningService
  • log promoted/rejected counts

Acceptance criteria:

  • Job is registered in start_scheduler().
  • Job can run safely when there are no pending events.

D2. Add manual trigger path

Update or add:

  • backend/app/routers/scheduler.py or the new backend/app/routers/brain.py

Acceptance criteria:

  • Developers/users can manually run learning for testing.
  • Trigger returns a useful summary, not only a started flag.

D3. Decide scheduler ownership model for phase 1

Current scheduler is global. Decide whether phase 1 runs:

  • for all users in one job, or
  • per user loop inside one job

Acceptance criteria:

  • No hard-coded user_id="default" behavior remains in new brain learning flow.
  • User iteration strategy is explicit.

E. Backend API Tasks

E1. Add brain router

Create:

  • backend/app/routers/brain.py

Register in:

  • backend/app/main.py
  • backend/app/routers/__init__.py if needed

E2. Implement overview endpoint

Endpoint:

  • GET /api/brain/overview

Should return:

  • active memory count
  • candidate count
  • important tag count
  • recent event count
  • last learning run info
  • todays promoted/rejected summary

E3. Implement memory endpoints

Endpoints:

  • GET /api/brain/memories
  • GET /api/brain/memory/{id}
  • POST /api/brain/memory/{id}/archive
  • DELETE /api/brain/memory/{id}
  • optional POST /api/brain/memory/{id}/promote if candidate-to-memory management is exposed here

Acceptance criteria:

  • Memory detail shows source traceability and tags.
  • List endpoint supports pagination/filters needed by UI.

E4. Implement candidate endpoints

Endpoints:

  • GET /api/brain/candidates
  • optional promote/reject endpoints if candidates are user-manageable in phase 1

Acceptance criteria:

  • Candidate status and scoring are inspectable.

E5. Implement tag endpoints

Endpoints:

  • GET /api/brain/tags
  • POST /api/brain/tag/{id}/promote
  • POST /api/brain/tag/{id}/demote
  • DELETE /api/brain/tag/{id}

Acceptance criteria:

  • API groups tags by important vs secondary.
  • Manual cleanup actions are supported.

E6. Implement timeline endpoint

Endpoint:

  • GET /api/brain/timeline

Acceptance criteria:

  • Timeline groups records by day or returns a structure easily grouped by day in UI.
  • Includes event entries and memory promotion entries.

E7. Implement learning trigger endpoint

Endpoint:

  • POST /api/brain/learn/run

Acceptance criteria:

  • Supports manual learning run for current user or all users, depending on phase-1 policy.
  • Returns meaningful run stats.

F. Chat Integration Tasks

F1. Inject knowledge brain into chat context

Update:

  • backend/app/services/agent_service.py
  • backend/app/services/memory_service.py

Acceptance criteria:

  • Relevant BrainMemory items appear in prompt context.
  • Context remains concise and bounded.
  • Existing response flow remains stable.

F2. Add retrieval policy guardrails

Tasks:

  • define per-query memory limits
  • choose when to include recent events
  • prefer important/high-confidence memories

Acceptance criteria:

  • Brain retrieval does not overwhelm standard conversation context.
  • Time-sensitive answers can still include recent context when needed.

G. Frontend Route and Navigation Tasks

G1. Introduce a real brain route

Update likely files:

  • frontend/src/app/router/routes.ts
  • frontend/src/app/navigation/nav.ts

Tasks:

  • add /brain
  • make 知识大脑 point to /brain
  • keep /graph available as a subview or secondary route

Acceptance criteria:

  • Brain is no longer represented only by the graph page.

G2. Define frontend brain API client

Add:

  • frontend/src/api/brain.ts

Methods:

  • getOverview
  • getMemories
  • getMemoryDetail
  • getCandidates
  • getTags
  • getTimeline
  • runLearning
  • memory/tag management actions

Acceptance criteria:

  • API client matches backend router contract.

H. Frontend Brain Dashboard Tasks

H1. Create new brain page

Add:

  • frontend/src/pages/brain/index.vue

Core page sections:

  • overview header
  • important tags panel
  • secondary tags panel
  • recent learned knowledge section
  • timeline section
  • graph tab/subview entry

Acceptance criteria:

  • Page is useful even before graph projection is upgraded.
  • Dashboard reflects the brain, not just visualized relationships.

H2. Add page composable/state logic

Add:

  • frontend/src/pages/brain/composables/useBrainView.ts

Responsibilities:

  • fetch overview/tags/memories/timeline
  • manage filters and selected tags
  • trigger manual learning run
  • manage loading/error states

Acceptance criteria:

  • Page logic stays separate from template complexity.

H3. Add memory list/detail components

Suggested additions:

  • frontend/src/components/brain/BrainMemoryList.vue
  • frontend/src/components/brain/BrainMemoryDetail.vue
  • frontend/src/components/brain/BrainTagPanel.vue
  • frontend/src/components/brain/BrainTimeline.vue

Acceptance criteria:

  • User can inspect why a memory exists.
  • User can archive/delete memories and promote/demote tags.

H4. Reposition graph as brain subview

Possible approaches:

  • keep current frontend/src/pages/graph/index.vue but link it from /brain
  • or wrap the graph page as one tab inside the brain page

Acceptance criteria:

  • Existing graph functionality remains accessible.
  • Product framing changes from “brain = graph” to “brain includes graph”.

I. Testing Tasks

I1. Backend model/service tests

Add tests for:

  • event creation
  • candidate generation status changes
  • promotion into BrainMemory
  • tag priority updates
  • timeline aggregation

Suggested locations:

  • backend/tests/backend/app/services/
  • backend/tests/backend/app/routers/

I2. Retrieval integration tests

Add tests for:

  • memory context injection
  • retrieval limits
  • recency-sensitive event inclusion

I3. API tests

Add tests for:

  • /api/brain/overview
  • /api/brain/memories
  • /api/brain/tags
  • /api/brain/timeline
  • /api/brain/learn/run

I4. Frontend tests

Add tests for:

  • brain composable fetch flow
  • filter behavior
  • manual learning run UI flow
  • tag grouping and memory rendering

Wave 1: Foundation

  1. A1-A4 persistence and schemas
  2. B1 brain event service
  3. E1 add router skeleton

Wave 2: Ingestion

  1. C1-C5 connect all source domains to BrainEvent

Wave 3: Learning

  1. B2 brain learning service
  2. B3 brain tag service
  3. D1-D3 scheduler/manual learning

Wave 4: Retrieval

  1. B4 brain retrieval service
  2. B5 memory service integration
  3. F1-F2 chat injection and guardrails

Wave 5: Product surface

  1. E2-E7 complete /api/brain endpoints
  2. G1-G2 routing + API client
  3. H1-H4 dashboard and graph repositioning

Wave 6: Reliability

  1. I1-I4 tests and refinement

K. Files Most Likely to Change in Phase 1

Backend new files

  • backend/app/models/brain_event.py
  • backend/app/models/brain_candidate.py
  • backend/app/models/brain_memory.py
  • backend/app/models/brain_tag.py
  • backend/app/schemas/brain.py
  • backend/app/services/brain_event_service.py
  • backend/app/services/brain_learning_service.py
  • backend/app/services/brain_tag_service.py
  • backend/app/services/brain_retrieval_service.py
  • backend/app/routers/brain.py

Backend existing files

  • backend/app/models/__init__.py
  • backend/app/main.py
  • backend/app/services/memory_service.py
  • backend/app/services/agent_service.py
  • backend/app/services/scheduler_service.py
  • backend/app/routers/document.py
  • backend/app/routers/todo.py
  • backend/app/routers/task.py
  • backend/app/routers/forum.py
  • possibly backend/app/services/document_service.py
  • possibly backend/app/services/knowledge_service.py

Frontend new files

  • frontend/src/api/brain.ts
  • frontend/src/pages/brain/index.vue
  • frontend/src/pages/brain/composables/useBrainView.ts
  • brain-related components under frontend/src/components/brain/

Frontend existing files

  • frontend/src/app/router/routes.ts
  • frontend/src/app/navigation/nav.ts
  • optionally frontend/src/pages/graph/index.vue

L. Phase 1 “Definition of Done” Checklist

  • Brain persistence models exist and are queryable.
  • All five core domains emit BrainEvents.
  • Daily learning creates BrainCandidates and promotes durable BrainMemorys.
  • Tag priority is stored and manageable.
  • Chat can retrieve relevant brain knowledge.
  • /api/brain endpoints support dashboard and management actions.
  • /brain dashboard exists and is usable without relying on the graph page.
  • Graph remains available as a secondary/projection view.
  • Automated tests cover ingestion, promotion, retrieval, and UI basics.