产品目标与全景方案
「拍拍·谛听」(PaiPai DiTing)是面向拍拍二手与循环业务近 100 个微服务的核心业务知识平台。系统秉持“以代码为信源,洞鉴全域业务;以「拍拍·谛听」灵耳,通晓百级微服务”的核心准则,通过深入解析 100 多个 Java 微服务的源代码、中间件契约与环境配置,逆向推导并结构化沉淀业务领域知识,并在日常产品与研发进行需求定界、存量逻辑冲突排查、跨服务影响面评估与技术方案生成时提供端到端智能辅助。
选择您的工作角色 · 快速过滤高频日常作业工具流
全域透视模式:展示「拍拍·谛听」四层知识金字塔(L1~L4)、100+ 微服务全量资产接入与双擎检索存储底层。适合架构师与全景方案阅览。
- 文档失真与黑盒悬崖:人员更迭导致 Wiki 严重滞后,业务逻辑散落在数十个微服务 Java 源码深处,无全景大图。
- 跨团队排障沟通成本高:遇到跨服务补偿异常,需跨 4 个团队组织 10+ 研发拉会翻代码,平均排障耗时长达 2~3 天。
- 需求评估凭经验盲人摸象:新需求输入后无法准确预判涉及哪些微服务,往往到了联调甚至灰度期才暴露存量规则冲突。
- 改动爆炸半径难以量化:修改一个 JSF 接口或分表字段,难以穷尽所有上游调用方与下游消息订阅者,引发线上雪崩。
- 代码即事实 (Single Source of Truth):基于 AST 语法树自动化逆向提取 L1~L4 知识,文档伴随 CI 流水线实时保鲜。
- 全链路拓扑 3 分钟自动归因:四层图谱端到端串联正向交易与逆向 Saga 补偿链路,根因直达代码行与 Ducc 开关。
- 做需求智能出方案:输入 PRD 一键圈定 3~5 个责任微服务,精确定位改动点、自动检测排他冲突并给出兼容建议。
- IDE 毫秒级防灾雷达:编码阶段本地秒级感知跨服务上下游爆炸半径与分库分表分片键约束,把线上故障掐灭在提交前。
全量解析 Java 源码、XML 契约、MyBatis 与 Ducc 配置
传统跨团队排障从 3 天缩短至 3 分钟四层拓扑自动归因
JimDB 预压缩拓扑缓存,极速感知未提交代码影响
L1 确定性静态推导 + 双向 AST 校验,杜绝模型幻觉
flowchart TB
subgraph IN ["【第一块 · 输入源】近 100 个核心微服务工程全息资产接入"]
direction LR
S1["<b>[JSF / RPC 契约]</b><br/>接口契约 · 方法签名 · 泛型求解"]
S2["<b>[JMQ 消息拓扑]</b><br/>广播/顺序 Topic · 事务监听与重试"]
S3["<b>[MyBatis / JED]</b><br/>1024 水平分表规则 · JimDB 缓存映射"]
S4["<b>[Ducc 动态配置]</b><br/>业务动态开关 · 灰度白名单规则"]
S1 ~~~ S2 ~~~ S3 ~~~ S4
end
subgraph KB ["【第二块 · 核心层】拍拍·谛听 四层全息业务知识金字塔 (自底向上蒸馏)"]
direction BT
L1["<b>【L1 事实底座】</b> 编译级 AST 语法树 IR · 跨模块符号求解 · 确定性物理调用拓扑"]
L2["<b>【L2 业务卡片】</b> 接口业务规则说明书 · 前置校验 · 算价排他决策矩阵"]
L3["<b>【L3 服务画像】</b> 100+ 微服务业务职责画像 · 独占数据表归属矩阵"]
L4["<b>【L4 全局业务】</b> 端到端跨微服务时序拓扑 · 正向提单与逆向 Saga 分布式补偿闭环"]
L1 ==>|1. 叶子方法自底向上 Map-Reduce 蒸馏| L2
L2 ==>|2. 领域服务能力聚类与主表归属划界| L3
L3 ==>|3. RPC 与 JMQ 跨服务依赖时序缝合| L4
end
subgraph OUT ["【第三块 · 消费终端】三大日常研发工具场景"]
direction LR
W1["<b>[Web 智能需求工作台]</b><br/>PRD 需求秒级圈定微服务<br/>存量代码排他互斥冲突预警"]
W2["<b>[JoyCoder Agent 研发助手]</b><br/>标准只读 MCP 协议通信<br/>7 大原子工具排障证据链闭环"]
W3["<b>[JoyCoder AI IDE 协同]</b><br/>本地 Sidecar 实时上下文感知<br/><200ms 编码阶段分片防灾雷达"]
W1 ~~~ W2 ~~~ W3
end
IN ==>|Java CLI 编译级静态解析与符号求解| KB
KB ==>|统一知识服务网关 · 两阶段混合检索| OUT
classDef inStyle fill:#eff6ff,stroke:#2563eb,stroke-width:1.5px,color:#1e3a8a;
classDef kbStyle fill:#fffbeb,stroke:#d97706,stroke-width:1.5px,color:#78350f;
classDef outStyle fill:#ecfdf5,stroke:#059669,stroke-width:1.5px,color:#064e3b;
class S1,S2,S3,S4 inStyle;
class L1,L2,L3,L4 kbStyle;
class W1,W2,W3 outStyle;
四层业务知识金字塔 · 全息穿透交互工作台
🧱 L1 层:AST 符号求解与 100% 编译级技术契约
JavaParser + ASM 静态求解 · 零模型幻觉在无模型介入的情况下,通过确定性语法树与依赖分析,提取不可变的技术事实基座:
| 分析维度 | 代码级确定性事实 | 源码位置与元数据 |
|---|---|---|
| 对外 RPC 契约 | @JsfProvider 导出 OrderExportServiceImpl#submitOrder | trade-order-service/OrderExportServiceImpl.java#L88 |
| 下游 RPC 依赖 | 调用 PromoCalcJsfService#calcOrderPrice (超时 800ms, 重试 0) | trade-order-service/pom.xml 引入 promo-client:4.0.5 |
| JED 分库分表 | 单表写入 order_info_0038 (分片键 user_pin='jd_user_882') | trade-order-service/OrderMapper.xml#insertOrder |
| 异步事件解耦 | 本地事务表写 outbox_event,Worker 扫描投递 order_create_topic | trade-order-service/OrderOutboxScanner.java#L45 |
| Ducc 动态开关 | 绑定动态配置项 promo.tiered.stack.enabled (默认: false) | DuccPropertyInjector: promo.tiered.stack.enabled |
📋 L2 层:接口与链路业务卡片 (含 Ducc 动态开关实时联动计算)
言犀大模型单方法蒸馏 (<2.5K Token)• 用户实名认证通过
• 风控等级 <= LEVEL_3
• 限购黑名单校验通过
• L1行: 满减 6.67元
• L2行: 满减 6.67元
• L3行: 满减 6.66元 (微调)
• 校验类:
OrderValidator:105• 算价类:
PromoSplitEngine:214• 事务键:
order_id + pay_id
🧭 L3 层:微服务业务职责画像 (点击切换微服务目录)
一级路由索引与表独占矩阵| 核心业务职责 | 负责全渠道订单生命周期编排、状态机跃迁推进(WAIT_PAY → PAID → CLOSED)、Outbox 本地消息发布与分布式逆向 Saga 取消协调。 |
| 独占核心数据表 | order_info_0000~0099(100库按 pin 分片)、order_item_0000~0099、outbox_event_00~31(禁止其他任何微服务直连跨库写)。 |
| 核心暴露契约 | OrderExportService#submitOrder (JSF)、OrderCancelService#cancelOrder (JSF)、order_status_topic (JMQ)。 |
| 外部依赖半径 | 上游: API-Gateway, 购物车;下游: 促销算价(JSF), 库存中心(JSF), 支付中心(JSF/JMQ), 仓储履约(JMQ)。 |
🏆 L4 层:跨微服务端到端全局业务流 (Saga 逆向补偿步进器)
trade-order-service 调用 promo-engine 冻结优惠券 → 本地写 WAIT_PAY 记录并拉起收银台。stock-center-service 基于 JimDB Redis Lua 脚本预占实物库存配额,生成 lock_token 并在订单表落库。trade-pay-service 扣款成功,向 JMQ 投递 pay_success_notify → 订单状态机利用 version 乐观锁安全跃迁为 PAID。fulfillment-service 实物分拣因风控/超区/缺货拒单,投递 fulfillment_rejected 事件 → 驱动订单跃迁为 CANCELING。用户应当拿到什么
| 使用方式 | 要完成的事 | 交付给用户的核心结果 |
|---|---|---|
| 做需求 · 智能方案工作台 | 输入 PRD 需求文档或一句话改动,进行定界与技术设计 | 涉及微服务列表、改动代码定位(精确到类名#方法名)、存量逻辑冲突预警、分库分表路由键提示、上下游影响面清单及时序图 |
| 查业务 · 知识浏览器 | 按业务域、服务画像查规则,理解跨服务协同机制 | 结构化业务条件与例外、业务流程图、Ducc 开关配置值、对应代码行与类文件依据 |
| Agent 跨服务调查 | 针对线上业务异常或跨服务流转进行自动化深潜调查 | 多跳关联路径、各节点前置条件与回执判定、缺失资料明确诊断、不可变版本与证据 |
| JoyCoder IDE 插件 | 编码前查看业务约束,编码后本地检查跨服务影响面 | 工作区对应的业务规则、直接使用点、外部依赖调用方清单、改动影响扩散报告 |
知识服务专注于业务知识提取、代码逻辑还原与变更影响推导。实际的代码编写与提交由开发者或 IDE 处理,真实的线上交易执行与补偿重试由原业务系统运行。
文档采用典型电商交易闭环作为示例:涵盖下单算价、库存预占、支付核销、履约拆单及逆向退款补偿等微服务集群。K1、K2 表示知识库发布版本。
工作台四大核心入口
- 智能方案(做需求):输入 PRD 文本,一键完成两阶段混合检索,秒级圈定微服务,输出技术方案与时序图。
- 业务知识(查业务):按 L4 业务域、L3 服务画像、L2 接口卡片层级浏览,支持人工补充“业务潜规则批注”。
- 影响分析(评影响):输入拟修改的 JSF 接口、JMQ Topic 或数据库表,查出完整的上下游爆炸半径雷达。
- 知识保鲜(看同步):查看 100 个微服务代码仓库的最新扫描状态、代码哈希变更、言犀质检记录与行云 CI 同步流水线。
从业务知识浏览进入问答,页面带入当前选中的知识对象、服务范围和生效版本,无需重复检索;切换版本后重新加载对应知识。
角色与权限边界
| 使用者 | 主要操作 | 权限边界 |
|---|---|---|
| 产品经理与业务人员 | 查阅业务目录、提问、输入 PRD 评估影响、提交纠错与批注 | 读取授权范围内的业务说明书与流程图;源码证据按研发权限展开 |
| 研发工程师与架构师 | 查看代码证据、IDE 内调用上下文、使用 Agent 调查、生成技术方案 | 客户端权限为用户权限与服务身份的交集;代码写操作走常规开发流程 |
| 领域维护者 | 登记业务场景、核对业务域边界与能力分组、确认业务纠错 | 仅操作授权业务域;确认业务含义与核对代码事实严格区分 |
| 技术审阅者 | 核对接口契约、静态扫描映射关系、代码行级证据与版本发布 | 负责把关 L1/L2 静态提取的准确性,确保生成卡片 100% 具备代码支撑 |
| 平台维护者 | 监控 100 个微服务的采集任务、执行重试、发布新版本或回滚 | 仅操作知识库平台运行资源;不绕过业务与代码鉴权体系 |
一人可兼任多项职责,权限由京东内部统一身份权限系统鉴权。查询中若发生权限变更,服务按新权限动态拦截受限内容的返回。
新人与多角色 3 分钟极速作业实操指引
为帮助刚刚入职 0.5~1.5 年的初级产品经理、初级研发与初级测试同学快速跨越百级微服务架构认知壁垒,系统提供三大角色的“日常 3 步保命实操指南”与“黑话白话对照表”:
1. 业务与技术名词“白话翻译机”(初级同学秒懂字典)
| 高深技术术语 | 平台底层机制 | 白话大白话(一秒听懂) | 对初级角色的实战价值 |
|---|---|---|---|
| AST 语法树解析 | 像编译器一样把 Java 源码结构化拆解 | “代码显微镜”:不运行代码,直接静态提取里面的方法、注解、SQL 与调用边 | 确保查出的业务规则 100% 来自真实代码,杜绝大模型凭空幻觉。 |
| L1 ~ L4 知识金字塔 | 四层由粗到细的业务知识抽象分层 | “业务地图的缩放比例”:L1 看零件代码,L2 看接口说明书,L3 看微服务负责啥,L4 看跨微服务整套业务流程 | 想查具体方法逻辑看 L2,想串联跨服务全景流程看 L4。 |
| Tarjan DAG 破环拓扑 | 图论算法解除微服务间的循环依赖 | “理顺死循环毛线团”:A 调 B、B 又调 A 时,把它们拆开理顺成单向有序流水线 | 确保输入大模型分析时注意力不跑偏,单次推理 Token 恒定 < 3,000。 |
| Saga 补偿与 Outbox | 分布式事务的逆向补偿与本地事务表 | “记账留底,失败自动原路退回”:跨多个微服务操作时,先在本地账本写日志,异步发消息,一旦下游失败自动触发原路补偿 | 测试设计逆向退款、退券、解锁库存用例时的核心对照蓝本。 |
| 分库分表 Sharding Key | 数据库水平拆成 1024 张表,按用户分流 | “查档案必须带身份证号”:1024 个抽屉,必须带 user_pin 才能直达对应抽屉,否则翻遍 1024 个抽屉会导致数据库 CPU 瞬间打满死机 |
研发写 SQL、测试提 Bug 的绝对红线。 |
| RRF 倒数排名融合 | 精确符号倒排与自然语言向量检索结合 | “双保险搜索引擎”:搜类名精准直达,搜白话模糊意图也能找到对应服务 | 产品搜“退款流程”,研发搜“OrderCancelService”都能精准命中。 |
2. 👩💼 初级产品经理极速操作流(PRD 冲突排查 3 步法)
【第一步:输入新需求草案】
在「拍拍·谛听」Web 工作台粘贴新 PRD 核心描述:
“拍拍二手数码大促:用户购买自营手机时,允许在享受满 3000 减 300 跨店满减的同时,叠加使用 100 元品类东券。”
⬇️ (系统后台毫秒级并发检索 100+ 微服务资产)
【第二步:查看系统秒级定界体检报告】
① 涉及责任微服务:自动圈定 3 个 (promo-engine-service, trade-order-service, settle-account)
② ⚠️ 存量互斥高危预警:
- 存量规则:promo-engine 中 checkDiscountStack() 默认执行排他策略 (tag & 0x0400 == 0);
- 依赖配置:受 Ducc 动态开关 promo.tiered.stack.whitelist 控制;
- 业务决策建议:如需全量开放,需提报财务审批修改 Ducc 白名单配置,无需重构订单底层状态机。
⬇️
【第三步:一键导出技术可行性初稿】
点击“生成方案初稿”,直接将涉及微服务、交互时序图、改动范围附在 PRD 附录中,研发评审一把过!
3. 👨💻 初级研发防灾保命手册(IDE 编码实时避坑)
在 IntelliJ IDEA 中打开代码编写时,借助 JoyCoder 插件实时感知分片与爆炸半径约束,无需死记硬背底层配置:
❌ 错误示范:遗漏分片键(IDE 立即波浪线标红阻断)
// 初级研发在 OrderQueryServiceImpl.java 中编写的新查询方法:
public OrderInfo queryOrderByOrderId(Long orderId) {
// ⚠️ 致命缺陷:order_info 是 1024 张水平分库分表,未传 user_pin!
// IDE Gutter 立即亮起红色高危警报图标 🚨:
// [拍拍·谛听防灾雷达] 拦截原因:order_info 为水平拆分表 (is_sharded=true),
// 缺少必要分片键 user_pin,将触发 1024 张分表广播扫描,可能引发数据库 CPU 击穿!
return orderMapper.selectByOrderId(orderId);
}
✅ 一键智能修复示范(按 Alt + Enter 采纳建议)
// 修复后:严格携带 user_pin 路由键入参
public OrderInfo queryOrderByOrderId(String userPin, Long orderId) {
// [拍拍·谛听防灾雷达] ✅ 路由键 user_pin 已绑定,单库单表精准定位 (<2ms)
return orderMapper.selectByPinAndOrderId(userPin, orderId);
}
4. 🕵️♀️ 初级测试全链路用例设计指南(Saga 逆向链路覆盖)
初级测试人员根据 L4 全局时序拓扑,可以 100% 不漏用例地设计出全套测试矩阵:
| 测试场景分类 | 细分用例分支 | 对应代码与拓扑节点 | 预期系统行为(准出验证标准) |
|---|---|---|---|
| 正常流程 (Happy Path) | 用户提交取消申请,各下游服务均健康 | TOS -> TPS -> PMS -> SCS |
订单状态原子跃迁至 CLOSED,原路退款、优惠券解冻、库存释放,全链路资金 0 差异。 |
| 异常分支 1 (网络超时) | 支付退款 RPC 超时 (JSF Timeout) | FailPay -> WorkerScan |
系统记录 outbox_pay_refund 本地事务表,状态标记为 REFUND_PENDING,由 Worker 异步扫表重试退款。 |
| 异常分支 2 (重试耗尽) | 券中心网络抖动重试 3 次依然失败 | FailCoupon -> JMQ DLQ |
失败消息自动投递至死信队列(DLQ),并在监控看板产生告警,不得挂起主流程。 |
| 并发冲突 (资损防线) | 用户与客服同时提交退款请求 (50ms内) | JimDB tryLock 防重锁 |
第 1 个请求获得分布式防重锁推进状态,第 2 个请求被乐观锁/CAS 拦截,拦截码 CONCURRENT_REFUND_BLOCKED,0 重复退款。 |
| 人工仲裁 (终态收敛) | 退款重试超过 10 次 | ManualAudit 看板 |
自动将异常单据路由至财务专席工单,人工介入核验,闭环率 100%。 |
产品范围与运行约束
- 环境约束:知识库全流程(源码扫描、语义提取、模型推理、向量检索、存储)100% 运行于京东内网,严禁连接外部公网,大模型调用全部通过京东内网言犀 / JoyCoder 接口完成。
- 事实约束:知识库推导依据为静态源码、配置中心(Ducc)与接口契约,不直接查询生产在线交易事务库;若需核对具体订单事实,通过只读归档或经授权的数据源提取。
- 架构参考:四层知识架构的生成细节、数据契约、JED MySQL 与 Vearch 存储设计见 TRD 主方案。
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-BASE-01 | 问答、业务知识、影响分析和知识维护之间可以带着当前对象与范围继续任务 |
| PRD-BASE-02 | 问答、Agent和IDE使用同一套可追溯知识,分别保留各自的问题或工作区条件 |
| PRD-BASE-03 | 阅读与维护分别授权;规则解释、实例调查和业务执行的边界在对应操作中明确 |
从百级微服务还原业务知识
业务人员与研发可以从统一知识目录查阅“整单取消与履约拒收后,系统如何流转退款与退券”,无需事先去翻找具体属于哪个 Git 仓库或哪段底层实现。
从业务名称找到资料
业务知识库按 L4 业务域(交易、营销、履约、结算等)、L3 微服务职责画像、L2 接口业务卡片 三级树状组织。选择“交易核心域”,进入“订单逆向补偿”,再点击“退款与退券核心逻辑”,即可直观查看业务规则、责任微服务、涉及的数据表及关联依据。
系统搜索支持业务术语(通过内部黑话词典对齐)、已确认别名,以及底层技术符号(如 JSF 接口全限定名、JMQ Topic、Controller URL 路径、类名与方法名)。
针对同名或相似接口,展示所属微服务、应用模块与适用条件,供用户选择。页面清晰标明检索范围、匹配度与生效版本;未命中时支持调整关键词或服务范围重新检索。
看清结构化业务卡片(L2)
接口业务卡片将原本晦涩的 Java 代码转化为业务人员与研发均可读懂的结构化文档,包含 5 大核心要素:
| 卡片核心要素 | 内容说明与呈现方式 |
|---|---|
| 业务意图与触发场景 | 阐明该接口或异步消费解决的核心业务问题、上游触发源及责任边界 |
| 前置条件与拦截规则 | 按业务含义分段说明参数校验、防重幂等、用户风控与拦截异常码(如 ORDER_USER_BLOCKED) |
| 核心业务规则与分支 | 拆单逻辑、算价公式、排他互斥判定,明确列出受哪个 Ducc 动态开关控制及当前配置值 |
| 状态机流转与落表 | 明确单据状态变迁(如 WAIT_PAY -> PAID),读写的逻辑数据库表名(标明是否水平分表) |
| 外部副作用与下游调用 | 100% 确定性列出调用的下游 JSF 接口、发出的 JMQ 消息 Topic 及 JimDB 缓存锁 |
卡片下方提供代码调用树跳转入口(精确到 类名#方法名 及关键代码行),并标识规则的审阅状态与新鲜度(如“已审阅”、“待刷新”)。研发可在此一键提交“人工业务背景批注”,永久沉淀代码之外的业务潜规则。
[!NOTE] 生产级 L2 规则卡片示例:营销促销服务
calcOrderPrice
- 所属微服务与契约:
jd-promo-engine·jsf://com.jd.promo.service.PromoCalcJsfService#calcOrderPrice- 业务意图:针对提单入参,校验选中的优惠券与活动合法性,计算阶梯满减金额并生成分摊凭据
- 前置拦截条件:
- ①
pin不能为空且黑名单风控核验通过(拦截码:PROMO_USER_BLOCKED);- ② 优惠券模板状态必须为
ACTIVE且当前时间在领用有效期内;- ③ 互斥与排他校验:跨店满减与自营东券默认互斥,受 Ducc 动态开关
promo.tiered.stack.enabled=false控制。- 状态机与存储:只读 JED MySQL
promo_template_00~15,不变更订单状态机- 外部副作用:调用 JimDB 原子锁占用优惠券配额
lock:coupon:${coupon_id}(TTL=30s)- 静态代码依据:
CouponCalcServiceImpl.java:112-168· 对应 Git Commita8c9e4f· 言犀核验门禁:已审阅通过
还原端到端跨服务业务流程(L4)
流程视图将散落在数十个微服务中的单点接口规则串联为端到端时序与协作链路。图中清晰区分同步接口调用(JSF / HTTP)、异步消息传递(JMQ)以及状态对齐检查点。
以典型电商订单逆向流转为例:
- 触发步骤:订单中心收到履约拒收或用户取消事件;
- 跨服务协作:订单服务调用营销算价服务退还优惠权益,调用支付服务执行原路退款;
- 异步解耦:发送订单状态变更 JMQ 消息,下游履约与账务微服务订阅消费完成拆单清理与记账;
- 异常恢复:退券超时或失败时,由订单恢复调度任务扫描待办重试,确保最终一致性。
每个节点均可下钻展开对应的微服务画像与接口卡片,返回时保持原流程位置不变。四层知识的生成机制见 TRD 系统与资料接入。
知道还缺哪些部分
微服务知识库提供全局覆盖率视图:
- 微服务接入覆盖:清晰展示 100 个微服务中已解析、解析中、解析受阻的服务清单;
- 接口归属台账:支持双向追溯——从业务场景查看涉及的所有对外入口,从对外入口反查归属的业务域。遇到未关联业务场景的批处理入口标为“未归属”,场景要求某项功能却未在代码中找到实现时标为“受阻”;
- 安全与权限保护:业务名称、详情卡片与代码依据严格按当前登录者的权限过滤,未授权服务不泄露敏感代码与配置。
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-KNOW-01 | 按业务域、对象和场景浏览,也能按技术名称定位;同名候选可以区分 |
| PRD-KNOW-02 | 规则详情包含条件、处理、例外、范围、核对状态及逐项证据 |
| PRD-KNOW-03 | 流程包含异常、恢复与完成条件,并能下钻到服务、入口和原始资料 |
| PRD-KNOW-04 | 展示场景与入口的双向对应、受阻和排除项;无权限内容不泄露名称或数量 |
做需求智能分析与业务问答
研发与产品人员可以在工作台直接输入新需求(PRD 文档或一句话改动),知识库通过两阶段混合检索(Vearch 向量 + MySQL 符号)与静态依赖图谱展开,自动输出包含微服务定位、代码级改动点、存量逻辑冲突预警与上下游影响面的技术分析报告。
从需求检查改动影响
输入一段新业务需求(如:“大促期间允许特定白名单商品在命中跨店满减的同时叠加使用东券,并在履约时打标优先发货”),系统执行固定三步流水线:
提取需求核心领域词,检索 Vearch L3 画像锁定 3~5 个微服务,再召回 Top-8 张核心 L2 接口卡片。
拉取目标接口的全部上游 JSF 调用方、下游 JMQ 订阅方、读写数据表(标明分表)及生效 Ducc 开关。
比对新旧规则,识别互斥冲突点,输出包含改动定位、分表提醒与时序图的《技术方案初稿》。
- 第一步(两级语义圈定范围):
- 提取需求中的核心领域词,检索 Vearch 中的 L3 服务职责画像,从 100 个微服务中精准锁定相关的 3~5 个服务(如:营销算价、订单核心、履约拆单);
- 在锁定的微服务内继续检索 L2 业务卡片,召回 Top-8 张最核心的接口规则卡片。
- 第二步(静态依赖图谱确定性展开):
- 自动拉取目标接口关联的 上游 JSF 调用方服务、下游订阅对应 JMQ Topic 的消费服务、读写的逻辑数据表(标明是否水平分表) 及当前线上生效的 Ducc 动态配置项。
- 第三步(言犀对比推理出方案):
- 对比【新需求 PRD】与【现有存量代码规则】,由言犀大模型生成结构化《需求分析与技术改造方案初稿》。
报告结构与核心内容
生成的《技术方案初稿》严格按研发标准结构组织:
- 精准改动定位(改哪里?):明确列出需要修改的微服务名称、对外契约 URN(JSF/HTTP/JMQ),具体到
类名#方法名; - 存量规则还原与冲突预警(⚠️ 重点!):还原线上现有判定逻辑(如现有代码中“东券与跨店阶梯满减互斥且 Ducc 开关
promo.tiered.stack.enabled=false”),高亮冲突点并给出兼容建议; - 分库分表与数据风险预警:若改动涉及水平分库分表(
is_sharded=true),强制检查查询条件是否携带分片路由键(如user_pin),严禁跨分片全表扫描; - 跨服务上下游影响面(会影响谁?):100% 列出上游调用方与下游消息订阅方,评估入参/出参及消息体格式兼容性;
- 调用时序图:输出改造后的 Mermaid 跨服务交互时序图。
完整样板:《百亿补贴跨店满减叠加东券技术改造方案初稿》全息穿透
以下为线上真实输入一段大促营销 PRD 后的端到端解析输出全貌,直观体现系统从微服务定位、代码级分支比对、Ducc 开关排他识别到分库分表防灾的完整输出能力:
1. 业务输入 (Input PRD Snippet)
需求背景与业务规则描述: “2026年618大促百亿补贴专场,针对自营及指定 POP 商家(白名单 tag 掩码
0x0400),允许在参与跨店阶梯满减(满300减40)的同时,叠加使用品类专享东券(面额10~50元不等)。 若发生单品售后逆向退款,必须依循商品行现金分摊权益,优先扣减东券抵扣金额,退还剩余实付现金;履约拆单结算时,向结算中心透传叠加优惠后的商家实结金额。”
2. 系统输出:《技术改造方案初稿》(Generated Engineering Blueprint)
一、 涉及微服务与代码定位 (Target Microservices & Code Anchors)
| 微服务标识 (L3) | 接口契约 URN (L2) | 核心代码类名#方法名 (L1) | 改动性质 | 预期变更说明 |
|---|---|---|---|---|
trade-promo-engine |
jsf://trade-promo/calc/PromotionCalculateService.calculate |
TieredPromotionCalculator#calculateDiscounts |
核心改造 | 重构互斥检查器,放行白名单商品的阶梯满减与东券叠加计算 |
trade-order-core |
jsf://trade-order/order/OrderCreateService.createOrder |
OrderCreateService#splitDiscountAndValidate |
约束校验 | 拆分多券分摊明细,记录单品级现金实付与券抵扣基准 |
trade-refund-core |
jsf://trade-refund/refund/RefundApplyService.applyRefund |
ItemRefundEquityCalculator#computeMaxRefundCash |
逆向约束 | 校验商品行现金权益上限,严格按原路退回与东券扣减公式执行 |
settle-account-center |
jmq://trade_order_topic/group_settle/order_created |
MerchantSettlementHandler#computePayableAmount |
异步消费 | 适配新增的 stacked_discount_details 字段,计算商家实收与补贴款 |
二、 存量逻辑冲突预警与架构建议 (Rule Conflict & Architectural Recommendation)
[!WARNING] 存量代码排他冲突拦截 (Severity: HIGH)
- 冲突点定位:存量代码
trade-promo-engine中DiscountMutexChecker#isMutex(promoTypeA, promoTypeB)第 84 行存在硬编码互斥规则:if (typeA == PromoType.TIERED_MANJIAN && typeB == PromoType.DONG_COUPON) { return Boolean.TRUE; // 存量默认阶梯满减与东券排他互斥! }- 线上 Ducc 开关现状:命名空间
trade.promo.switch下配置项promo.tiered.stack.enabled=false(当前全站阻断叠加)。- 架构兼容建议:
- 严禁直接修改全量 Ducc 开关;应在 Ducc 新增商家/商品白名单配置项
promo.tiered.stack.whitelist.pins;- 在
DiscountMutexChecker引入商品标签位运算判断(itemTag & 0x0400) == 0x0400,仅在命中白名单且 Ducc 开关开启时放行叠加;未命中者保持原互斥逻辑,保障全站大盘基线稳定。
三、 存储与分库分表防灾约束 (Storage & Sharding Safeguards)
- 涉及数据表:
order_discount_detail_0000~order_discount_detail_1023(水平拆分 1024 表,is_sharded=true)。 - 强制路由检查:优惠分摊明细表采用
user_pin作为分片键(Sharding Key)。SQL 变更或新增查询必须在WHERE条件中显式携带user_pin = #{userPin}。严禁基于order_id单字段进行无分片键查询,避免触发 1024 个分库分表广播扫描导致数据库 CPU 击穿。
四、 跨服务交互时序图 (Mermaid Sequence Diagram)
sequenceDiagram
autonumber
participant Client as 客户端 / 结算页
participant Promo as 营销算价 (promo-engine)
participant Ducc as 配置中心 (Ducc)
participant Order as 订单核心 (order-core)
participant Settle as 结算中心 (settle-account)
Client->>Promo: 1. 提交算价 (cart_items, coupon_ids)
Promo->>Ducc: 2. 读取 promo.tiered.stack.whitelist
alt 命中华尔街白名单 (tag & 0x0400)
Promo->>Promo: 允许跨店满减与东券双重叠加分摊
else 普通商品
Promo->>Promo: 触发存量排他剔除东券
end
Promo-->>Client: 3. 返回各商品行优惠分摊明细
Client->>Order: 4. JSF 提交订单 createOrder()
Order->>Order: 5. 携带 user_pin 写入优惠分表 (1024表)
Order->>Settle: 6. 发送 JMQ order_created 消息
Settle-->>Settle: 7. 异步核算商家应收与平台补贴款
读懂答案和依据
除输入完整 PRD 外,系统支持日常业务答疑(如:“优惠券叠加规则在哪里判定?”、“全球购商品为何不能与普通商品混购?”):
- 答案与代码事实绑定:回答直接指出负责的微服务与方法名,展示核心分支逻辑与 Ducc 配置开关;
- 区分假设与代码事实:用户在问题中假设的前提(如“假设订单金额为 100 元”)与代码静态规则严格区分说明;
- 证据抽屉:点击答案中的引用标记,右侧抽屉展开对应的代码片段、注释与版本信息,支持一键跳转到对应知识卡片。
金额问题怎样回答
在涉及金额计算、优惠分摊与退款限额的问题中,系统严格遵循静态代码中的算法实现,绝不大模型幻觉臆测:
- 分摊规则依循代码:展示原价、满减券、东券分摊的确定性代码公式与取整余分分配规则(如按商品行行号确定性分配);
- 区分在途与实付:明确区分当前实付现金、在途占用与已退款金额,引用支付中心
pay_record流水与资金事实; - 退款限额硬约束:回答中明确指出退款上限受限于该行商品的现金权益凭据,杜绝跨商品行超额退款。
处理过程与异常结果
| 页面状态 | 用户看到什么 | 可以继续做什么 |
|---|---|---|
| 已回答 | 完整技术方案或业务答案、涉及微服务、存量规则与证据引用 | 点击查看代码调用链、提交纠错或直接复制技术方案 |
| 需要补充信息 | 说明哪项业务条件存在歧义会改变技术改动点,给出候选选项 | 选择补充业务条件后继续生成 |
| 存在规则冲突 | 明确标红指出新需求与现有哪条代码分支或 Ducc 开关存在排他冲突 | 评估是否需要新增 Ducc 灰度开关进行兼容改造 |
| 无权读取 | 提示部分微服务或代码片段当前账号暂无查看权限,不泄露隐藏代码 | 走内部权限审批流程开通对应代码或知识空间权限 |
| 服务暂时不可用 | 提示内网大模型或依赖存储出现瞬时波动,保留当前输入的 PRD 文本 | 点击重试按钮,无需重新粘贴 PRD 内容 |
从已有问答继续追问时,系统保留上一轮的上下文与已定位的微服务,支持多轮深入细化方案。
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-QA-01 | 按问题需要确定对象、范围和时间;区分用户条件与已取得的事实 |
| PRD-QA-02 | 按结论展开证据,明确规则解释、条件计算和实例观察 |
| PRD-QA-03 | 缺失、冲突、无结果、无权、失败及取消分别展示,并给出可执行的下一步 |
| PRD-QA-04 | 追问保留原依据;范围变化另建查询,旧答案保留原时间和版本 |
| PRD-IMPACT-01 | 将需求或改动映射到规则与使用位置,区分确定影响、待核对及依赖关系 |
| PRD-IMPACT-02 | 影响结果和导出保留范围、版本、依据与缺口,并按当前权限读取 |
Agent 自动化调用与跨服务调查
除了人类工程师在 Web 工作台使用外,「拍拍·谛听」知识服务支持 AI Agent(包括无人值守任务 Agent、研发辅助 Agent)通过标准工具接口(Tool Calling / MCP 协议)调用知识库,自动化完成业务链路调查、上下游依赖探查与技术方案推演。
核心只读能力与工具接口(Tool Contracts)
接入「拍拍·谛听」知识服务的 Agent 可以发现并调用以下 7 项标准化原子能力(符合 schemas/tool-contracts.schema.json 强类型契约):
| 工具名称 | 核心输入参数 | 输出内容 | 典型使用场景 |
|---|---|---|---|
search_knowledge |
query, types, page_size, cursor |
匹配的微服务画像、接口卡片、流程与契约摘要列表 | 收到宽泛自然语言或技术符号时,多路召回定位相关资产 |
get_business_rule |
rule_id, revision_id |
L2 接口/方法级业务规则卡片(前置校验、核心分支、Ducc开关、读写表) | 深入目标接口方法,解析业务规则与条件分支细节 |
get_business_flow |
flow_id 或 (entity_id, event_id) |
L4 全局端到端业务流程图、步骤依赖、Saga 补偿链与 Outbox 机制 | 还原跨越多个微服务的分布式业务协作链路与最终一致性 |
get_contract |
contract_id, binding_filters, revision_id |
L2 接口与数据模型契约(JSF RPC 签名、JMQ Topic、MyBatis 表结构、分库分表分片键) | 核验接口入参/出参 DTO、服务别名与数据库物理分表路由规则 |
trace_impact |
target, change_type, diff, workspace_revision |
确定性的上游调用方列表、下游消息订阅方列表与 AST 变更爆炸半径评估 | 精确推导修改某个类/方法/表/配置时波及的上下游微服务与全表扫描风险 |
get_evidence |
evidence_id, segment_id, line_range |
不可变代码事实证据(AST 节点、Commit Hash、仓库路径、高亮源码片段与上下文注释) | 验证业务结论是否具备代码源头证据支撑,杜绝大模型凭空幻觉 |
build_context |
task, workspace, symbols, context_budget_tokens |
专为 IDE 与 Agent 编码定制的精炼上下文打包(AST 多版本差异、规则适用性、Token 预算控制) | 赋能 JoyCoder Agent 或代码生成模型在有限 Token 窗口内获取精确上下文 |
具体强类型 Schema 与错误码定义见 TRD 查询与接入设计。
Agent 跨服务自动化调查典型流程
当 Agent 收到“排查优惠券分摊计算在哪个服务执行、为什么大促期间部分订单未成功叠加”的任务时:
sequenceDiagram
autonumber
actor User as [研发/业务工程师]
participant Agent as [JoyCoder Agent 研发助手]
participant KB as [拍拍·谛听 知识网关 (MCP)]
rect rgb(239, 246, 255)
Note over User,KB: 阶段一:目标资产定位 (粗粒度路由)
User->>Agent: 调查满减叠券异常逻辑与生效开关
Agent->>KB: 1. search_knowledge(query="满减 叠券 规则", types=["MICROSERVICE","RULE"], page_size=5)
KB-->>Agent: 命中微服务 trade-promo-calc 及规则 rule:tiered_promo_calc
end
rect rgb(254, 243, 199)
Note over Agent,KB: 阶段二:规则深入解析与配置核验 (L2 卡片)
Agent->>KB: 2. get_business_rule(rule_id="rule:tiered_promo_calc")
KB-->>Agent: 返回 L2 业务卡片 (含互斥分支与 Ducc 开关 promo.tiered.stack.enabled)
end
rect rgb(240, 253, 244)
Note over Agent,KB: 阶段三:调用拓扑溯源与证据链交付 (L1 AST 溯源)
Agent->>KB: 3. trace_impact(target="trade-promo-calc#calculatePrice", change_type="BEHAVIOR")
KB-->>Agent: 返回上游调用方 trade-order-core 及触发代码行 OrderSubmitValve:142
Agent->>KB: 4. get_evidence(evidence_id="ev:promo:142")
KB-->>Agent: 返回不可变源码证据(JavaParser AST 代码片段与当前 Commit SHA)
Agent-->>User: 综合输出根因报告 (指出互斥判定行与当前生效的 Ducc 开关 promo.tiered.stack.enabled)
end
- 目标资产定位:调用
search_knowledge,命中相关微服务及核心业务规则; - 规则深入解析:调用
get_business_rule读取该接口的 L2 业务卡片,发现其中的排他校验规则及控制该逻辑的 Ducc 配置项promo.tiered.stack.enabled; - 调用依赖溯源:调用
trace_impact逆向反查调用方微服务,准确定位是由订单核心服务在提单校验时发起的调用; - 获取不可变源码证据:调用
get_evidence抓取经过 AST 降噪的真实 Java 代码行与 Commit 指纹,向用户交付包含代码源头支撑的确定性根因报告。
保留调查中的版本和范围
在多轮自动化调查中,Agent 必须保持对调查版本、业务实例关联与证据链范围的确定性锁定:
- 版本冻结机制:Agent 发起调查时绑定固定的知识库发布版本指纹(Generation ID / Commit Hash),后续所有多跳工具调用均在该确定版本下执行,防止因底层代码持续合并产生前后矛盾的“漂移幻觉”;
- 权限与范围快照:访问权限取用户个人权限与 Agent 客户端授权的交集,在多轮对话中缓存权限令牌,无人值守服务 Agent 使用独立服务账号授权;
- 严格只读沙箱:所有 Agent 工具均为严格只读(Read-Only),仅提供规则解释、代码定位与影响推导,绝不执行任何写代码、提交 Git、调用业务写接口或修改生产配置的破坏性操作。
中断后继续
针对涉及数十个微服务的复杂跨服务长程调查,系统提供完备的会话状态持久化与断点续查能力:
- 状态快照与断点恢复:Agent 的每次工具调用入参、中间执行结果与候选节点列表均持久化于会话上下文中。当遇到网络中断、大模型速率受限(Rate Limit)或用户主动暂停时,可凭借
session_id和断点令牌一键恢复现场,继续后续调查; - 长任务流式输出:支持通过 Server-Sent Events (SSE) 实时流式推送分析进度(如:“已圈定 3 个微服务 -> 展开 AST 调用图 -> 比对 Ducc 规则冲突 -> 正在起草方案”);
- 动态取消与预算保护:支持随时取消耗时过长的未决任务;单次会话设定严格的最大工具调用深度(默认 5 跳)与 Token 预算,超限自动截断并返回已有阶段性成果与未查范围说明。
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-AGENT-01 | 接入方能够发现支持的只读能力,并按用户或服务身份访问授权资料 |
| PRD-AGENT-02 | 从业务问题或订单号开始连续取证,保留版本、实例关联、证据及未查范围 |
| PRD-AGENT-03 | 支持分批续读、长任务、取消与恢复;输入、版本或权限变化时明确下一步 |
AI IDE 智能插件联动(JoyCoder 深度协同)
研发工程师在本地 IntelliJ IDEA 中进行业务开发与代码修改时,通过京东内部编程助手 JoyCoder(基于标准 MCP 协议) 实时联动本微服务知识库,实现“编码前看约束规则、编码中看上下游依赖、编码后看改动影响扩散”。
在编辑前取得相关知识
开发者在 IDEA 中打开某个微服务工程(如 jd-order-core),光标停留在 OrderExportServiceImpl.java 的业务方法上,点击 JoyCoder 侧边栏的“查看业务约束”或使用快捷指令:
- 工作区自动对齐:IDE 插件自动读取本地 Git 仓库的远程地址(如
git@coding.jd.com:trade/jd-order-core.git)和当前类路径,向知识库发起契约映射; - 约束卡片一键拉取:知识库秒级返回该方法对应的 L2 业务规则卡片,高亮展示:
- 当前方法必须满足的前置业务校验(如防重幂等、用户风控限制);
- 当前方法涉及的 Ducc 动态开关及默认行为;
- 关联的领域实体状态机流转约束(如订单只能从
WAIT_PAY变迁到PAID)。
先看约束,再看影响
当研发修改了某个核心接口的 DTO 字段、新增了状态枚举值、或者调整了 JMQ 消息结构时,在提交代码前即可在 IDE 内一键执行“变更影响面扫描”:
| 改动类型 | IDE 展示的核心检查点 | 预防的线上故障风险 |
|---|---|---|
| 修改 JSF 出参/入参 DTO 字段 | 列出所有调用该接口的上游微服务清单及对应类的调用点 | 防止上游老版本客户端反序列化报错或空指针异常 |
| 新增状态机枚举状态码 | 展开所有消费该状态的下游代码分支(检测 switch-case 是否缺少 default) |
防止下游服务在状态流转时走到未覆盖分支引发死锁 |
| 修改 JMQ 消息体 JSON 字段 | 列出订阅该 Topic 的全部消费者微服务应用及具体 MessageListener |
杜绝异步消息格式不兼容引发的线上消息堆积或消费死信 |
| 新增数据表查询语句 | 检查目标表是否为水平分库分表(is_sharded=true),校验是否携带分片键 |
严禁无分片键的跨分片全表扫描拉垮数据库性能 |
JoyCoder AI IDE 本地毫秒级爆炸半径雷达
🔍 爆炸半径雷达推导报告 (耗时: 38ms · JimDB 本地缓存命中)
🔴 HIGH RISK · 高危架构阻断| 变更代码定位 | OrderMapper.xml#queryOrderByStatus (第 48 行) |
| 核心风险描述 | SQL 变更缺少分片键 user_pin |
| 底层集群影响 | 导致 JED 执行 100 库全表广播扫描;直接威胁集群连接池吞吐 |
| 上游受累服务 | 波及上游 2 个服务:jd-order-core、trade-open-gateway |
| IDE 治理建议 | IDE 阻断动作:触发本地提交阻断门禁,强制要求补齐分片键 user_pin 或使用分布式二级索引。 |
跳转证据与继续编辑
- 高保真证据跳转:点击知识卡片中的代码依据,IDE 自动打开本地对应文件并高亮定位到指定行。若本地代码已修改与知识库版本存在差异,IDE 明确提示“本地代码已改动,当前依据基于线上知识版本 K1”;
- 端侧防抖与本地 L1 缓存(防止并发网关雪崩):
- IDE Sidecar 进程内置 3 秒光标停留防抖与 500 个最近符号的本地 LRU 内存缓存;连续敲击代码时不盲目发送探测请求;
- 知识服务网关对单 ERP 实施 100 QPS 令牌桶限流,在大促封板前集中修改代码的高峰期,保障系统稳定与极低延迟;
- 上下文防污染:开发者在本地切换 Git 分支或保存文件修改时,IDE 插件立即停用旧的上下文缓存,重新向知识库拉取最新基线,杜绝迟到或过期建议污染编码窗口。
知识库作为本地 IDE 的只读智能顾问,为开发提供严谨的架构与业务约束,不越权直接修改本地文件,代码的保存、编译与 Git Commit 完全遵循原有的开发规范。
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-IDE-01 | 自动携带工作区版本和改动,展示上传范围,指出缺少的依赖与文件 |
| PRD-IDE-02 | 按当前工作区区分仍适用、原实现依据已失效和无法判断的规则,保留原审阅状态,优先提供直接约束 |
| PRD-IDE-03 | 分别标明本地新增内容和已发布依据,能够继续检查跨服务影响 |
| PRD-IDE-04 | 证据跳转核对文件内容;工作区变化立即停用旧包,迟到结果不替换当前上下文 |
工作区匹配与 MCP 协议契约实现见 TRD 查询与接入设计。
知识持续更新与增量保鲜(CI 闭环)
微服务代码处于持续高频迭代中。知识库如果依赖人工编写或定期的全量离线重建,不出两周就会严重过时腐烂。本系统采用 「行云 CI 流水线 Webhook 增量同步 + 单方法级哈希比对 + 逆向调用树向上染色重算」 机制,确保微服务合并主干分支后,知识库在 45 秒内 自动保鲜。
行云 CI 增量更新核心闭环
当研发在京东 Coding 平台将代码合并到主干分支(Master/Release)时,触发自动化同步流程:
flowchart TB
subgraph S1 ["【阶段一 · 增量捕获】CI 触发与变更文件识别"]
direction LR
A["<b>[Coding / Git]</b><br/>主干分支 Merge"] --> B["<b>[行云 CI]</b><br/>流水线 Webhook 触发"]
B --> C["<b>[git diff]</b><br/>增量感知提取变更文件"]
A ~~~ B ~~~ C
end
subgraph S2 ["【阶段二 · 门禁比对】方法清洗与哈希门禁核验"]
direction LR
D["<b>[JavaParser]</b><br/>AST 静态扫描提取方法"] --> E["<b>[SHA-256]</b><br/>规范化计算 code_hash"]
E --> F{"比对 MySQL 缓存表<br/>方法哈希是否实质变化?"}
D ~~~ E ~~~ F
end
subgraph S3 ["【阶段三 · 分支处置】零成本旁路 vs 局部拓扑重算"]
direction LR
subgraph Bypass ["0 Token 极速旁路 (无实质变化)"]
G["<b>[0 Token 旁路]</b><br/>直接复用历史业务规则摘要与画像"]
end
subgraph Rebuild ["局部染色重算 (实质变化 Dirty Node)"]
direction TB
H["<b>[大模型增量蒸馏]</b><br/>仅重算变更方法 (<1.5K Token)"]
I["<b>[调用拓扑回溯]</b><br/>沿 caller_methods 逆拓扑染色"]
J["<b>[局部刷新]</b><br/>重建受影响的 1~3 张 L2 接口卡片"]
K["<b>[双写持久化]</b><br/>刷新 JED 与 Vearch 索引 (<45s)"]
H --> I --> J --> K
end
end
S1 ==>|1. 触发差量静态扫描| S2
F -- "未变化 (仅格式/注释)" --> Bypass
F -- "实质变化 (代码逻辑变更)" --> Rebuild
classDef trigStyle fill:#eff6ff,stroke:#2563eb,stroke-width:1.5px,color:#1e3a8a;
classDef gateStyle fill:#fffbeb,stroke:#d97706,stroke-width:1.5px,color:#78350f;
classDef bypassStyle fill:#f0fdf4,stroke:#059669,stroke-width:2px,color:#064e3b;
classDef dirtyStyle fill:#fef2f2,stroke:#dc2626,stroke-width:1.5px,color:#991b1b;
classDef storeStyle fill:#f5f3ff,stroke:#7c3aed,stroke-width:1.5px,color:#4c1d95;
class A,B,C trigStyle;
class D,E,F gateStyle;
class G bypassStyle;
class H,I,J dirtyStyle;
class K storeStyle;
- 秒级变更识别:通过
git diff识别本次 Merge 涉及的具体.java源码和 XML 配置文件; - 零模型开销过滤:对变更方法计算清洗后的代码哈希(
code_hash),若哈希与缓存表一致(如仅调整了日志格式、格式化缩进),直接复用老摘要,不调用大模型; - 公共基础包防级联风暴阻断:当多个微服务共用的二方包(如
trade-common-dto.jar)合并时,启动契约级语义差量检测。若仅新增可选字段且未改变现有业务方法逻辑,直接阻断向上扩散,避免触发全网百级微服务无差别重算的雪崩灾难; - 精准局部重算:仅当方法业务代码发生真实变更(标记为 Dirty Node)时,调用言犀重新生成百字业务摘要(耗时约 2
3 秒),并沿反向调用链(3 张 L2 接口卡片与微服务画像;caller_methods)向上回溯,仅刷新直接受影响的 1 - 性能收益:单次代码提交平均仅耗时 30~45 秒,消耗 Token 极低(
< 5,000 Token),实现“代码天天变,知识永最新”。
人工业务背景批注层(解决最后 10% 业务潜规则)
代码能精准反映“系统现在是怎么跑的”,但往往无法体现“当年为什么要这么写”(例如某些特定枚举值是历史某次联名卡大促专项遗留):
- 一键补充批注:产品经理与研发在 Web 工作台浏览任意 L2 接口卡片、数据表或枚举时,点击右上角 「➕ 补充业务背景批注」,输入历史背景或特殊排他原因;
- 批注永久沉淀:批注存入 JED MySQL 的
kb_human_annotation表,与契约 URN 强绑定; - 代码重扫永不丢失:即使后续微服务代码合并触发增量重构,人工补充的批注永久保留,绝不被自动化扫描覆盖,并在每次在线做需求问答时作为最高优先级上下文注入言犀大模型,形成“机器自动推导 90% + 人工经验点睛 10%”的越用越聪明闭环。
知识纠错与反馈处理流
用户在查看技术方案或业务答案时,若发现规则描述不准或存在偏差,可提交纠错工单:
| 确认的问题类型 | 处理策略 | 最终呈现结果 |
|---|---|---|
| 回答生成偏差(代码原本正确,大模型回答遗漏了条件或表述不当) | 创建针对该问题的重新回答任务,调整上下文重新推理 | 呈现修正后的答案报告,原回答保留历史版本标记,不改动底层微服务知识库 |
| 代码业务知识偏差(静态解析提取或大模型卡片总结不准确) | 经技术审阅者核对后,触发该单点契约的局部重算并发布 | 局部刷新对应的 L2 业务卡片与 Vearch 索引,并在原卡片展示更正记录 |
| 需求编号 | 必须提供的行为 |
|---|---|
| PRD-OPS-01 | 登记资料与场景,保留来源、范围、版本和未接入原因 |
| PRD-OPS-02 | 维护能力分组与别名,业务和技术分别核对入口、范围及依据;变化后重新核对 |
| PRD-OPS-03 | 纠错定位具体知识或回答结论,能够提交、补充、接受和驳回,并回看处理记录 |
| PRD-OPS-04 | 回答错误重新回答;知识错误核对目标后生成候选,发布后生效;对象变化时重新核对 |
| PRD-OPS-05 | 有权限的人员可以重试、取消、发布和回滚,查看处理结果及失败范围 |
| PRD-OPS-06 | 知识刷新、删除和撤权反映到查阅结果,保留各次查询原有版本含义 |
增量更新与存储架构详细定义见 TRD 更新发布与运行。
产品功能验收与评估标准
本方案的建设成效以真实研发效能提升、代码改动定位准确率、以及线上真实需求(PRD)盲测指标为客观衡量标准,确保知识库在研发日常工作中真正可用、好用。
从查业务到检查改动
验收使用包含电商正向履约与逆向退款补偿的典型微服务集群作为测试基线,涵盖正向提单、营销算价、库存预占、支付核销、履约拆单及取消补偿等核心链路。
| 业务验收任务 | 实际输入与操作 | 必须达标的系统表现 | 对应需求编号 |
|---|---|---|---|
| 从业务名称找到流程 | 搜索“整单取消履约补偿”,查阅场景全景与退款退券卡片 | 无需事先知晓 Git 仓库名称,可查看跨服务协作步骤、涉及微服务、前置校验与 Ducc 开关 | PRD-BASE-01、PRD-KNOW-01~03 |
| 查清未覆盖与受阻业务 | 查看全局覆盖视图,排查未归属的批处理任务及缺少实现的场景 | 清晰展示已解析入口与受阻接口清单,支持维护人员快速识别系统盲区 | PRD-KNOW-04、PRD-OPS-01 |
| 新需求智能定界 | 输入 PRD:“大促期间允许自营商品在满减同时叠加东券” | 秒级从 100 个微服务中圈定相关的 3~5 个服务,精确定位到负责算价的 JSF 接口与代码类名 | PRD-QA-01、PRD-IMPACT-01 |
| 存量规则冲突预警 | 对比新需求与代码现有逻辑 | 准确检测出新需求与当前存量代码中“东券与跨店阶梯满减互斥”的校验分支冲突,并指出对应 Ducc 开关 | PRD-QA-02、PRD-IMPACT-01 |
| 水平分库分表风险提示 | 新需求涉及查询订单主表 order_main |
识别该表为水平分库分表(is_sharded=true),强制检查查询条件是否包含分片键 user_pin,防止全表扫描 |
PRD-QA-02、PRD-IMPACT-01 |
| 跨服务上下游影响分析 | 修改订单创建 JMQ 消息结构 | 100% 列出所有订阅该 Topic 的下游微服务(履约、账务、风控),漏评率等于 0 | PRD-IMPACT-01~02 |
| Agent 自动化调查 | 给定业务问题,Agent 调用工具链探查原因 | 自动顺着 RPC 调用与消息链路多跳取证,输出根因与源码支撑证据 | PRD-AGENT-01~03 |
| IDE 本地编码约束 | 在 IDEA 打开业务类,查看业务约束 | 准确拉取关联的 L2 卡片,展示前置校验拦截与领域状态机流转约束 | PRD-IDE-01~04 |
| 代码合并后增量更新 | 研发合并代码修改某方法中的校验规则 | 行云 CI 自动触发增量同步,在 45 秒内重算该方法及受影响卡片,未修改方法不重复调用大模型 | PRD-OPS-05~06 |
黄金评测集与量化验收硬指标
系统正式上线前,采用近半年内 已上线的 20 个真实线上需求(PRD) 组成黄金评测集(以最终实际合并上线的代码文件与方法作为标准答案 Ground Truth),进行双盲自动化评估:
| 评估维度 | 核心量化指标 | 达标验收基线 | 行业对比(传统 Naive RAG) |
|---|---|---|---|
| 需求定界召回率 | 涉及微服务 Top-5 召回率 | ≥ 90% | 传统切片检索通常 < 30% |
| 代码定位准确率 | 核心需改动接口/类定位准确率 | ≥ 80% | 传统切片检索通常 < 25% |
| 影响面召回率 | 直接上下游(JSF/JMQ)影响面召回率 | = 100%(0 漏评) | 传统切片检索无法识别调用图 |
| 方案设计提效 | 研发编写技术方案初稿耗时缩短 | ≥ 40% | 无自动化时序图与冲突提示 |
| 大模型单次窗口控制 | 单次调用 Prompt Token 规模 | ≤ 3,000 Token | 暴力切片动辄突破 16K 引发幻觉 |
| 增量同步耗时 | 单次代码合并后知识库更新耗时 | ≤ 45 秒 | 全量重建动辄需要数小时 |
内部能力需要哪些依据
| 依赖系统 | 核验项与达标要求 | 应急与降级机制 |
|---|---|---|
| 京东言犀大模型 API | 验证 ChatRhino / JoyCoder 接口可用性,单并发响应 < 5 秒 |
支持并发限流与重试,失败时可由本地 AST 规则暂时代替输出骨架 |
| JED (MySQL 8.0) | 验证 6 张核心图谱表的读写、条件更新与并发事务 | 主从高可用部署,定期执行只读备份 |
| 京东 Vearch 向量空间 | 验证 1024 维向量的高并发 Top-K 检索延迟 < 20ms |
支持与 MySQL 关键词倒数秩(RRF)混合重排降级 |
| 行云 CI / Coding Webhook | 验证 Merge 事件能够准时推送到增量同步 Worker | 提供定时对账扫描,定时查漏补缺未触发的提交 |
技术合同与 Schema 详细定义见 TRD 合同与验收。
方案设计与技术决策 FAQ:核心疑问深度解析 (Technical FAQ & Design Rationale)
在业务方案定界、跨团队研发协同及方案评审过程中,技术人员与业务人员往往会就系统边界、大模型稳定性与分布式生产安全提出关键疑问。以下是本知识服务在系统架构与业务逻辑层面的权威解答:
01 Q1(防模型幻觉):大模型生成业务摘要和规则卡片时,会不会“一本正经地胡说八道”产生逻辑幻觉?
① L1 确定性事实先行:接口签名、下游 RPC 依赖、JED 分库分表、JMQ Topic 全部由 JavaParser AST 编译器直出,零模型参与,保证 100% 确定性;
② 严格单次窗口限制 (< 1,500 Token):每次仅将清洗后的单个方法喂给言犀模型,不喂全类,消除超长上下文注意力漂移;
③ AST 双向反验门禁:模型生成的规则卡片在写入 MySQL 前,由 AST 核验器反向比对代码行号与字段,任何无中生有的“虚构逻辑”直接被校验门禁阻断抛弃。
02 Q2(知识保鲜时效):日常微服务每天有几十次 Merge,知识库如何做到秒级同步不腐烂?
① 秒级增量识别:代码合并后仅拉取
git diff 变更文件,计算单方法规范化 code_hash;② 零模型成本旁路:若仅修改了日志、格式化或注释,哈希一致直接复用老摘要,Token 消耗为 0;
③ 精准局部重算:仅实质代码变更的方法调用言犀重算(耗时 2~3 秒),并沿反向调用树
caller_methods 向上回溯刷新直接关联的 1~3 张卡片,平均 45 秒内完成全量保鲜。
03 Q3(二方包防雪崩):基础公共包(如 trade-common-dto.jar)升级时,会不会触发全网 100+ 个微服务全部重算的大雪崩?
系统在 CI 入口比对公共 DTO 的前后 ABI 契约:若仅新增了可选属性(Optional Field)或添加了注释,判定为向后兼容改动,直接阻断向上级联扩散;仅当检测到破坏性变更(修改已有字段类型、删除已有接口方法)时,才精准定位并仅唤醒受影响的直接调用方微服务。
04 Q4(商业机密与安全):业务代码属于京东核心商业资产,如何确保源码绝对零外泄?
① 纯内网物理隔离部署:数据存储在内网 JED (MySQL 8.0) 与京东内网 Vearch 向量引擎,模型调用走内网私有化部署的言犀 API(ChatRhino);
② 严格只读沙箱(Read-Only Guard):知识服务本身不具备任何 Git 仓库写权限或线上生产数据库写权限;
③ 企业级 RBAC 与水印溯源:根据员工 ERP 权限动态过滤敏感服务域代码,API 响应注入不可变查询水印,防截屏与违规扩散。
05 Q5(千行上帝方法):老业务代码中存在数千行的“上帝方法(God Method)”,超长上下文如何提取?
① 框架模板降噪:AST 预处理器自动剔除
@Slf4j 打印、Profiler.enter() 监控埋点、基础 null 判断等(剔除率达 40%);② 子逻辑块解耦:将千行代码切分为多段独立的条件分支逻辑块,单逻辑块百字摘要蒸馏(< 1.5K Token);
③ 入口卡片二级汇总:入口层汇总时仅拼入子方法中文摘要列表而非原始 Java 源码,确保单次调用始终控制在 2,500 Token 以内。
06 Q6(Ducc 动态脚本黑盒):线上营销算价大量使用 Ducc 配置的 QLExpress / Aviator 动态脚本,静态分析如何穿透?
① 配置数据事实化:接入 Ducc 配置中心快照,将动态规则表达式(如
user.isPlus && order.actualPay >= 100)作为配置事实统一纳管;② 轻量语法树求解:内置 QLExpress 语法解析器,将脚本条件还原为结构化决策树分支,与 Java 源码逻辑严密缝合,打破动态脚本盲区。
07 Q7(分布式并发资损):高并发下用户与客服同时发起退款,系统如何防范重复退款与资损?
① 关卡一(JimDB 互斥):基于
SETNX lock:order:cancel:${orderId} (TTL=30s) 瞬间将并发请求串行化;② 关卡二(JED 乐观锁):执行
UPDATE order_info SET status='CANCELING', version=version+1 WHERE order_id=? AND status='PAID' AND version=?,并发抢占者原子失败;③ 关卡三(不可变凭据):生成全局唯一退款凭据
RF1,支付中心与优惠券中心严格按凭据防重。
08 Q8(异步消息血缘缝合):写本地事务表(Outbox)再发 MQ,静态调用图会不会当成断链悬挂?
系统专门建立了“业务主写表 →
outbox_event 事务表字段 → 发送 Worker → JMQ Topic → 下游 @MessageListener”的确定性关联规则库,在拓扑图上将异步消息链路与 RPC 同步链路同等清晰缝合,杜绝将异步解耦架构误判为断链。
09 Q9(人工业务批注留存):架构师手动补充的业务背景和黑话,在代码再次更新重聚时会被覆盖吗?
人工批注(如核心场景中文别名、例外业务说明、维护人 ERP)独立持久化于
kb_human_annotation 表。底层代码变更触发增量刷新时,更新引擎首先拉取人工标注快照并以最高优先级覆盖自动生成的相应字段,确保“架构师的业务智慧只增不减、永不丢失”。
10 Q10(量化投入产出比):这套知识服务投入建设后,能够为京东技术团队交付怎样的量化 ROI?
① 新需求分析与定界提效 40%:从面对 100 个微服务“大海捞针”到输入 PRD 秒级圈定 3~5 个目标服务及改动方法,方案设计初稿编写从 3 天压缩至 2 小时;
② 跨服务疑难排障提效 80%:遇到跨服务补偿异常时,从多团队互相拉扯查日志 4 小时,缩短至由 Agent 3 分钟内精准定位至源码行与 Ducc 开关;
③ 新人串链路周期节省 70%:新入职研发熟悉跨服务复杂交易闭环由 2 周大幅缩短至 2 天即可独立承接线上迭代。