Skip to content

建议:run 模式增加构建过程的可追溯性(意图驱动编程视角) #46

Description

@Guo-Zhang

建议:run 模式增加构建过程的可追溯性

背景:意图驱动编程的实践需求

我在"意图驱动编程"的实践中使用 iceCoder:

  • 我定义意图(如"实现 Studio v0.0.6 教学管理做实")
  • iceCoder 自主执行构建
  • 我评审最终产出

但中间的构建过程是黑箱——我不知道系统是怎么理解我的意图、做了什么决策、为什么选择某个方案。

这不是进度条的问题。我需要理解系统是怎么被构建出来的

现状:内部已有但未暴露的信息

阅读源码后发现,iceCoder 内部实际上记录了丰富的构建信息,但几乎全部没有暴露给用户:

1. Intent 理解层

src/types/runtime-snapshot.ts 中定义了:

type TaskIntent = 'question' | 'inspect' | 'edit' | 'debug' | 'test' | 'refactor' | 'docs';
type TaskPhase = 'intent' | 'context' | 'editing' | 'verification' | 'final';

系统把我的自然语言任务归类到了一个 TaskIntent,但我不知道它归类成了什么。如果它把我的"实现教学管理"归类为 edit 而我希望是 refactor,中间的偏差我无从知晓。

2. 上下文搜集层

TaskGraphBuildersrc/harness/task-graph-builder.ts)会做 repo shape discovery、复杂度评估、文件扫描。它读了哪些文件来做决策?这些是我关心的。

3. 任务图执行层

TaskGraphsrc/harness/task-graph.ts)有完整的节点状态跟踪:

type TaskNodeStatus = 'pending' | 'running' | 'done' | 'failed' | 'skipped';

每个节点有 titletype(inspect/read/edit/verify)、evidence(关联路径)。这套数据可以渲染出完整的构建过程,但目前只在内存中,没有输出。

4. 对齐检测层

GoalDriftConfigsrc/types/supervisor.ts)有对齐检测机制:

interface GoalDriftConfig {
  alignmentThreshold: number;
  consecutiveRoundsBelow: number;
  jaccardMinGoalOverlap?: number;
}

系统在内部检测执行是否偏离了目标,但这个检测结果用户看不到。

建议方案

利用 TaskGraph 和 TaskState 中已有的数据,在 run 模式结束后(或通过 --verbose 实时)输出一份构建过程记录,包含以下层级:

输出示例

 Task: 实现 Studio v0.0.6 教学管理

 Intent: edit (由系统自动归类)
 Phase: intent → context → editing → verification → final

 Files Read:
   lib/models/class_teaching.dart     (现有模式参考)
   lib/services/data_service.dart     (现有服务模式参考)
   lib/models/enums.dart              (枚举模式参考)

 Construction Steps:
   [模型层]
   ✅ Create Student           → lib/models/student.dart       (3 files written)
   ✅ Create Teacher           → lib/models/teacher.dart
   ✅ Create Assessment        → lib/models/assessment.dart
   ✅ Create Submission        → lib/models/submission.dart
   ✅ Extend ClassTeaching     → lib/models/class_teaching.dart (+teacherIds/studentIds)
   ✅ Add enums                → lib/models/enums.dart (+AssessmentType/SubmissionStatus)

   [服务层]
   ✅ Create AssessmentService → lib/services/assessment_service.dart
   ✅ Extend CourseDataService → lib/services/data_service.dart (+class CRUD)

   [UI层]
   ✅ Refactor ClassScreen     → lib/screens/class_screen.dart (detail page)
   ✅ Create AssessmentList    → lib/screens/assessment_list_screen.dart
   ✅ Create AssessmentDetail  → lib/screens/assessment_detail_screen.dart

 Verification:
   ✅ flutter test     → 143 tests passed
   ✅ dart analyze     → No issues found

 Alignment: 92% (above threshold) — intent preserved

数据来源(全是已有的)

输出内容 数据来源
Intent 分类 TaskState.intent / TaskIntent 枚举
Phase 转换 TaskState.phase
读取的文件列表 TaskState.filesRead
写入的文件列表 TaskState.filesChanged
执行命令 TaskState.commandsRun
步骤进度 TaskGraph.nodes[].status + cursor
对齐评分 GoalDriftConfig.alignmentThreshold + 运行时 alignment 值
验证结果 VerificationStatus

实现方式

  1. 运行中--verbose 或默认):每完成一个 TaskGraph 节点,输出一行 ✅/🔄 状态
  2. 运行后(总是):在 final message 中附一份结构化摘要

不需要新增数据采集,只需要把内存中已有的 TaskStateTaskGraph 格式化输出。


补充说明

我知道 HarnessLoggerterminal-ui.ts 已经输出了 [harness] 日志和 🔧 工具调用行。

但这些是AI 行为日志(粒度是每次工具调用),不是系统构建过程记录(粒度是每个逻辑步骤 + 意图 + 决策)。我需要的不是更多的日志行,而是将已有的 TaskGraph 节点级别的结构化信息渲染给人看。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions