Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 27 additions & 18 deletions docs/architecture/deep-review.md

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions docs/sdlc-harness/architecture/agent-workflow-design.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# BitFun 智能体工作流交互与边界补充设计

> 范围:为 [../agent-workflow-staged-plan.md](../agent-workflow-staged-plan.md) 中的场景提供交互和边界补充。
> 本文不定义新的 Agent Kernel、Harness、QDP 或 DeepReview 核心对象模型;实现时优先复用既有 session、task、Agent Kernel/Harness long-running queue、DeepReview manifest、runtime events 和质量数据面契约。历史 work packets 仅用于旧会话兼容
> 本文不定义新的 Agent Kernel、Harness、QDP 或 DeepReview 核心对象模型;实现时优先复用既有 session、task、Agent Kernel/Harness long-running queue、DeepReview manifest、runtime events 和质量数据面契约。新受管 work packets 仅服务大目标 L1 Review,历史 packet 继续兼容读取

## 1. 设计定位

Expand All @@ -24,7 +24,7 @@
|---|---|---|
| 任务生命周期、取消、恢复、事件顺序 | Agent Kernel | 只消费状态,不新增并行生命周期 |
| 工具执行、验证命令、subagent 调用 | Execution | 只返回工具/验证结果,不写产品结论 |
| DeepReview 内部 capacity queue、只读 reviewer、report enrichment | 现有 DeepReview 架构 | 仅显式 L3 严格审查复用,不作为通用 workflow/task queue |
| DeepReview 内部 capacity queue、只读 reviewer、report enrichment | 现有 DeepReview 架构 | 显式 L3 与大目标受管 L1 内部复用;L1 对外仍呈现普通 Review,不作为通用 workflow/task queue |
| 权限、执行域、沙箱、凭据和网络 | Security Boundary | 成本或审查确认不能绕过安全确认 |
| 证据、指标和回放 | Quality Data Plane | P0/P1 不新增默认事件;先用既有最小事件 |
| GUI 展示和用户决策 | Product Surface | 展示状态、预算、风险和下一步,不拥有权威事实 |
Expand All @@ -34,27 +34,27 @@
| 场景 | 默认投影 | 允许升级 |
|---|---|---|
| 低风险任务 | 任务完成摘要 | 用户显式要求更稳时可做本地 L1 |
| 本地显式审查 | Review 面板 | 始终一个只读 reviewer;不进入 PR/团队流程 |
| 本地显式审查 | Review 面板 | 小目标一个只读 reviewer;大目标使用有界受管批次;不进入 PR/团队流程 |
| PR / 受保护分支 / 团队规则审查 | Review 面板 + 就绪度摘要 | 当前仅显式 strict 入口进入 L3;受管策略只能提示 |
| CI/测试失败 | 长任务条 + 失败摘要 | 多独立失败且 oracle 可用时队列化 |
| PR comments 批量修复 | 单一任务控制台 | 评论冲突或高风险路径由同一 reviewer 定向复核;不自动扩展 reviewer |
| 大迁移/审计 | 样本报告 + 预算确认 + 控制台 | 样本成功后扩大并发 |

## 4. Review 交互

Review 是用户唯一需要理解的审查入口。普通 Review 固定为一个只读 reviewer;显式 Strict Review 复用 L3 DeepReview,由主审直接完成更深检查并自行决定是否需要一次专家或条件质量检查。用户不需要理解 DeepReview、subagent 或历史 work packets。
Review 是用户唯一需要理解的审查入口。普通小目标 Review 使用一个只读 reviewer;大目标 Review 在同一个 L1 结果内使用受管、前台等待的只读工作包;显式 Strict Review 复用 L3 DeepReview,由主审直接完成更深检查并自行决定是否需要一次专家或条件质量检查。用户不需要理解 DeepReview、subagent work packets。

入口兼容约束:

- `/DeepReview` 只作为迁移窗口内的历史兼容输入,等价路由到 “Review: Strict”,不作为高级别名、调试入口或长期产品入口。
- child sessionauxiliary pane 默认后台化;历史 work packets 与 capacity queue 只服务旧会话兼容,普通用户只看到统一 Review 面板
- child sessionauxiliary pane 和受管工作包都是内部实现;普通用户只看到统一 Review 面板,worker 不得在所属 Review 回合结束后延迟回传
- 如果辅助 pane 因排障需要暴露,必须折叠到高级详情,并同步更新 DeepReview 架构文档,避免形成第二套产品入口。

| 强度 | 用户看到 | 默认限制 |
|---|---|---|
| L0 | 快速检查摘要 | 不创建 reviewer |
| L1 | 独立审查结果 | 一个只读 reviewer,由模型决定检查深度 |
| L3 | 严格审查结果和覆盖说明 | 仅 `/review strict`、`/DeepReview` 兼容输入或内部显式 strict follow-up,确认后启动 |
| L1 | 独立审查结果 | 小目标一个只读 reviewer;大目标最多 8 个受管文件批次、2 路并发,统一聚合并明确 deferred coverage |
| L3 | 严格审查结果和覆盖说明 | 仅 `/review strict`、`/DeepReview` 兼容输入或内部显式 strict follow-up;直接启动,无例行确认框 |

Review 面板只按问题呈现:

Expand All @@ -72,7 +72,7 @@ Review 面板只按问题呈现:

| 触发 | UI 行为 |
|---|---|
| 显式 Strict Review | 展示范围、一次计划主审、最多三次审查代理执行的硬上限、耗时倾向和只读边界不估算底层模型请求或 token |
| 显式 Strict Review | 直接启动;在运行状态和结果中展示范围、耗时倾向和只读边界不估算底层模型请求或 token |
| 主审决定请求专家或质量检查 | 只在具体不确定性、高严重度、冲突或低置信度时发生,不提前承诺固定覆盖角色 |
| 需要并发 worker | 说明节省墙钟时间和冲突风险 |
| 预算接近上限 | 暂停扩大执行,给出追加预算、保留核心检查、只收敛已完成 |
Expand All @@ -82,8 +82,8 @@ Review 面板只按问题呈现:

成本确认最低契约:

- 只有进入显式 L3 strict review、并发 worker、批量队列或长任务控制台时才弹出预算确认
- 当前 Strict Review 确认展示范围、一次计划主审、最多三次审查代理执行的硬上限、耗时倾向和只读边界。底层模型请求与 Token 估算、启动前范围调整和停止选项尚未实现,不写成当前能力。
- Review、Strict Review 和受管 L1 工作包都不弹例行预算确认;范围、覆盖、耗时倾向和只读边界通过非阻塞状态与结果呈现
- 只有特殊异常、权限/安全边界或缺少必须由用户决定的信息时才请求确认;底层模型请求与 Token 估算、启动前范围调整和停止选项尚未实现,不写成当前能力。
- 预算确认不能替代安全确认;执行位置、沙箱等级、写入范围、网络/凭据状态仍由安全边界提供。

## 6. 批量任务 GUI
Expand Down
26 changes: 13 additions & 13 deletions docs/sdlc-harness/product-requirements-agent-workflow-adjustment.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@

权威边界:本文是候选产品调整提案,不替代 [product-requirements.md](product-requirements.md)、[implementation-plan.md](implementation-plan.md)、[governance/metrics-spec.md](governance/metrics-spec.md) 或 QDP 事件注册表。任何条目被采纳前,必须回填到对应权威文档;未回填前不得作为正式 PRD、阶段承诺、门禁规则或指标口径执行。

2026-07-11 状态说明:
2026-07-15 状态说明:

- 已采纳并合入:统一 Review 主入口、DeepReview / ReviewTeam 内部化、普通 Review 固定单 reviewer、显式 Strict Review、只读 Reviewer 与 ReviewFixer 分离、同侧栏修复和 follow-up Review。
- 已采纳并合入:统一 Review 主入口、DeepReview / ReviewTeam 内部化、小目标普通 Review reviewer、大目标普通 Review 有界受管分批、显式 Strict Review、只读 Reviewer 与 ReviewFixer 分离、同侧栏修复和 follow-up Review。
- PR2 采纳:移除 PR Review MiniApp 独立路径,PR 面板以固定 provider identity/base/head 和按需 diff 启动统一 Review,并按精确 revision 投影进度、结果和过期状态。
- 部分采纳:显式 Strict Review 已有范围、一次计划主审、最多一次按需专家和一次条件质量检查、耗时倾向及只读边界确认;可靠的实际成本反馈和增量问题状态仍需产品优化,不展示无法证明的 Token 估算。
- 部分采纳:显式 Strict Review 已有范围、最多一次按需专家和一次条件质量检查、耗时倾向及只读边界说明,但不再弹例行启动确认;可靠的实际成本反馈和增量问题状态仍需产品优化,不展示无法证明的 Token 估算。
- 尚未采纳:通用动态 Workflow、CI / 测试失败队列、PR 自动复审策略、自动/inline 评论发布、大规模任务控制台、独立 Verify 产品化和组织级 Review 分析。

## 1. 核心结论

BitFun 后续不应把 dynamic workflow 理解成一个需要用户学习的新模式,也不应把 DeepReview 做成独立且默认沉重的高级入口。更好的产品方向是:

1. **保持默认执行轻量**:低风险和高风险普通任务都不因启发式规则自动增加 agent;普通 Review 使用一个只读 reviewer,显式 Strict Review 也由一个主审直接完成,只在具体不确定性确实需要独立视角时按需调用专家。受管策略只能提示,独立批量场景另行治理
1. **保持默认执行轻量**:低风险和高风险普通任务都不因启发式风险规则自动增加 agent;小目标普通 Review 使用一个只读 reviewer,大目标或 provider 证据不完整时才启用有界受管工作包。显式 Strict Review 由一个主审直接完成,只在具体不确定性确实需要独立视角时按需调用专家。
2. **把并发能力做成 GUI 中的单一任务控制台**:用户看到的是一个任务、一个进度、一组阶段和异常,而不是 64 个窗口、64 个聊天或 64 条不可理解的日志。
3. **把审查和工作流从概念上后台化**:用户不需要理解 subagent、workflow、evidence pack、artifact graph。默认只看到任务状态、风险原因、成本预算、已验证/未验证项和下一步。
4. **把完成率、token、耗时做成产品级预算选择**:显式进入严格审查或并发执行时说明预估收益和成本;自动化不能让 token 在用户无感知时暴涨。
5. **把 DeepReview 收敛为显式 Strict Review 的兼容运行时**:普通 Review 保持单 reviewer;明确严格意图进入更深的证据检查,但不等于固定增加 reviewer 数量
5. **把 DeepReview 收敛为 Review 的内部兼容运行时**:显式 Strict Review 用它执行更深证据检查;大目标普通 Review 仅复用其有界 packet 能力,对外仍是普通 L1 Review
6. **把复杂治理能力收回到用户价值之后**:证据包、图谱、门禁、风险接受是后台支撑,只有在 PR、团队规则、发布、事故、合规或大规模迁移时显性化。

## 2. 业界参照与启发
Expand Down Expand Up @@ -69,26 +69,26 @@ BitFun 后续不应把 dynamic workflow 理解成一个需要用户学习的新
-> 完成后给出结果、证据摘要和可选后续动作
```

用户可以用自然语言表达“更快”“更稳”或“只看安全”等关注点,但这些表达由同一个 reviewer 消费。当前严格审查只识别 `/review strict`、历史 `/DeepReview` alias 和内部显式 strict follow-up;自然语言 strict 映射若未来接入,必须仍由用户明确确认,不能由风险启发式规则代替。
用户可以用自然语言表达“更快”“更稳”或“只看安全”等关注点。当前严格审查只识别 `/review strict`、历史 `/DeepReview` alias 和内部显式 strict follow-up;自然语言 strict 映射若未来接入,必须仍由用户明确表达严格意图,不能由风险启发式规则代替。

上述渐进升级适用于批量执行、失败队列和验证策略,不适用于普通 Review reviewer 数量。普通 Review 始终保持一个 reviewer;团队策略当前只能提示严格审查,不能自动启动。
上述渐进升级适用于批量执行、失败队列和验证策略。普通 Review 不因风险启发式增加专家 reviewer;仅当目标超过单 reviewer 边界或 provider 证据不完整时,才自动启用有界 `ReviewGeneral` 工作包。团队策略当前只能提示严格审查,不能自动启动。

### 4.2 DeepReview 收敛为显式 Strict Review

统一的 `Review` 体验只保留两个生产启动边界;内部术语不作为普通用户设置项:

| 内部档位 | 触发条件 | 用户看到什么 |
|---|---|---|
| L1 | 普通 `Review`,不区分 diff 大小或启发式风险 | 一个独立 reviewer 的问题清单、证据状态和残余风险 |
| L3 | `/review strict`、历史 `/DeepReview` alias 或内部显式 strict follow-up | 一个严格主审直接检查;必要时最多一个专家和一个条件质量检查;展示范围说明和启动确认 |
| L1 | 普通 `Review`;小目标单 reviewer,大目标内部受管分批 | 一个聚合后的问题清单、证据状态、实际覆盖和残余风险 |
| L3 | `/review strict`、历史 `/DeepReview` alias 或内部显式 strict follow-up | 一个严格主审直接检查;必要时最多一个专家和一个条件质量检查;无需例行启动确认 |

L2 只保留历史 manifest 的读取与运行时校验兼容,不产生新的 Review 启动。安全、性能、架构、前端体验、跨模块或验证缺口等信号交给主审决定调查重点,不自动增加 reviewer。新 Strict Review 不预生成 work packets、不做同角色文件分片、不默认运行 Judge;旧会话所需的 packet、队列和重试结构只保留兼容读取
L2 只保留历史 manifest 的读取与运行时校验兼容,不产生新的 Review 启动。安全、性能、架构、前端体验、跨模块或验证缺口等信号交给主审决定调查重点,不自动增加专家 reviewer。新 Strict Review 不预生成 work packets、不做同角色文件分片、不默认运行 Judge。普通 L1 仅在目标超过单 reviewer 边界或 provider 证据不完整时生成受时长、批次数和并发约束的 `ReviewGeneral` 工作包;所有 worker 都由所属 Review 回合前台等待并聚合,未纳入本轮预算的范围必须标为 deferred coverage

迁移/兼容规则:

- 用户侧唯一主入口是 `Review`。
- `/DeepReview` 只能作为迁移窗口内的历史兼容输入,等价路由到 `Review: Strict`;默认导航、按钮和普通命令不应并列展示 `Review` 与 `DeepReview`。
- child session 和 auxiliary pane 应后台化为 L3 严格档实现细节;历史 work packets 与 capacity queue 只用于旧会话兼容。如果仍需要用户可见的辅助 pane,必须同步更新 DeepReview 架构文档并说明它不是第二个产品入口
- child session 和 auxiliary pane 是 Review 内部实现细节;受管 L1 工作包和历史 packet 都不得形成第二个产品入口。如果仍需要用户可见的辅助 pane,必须同步更新 DeepReview 架构文档
- 普通 review 输出必须合并到同一个 Review 面板,不能再把 DeepReview report 作为另一个窗口或另一个审查结果呈现。

## 5. TUI 与 GUI 的并发心智差异
Expand Down Expand Up @@ -179,7 +179,7 @@ workflow 不应成为通用默认。它适合满足以下条件的任务:

自动化可以默认启用,但必须满足三条约束:

1. **成本阈值前确认**:当前 Strict Review 在显式启动时确认范围、一次计划主审、最多三次审查代理执行的硬上限、耗时倾向和只读边界,不估算底层模型请求或 token。并发 worker、长任务控制台或可靠预算阈值属于独立后续能力
1. **成本状态非阻塞呈现**:Review、Strict Review 和受管 L1 工作包直接启动;范围、覆盖、耗时倾向和只读边界在运行状态与结果中展示,不估算底层模型请求或 token。只有特殊异常、权限/安全边界或必须由用户决定的信息才请求确认
2. **渐进放大**:先抽样或小批量验证,再扩大到全量。
3. **可随时调整范围**:这是长任务和严格审查的候选需求,不是当前启动确认能力;采纳前需补齐具体交互和运行时事实来源。

Expand Down Expand Up @@ -233,7 +233,7 @@ BitFun 不能把“任务完成率最高”作为唯一目标。用户通常需
最低产品契约:

- 默认轻路径不主动显示 token 面板;结束摘要只写已验证、未验证和残余风险。
- 当前显式 Strict Review 启动确认展示范围、一次计划主审、最多三次审查代理执行的硬上限、耗时倾向和只读边界,不估算底层模型请求或 token。
- 当前显式 Strict Review 与受管 L1 Review 都直接启动;范围、实际覆盖、耗时倾向和只读边界通过非阻塞状态与结果展示,不估算底层模型请求或 token。
- “保留核心检查”、启动前范围调整和停止选项仍是候选需求,不作为当前能力。
- 只有建立可靠成本来源和预算模式后,后续预算说明才可使用估算区间;不得先承诺精确 token。
- 无可靠 oracle、连续两轮无新增有效问题、冲突需要人工信息、或协调成本高于 item 处理成本时,默认建议停止或保留核心检查。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ mod review_specialists;
pub use review_fixer::ReviewFixerAgent;
pub use review_specialists::{
ArchitectureReviewerAgent, BusinessLogicReviewerAgent, FrontendReviewerAgent,
PerformanceReviewerAgent, ReviewJudgeAgent, SecurityReviewerAgent,
GeneralReviewerAgent, PerformanceReviewerAgent, ReviewJudgeAgent, SecurityReviewerAgent,
};
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,16 @@ fn reviewer_tool_exposure_overrides() -> AgentToolPolicyOverrides {
overrides
}

define_readonly_subagent_with_overrides!(
GeneralReviewerAgent,
"ReviewGeneral",
"General Review Worker",
r#"Read-only general review worker for one bounded managed-Review shard. It checks correctness, security, performance, architecture, frontend contracts, and tests within only the assigned files, then returns evidence and exact coverage to the owning Review agent."#,
"review_general_agent",
&["Read", "Grep", "Glob", "LS", "GetFileDiff"],
reviewer_tool_exposure_overrides()
);

define_readonly_subagent_with_overrides!(
BusinessLogicReviewerAgent,
REVIEWER_BUSINESS_LOGIC_AGENT_TYPE,
Expand Down Expand Up @@ -77,14 +87,15 @@ define_readonly_subagent_with_overrides!(
mod tests {
use super::{
ArchitectureReviewerAgent, BusinessLogicReviewerAgent, FrontendReviewerAgent,
PerformanceReviewerAgent, ReviewJudgeAgent, SecurityReviewerAgent,
GeneralReviewerAgent, PerformanceReviewerAgent, ReviewJudgeAgent, SecurityReviewerAgent,
};
use crate::agentic::agents::{Agent, UserContextPolicy};

#[test]
fn specialist_reviewers_use_workspace_context_and_instructions() {
let agents: Vec<Box<dyn Agent>> = vec![
Box::new(BusinessLogicReviewerAgent::new()),
Box::new(GeneralReviewerAgent::new()),
Box::new(PerformanceReviewerAgent::new()),
Box::new(SecurityReviewerAgent::new()),
Box::new(ArchitectureReviewerAgent::new()),
Expand Down
3 changes: 2 additions & 1 deletion src/crates/assembly/core/src/agentic/agents/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ pub use definitions::modes::{
};
pub use definitions::review::{
ArchitectureReviewerAgent, BusinessLogicReviewerAgent, FrontendReviewerAgent,
PerformanceReviewerAgent, ReviewFixerAgent, ReviewJudgeAgent, SecurityReviewerAgent,
GeneralReviewerAgent, PerformanceReviewerAgent, ReviewFixerAgent, ReviewJudgeAgent,
SecurityReviewerAgent,
};
pub use definitions::shared::ReadonlySubagent;
pub use definitions::subagents::{
Expand Down
Loading
Loading