AI Specialist Value Output — PRD 评审与分阶段实施总方案(v2)
For agentic workers: 本文档是 master plan(评审 + Phase 结构 + 各 Phase 方案)。每个 Phase 动工前用 superpowers:writing-plans 产出该 Phase 的 task 级 TDD 实施计划,再用 superpowers:subagent-driven-development 或 superpowers:executing-plans 执行。
Goal: 把 Specialist 的专业身份变成五个运营侧可配置资产(Soul / Skills / KB / Tools / Feedback loop),版本化、审计、eval 门禁,AM 无需工程师即可配置新 Specialist。
Architecture(v2 核心修订): 不按资产类型切 Phase,而按"先统一数据模型与存储 → 再统一管理(admin 系统)→ 再统一装配 → 最后拓展"的层次推进。五种资产共享一个配置资产底座(统一的版本 / 审计 / 作用域 / 发布状态机),Soul/Skill/KB/Tools 是底座上的 asset type,不各自造轮子。
Tech stack: NestJS 11 + TypeORM(PG16/pgvector) · FastAPI Hermes runtime · Next.js 16 · BullMQ · agent/evals/domain golden-set harness · feature-flags(org_specialist 级)
评审基线:
origin/dev@714516a6(2026-07-07),PRD =docs/specs/prd-specialist-value-output.md(2026-07-06 Draft)v2 变更(2026-07-07): 按 owner 意见重构 Phase 结构——原 v1 按 PRD 资产类型分期(Soul→Skills→KB→Feedback→Runtime→Tools),v2 改为统一底座先行。评审部分(§一、§二)不变。
一、评审结论(TL;DR)
PRD 的方向、分层原则(config is data / edit≠publish / eval 门禁 / 隔离 by construction)与 ADR-033/034/020 对齐良好,建议采纳。但有两类问题:
A. current-state 过期(8 处,见 §2.1),导致工作量分布失真:
- R4(反馈闭环)比 PRD 预估小得多——edit-signal、一键分类、few-shot 复用均已建成或大部分建成;
- R6(Tools)比 PRD 预估大——
tool_specialist_bindings表不存在,注册表是代码内静态字典; - 一个合规矛盾必须最先处理:
correction-refinement.processor今天就在无人工审批自动写 KB,违反 PRD 自己的 OQ-205 默认; - 一个架构决策必须前置:R5 装配器放 Python agent 还是随 ADR-034 E2 迁移线走 API 侧,T5.1 前必须定案。
B. 结构性问题(v2 重点):PRD §7 按资产类型分期,每期各自建实体 + 版本 + 审计 + 导入 + UI,会产出 4 套异构的配置存储与发布流。五种资产的公共本质是同一个抽象——"版本化、审计、Org×Specialist 作用域、eval 门禁的配置资产"。正确顺序是:统一数据模型与存储 → 统一 admin 管理系统 → 统一装配 → 拓展。底座建一次,资产类型是插件。
二、逐项评审
2.1 Current-state 核查(PRD §3 vs 代码事实)
| # | PRD 声明 | 代码事实 | 对方案的影响 |
|---|---|---|---|
| 1 | "edit-diff in releaseDraft discarded (#3323)" | 已捕获:expert-queue.service.ts:1813 safeEditSignal → wasEdited + editRatio 写入 Expert Message.metadata,并发 PostHog draft_released、触发 autoCorrectFromEdit(#3322)。缺:完整 diff 文本、可查询列、与 category 的联合分析面 | T0.1 从"新建"改"补全" |
| 2 | "correction_embeddings write-only" | 已读:learning.service.ts:331 retrieveSimilarCorrections(#3406)→ maybeInjectCorrectionFewShot few-shot 注入。flag correction_fewshot_enabled 默认 OFF | R4.5 从"建"改"灰度开启 + 质量对照" |
| 3 | "correction→KB processor partial (#303)" | 已完整且越界:LLM 分类 → 去重 → 直接 ingestionService.upload 写 KB,无人工审批 | R4.4 是行为纠偏;现状违反 OQ-205 拟定默认 → Phase 0 止血 |
| 4 | R4.3 "completes the Correction capture UI gap" | 链路已通:ReplyDock 分类选择器 → api.ts → releaseDraft(correctionCategory) | 基本完成,剩验证 + 埋点核对 |
| 5 | "tool_specialist_bindings(ADR-020 row)"为既有设施 | 不存在。现状:specialists.tools[] string 数组 + per-org IntegrationCredential;静态 AGENT_TOOL_REGISTRY(bespoke|nango,无 MCP) | 从"扩展"改"新建",含 expand-contract 迁移 |
| 6 | Skills "repo bind-mount;M2 计划移到 R2" | M2 通道已存在:agent 启动 GET /v1/internal/org/{slug}/runtime-config,NestJS 下发 soul_md + config_yaml + skills[](agent/main.py:162-255) | 统一装配的下发通道有现成落点 |
| 7 | "ADR-035 accepted" | ADR-035 是 Proposed;ADR-033 是 Draft;golden-set 格式 OD-13 未决 | eval gate 细节被 OD-13 gate;PRD 需更正 |
| 8 | "agent/evals plumbing, not domain accuracy" | domain harness 已存在:agent/evals/domain/(#3324)golden-set + LLM-as-judge + seeded-KB(retrieval_miss vs hallucination 归因)。judge 未经人工校验、opt-in | eval gate 是"接线"而非"建 harness" |
2.2 确认属实的关键前提
- persona-override 反模式逐字确认:
agent/prompts_loader.py:250-279——system_prompt> 300 字符或含confidence/flag_for_review/{agent_name}/CRITICAL INSTRUCTIONS之一 → 整体替换角色模板。 - 4-key closed union;
systemPrompt无版本无审计;/ops/specialists是 raw textarea;无 abstain 姿态(仅 clarify-first + 置信度自动升级 + 正则 risk);无装配 trace(仅promptVersion= sha256(SOUL+role template));/chat不带 tools manifest。 kb_retrieval_event可经message_idjoin 消息——coverage report 数据基础成立。
2.3 评审新发现(PRD 未覆盖)
| # | 发现 | 处置 |
|---|---|---|
| N1 | BUG:runAgentPipeline 主派发点(conversations.service.ts:3092-3110)未传 specialistPromptTemplateKey,wire 上落到 role fallback——ADR-034 的列在主路径没生效 | 一行级修复 + 回归测试(P0.5) |
| N2 | R5.1 优先级链遗漏两个 已上线的层:active_directives(L0.5,#3692)与 crisis directive | 纳入统一模型设计(P0.3) |
| N3 | 轨道冲突:ADR-034 E2 phase-4.5(已批准)方向是 draft 相关路径迁 LlmService;PRD R5 假设装配器长期在 Python/Hermes | placement 决策进 P0.3,装配 Phase 前定案 |
| N4 | specialists.tools[] → bindings 需 expand-contract 迁移设计 | 纳入 Phase 2 tool_binding 资产接入 |
| N5 | PRD §3 的 8 处过期声明 | P0.7 修订 PRD(en/zh) |
三、统一配置资产模型(方案核心)
3.1 设计动机
五种资产今天的存储彻底异构:Soul = repo SOUL.md + specialists.systemPrompt 裸列;Skills = repo SKILL.md;KB = Haystack + PG(已有版本概念);Tools = 代码内静态注册表 + specialists.tools[];模板 = agent/prompts/*.txt 4-key union。PRD 要求它们全部具备同一组能力:结构化 schema、版本、审计、回滚、Org×Specialist 作用域、archetype→instance 继承、edit≠publish、eval 门禁、导入迁移。这组能力实现一次即可。