[RFC] OpenViking Assets:把 Resource 的构成写成一份清单 #3355
zihengli-bytedance
started this conversation in
RFC
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
1. 背景与动机
在一次多仓库代码问答的实践中,我们把 150 多个业务仓库和依赖仓库提前导入 OpenViking,让 Agent 用语义检索补充上下文。一次覆盖 157 个仓库、10 个问题的评测中,只看本地代码得 4 分,接上 OpenViking 检索后到 8 分。这说明除了模型能力之外,上下文的组织和检索是一个重要瓶颈:Agent 很难在大量仓库里自己找到真正相关的信息。
但建库这一步目前基本靠人:整理仓库列表、写脚本逐个调
add_resource、仓库变了再手工维护更新任务。换一个团队、换一套环境,这些活要重做一遍。由此产生三个长期问题:OpenViking Assets 要解决的就是:这套库由什么组成,这件事本身能不能被 review、分享、重新执行。
2. 概念模型
想象你收藏了几百张 CD。管好它们只需要三样东西:
把歌单发给朋友,他拿到的只是"听什么"的描述,碟得自己去买或去借,版权在各自手里。OpenViking Assets 的分享方式相同:清单可以在合适的协作范围内分享,数据和权限不跟着走。条码用来区分来源和版本不同的唱片—— 每个资产也有一个由"连接器类型 + 归一化定位符"算出的稳定身份,同名不同源不会混。
知识库里的资产比 CD 复杂——是代码仓库、文档、订阅源——但管理逻辑一样。
3. 协议原型
3.1 资产目录(Catalog)
登记团队所有可接入的资源,全团队只维护一份。字段与 OpenViking 数据连接器插件的参数模型对齐,插件已有的参数校验能力可以直接复用。这些描述本身就是上下文,建库时可以一并进库:
关键点:
auth_ref,真实凭证留在使用者本地的凭证配置里。这是"清单可分享"能成立的前提。connector + 归一化定位符 + ref计算,同一仓库的不同分支是两条独立资产,满足对账、增量更新和安全删除的需求。description是协议字段而非注释。它承载"这个资产是什么、为什么在库里"的上下文,建库时可以随内容一并入库。3.2 建库清单(Manifest)
按名字从目录里挑出这一次要用的,也可以用
include组合别的清单。这个文件只有资源引用和参数,不保存真实凭证:组合规则:
include递归展开,限制深度,按资产名去重,先出现者优先(first-wins),冲突时输出告警。3.3 客户端命令
命令寄生在现有
ovCLI 中,不引入独立二进制:ov add-resource -m manifest.yaml:按清单建库。可重复执行——第一次是创建,之后是同步:清单里新增的资源去创建,移除的按删除保护流程处理。ov share -m manifest.yaml(后续阶段):生成ov://指针链接。链接只含指针不含数据和凭证,对方拿到后用自己的凭证 apply。与现有
ov import/ov export的语义区别:后者处理的是数据快照(.ovpack),OpenViking Assets 处理的是资源构成描述——前者搬数据,后者搬"怎么建出这些数据"。4. 执行层与实现范围
OpenViking 已经有
add_resource、watch-interval定时更新、viking://资源组织和语义检索;数据连接器框架有可扩展插件,覆盖 git、RSS、对象存储等源。底层的抓取、解析、向量化、写入全部复用,协议层只新增四块:include组合、严格校验。--skip-failed时跳过失败项继续,全部失败则整体中止。auth_ref到本地凭证配置的解析。内容的持续同步交给
watch-interval:ov add-resource -m建资源时自动配置,不做独立的同步调度器。5. 边界约束
6. 收益
短期:建库过程沉淀为一份长期维护的配置。新人拿到 Manifest 就能开始,不用再问"要导哪些仓库";仓库增删、换分支走 MR,有记录、能回滚;哪些资源同步失败会被明确报出来。
长期:同一份资产目录可以被不同工具消费。多仓工作区管理工具的清单关心分支和检出路径,OpenViking Assets 的清单关心 connector、索引范围和凭证别名——字段不同,共享目录。一边管"代码可达",一边管"知识可答",相互协同。再远一步,当协议公开后,IDE 插件、coding agent、CI 都可以生产或消费清单,"团队上下文"成为像容器镜像一样可寻址、可挂载的标准件。
7. 试点计划
从已经验证过的多仓代码问答场景切入,第一版只支持 Git 仓库:
assets.yaml,用 Manifest 选全部或子集。watch-interval。第一版的分享方式就是直接发送清单文件——它本身是个文本文件,发到另一套环境就能 apply,指针码不是第一版的前置条件。
验收标准(三条硬指标):
满足这三条之后再扩展:
ov share指针码和从已建库反推清单的能力。8. 设计原则小结
欢迎讨论:字段命名、
include语义、凭证别名的解析约定、以及试点范围是否合适。All reactions