oceanbase / oceanbase/powercontext

tracking(continuity): 宿主历史导入与可评估的上下文连续性

Open
#1,574 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Python
Stars
1.1k
Forks
214
Avg merge
1d 11h
Merged PRs (30d)
199

Description

功能描述

本议题追踪「宿主历史如何在不改变 PowerContext 职责边界的前提下,成为可验证的长期工作上下文」。它不定义一个必须原子交付的「转录入口、治理闸门、压缩出口」三件套,也不把 Omnigent 的运行时模型移入 PowerContext。

目标是分阶段回答四个独立问题:

  1. 已安装前的宿主历史怎样显式、幂等地进入现有 Source 管道;
  2. 完整转录若需要保存,如何定义内容归属、保留期、脱敏、可重放性与撤销;
  3. Connector 遇到有意跳过的敏感项时,如何保留审计并安全推进游标;
  4. 长内容怎样在固定 PreparedContext 预算内以可引用、可评测的不同分辨率参与召回。

范围外:agent 运行时、多端同步、云沙箱、凭据托管、实时协作,以及把会话作为新的 Core 持久化实体。

当前结论与约束

Omnigent 的可借鉴点是宿主格式的安全解析、压缩边界识别、能力声明与端到端兼容性验证,不是其 runner、会话协作或策略运行时。PowerContext 的 Scope、Source、Artifact 和既有授权模型仍是唯一的工作连续性承载边界。

Source 引用还不是可直接使用的转录方案

SourceMaterialization 虽定义了 REFERENCED,但当前远程 Source observation 合同只允许 CAPTUREDSourceObservation 固定 materialization=capturedproject_source_for_transport() 明确拒绝非 captured Source。因此,不能把宿主机器上的 JSONL 路径作为一个无需改动现有 HTTP/Connector 合同的 REFERENCED Source。

完整转录若要使用引用模式,必须先在单独 RFC 中定义:本地客户端与服务端不在同一机器时的可达性、内容快照 digest、文件轮转与截断、原文件删除后的行为、访问撤销,以及基于稳定宿主记录的身份规则。在该合同被接受前,不将完整转录导入设为默认能力。

Connector 需要新的“可提交跳过”结果语义

当前 ConnectorLifecycleREJECTEDFAILED 都视为 unsafe:二者都会把 run 标为 INCOMPLETE 并阻止 checkpoint 提交。把敏感项由 REJECTED 改名为 FAILED 并不能让游标继续前进。

若未来需要“已按规则脱敏/隔离并跳过,但可以继续导入后续记录”,应先单独定义一个可审计的结果语义及其重试、展示和 checkpoint 行为,例如 SKIPPED_REDACTEDQUARANTINED。不得用失败状态掩盖已处理的内容。

预算不变量不能改成空上下文回退

PreparedContextBuilder 已按条目进行 UTF-8 二分截断;最终 PreparedContextInvariantError("output-budget") 是内部预算不变量,而不是正常的“超限后返回 empty”分支。将其改为 empty 会掩盖实现错误。

Omnigent 的“完整内容 -> 摘要 -> 截断”思路有参考价值,但 PowerContext 的实现必须复用 L0/L1/L2、权威 Revision、citation、后台生成和评测合同。该工作由 #1426 定义,不能在本议题另建一条不兼容的压缩路径。

敏感信息过滤是独立的内容治理问题

Omnigent 的 deny_pii_in_llm_request() 当前实现会扫描 request 的用户文本与附件,也扫描 llm_request 的 system prompt 和最后一条用户消息。PowerContext 没有相同事件模型;任何导入过滤应从明确的内容类别、处理动作、审计回执和误判恢复开始,而不是先引入通用可执行策略引擎。

可立即推进的工作

1. 以 #1300 作为历史导入的第一阶段

#1300 已收敛为显式、默认关闭、Codex-only、仅导入 user prompts 的 v1。该工作可以立即推进,并应保持以下合同:

  • 复用 ContentSource 和现有提交 API,不新增直接 Memory 写入路径;
  • 以稳定的 Codex session/turn 身份生成 source identity,并与 live hook 使用同一算法,保证重跑和与实时捕获重叠时幂等;
  • 复用 Codex workspace -> Scope 解析;无法解析时跳过并显示原因,允许显式 --scope-id
  • 提供 --dry-run、持久 checkpoint、逐项 accepted/skipped/failed 结果和有限的已知凭据材料脱敏;
  • 不读取完整转录、不导入 assistant 回复、不改变 prepare 以检索原始 Source。

验收以真实 Codex 本地会话为准:首次导入、重复导入、与 live capture 重叠、无 workspace、格式错误、服务中断后的续跑都可观察且不重复写入。

2. 建立宿主集成的行为契约与 conformance 检查

PowerContext 已有 integration manifest 和静态 tool-surface drift 检查。下一步可为现有宿主增加小范围的行为探针,而不是先开放通用第三方 runtime 插件:

  • Scope 解析是否与宿主插件一致;
  • 用户 prompt 捕获是否使用稳定身份;
  • prepare_context 注入和失败时 fail-open 是否符合宿主约定;
  • 已声明支持 compaction/flush 的宿主是否真正触发对应操作;
  • manifest 的声明、安装诊断和实际工具面是否一致。

第一批只覆盖 Codex 与 Claude Code。探针结果应区分 supportedpartialunknowndrift,避免把无法观测的行为误报为不支持。

3. 起草 Connector “安全跳过”合同

该工作是完整转录导入的前置项,也可服务其他外部 Connector。RFC/设计应定义:

  • 哪些处理动作可以允许 checkpoint 推进;
  • 对应结果是否保存 source ref、内容 digest、脱敏原因和可重试信息;
  • 同一原始项在规则改变后如何重新处理;
  • REJECTEDFAILED 与可提交跳过的可观察差别;
  • SQLite 与 OceanBase 下的幂等和乐观 checkpoint 竞态验收。

在此合同完成前,不改变 ConnectorLifecycle 对现有 REJECTED / FAILED 的阻塞语义。

4. 配合 #1426 评估长内容的多分辨率表示

#1426 负责 L0 权威全文、L1 概览、L2 摘要/检索文本,以及每层到权威 Revision 的映射、失效重建、精确 citation 和固定预算评测。本议题只关注会话历史是否成为该评测的一个候选数据集。

可立即准备匿名化、可复现的长会话样本与任务集;实验应比较现有基线和候选 L0/L1/L2 策略,报告任务成功率、citation 正确性、注入字节/Token、遗漏、延迟、推理成本和 abstention。未证明收益前,不将模型生成摘要设为默认路径。

依赖顺序

#1300: Codex-only user-prompt import
        |
        +--> 宿主行为 conformance 检查
        |
        +--> Connector 可提交跳过合同

#1426: L0/L1/L2 与固定预算评测
        |
        v
是否需要完整转录归档/引用模型的独立 RFC
        |
        v
仅在隐私、保留、身份、可重放性和评测收益都成立后实施

#1556 的 recall sufficiency gate 可以独立推进:它决定候选池是否需要有界扩展,不决定内容是否应保存,也不改变上述预算不变量。#1384 的既有记忆文件迁移同样独立于宿主会话历史。

后续决策门

完整转录功能必须在以下问题都有明确答案后才能立项:

  • 用户是否按宿主、项目、会话和时间范围明确选择导入内容;
  • 过滤、隔离和删除是否可审计且不会造成静默数据丢失;
  • Source 身份和快照是否在文件轮转、修改、删除和跨机器部署时仍然可解释;
  • 摘要、原文和 citation 是否始终能追溯到准确的权威 Revision;
  • 在冻结评测上是否优于当前 Source / Artifact / PreparedContext 基线。

相关:#1300、#1426、#1556、#1384;RFC 0028、1489。


披露:本议题在 AI 辅助下起草;代码路径和依赖约束已针对 master 核对。

  • 我愿意为此功能贡献代码、文档或设计意见。

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the scoped #1300 work, using ContentSource and the existing submission API as the entry points for Codex-only history import. Then read ConnectorLifecycle and PreparedContextBuilder, with #1426 as the dependency for long-content evaluation. This issue is done only when each selected phase has an explicit contract and its stated acceptance evidence.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
ai, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.