baa-conductor

git clone 

baa-conductor / tasks
codex@macbookpro  ·  2026-04-01

T-S065.md

  1# Task T-S065:policy 配置化
  2
  3## 状态
  4
  5- 当前状态:`已完成`
  6- 规模预估:`M`
  7- 依赖任务:无
  8- 建议执行者:`Codex`
  9
 10## 直接给对话的提示词
 11
 12`/Users/george/code/baa-conductor/tasks/T-S065.md` 任务文档,完成开发任务。
 13
 14如需补背景,再读:
 15
 16- `/Users/george/code/baa-conductor/bugs/OPT-003-policy-configurable.md`
 17- `/Users/george/code/baa-conductor/plans/BAA_INSTRUCTION_SYSTEM.md`
 18- `/Users/george/code/baa-conductor/plans/BAA_INSTRUCTION_ROADMAP.md`
 19
 20## 当前基线
 21
 22- 仓库:`/Users/george/code/baa-conductor`
 23- 分支基线:`main`
 24- 提交:`64d122e`
 25
 26## 分支与 worktree(强制)
 27
 28- 分支名:`feat/policy-configurable`
 29- worktree 路径:`/Users/george/code/baa-conductor-policy-configurable`
 30
 31开工步骤:
 32
 331. `cd /Users/george/code/baa-conductor`
 342. `git worktree add ../baa-conductor-policy-configurable -b feat/policy-configurable main`
 353. `cd ../baa-conductor-policy-configurable`
 364. 在这个 worktree 目录里开发,不要回到主仓库目录
 37
 38完成后提交与推送:
 39
 401. 在 worktree 里提交所有变更(包括更新后的任务文档)
 412. `git push -u origin feat/policy-configurable`
 42
 43合并步骤(由合并者执行):
 44
 451. `cd /Users/george/code/baa-conductor`
 462. `git fetch origin`
 473. `git merge origin/feat/policy-configurable`
 484. `git push`
 495. `git worktree remove ../baa-conductor-policy-configurable`(如果 worktree 还在)
 50
 51合并冲突处理:
 52
 531. 如果 `git merge` 报冲突,先 `git diff` 查看冲突文件
 542. 手动解决冲突后 `git add` 冲突文件
 553. `git merge --continue` 完成合并
 564. 不要用 `git merge --abort` 然后 force 覆盖
 57
 58命名规则:
 59
 60- 功能任务分支名以 `feat/` 开头
 61- 缺陷任务分支名以 `bug/` 开头
 62
 63## 目标
 64
 65把 BAA policy 从硬编码常量改成可配置结构,为后续 automation control plane 和更多 target/tool 扩面提供基础。
 66
 67## 背景
 68
 69当前 target/tool 白名单仍主要是硬编码集合。随着 `browser.chatgpt/gemini` 放开、自动化控制指令准备接入,这部分已经进入主链演进路径,不应继续只挂在 opt。
 70
 71## 涉及仓库
 72
 73- `/Users/george/code/baa-conductor`
 74
 75## 范围
 76
 77- policy 配置化入口
 78- 默认策略与当前行为兼容
 79- 测试覆盖
 80
 81## 允许修改的目录
 82
 83- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/`
 84- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
 85- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/local-api.ts`
 86
 87## 必须完成
 88
 89### 1. policy 配置入口
 90
 91- 支持在 instruction center 构造或初始化阶段传入 policy 配置
 92- 默认值保持当前主线行为不变
 93
 94### 2. 兼容现有 target / tool
 95
 96- `conductor` / `system` / `browser.claude/chatgpt/gemini` 现有行为不回退
 97- 为后续新增 automation control 指令留清晰扩展点
 98
 99### 3. 测试
100
101- 覆盖默认 policy
102- 覆盖自定义 policy 覆盖行为
103
104## 验收标准
105
106- 不传配置时,当前主线行为不变
107- 传配置时,可以扩展或收缩允许的 target / tool 集合
108- 测试覆盖核心分支
109
110## 推荐验证命令
111
112- `cd /Users/george/code/baa-conductor-policy-configurable && pnpm -C apps/conductor-daemon test`
113
114## 执行记录
115
116> 以下内容由执行任务的 AI 填写,创建任务时留空。
117
118### 开始执行
119
120- 执行者:`Codex`
121- 开始时间:`2026-04-01 17:40:00 +0800`
122- 状态变更:`待开始` → `进行中`
123
124### 完成摘要
125
126- 完成时间:`2026-04-01 18:02:34 +0800`
127- 状态变更:`进行中` → `已完成`
128- 修改了哪些文件:
129  - `apps/conductor-daemon/src/instructions/policy.ts`
130  - `apps/conductor-daemon/src/instructions/loop.ts`
131  - `apps/conductor-daemon/src/instructions/ingest.ts`
132  - `apps/conductor-daemon/src/local-api.ts`
133  - `apps/conductor-daemon/src/index.test.js`
134  - `tasks/T-S065.md`
135- 核心实现思路:
136  - 把硬编码 target/tool 白名单抽成 `policy` 配置结构,提供默认 policy 克隆入口和解析函数。
137  -`BaaInstructionCenter` 构造阶段支持注入 policy,并在 `BaaLiveInstructionIngest` 初始化阶段支持把 policy 继续透传到内部 center。
138  -`ConductorLocalApiContext` 增加可选 `instructionPolicy` 扩展点,保持默认行为不变,同时给后续 automation control / 新 target/tool 扩面留入口。
139  - 补测试覆盖默认 policy 主线行为,以及自定义 policy 对 target/tool allowlist 的收缩与扩展。
140- 跑了哪些测试:
141  - `pnpm -C /Users/george/code/baa-conductor-policy-configurable/apps/conductor-daemon test`
142
143### 执行过程中遇到的问题
144
145- 新 worktree 初始没有 `node_modules`,先执行 `pnpm -C /Users/george/code/baa-conductor-policy-configurable install --frozen-lockfile` 后再跑测试。
146
147### 剩余风险
148
149- 暂无