oceanbase / oceanbase/powercontext
tracking(continuity): 宿主历史导入与可评估的上下文连续性
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.1k
- Forks
- 214
- Avg merge
- 1d 11h
- Merged PRs (30d)
- 199
Description
功能描述
本议题追踪「宿主历史如何在不改变 PowerContext 职责边界的前提下,成为可验证的长期工作上下文」。它不定义一个必须原子交付的「转录入口、治理闸门、压缩出口」三件套,也不把 Omnigent 的运行时模型移入 PowerContext。
目标是分阶段回答四个独立问题:
- 已安装前的宿主历史怎样显式、幂等地进入现有 Source 管道;
- 完整转录若需要保存,如何定义内容归属、保留期、脱敏、可重放性与撤销;
- Connector 遇到有意跳过的敏感项时,如何保留审计并安全推进游标;
- 长内容怎样在固定
PreparedContext预算内以可引用、可评测的不同分辨率参与召回。
范围外:agent 运行时、多端同步、云沙箱、凭据托管、实时协作,以及把会话作为新的 Core 持久化实体。
当前结论与约束
Omnigent 的可借鉴点是宿主格式的安全解析、压缩边界识别、能力声明与端到端兼容性验证,不是其 runner、会话协作或策略运行时。PowerContext 的 Scope、Source、Artifact 和既有授权模型仍是唯一的工作连续性承载边界。
Source 引用还不是可直接使用的转录方案
SourceMaterialization 虽定义了 REFERENCED,但当前远程 Source observation 合同只允许 CAPTURED:SourceObservation 固定 materialization=captured,project_source_for_transport() 明确拒绝非 captured Source。因此,不能把宿主机器上的 JSONL 路径作为一个无需改动现有 HTTP/Connector 合同的 REFERENCED Source。
完整转录若要使用引用模式,必须先在单独 RFC 中定义:本地客户端与服务端不在同一机器时的可达性、内容快照 digest、文件轮转与截断、原文件删除后的行为、访问撤销,以及基于稳定宿主记录的身份规则。在该合同被接受前,不将完整转录导入设为默认能力。
Connector 需要新的“可提交跳过”结果语义
当前 ConnectorLifecycle 将 REJECTED 和 FAILED 都视为 unsafe:二者都会把 run 标为 INCOMPLETE 并阻止 checkpoint 提交。把敏感项由 REJECTED 改名为 FAILED 并不能让游标继续前进。
若未来需要“已按规则脱敏/隔离并跳过,但可以继续导入后续记录”,应先单独定义一个可审计的结果语义及其重试、展示和 checkpoint 行为,例如 SKIPPED_REDACTED 或 QUARANTINED。不得用失败状态掩盖已处理的内容。
预算不变量不能改成空上下文回退
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。探针结果应区分 supported、partial、unknown、drift,避免把无法观测的行为误报为不支持。
3. 起草 Connector “安全跳过”合同
该工作是完整转录导入的前置项,也可服务其他外部 Connector。RFC/设计应定义:
- 哪些处理动作可以允许 checkpoint 推进;
- 对应结果是否保存 source ref、内容 digest、脱敏原因和可重试信息;
- 同一原始项在规则改变后如何重新处理;
REJECTED、FAILED与可提交跳过的可观察差别;- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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