12 KiB
Unified Project AI Handoff
Purpose
这份文档是给下一窗口直接续写用的 handoff。
目标不是继续把 internal / external / planmode 当成 3 个割裂模式分别修,而是做一个统一入口的项目型 AI:
- 先理解当前项目
- 必要时获取外部资料
- 再决定是否把结论 handoff 给 plan
当前仓库里把三条链分开讨论,只是因为飞书上下文和短句 follow-up 很容易串线;最终产品形态不是“3 个分离模式”,而是“1 个懂项目的统一 AI”。这里的 planmode 只是对话简称;落到 repo 真名时,统一指 plan_mode 顶层 gate 和其后的 requirement_plan / draft_pending_confirm 主链,不新增一个新的 runtime route 名。
User-Aligned Goal
用户当前明确要的是:
一个懂 PMFlow 当前项目、能看当前仓库摘要、能结合外部资料做判断、再自然推进计划的 AI。
不是:
- 泛化聊天产品
- 单纯外部搜索框
- 单纯 requirement-plan 助手
- 靠关键词和正则硬切模式的路由器
Confirmed Defaults
这些是已经在对话里拍板过的默认策略,下一窗口不要再重新猜。
0. 禁止回到硬性语义和正则路由
这是硬约束,不是建议:
- 不准新增关键词仓去硬切
internal / external / planmode - 不准新增正则路由 helper 去抢统一入口的决策权
- 不准把“像不像某类问题”当成执行层主判断依据
- 不准再用散落运行时代码的硬性语义拍板修飞书问题
允许做的是:
- 基于显式锚点
- 基于统一
Project Operating Context - 基于单次结构化语义结果
- 基于统一
execution_recipe
不允许做的是:
- “看到适合吗就大概率 external”
- “看到怎么推进就直接 plan”
- “看到配置/系统/模型这些词就直接 internal”
1. 默认多意图策略
固定为 A:
- 先给基于当前项目的判断结论
- 再明确给一个“是否基于这个结论进入 plan”的下一步
不是:
- 先追问用户要不要开 plan
- 也不是只要像建议题就直接进 plan
- 也不能覆盖已命中的
plan_mode强锚点或 active requirement / draft 主链
2. 默认上下文范围
固定为:
当前项目当前仓库摘要当前线程 / 页面 / reply强锚点
这里的“当前仓库”按 repo 现状应理解成“运行时拿得到的 codebase snapshot / repo summary”,不是默认已经拥有全 workspace、全语言、全目录的完整理解;当前 codebase overview 仍偏 backend snapshot,这一点要保持诚实。
暂不默认扩到:
- 用户名下所有项目
- 整个租户 portfolio
原因:先把当前项目型 AI 稳住,避免重新回到全局聊天串线。
3. Internal / External / Plan 的关系
不是三个平级产品模式,而是:
internal:内部事实、对象状态、项目画像、适配约束external:外部资料、方案、生态、官方信息、可核验证据planmode:后续推进能力,不应该抢掉“判断题”的第一响应;repo 真正落地时仍由plan_modegate 和requirement_plan / draft_pending_confirm主链承接
推荐的执行顺序是:
统一上下文 -> 统一入口裁决 -> internal/external 产出 -> plan handoff
4. External 允许吃 internal fit brief,但 final answer 仍 external-only
这是一个关键边界:
- internal 可以先生成
Project Fit Brief - external planner 可以用这个 brief 去约束外部检索
- 但 external 最终正文和外部证据仍必须保持 external-only contract
- 这个 brief 只能作为 pre-retrieval planning input,不放宽单一
source_policy和“不混搜 internal + external 证据”的 repo 现有边界
也就是:
- 可以“先懂项目,再去搜外部”
- 不可以“把内部事实混成外部证据一起答”
Root Problem Statement
用户当前最不满意的,不是单独某一条链不够强,而是:
1. 飞书里的统一入口很混乱
同一句话系统经常分不清:
- 是在问内部系统问题
- 是在问外部问题
- 还是想基于外部问题顺手进入 plan
2. 复合意图问题没有被好好处理
像这些问题最典型:
这个适合吗那要不要接这个方案适不适合我们当前项目那怎么推进
这些其实天然同时包含:
- 当前项目画像
- 外部资料判断
- 是否进入 plan 的手势
如果入口没有统一上下文层,就会继续在三条链之间乱跳。
3. 历史上加过太多硬性语义、关键词、正则,会让系统越修越乱
当前方向已经明确:
- 不准再在执行层补散落业务语义规则
- 不准再靠问题“长得像什么”去硬切模式
- 不准再用正则和硬编码语义兜底飞书入口
- 必须回到对象/上下文优先
Current Plan Of Record
当前正式计划文件:
2026-04-17-unified-project-operating-context-and-three-lane-handoff.md
这份计划不是“只做上下文”的计划,而是:
- 先补统一上下文层
- 再统一入口裁决
- 再整合
internal / external / planmode
只是执行顺序上,先修地基,再接三路。
New Requirement Added After Plan Draft
用户补了一个非常重要的要求:
飞书问题清单还不够,必须先收集并固化,再开始真正实现。
所以计划里已经新增了前置 Task 0:
- 先做
Feishu 问题清单 + 黄金对话样例 - 再做统一上下文和三路整合
这是一个硬前置,不应跳过。
Feishu Problem Inventory Direction
下一窗口优先应该收的问题类型包括:
reply/thread锚点丢失或绑错internal / external / planmode误分流- 外部问答后续一句话错误掉进 internal 或 plan
- “适不适合 / 推荐什么 / 怎么推进” 这类复合问题被拆错
- 同群同人 scope 串线
- 旧 active context 劫持新问题
- 明明该继续 plan,却掉回
query.answer - 明明只是问结论,却被直接拉进 plan
- 卡片动作和纯文本行为不一致
- Web 和 Feishu 对同一句话给出不同链路
这些不只是问题分类,还应该进一步整理成黄金对话样例和回归测试。
User-Visible Gains To Preserve
下一窗口如果继续设计或实现,不要只谈架构,要一直回到这些“实际收益”。
场景 1:外部工具是否适合当前 PMFlow 项目
用户问:
OpenAI Docs 这种能力适不适合我们现在这个项目?
目标行为:
- 先基于当前项目判断适不适合
- 明确说明原因、代价、适配点
- 再给一个“是否进入 plan”的下一步
不是:
- 泛泛讲功能
- 直接进 plan
- 或掉成纯 external 搜索
场景 2:飞书线程里一句“这个适合吗”
目标行为:
- 能认出当前线程正在讨论哪个对象
- 能站在当前项目上回答“适不适合”
- 先答结论,再给 plan 入口
场景 3:结合当前 repo 判断外部方案
用户问:
如果我们想把 GitHub repo 信号也接进来,现在仓库里有没有基础?
目标行为:
- internal 先看当前 repo / current project capability
- external 再补行业做法和方案证据
- 最后回答成一个贴当前项目的判断
场景 4:战略判断题
用户问:
semantic facts 这条线还值不值得继续做?
目标行为:
- internal 知道当前项目已经做到哪
- external 辅助做对照
- 回答成一个项目管理判断,而不是搜索结果堆砌
场景 5:自然接到 plan
用户在上一轮判断后只回一句:
那按这个推进
目标行为:
- 直接 handoff 给 plan
- 不再重新问 internal / external / plan 是哪种模式
What This Work Should Solve
如果这轮做完,至少应该明显改善这三件事:
- 用户不用反复重述“我是说当前 PMFlow 项目”
- 外部判断题不再和 planmode 争第一响应
- 飞书短句 follow-up 不再在三路之间随机乱跳
What This Work Does Not Automatically Solve
要对下一窗口保持诚实边界:
这轮统一上下文和三路整合,不自动等于修完所有飞书历史 bug。
如果底层仍存在这些问题,还需要单独查:
- canonical thread mapping 本身出错
- reply outbox / sent_message_id -> source_message_id 归一化异常
- card action 回流上下文丢失
- Feishu transport 层事件字段不完整
也就是说:
这轮会解决“入口理解和三路 handoff 混乱”的大头问题, 但不是自动包治所有 Feishu 基础设施问题。
Recommended Starting Point For The Next Window
不要直接进实现。
下一窗口最合适的顺序是:
- 打开并继续使用这两份文件:
- 先执行计划里的
Task 0 - 先把
Feishu 问题清单 + 黄金对话样例写出来 - 再决定是否继续进入上下文层实现
One-Line Summary
下一窗口要接着做的,不是“继续拆 3 个模式”,而是:
先把飞书问题清单收完整,再把 internal / external / plan 收到统一项目上下文下面。
补充硬约束:
整个过程中不准回到硬性语义、关键词仓或正则路由。
Final Architecture Baseline
这部分是本轮已经拍板的终态基线,下一窗口不应再偏离。
- PMFlow 的目标形态是
统一项目型 AI,不是 3 个割裂模式。 - 顶层一定先有
Project Operating Context,默认范围固定为:当前项目当前仓库摘要当前线程 / 页面 / reply强锚点 这里的“当前仓库”是运行时可取得的 repo summary,不默认等于全仓库完整理解。
- 顶层仍先尊重 repo 现有的
plan_modegate;只有非 plan 主链的 recommendation / query 流程,才继续产出统一的execution_recipe,再决定:- 走
internal - 走
external - 还是在回答后 handoff 给
planmode
- 走
internal的职责是:- 内部对象事实
- 当前项目画像
fit brief- 适配约束
external的职责是:- 外部资料
- 官方/公开证据
- 可核验推荐
- 外部影响判断
- 这里的
planmode只是对话简称,repo 真正落地仍是plan_modegate +requirement_plan / draft_pending_confirm主链。 planmode不再抢第一响应。 默认策略固定为A:- 先给基于当前项目的判断结论
- 再给一个明确的 plan handoff 下一步
- external 可以消费 internal 生成的
fit brief,但 final external answer 仍必须保持 external-only:- 不混 internal 证据
- 不把
system_snapshot / user_snapshot / project_context / internal context_blocks重新注入 external presenter - 不放宽单一
source_policy和 v1 不混搜 internal + external 的 repo 基线 - 最终展示仍遵守
customer_safe / admin_debug双视图边界
- 强锚点优先级高于默认策略:
- 显式
reply/thread - 显式
work_item_id - 已绑定 active requirement / draft context 这些命中后可以直接进入 plan 主链。
- 显式
- 飞书问题必须先通过
问题清单 + 黄金样例 + 回归测试验收,不能只看架构是否漂亮。 - 整个方案禁止回到硬性语义、关键词仓和正则路由。
一句话终态:
先理解当前 PMFlow 项目,再决定内部取证、外部取证和计划推进如何接棒;默认先答判断,再给计划入口。