Files
SuperBizAgent-java/interview/issues-interview-stories.md
T
zhuyongxin de5a5b09d9 docs(interview): refresh materials for single-agent harness narrative
Archive pre-refactor interview notes and add current deep-dives on
architecture evolution, issue-derived stories, and evidence gates.
2026-07-24 18:14:49 +08:00

16 KiB
Raw Blame History

从 Issues 提炼的面试故事

更新日期:2026-07-24
用途:从 mvp/issues 已解决问题中,筛出可讲、值得讲、能举一反三的案例
配套:architecture-evolution-deep-dive.md(讲演进骨架);本文讲具体踩坑与决策


0. 怎么用

场景 用法
行为面试 / 项目深挖 选 2–3 个 ★★★ 故事,用 STAR 讲
架构追问 把故事挂回演进阶段(Phase2 证据 / Phase3 重构 / 工程化)
避免踩坑 ★ 仅作补充,勿当主叙事;过时方案要说「后来被什么吸收」

总原则

面试官要的不是 Issue 编号,而是:现象 → 根因分层 → 你选了什么杠杆 → 如何验证 → 后来边界怎么演进。


1. 全景评分(先看这张表)

Issue / 主题 面试价值 最适合回答的问题类型 一句话钩子 注意
证据归因幻觉 + Gatekeeper 链路 ★★★ 防幻觉 / 质量门禁 「工具调了,结论仍是编的」 旧角色名要映射到现在 Guard
ISS-014 单 Agent + Harness ★★★ 架构重构 / 为什么简化 「不是砍验证,是换装载层」 主故事,深读文档已覆盖
ISS-008 窄范围越界 ★★★ Agent 约束 / Prompt 不够 「只问 CPU,却去查全家桶」 好举一反三
ISS-009 负向证据 ★★★ 证据建模 / no-hit 「没查到也是证据」 区分「无问题」vs「无数据」
ISS-001→002→004→015 重复检索族 ★★★ 迭代加深 / Prompt vs 硬约束 「去重了仍狂调 20 次」 讲演进链,别只讲一次补丁
ISS-010 session/run 隔离 ★★★ 可观测 / 多轮正确性 「同会话多轮 Trace 串台」 和 runId 真理源强绑定
ISS-012 Token/上下文膨胀 ★★★ 成本 / ACI / 上下文工程 「工具返回把上下文撑爆」 接到 projection 三层数据
ISS-006 + fixtures + baseline diff ★★ 工程化 / 回归 「改 Prompt 怎么知道没退步」 体现测试思维
ISS-007 摘要失真 → 自证循环 ★★★ 信息通路设计 「证据在,摘要丢了关键句」 可与归因幻觉合并讲
ISS-013 SSE / 入口解耦 ★★ 后端工程 / 协议边界 「假流式 + Controller 过重」 偏工程,Agent 味稍淡
ISS-005 证据状态契约 ★★ 契约 / 失败语义 「failed/no_evidence/deduped 语义乱」 作 001/007 的基础设施铺垫
RAG 子问题集 ★★ RAG 专题 L0 降级、显式 Tool、breadcrumb 合成一条 RAG 故事,勿逐条念
ISS-003 总 Review ★ 过程 问题发现清单 不宜单独讲
ISS-015(进行中) ★★ 诚实收尾 / 判断力 「架构冻了,策略还在收」 讲未完成,勿假装已完美

2. 推荐主故事包(面试只带这 5 个就够)

故事包怎么组合(15 分钟项目介绍)

1) 开场架构(2 min)     → 深读文档 / ISS-014 结论
2) 质量核心(4 min)     → 证据归因幻觉 + Gatekeeper/EvidenceGuard
3) 约束演进(3 min)     → 重复检索 001→002→硬预算 / 窄范围 008
4) 工程底座(3 min)     → run 隔离 010 + eval harness 006
5) 重构与未完(3 min)   → ISS-014 为什么合并 + ISS-015 诚实项

3. ★★★ 故事详解(可直接练口述)

3.1 证据归因幻觉(最高辨识度)

项 内容
来源 executor-evidence-attribution-hallucination + ISS-007 + design-note 自证循环
完整深读 topic-evidence-attribution-and-gates.md
阶段 Phase 2 正确性建设
现象 多次 E2E:工具已调 lookup_knowledge/logs/metrics,Verifier 仍大面积 LOW_CONFID;答案里出现 OOM、Full GC 次数等工具返回里没有的「精确事实」
错误归因(你要主动否定) 「是不是 Verifier 太严 / 只认 RAG?」——查 evidence_refs 后发现并非如此
真根因 Executor 证据归因幻觉:把 runbook/历史模式/模型常识写进「当前已证实事实」,未区分 direct / reference / hypothesis / missing
解法演进 ① 结构化 claim + binding(invocation/path/excerpt)② 代码 Gatekeeper 验引用 ③ Verifier 只判可推导 ④ Composer 控表达 → 后来迁到 EvidenceGuard + SemanticGuard + Release
验证 固定 session 表(groundedness、no_evidence 计数);eval fixture;Trace 可指出「哪条 claim 无 binding」
现行映射 Gatekeeper → EvidenceGuard;Verifier → SemanticGuard;最终出门 → Release

STAR 口述(约 90 秒)

我们诊断链路经常 LOW_CONFID。第一反应像是验证器太狠,但拉 Trace 发现工具其实调用成功了。
对比答案和 tool raw 后定位到:模型会把知识库里的「常见故障模式」写成「这次故障已观测事实」。
所以我们把「有没有这句证据」从 LLM 判断里拆出来,做成代码级引用校验;模型只负责在已验真片段上做推导。
这直接把问题从「提示词求稳」升级成「证据所有权与类型系统」。
后来重构单 Agent 时,这层语义保留了,只是从流水线角色变成了 Harness 门禁。

追问预备

  • Q: 为什么不靠更强模型?
    A: 分布上仍会混用常识与观测;确定性校验可回归、可解释。
  • Q: excerpt 子串匹配会不会太死?
    A: 对防伪造必须偏严;表达层再允许归纳,但不允许无根引用。
  • Q: 和 RAG 引用角标有何不同?
    A: 角标常是生成时装饰;我们校验的是当次 Run 的 tool_call 所有权。

举一反三

  • 客服:「政策规定 7 天」≠「本单已同意退款」
  • 代码 Agent:「README 说应有测试」≠「本 PR 已有测试」

3.2 窄范围查询越界(ISS-008)

项 内容
现象 用户只要确认 payment-service 是否有 HighCPU 告警;Agent 却扩展到内存、日志、根因故事
根因 ReAct 默认「有工具就多查」;Prompt 未区分 observation 任务 vs root-cause 任务;claim 类型未收窄
解法 窄范围只允许 observation / negative_observation;禁止随手 root_cause;工具选择与输出 schema 双约束
验证 narrow-highcpu 类 fixture:该 PASS 的 observation 不因「没讲根因」被打成失败
现行 DiagnosisDraft 分析项仍强调证据绑定;范围控制在 Agent 指令 + Guard 语义审查

金句

Agent 的能力上限往往不是「会不会查」,而是「知不知道何时停、查什么算完成」。

举一反三

  • SQL Agent:用户要 SELECT count 时禁止顺手 UPDATE
  • 调查 Agent:「只要时间线」时禁止输出处置工单

3.3 负向证据(ISS-009)

项 内容
现象 工具明确 no-hit 时,模型要么不说,要么说成「已排除该根因」,且引用对不上
根因 只建模「命中证据」,没有一等公民的 no_evidence 路径(如 $.no_evidence)
解法 negative_observation + 固定 raw_path/excerpt 契约;Gatekeeper 校验「无证据」也可以是合法引用
价值 排障里「查过没有」改变后验;也避免虚假排除

金句

在证据系统里,空结果若不可引用,模型就会用语言填补真空——那就是幻觉温床。


3.4 重复检索演进链(ISS-001 → 002 → 004 → 015)

这是最好的「迭代加深」故事:同主题三次升级约束强度。

ISS-001  同文档内容重复进上下文
         → session 文档去重 / Prompt「别重复」

ISS-002  去重后仍 lookup 20+ 次(换 query 刷同一域)
         → 根因:约束只打在 Planner,Executor 不知情
         → Executor 注入 map + 每域一次等 Prompt 约束

ISS-004  Prompt 仍挡不住「再确认一次」
         → 设计域级水位 / 硬限制(后被架构变更吸收)

ISS-014/015  约束归属变化
         → 不再靠 Executor 旁路状态打补丁
         → Harness 预算 + Agent 硬停止 + 重复 lookup 策略(015 进行中)

面试怎么讲这条链

第一阶段我们以为是重复文档,做了内容去重。
第二阶段发现模型换关键词继续刷,说明去重粒度错了,且约束注入点错了(只告诉了 Planner)。
第三阶段承认 Prompt 约定不是安全边界,必须预算/次数硬停止。
架构重构后,这些不再散落在 Tool 旁路,而进入统一 Harness 控制面。
这说明我处理 Agent 问题的习惯是:先观测 → 分层根因 → 逐步把约束从「软」推到「硬」,并在架构变了以后迁移装载点,而不是叠补丁。

对应业界概念:Action masking / tool budget / circuit breaker;不是调参玄学。


3.5 Session / Run Trace 隔离(ISS-010)

项 内容
现象 同 sessionId 多轮诊断时,步骤/工具/评价串台或「取最新一条」导致回放错乱
根因 缺少把一次执行定为真理源的 runId;查询与写入未全程 exact id
解法 diagnosis_run;step/invocation/trace 均挂 run;API 强制 runId;禁止 latest 语义
价值 评测、排障、面试 Demo 都依赖可复现回放

金句

可观测性若不能精确到一次 Run,就只是日志堆,不是诊断系统的记忆。

举一反三

  • 工作流引擎的 workflowId vs runId
  • CI 的 pipeline vs job attempt

3.6 Token 与上下文膨胀(ISS-012)→ ACI / 三层数据

项 内容
现象 Executor 上下文暴涨;工具结果含 debug/rerank/大段重复;成本与截断不可控
根因 Tool 返回面向开发者而非 Agent;完整 raw 与模型可见视图未分离
解法方向 Token 可观测;硬预算;结果投影;证据引用带稳定 id(后由 ISS-014 的 Redis canonical + projector 落地)
现行 canonical / projection / durable audit 三层

金句

上下文工程首先是接口设计问题:Agent 的观察通道必须有界,验真通道才能完整。


3.7 单 Agent + Harness 重构(ISS-014)

深读文档已写透,这里只留Issue 视角的故事钩子:

项 内容
触发 多角色 = 外层重复 ReAct;JSON 接力;Token;失败语义组合爆炸
保留 物理验真 → 语义审查 → 发布 的正确性模型
迁移 角色流水线 → 执行边界(Harness)
证据 阶段 E2E:成功诊断 ~8k tokens / 1 次 tool;Knowledge Query 独立路径修复 invalid schema

和 3.1 的关系(必说清)

014 不是推翻 007/归因幻觉的成果,而是避免用「五个 LLM 角色」去实现本该由一个 ReAct + 一层确定性门禁完成的事。


3.8 评测 Harness(ISS-006 + fixtures + baseline diff)

项 内容
动机 只有 Demo 无法判断改 Prompt/Tool 是否退步
做法 固定 case;expected tools/verdict/keywords;确定性 trace 校验(非一上来 LLM-as-judge);baseline + diff
价值 把 Agent 质量从「感觉」变成「回归」

金句

没有 baseline diff 的 Agent 迭代,只是在用生产用户当测试集。

注意:面试强调「先确定性检查,再考虑 LLM judge」,显得克制。


3.9 SSE 与入口解耦(ISS-013)

项 内容
现象 /api/chat 与 /api/chat_stream 双入口;stream 实为整答后假分片;Controller 编排过重
解法 唯一 POST /api/chat named SSE;UseCase 拥有业务;Controller 只协议;disconnect → cancel Run
适合 问到 Spring/API 设计、背压、职责边界时

4. ★★ 可合并讲的「专题束」

4.1 RAG 专题束(不要逐 Issue 报菜名)

把 mvp/issues/rag/* 收成 一条 2 分钟故事:

问题簇:
  L0 关键词当终局、breadcrumb 不进向量、切片丢层级、
  无 packing/rerank、分数语义不清、Advisor 隐式注入 vs 显式 Tool

收敛原则:
  1) 检索决策要对 Agent 可见 → lookup_knowledge 保持 Tool
  2) L0 降级为 hint,不替代语义召回
  3) 向量主路径可演进(VectorStore)+ 过渡期 fallback
  4) 召回质量与「能否被引用验真」一起设计

面试官若只问 RAG:用这条;若问 Agent 质量:退回 3.1。

4.2 证据契约束(ISS-005 + 007 + 结构化输出设计笔记)

统一 evidence 状态:supported / no_evidence / deduped / failed
摘要不可当唯一证据源
Executor 产出可绑定结构,Gatekeeper 验,Verifier 判

适合接在「你们怎么保证工具结果语义一致」类问题。


5. 不建议当主故事的

项 原因 若被问到怎么说
ISS-003 总 Review 清单型,缺单点冲突 「那是问题发现基线,具体落地看 005/006/014」
ISS-004 原文方案细节 实现被 014/015 吸收,细节易过时 「方向是硬水位,装载点已迁到 Harness 预算/停止策略」
归因幻觉的旧 Prompt 补丁 alone 不完整 必须接到 Gatekeeper/Guard
未归档的「计划中」口吻 很多已 done 统一用「已归档 / 被 014 吸收 / 015 进行中」三态

6. 问题类型 → Issue 速查

面试官问… 优先故事
怎么防幻觉? 3.1 归因幻觉 + Guard 映射
Prompt 够不够? 3.4 重复检索链 + 3.2 窄范围
多 Agent 为什么又合并? 3.7 ISS-014(挂 3.1 证明没砍质量)
成本 / Token? 3.6 + 数据三层
如何回归? 3.8 eval
如何调试一次错误诊断? 3.5 run 隔离 + Timeline
没找到证据怎么办? 3.3 负向证据 + Release fallback
SSE / 接口设计? 3.9
RAG 怎么做的? 4.1 专题束
还有什么没做完? ISS-015:硬停止、Repair schema、reasoning 治理、信息化 fallback

7. 与架构演进的挂载图

Phase1 能跑
  └─ 暴露:重复检索 001/002

Phase2 能验
  ├─ 证据状态 005
  ├─ 归因幻觉 + 007 自证循环
  ├─ 窄范围 008 / 负向证据 009
  ├─ eval 006 / baseline
  └─ run 隔离 010

Phase2 负债
  └─ Token 012、入口 013、角色编排税

Phase3 能控
  └─ 014 单 Agent + Harness(吸收 004/012/013 与证据门禁语义)

Phase4 治理中
  └─ 015 停止策略 / Repair / reasoning / fallback 信息量

8. 建议你精炼的「个人贡献表述」模板

按真实参与度改主语,结构建议:

我负责/主导了 ___(问题)。
通过 Trace 看到 ___(证据),排除了 ___(错误假设)。
方案上选择 ___ 而不是 ___,因为 ___。
用 ___(fixture/E2E/指标)验证。
后续在 014 重构中,该能力迁移为 ___,我学到 ___。

示例(归因幻觉):

我负责排查 Chat 诊断大面积 LOW_CONFID。
通过对比 tool raw 与最终答案,确认是证据归因幻觉而非 Verifier 误杀。
推动「结构化 claim + 代码 Gatekeeper + Verifier 只做推导」而不是继续堆 Prompt。
用固定 E2E session 与 eval fixture 回归。
014 重构后该语义保留为 EvidenceGuard/SemanticGuard/Release。

9. 源文件索引

故事 路径
归因幻觉 mvp/issues/archived/executor-evidence-attribution-hallucination.md
自证/摘要 mvp/issues/archived/ISS-007-... / design-notes/executor-self-evidence-loop-design-note.md
窄范围 mvp/issues/archived/ISS-008-...
负向证据 mvp/issues/archived/ISS-009-...
重复检索 ISS-001 ISS-002 ISS-004
Run 隔离 ISS-010
Token ISS-012
SSE ISS-013
重构 ISS-014-single-react-agent-harness-aci-ptk-refactor.md
评测 ISS-006 expand-diagnosis-eval-fixtures diagnosis-eval-baseline-diff
进行中 mvp/issues/active/ISS-015-...
RAG 簇 mvp/issues/rag/*

10. 自测

  1. 不看文档,讲清「工具调用成功为何仍 LOW_CONFID」的根因与门禁分层。
  2. 用 001→002→004→015 说明你如何升级约束强度。
  3. 画旧 Gatekeeper 到新 EvidenceGuard 的映射,并说明 014 保留了什么。
  4. 举一个负向证据防止的错误用户话术。
  5. 用一句话说明 eval harness 为什么先做确定性检查。

能答 1–3,项目深挖通常已够用;4–5 用于区分「做过功能」和「有质量体系」。