Skip to content
Merged
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
12 changes: 6 additions & 6 deletions docs/interactive-capabilities/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
<!-- generated by scripts/generate-interactive-capabilities.mjs; do not edit -->
# OpenBitFun 功能与设置目录 / OpenBitFun Features & Settings

OpenBitFun Playbook 当前包含 **23 个功能**和 **21 个设置页**,共 **44 个**用户可理解的条目、**332 项**有源码证据的子能力。每个条目有独立 Markdown,并直接服务于说明书网站、OpenBitFun 全局搜索和 `OpenBitFunControl` 智能体工具。
OpenBitFun Playbook 当前包含 **23 个功能**和 **21 个设置页**,共 **44 个**用户可理解的条目、**333 项**有源码证据的子能力。每个条目有独立 Markdown,并直接服务于说明书网站、OpenBitFun 全局搜索和 `OpenBitFunControl` 智能体工具。

OpenBitFun Playbook currently contains **23 features**, **21 settings pages**, and **332** source-backed sub-capabilities across **44** user-facing entries. Every entry has its own Markdown page and directly powers the website, in-app global search, and the `OpenBitFunControl` agent tool.
OpenBitFun Playbook currently contains **23 features**, **21 settings pages**, and **333** source-backed sub-capabilities across **44** user-facing entries. Every entry has its own Markdown page and directly powers the website, in-app global search, and the `OpenBitFunControl` agent tool.

## 唯一事实源 / Single source of truth

Expand Down Expand Up @@ -33,14 +33,14 @@ Docs, website, search, and agents see only features, settings, and documented su

## 控制边界 / Control boundary

- 每个子能力都明确标记为直接控制、委托给专用智能体工具、需交互打开或不支持;“打开页面”不会再被统计成“智能体已控制”。当前覆盖:直接 **51**、委托 **65**、需交互 **216**、不支持 **0**。
- 每个子能力都明确标记为直接控制、委托给专用智能体工具、需交互打开或不支持;“打开页面”不会再被统计成“智能体已控制”。当前覆盖:直接 **52**、委托 **65**、需交互 **216**、不支持 **0**。
- 稳定行为声明为带 JSON 输入契约的 `operations` 或 `options`,并绑定原生产品控制 Provider;智能体不接触原始 Tauri Command。
- `OpenBitFunControl list` 和 `search` 都返回带 `nextCursor` 的精简分页结果;目录可持续增长,不靠固定总量上限。完整目录和 332 项子能力都不会写入 system prompt。
- `OpenBitFunControl list` 和 `search` 都返回带 `nextCursor` 的精简分页结果;目录可持续增长,不靠固定总量上限。完整目录和 333 项子能力都不会写入 system prompt。
- 目录发现与契约读取不依赖 React 或可见窗口。普通配置型 option 统一由 Product Assembly 的共享 ConfigService 执行器读、写并回读,因此 Desktop、CLI 与 Headless 表面走同一份实现;只有宿主原生 operation/provider option 和界面导航按表面注册适配器,缺失时必须明确返回不可用,禁止静默回退本机。只读智能体只能发现和读取目录。

- Every documented item is classified as direct control, delegated Agent control, interactive opening, or unsupported; opening a page is never counted as direct control. Current coverage is **51 direct**, **65 delegated**, **216 interactive**, and **0 unsupported**.
- Every documented item is classified as direct control, delegated Agent control, interactive opening, or unsupported; opening a page is never counted as direct control. Current coverage is **52 direct**, **65 delegated**, **216 interactive**, and **0 unsupported**.
- Stable behavior becomes a typed `operation` or `option` with a JSON input contract and a native product-control provider. Agents never receive raw Tauri commands.
- `OpenBitFunControl list` and `search` return compact pages with a `nextCursor`; the catalog can grow without a fixed total-size ceiling. Neither the full catalog nor its 332 documented items enters the system prompt.
- `OpenBitFunControl list` and `search` return compact pages with a `nextCursor`; the catalog can grow without a fixed total-size ceiling. Neither the full catalog nor its 333 documented items enters the system prompt.
- Discovery and contract lookup do not depend on React or a visible window. Ordinary config-backed options are read, written, and read back by one Product Assembly ConfigService executor shared by Desktop, CLI, and headless surfaces. Only host-native operations/provider options and presentation routes install surface adapters; missing adapters return explicit unavailability without local fallback. Read-only agents may only discover and inspect entries.

## 防腐化门禁 / Anti-drift gates
Expand Down
103 changes: 97 additions & 6 deletions docs/interactive-capabilities/capabilities.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
"title": "OpenBitFun Playbook",
"origin": "https://playbook.openbitfun.com",
"source": "src/shared/interactive-capabilities/catalog.json",
"digest": "da8a1c7e721910916da62280a534391c89f6457098aadf9200e85e797145a12a",
"ownerDigest": "103fc8646df7b35e9fac1c52149a35b86e9c6115b462b0aa36240a4600903ce4",
"digest": "65f1a11c6d994c382da25f2b9ad995ad0f443a5d352c2eafa10a8b9bcbf849e5",
"ownerDigest": "4e1ace270088acecbd333d2c8aced0547dddb0fd6bae778bec24f2b0fb48ea91",
"searchAcceptance": [
{
"id": "companion-pet-mixed",
Expand Down Expand Up @@ -147,9 +147,9 @@
"features": 23,
"settings": 21,
"userFacing": 44,
"documentedItems": 332,
"documentedItems": 333,
"controlCoverage": {
"direct": 51,
"direct": 52,
"delegated": 65,
"interactive": 216,
"unsupported": 0
Expand Down Expand Up @@ -16039,6 +16039,7 @@
"global-project-rules",
"remembered-grants",
"deferred-tools",
"tool-presentation",
"parallelism",
"timeouts",
"review-capacity",
Expand Down Expand Up @@ -16175,6 +16176,54 @@
"pageId": "tools.execution"
}
},
{
"id": "setting.tools.execution:option:tool-presentation-mode",
"capabilityId": "setting.tools.execution",
"itemIds": [
"tool-presentation"
],
"kind": "option",
"risk": "write",
"executionHost": "productHost",
"availability": {
"desktop": {
"available": true
},
"cli": {
"available": true
},
"peer": {
"available": true,
"requiredCapabilities": [
"product_control_v1"
]
},
"remoteControl": {
"available": true
},
"detachedDispatch": {
"available": true
}
},
"inputSchema": {
"type": "string",
"enum": [
"native",
"ptc"
]
},
"outputSchema": {
"type": "object",
"additionalProperties": true
},
"valueSource": {
"kind": "static"
},
"presentationTarget": {
"kind": "settings",
"pageId": "tools.execution"
}
},
{
"id": "setting.tools.execution:option:subagent-batch-policy",
"capabilityId": "setting.tools.execution",
Expand Down Expand Up @@ -28523,13 +28572,15 @@
"categoryId": "assistant",
"titleZh": "执行与权限控制",
"titleEn": "Execution & permissions",
"summaryZh": "管理智能体工具权限、并行度、超时、延迟加载、Computer Use 与浏览器控制。",
"summaryEn": "Manage agent tool permissions, concurrency, timeouts, deferred loading, Computer Use, and browser control.",
"summaryZh": "管理智能体工具权限、呈现模式、并行度、超时、延迟加载、Computer Use 与浏览器控制。",
"summaryEn": "Manage agent tool permissions, presentation mode, concurrency, timeouts, deferred loading, Computer Use, and browser control.",
"keywordsZh": [
"执行控制",
"工具权限",
"工具调用超时",
"延迟加载工具",
"工具呈现模式",
"PTC",
"审批",
"并行",
"超时",
Expand All @@ -28541,6 +28592,8 @@
"execution control",
"tool permissions",
"deferred tool loading",
"tool presentation",
"PTC",
"approval",
"parallel",
"timeout",
Expand Down Expand Up @@ -28645,6 +28698,25 @@
]
}
},
{
"id": "tool-presentation",
"titleZh": "选择模型使用原生模式还是 PTC TypeScript 模式",
"titleEn": "Choose native mode or PTC TypeScript mode for the model",
"destination": {
"kind": "settings",
"pageId": "tools.execution",
"viewId": "advanced"
},
"control": {
"kind": "direct",
"operations": [],
"options": [
{
"id": "tool-presentation-mode"
}
]
}
},
{
"id": "parallelism",
"titleZh": "设置子智能体与 Swarm 最大并发及安全、强制并行或串行策略",
Expand Down Expand Up @@ -28821,6 +28893,20 @@
"type": "boolean"
}
},
{
"id": "tool-presentation-mode",
"titleZh": "工具呈现模式",
"titleEn": "Tool presentation mode",
"descriptionZh": "选择模型直接调用原生工具,或通过 PTC TypeScript 调用工具。",
"descriptionEn": "Choose whether the model calls native tools directly or uses PTC TypeScript.",
"valueSchema": {
"type": "string",
"enum": [
"native",
"ptc"
]
}
},
{
"id": "subagent-batch-policy",
"titleZh": "子智能体批量执行策略",
Expand Down Expand Up @@ -28914,6 +29000,8 @@
"工具权限",
"工具调用超时",
"延迟加载工具",
"工具呈现模式",
"PTC",
"审批",
"并行",
"超时",
Expand All @@ -28923,6 +29011,7 @@
"execution control",
"tool permissions",
"deferred tool loading",
"tool presentation",
"approval",
"parallel",
"timeout",
Expand All @@ -28945,6 +29034,8 @@
"Review, revoke, or clear remembered project permission grants and audit records",
"按需延迟加载工具定义以减少智能体初始上下文",
"Deferred tool loading on demand to reduce initial agent context",
"选择模型使用原生模式还是 PTC TypeScript 模式",
"Choose native mode or PTC TypeScript mode for the model",
"设置子智能体与 Swarm 最大并发及安全、强制并行或串行策略",
"Set subagent and swarm concurrency plus safe-only, forced-parallel, or serial policy",
"设置或取消单次工具调用超时",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ title_en: "Execution & permissions"

> 设置 / Setting

管理智能体工具权限、并行度、超时、延迟加载、Computer Use 与浏览器控制。
管理智能体工具权限、呈现模式、并行度、超时、延迟加载、Computer Use 与浏览器控制。

Manage agent tool permissions, concurrency, timeouts, deferred loading, Computer Use, and browser control.
Manage agent tool permissions, presentation mode, concurrency, timeouts, deferred loading, Computer Use, and browser control.

## 完整功能清单 / Everything included

Expand All @@ -27,6 +27,8 @@ Manage agent tool permissions, concurrency, timeouts, deferred loading, Computer
- Review, revoke, or clear remembered project permission grants and audit records
- **智能体可直接控制 / Direct Agent control** · 按需延迟加载工具定义以减少智能体初始上下文
- Deferred tool loading on demand to reduce initial agent context
- **智能体可直接控制 / Direct Agent control** · 选择模型使用原生模式还是 PTC TypeScript 模式
- Choose native mode or PTC TypeScript mode for the model
- **智能体可直接控制 / Direct Agent control** · 设置子智能体与 Swarm 最大并发及安全、强制并行或串行策略
- Set subagent and swarm concurrency plus safe-only, forced-parallel, or serial policy
- **智能体可直接控制 / Direct Agent control** · 设置或取消单次工具调用超时
Expand Down Expand Up @@ -67,6 +69,7 @@ Manage agent tool permissions, concurrency, timeouts, deferred loading, Computer
| --- | --- | --- | --- |
| 显示权限模式选择器 / Show permission-mode selector | `boolean` | 在聊天输入框下方显示或隐藏权限模式快捷选择器。 | Show or hide the permission-mode shortcut below the chat composer. |
| 延迟加载工具 / Deferred tool loading | `boolean` | 按需加载大型工具定义,减少智能体初始上下文。 | Load large tool definitions on demand to reduce initial agent context. |
| 工具呈现模式 / Tool presentation mode | `native` / `ptc` | 选择模型直接调用原生工具,或通过 PTC TypeScript 调用工具。 | Choose whether the model calls native tools directly or uses PTC TypeScript. |
| 子智能体批量执行策略 / Subagent batch policy | `safe_only` / `force_parallel` / `serial` | 选择仅安全任务并行、强制并行或串行执行。 | Choose safe-only parallelism, forced parallelism, or serial execution. |
| 子智能体最大并发 / Maximum subagent concurrency | `integer` (1–32) | 限制同时运行的子智能体数量。 | Limit the number of subagents that may run at once. |
| Swarm 最大并发 / Maximum swarm concurrency | `integer` (1–64) | 限制 Swarm 中同时执行的工作单元。 | Limit concurrent work units inside a swarm. |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"generatedFrom": "src/shared/interactive-capabilities/catalog.json",
"catalogDigest": "da8a1c7e721910916da62280a534391c89f6457098aadf9200e85e797145a12a",
"catalogDigest": "65f1a11c6d994c382da25f2b9ad995ad0f443a5d352c2eafa10a8b9bcbf849e5",
"count": 216,
"reasonCounts": {
"externalAuth": 4,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"schemaVersion": 2,
"generatedFrom": "src/shared/interactive-capabilities/catalog.json",
"catalogDigest": "da8a1c7e721910916da62280a534391c89f6457098aadf9200e85e797145a12a",
"catalogDigest": "65f1a11c6d994c382da25f2b9ad995ad0f443a5d352c2eafa10a8b9bcbf849e5",
"commandCount": 701,
"coverage": {
"commandCount": 701,
Expand Down
8 changes: 8 additions & 0 deletions scripts/check-core-boundaries.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -557,6 +557,7 @@ test('portable contract crates expose only capability-local feature slices', asy
'permission',
'plugin-runtime',
'product-search',
'ptc-runtime',
'remote-exec-port',
'remote-workspace-ports',
'runtime-event-port',
Expand All @@ -573,6 +574,7 @@ test('portable contract crates expose only capability-local feature slices', asy
assert.deepEqual(runtimePortFeatures['plugin-runtime'], []);
assert.deepEqual(runtimePortFeatures['product-search'], ['dep:openbitfun-product-domains']);
assert.deepEqual(runtimePortFeatures['script-tool-runtime'], []);
assert.deepEqual(runtimePortFeatures['ptc-runtime'], []);
assert.deepEqual(runtimePortFeatures['web-search-port'], []);
// Workspace byte readers expose AsyncRead/AsyncSeek without selecting a
// process, network, scheduler, or full Tokio runtime at the contract layer.
Expand Down Expand Up @@ -783,6 +785,7 @@ const RUNTIME_PORT_FEATURE_PROFILES = {
permission: ['dep:openbitfun-product-domains'],
'plugin-runtime': [],
'product-search': ['dep:openbitfun-product-domains'],
'ptc-runtime': [],
'remote-exec-port': ['dep:tokio'],
'remote-workspace-ports': [],
'runtime-event-port': [],
Expand Down Expand Up @@ -1034,6 +1037,11 @@ test('contract and AI adapter tests keep reviewed feature and failure-domain top
path: 'tests/script_tool_port_contracts.rs',
requiredFeatures: ['script-tool-runtime'],
},
{
name: 'ptc_tool_port_contracts',
path: 'tests/ptc_tool_port_contracts.rs',
requiredFeatures: ['ptc-runtime'],
},
{
name: 'session_store_contracts',
path: 'tests/session_store_contracts.rs',
Expand Down
3 changes: 3 additions & 0 deletions scripts/core-boundaries/cargo-dependency-boundaries.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ const SERVICES_INTEGRATIONS_TOKIO_FEATURES = new Map([
['speech-realtime', ['fs', 'io-util', 'macros', 'net', 'rt', 'sync', 'time']],
['workspace-search', ['io-util', 'rt', 'sync', 'time']],
['script-tool-runtime', ['io-util', 'process', 'rt', 'sync', 'time']],
['ptc-runtime', ['io-util', 'process', 'rt', 'sync', 'time']],
]);

const SERVICES_CORE_TOKIO_FEATURES = new Map([
Expand Down Expand Up @@ -198,6 +199,8 @@ const CORE_TOKIO_FEATURES = new Map([
['browser-control', ['net', 'rt', 'time']],
]);
const CORE_TOKIO_AGGREGATES = new Set([
// PTC composes the Agent Runtime baseline and the service-owned Node runtime.
'ptc-runtime',
'external-sources',
'plugin-runtime',
'product-search',
Expand Down
5 changes: 5 additions & 0 deletions scripts/core-boundaries/explicit-test-topology.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,11 @@ export const runtimePortsIntegrationTestTargets = [
path: 'tests/script_tool_port_contracts.rs',
requiredFeatures: ['script-tool-runtime'],
},
{
name: 'ptc_tool_port_contracts',
path: 'tests/ptc_tool_port_contracts.rs',
requiredFeatures: ['ptc-runtime'],
},
{
name: 'session_store_contracts',
path: 'tests/session_store_contracts.rs',
Expand Down
Loading
Loading