Skip to content

项目运作逻辑:Chief 与 Project Assistant 的身份边界、决策分级落到看板 #1831

Closed

Description

@Birfy

Written-by: Chief

Owner 2026-10-30 提出的第 4 点("重新看 #1550 中项目 agent 和用户代理 agent 的定义,重构项目运作逻辑")的落地单。口径来自 #1550 两节(Project and role-specific UI / AI identities and authorization)+ Owner 2026-10-30 拍板「理解基本正确,可以开工」,以本单为准(main 上还没有对应 docs,不要等)。

1. 两种 AI 身份必须能区分

Chief(项目 AI 经理) Project Assistant(用户在该项目的代理 agent)
归属 项目,不属于任何个人 「用户 ↔ 项目」这一对关系,一人一项目一个
记忆 项目记忆(Project State + 团队记忆) 私有记忆,存 FlyBot 侧,不进仓库
能做 规划、拆活、判决策级别、组织临时会议、升级异常、汇总 授权范围内代表该用户跟进承诺、在会议里代表该用户表态;每天 09:00(用户时区)发摘要 + 待拍板清单
不能做 替用户拍 Owner 级决定;借用户身份做项目自动化动作 用共享项目凭据冒充用户;代表项目 Bot 承诺
GitHub 身份 共享项目凭据,写作带 Written-by: <Bot> 可选绑定用户本人身份,使提案/评论归属本人;自主动作不得借用

看板要求:任务行「谁在做」显示持有 claim 的 Bot / 角色;助理代发内容标注「代 <用户> 发言」;项目自动化写的内容显示 Written-by:。三者不可混为一谈。

2. 决策分级(落到卡片)

  • ordinary:一名 Maintainer 同意即可结。
  • major(路线、架构、跨项目影响):须参与的 Maintainer 达成一致,未解异议进讨论,不静默通过。
  • severe(安全、数据丢失、不可逆):出现实质少数异议即暂停,交 Owner 按规则裁决——保护风险,不是给异议方否决权。
  • Chief 判级并写理由;Maintainer 可质疑级别要求复核;任何 LLM 判定都不构成 GitHub 或 FlyBot 授权。
  • 每张待决策卡显示级别 + 收件人(哪些 Maintainer、是否需要 Owner);severe 卡默认不可自动推进。

3. 范围

  • host:决策卡新增 level(ordinary/major/severe)与 recipients;severe 拒绝自动推进(返回原因)。身份标记字段(speaksFor:无 / 用户 id)。
  • client:待决策卡显示级别徽章与收件人;任务行与评论显示身份标记(Written-by / 代用户)。
  • 不做:Project Assistant 的模型实现、每日摘要调度(另开单);不做 GitHub 权限推导。

4. 验收

  1. 决策卡能设/改级别,severe 卡被 host 拒绝自动推进并给原因。
  2. 卡片与任务行能看出「谁在做」「谁在替谁说话」,助理代发的可见「代 <用户>」。
  3. 单测覆盖:级别校验、severe 阻断、speaksFor 标注;npm run verify 绿。

依赖 #1828(导航+角色)、#1829(指标+任务行):三者都改 core/src/client/project-board.js,串行做,前一张 PR 合入后再开工本单。

Activity

  1. added
    enhancementNew feature or request
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    area:uiWeb/desktop UI and copy
    on Oct 30, 2026
  2. Birfy commented on Oct 30, 2026

    @Birfy
    CollaboratorAuthor

    Written-by: Triage

    Ready — scope is this body's §1–§4; nothing else is open on it.

    Dependencies met: #1828 (PR #1832) and #1829 (PR #1835) are merged; main is b4e05acf9c2785eced88e94f1b70e4f15c860c9f (the #1835 merge). No open PR names #1831 and no branch claims it.

    Brief for the implementer:

    • host: the decision card gains level (ordinary/major/severe) and recipients; a severe card is never auto-advanced — the path that would close/move it returns { ok: false, reason } (today no automatic-advance path exists, so put the guard where a decision card is written/closed). The decision record's class vocabulary already lives in core/src/host/meetings.js; the board read is in core/src/host/project-board.js.
    • identity: add speaksFor (absent / a user id) to the content the board shows, so Written-by: (project automation), 代 <user> (assistant relaying) and the task row's claim holder are three distinct things.
    • client: core/src/client/project-board.js shows the level badge + recipients on the decision card, and the identity mark on task rows and comments; i18n strings included.
    • red tests first, then the change: level validation, severe refusal with its reason, speaksFor marking; then npm run verify with TZ=UTC green. Acceptance is this body's §4.
    • docs: update docs/subsystems/project-board.md (owned path) or carry a Docs-not-needed: trailer in both the branch commit and the PR body.

    Risk basis: host decision semantics + client rendering + docs — T2-sized, not a security surface; the deciding tier is the one risk-gate computes.

  3. self-assigned this
    on Oct 30, 2026
  4. added
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 30, 2026
  5. Birfy commented on Oct 30, 2026

    @Birfy
    CollaboratorAuthor

    Written-by: Dev

    Claimed #1831 — branch dev/1831-decision-levels. First step: host decision-card level/recipients/speaksFor + severe refusal, with red tests first.

  6. removed
    agent-workingAn agent has claimed this issue (the claim comment names the branch)
    on Oct 30, 2026
  7. added a commit that references this issue on Oct 30, 2026
    3cca5d9
  8. removed
    agent-readyMaintainer-approved spec: an agent may take it. Only maintainers set this; never in a template
    on Oct 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:uiWeb/desktop UI and copyenhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions