Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); docs(research): define capability gateway boundary by seekskyworld · Pull Request #308 · openpi-dev/openpi · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions docs/research/CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
# OpenPI Capability Gateway 边界研究

> 状态:validated(设计研究;不代表新增 runtime 实现)
>
> 创建日期:2026-08-30
>
> 最后核验:2026-08-30
>
> 关联 Issue:[#19](https://github.com/openpi-dev/openpi/issues/19)

## 研究结论

Issue #19 的核心问题是能力入口是否应常驻模型上下文。现有证据支持“普通 turn 零常驻 OpenPI surface,明确意图时加载稳定 capability group”的方向;它不支持增加第二套 provider、固定编排器或按模型名称路由。

## 已确认边界

- Pi 原生 `read`、`bash`、`edit`、`write` 仍是普通编码的基础执行面。
- Search、Delegate、Workflow、Background、Session 是可独立加载的能力组;组内 lifecycle 工具由各 owner 按资源状态管理。
- capability discovery 只改变模型可见 surface,不拥有 Subagent、Workflow 或 Background 的执行生命周期。
- 已加载组在 Session 内单调保持,避免频繁增删 schema 导致 cache churn。
- 第三方同名工具不能被 OpenPI 误隐藏;无法证明 source ownership 时必须保留并 fail open。
- child Session 不得通过 gateway 改变父会话工具面,工具仍需通过 child-safe drift guard。

## 设计选择

### Explicit

普通 turn 默认不暴露 OpenPI 工具。用户明确表达需要某类能力时,运行时加载对应组并附带最小 Skill 指针。该路径不做通用自然语言 planner,也不调用隐藏分类模型。

### Adaptive

用户显式选择 Adaptive 后,只保留紧凑的 gateway。主模型阅读完整任务后自行决定是否加载一个或多个能力组;gateway 不是执行器,也不代替模型判断。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 [P3,非阻塞] 为当前 Adaptive 行为补版本来源

Adaptive 的描述与当前源码一致,但来源段的 #19/#20 没有描述“用户可选 Adaptive”:#19 提议默认常驻网关,#20 才收敛为普通 turn 零常驻。作为 validated 研究,建议把历史提案、当前实现和后续建议分开标注,并补固定版本依据,例如 当前审查版本的 READMEcapabilities 实现

另外,PR Approach 承诺的相关诊断记录链接和 Issue 回链目前还未补齐;诊断文档未合并时,链接对应 PR #307 即可。这里需要补可追溯性,不需要修改运行时或另造文档。


### Setup 例外

持久化配置继续只通过 `/openpi-setup` 用户入口开启。Setup 不应成为普通 capability group,也不能由 gateway 自动加载配置写工具。

## 证据与限制

零常驻工具面消除了可重复测量的静态 schema/Skill catalogue 成本,但独立模型采样仍可能造成动态轨迹差异。首请求一致或接近,不能证明后续质量或成本因果;任何 benchmark 都必须同时报告 adopted capability、turn、tool、usage、wall time 和失败分类。

## 非目标

- 不增加常驻的每能力请求工具。
- 不复制 OMP 的完整工具注册、全局 hub、memory 或 workflow runtime。
- 不按 provider/model 名称硬编码策略。
- 不把 gateway 变成关键词路由器、固定数量 planner 或第二 authority plane。
- 不因为一次小样本诊断改写默认产品行为。

## 后续门槛

先在隔离有效的配对任务上比较 Bare Pi、OpenPI Explicit、OpenPI Adaptive 和按需加载组。只有在能力实际被采用且对预注册主要结果产生净收益时,才考虑新增 runtime seam;否则保持当前 Pi-native 最小面。

## 来源

- [Issue #19](https://github.com/openpi-dev/openpi/issues/19):工具面复盘与 gateway 提案。
- [Issue #20](https://github.com/openpi-dev/openpi/issues/20):三臂诊断复盘。
- [`docs/README.md`](../README.md):研究记录状态与证据边界。
1 change: 1 addition & 0 deletions docs/research/README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,5 +8,6 @@ The following records predate [`Decision 0001`](../decisions/0001-documentation-

- [`CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_FANOUT_POLICY_2026-08-23.md) — official-source research on dynamic fan-out and bounded execution.
- [`CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md`](CLAUDE_CODE_WORKFLOW_RUNTIME_CONTRACT_2026-08-23.md) — version-scoped Workflow contract interview and evidence boundary.
- [`CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md`](CAPABILITY_GATEWAY_BOUNDARY_2026-08-30.md) — Issue #19 的 Explicit/Adaptive gateway 边界研究。

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️[P2] 将新建研究移出 Legacy records

此列表上方明确写着记录早于 Decision 0001、尚未迁移到新 metadata 契约;但这份新记录标注创建于 2026-08-30,而 Decision 0001 已于 2026-08-29 生效。放在这里会把新文档误标成历史豁免记录,也与文件自身的 validated 状态说明不一致。

请将条目放到独立的当前研究小节,并按现有 docs/README.md 约定声明适用来源/版本、相关 PR 和替代关系。只需调整文档分类及必要信息,不需要引入新格式框架。


When research changes a project constraint, preserve the adopted choice in a Decision. Amend or supersede a historical record rather than silently rewriting its original conclusion.
Loading