RFC: A project board for people and agent sessions
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 28/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- typescript
- Lĩnh vực
- devtools
Hướng nghiên cứu
Start with the PRD and draft technical design in docs/features/kanban/ on the feat/kanban branch, then read sessionService.ts, src/utils/git.ts, and the StartSession control request flow. The design still has open questions and needs maintainer review; implementation spans persistence, server permissions, agent tools, notifications, and UI. Done means delivering the agreed board capabilities and resolving the design questions.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Status
Requirements settled, technical design in draft. The PRD was finalized on 2026-11-06; the technical design is waiting for maintainer review. Both live in docs/features/kanban/ on the feat/kanban branch (not pushed yet). No code.
Summary
Sessions can already start each other and exchange messages (#239). Once a long task is spread over several sessions, though, the tasks, owners, dependencies and progress live only in chat transcripts. Nobody can see the state of the project without asking each session, and it is lost when sessions stop or the app restarts.
This RFC adds a persistent project board that people and agent sessions share: a fixed project PM, an optional Task Lead for complex work, plus Workers and Reviewers. The board records what to do, who owns it, how far it got and what came out. Clarifying, planning, implementing and verifying stay inside the sessions; the board is not a workflow engine.
Scope
Four capabilities:
- A persistent board. Cards can be created, split into sub-cards, linked by "must finish first" dependencies and moved between states. It survives sessions stopping and app restarts. Every branch and worktree of a project sees the same board.
- Hierarchical delegation. Each project has one fixed PM session, set only by the human. A complex card can get a Lead, who may split it further and delegate to Workers, Reviewers, or a lower Lead (default limit: two levels of Leads). Assignments take effect only after the human confirms them.
- Scoped access. The PM sees the whole project, a Lead its subtree, a Worker its own cards, a Reviewer the cards it reviews. The server enforces this.
- Agents drive progress. Agents update progress, report blockers and submit results through tools. The human views, adjusts and accepts.
Each card has three identities:
| Identity | Who |
|---|---|
| Owner | The card's Worker or Lead, at most one |
| Supervisor | The Lead of the nearest ancestor card that has one, else the PM |
| Acceptor | The human when the supervisor is the PM, otherwise the supervisor. The human can always step in |
The owner and the acceptor of a card are never the same session, and a Reviewer is never the owner. Reports go to the supervisor, not to the session's parent.
States: Backlog, Todo, In Progress, Blocked, Review, Done, Cancelled. A light permission table decides who may make each transition; starting a card also requires an effective assignment and all dependencies done. An agent submitting a result never marks a card Done. Agent suggestions for new work are Backlog cards with a "suggestion" flag, accepted or rejected by the supervisor or the human.
Non-goals
- A separate spec or requirements state machine, versioned approvals, or multi-stage review, acceptance and merge.
- Creating card worktrees or branches, integration branches, automatic merges or PRs. Branches and PRs are recorded on a card as links.
- Predicting file overlap, scheduling ready tasks, worker pools, leases, retries.
- Cost per card, a cross-project board, scheduled cards, auto-approved assignments, multiple users, cloud sync.
Proposed design
- Storage: one append-only event log per board,
~/.dreamcoder/boards/<sanitized repo root>/events.jsonl, replayed into memory by a pure reducer on first access. This matches how session metadata is already persisted as transcript entries (sessionService.ts), and the log doubles as the card history. No SQLite: nothing in the repo usesbun:sqlite, and the data fits in memory. - One board per repository. The board key is the canonical git root from
findCanonicalGitRoot(src/utils/git.ts), which resolves any worktree to its main repository. It is the same rule that gives sessions theirprojectRoot, so the sidebar's project groups and the boards line up. - The entry point decides the actor. REST calls from the app act as the human. Agent tools send control requests over their own session's SDK connection, as
StartSessiondoes, so the server knows which session is acting; the request body cannot claim an identity. - Four CLI tools:
KanbanList,KanbanGet,KanbanCreate,KanbanUpdate, backed bykanban_queryandkanban_commandcontrol requests. The server checks every command against the permission table and the invariants in one pure function. - Notifications reuse
deliverUserTurn. An effective assignment, a revoked assignment, a human comment, a submitted result and a blocker each become a user message with a neworigin.kind = 'kanban'. A stopped session is resumed to receive it; a new session gets it as its first message. Like cross-session messages, it is wrapped and marked as carrying no user authority. - UI: a board page per project, opened from the project group in the sidebar, with a card detail and a "needs me" list. It polls with
since=<version>instead of adding a WebSocket channel. Desktop and H5 share it; drag and drop is desktop only.
Open questions
- Can sub-agents call the write tools? Leaning yes: the actor is still the session.
- Should a session created for an assignment appear under its supervisor in the sidebar (a new
parent.kind = 'assigned')? Leaning yes. - Who may edit a card's title, description and dependencies? The PRD does not say. Leaning owner, supervisor and human.
- What counts as a "blocker that involves the human" and a "pending suggestion" in the "needs me" list.
Related
- #239: sessions start and message each other; the board is built on it.
- #162: agent teams.
- #166: isolated workspaces for team members.
- Ngôn ngữ chính
- TypeScript
- Star
- 490
- Fork
- 47
- Merge trung bình
- 8 giờ 51 phút
- Pull request đã merge (30 ngày)
- 91
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của GoDiao/dreamcoder
-
[good first issue] UX polish — friendlier copy for error toasts and empty statesCó thể đã có người làm @iamcipherdev đã nhận 23 ngày trước. Đang mởarea:i18n area:ux difficulty:1 good first issue mentor-available
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
GoDiao/dreamcoder#9 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add more provider presets (Groq / OpenRouter / SiliconFlow / etc.)Có thể làm lại được @01iamysf đã nhận 30 ngày trước và không có pull request nào đang mở. Đang mởarea:desktop area:provider difficulty:1 good first issue mentor-available
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
GoDiao/dreamcoder#6 · 6 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Composer shows a disabled send button instead of Stop while the CLI is startingCó thể đã có người làm @22chiragmodh đã nhận 2 ngày trước. Đang mởbug good first issue
GoDiao/dreamcoder#240 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:desktop enhancement rfc
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 8/100
GoDiao/dreamcoder#234 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Context usage indicator counts base64 images as text and shows several times too many tokensCó thể đã có người làm @Oscar-Williams đã nhận 7 ngày trước. Đang mởarea:desktop bug good first issue help wanted
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 70/100
GoDiao/dreamcoder#230 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của GoDiao/dreamcoder
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
earendil-works/pi-claude-code#36 ·
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Resources: New work of jabodetabekCó thể đã có người làm @rmt-svc đã nhận hôm nay. Đang mởresources
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
railmapgen/rmp-gallery#4167 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
documentation p1
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 83/100
microsoft/monaco-editor#5577 ·
Maintainer thường phản hồi trong vòng 1 ngày