feat: 动态插件系统 M0-M3(两层能力模型 + pi 原生契约 + Obsidian 式 SDK)
This commit is contained in:
@@ -17,7 +17,8 @@ import {
|
||||
type SessionInfo
|
||||
} from '@earendil-works/pi-coding-agent'
|
||||
import { ApprovalService, createApprovalExtension } from './approval'
|
||||
import { browserTools } from '../tools/browser-tools'
|
||||
import { getPluginHost } from '../plugins/plugin-host'
|
||||
import { browserToolNames } from '../tools/browser-tools'
|
||||
import type {
|
||||
AgentUiEvent,
|
||||
AppSettings,
|
||||
@@ -47,8 +48,9 @@ import type {
|
||||
/** 增量事件合批的刷新间隔(ms),参考 pi-web 的 60ms 快照节流经验取略低值 */
|
||||
const DELTA_FLUSH_MS = 40
|
||||
|
||||
/** SDK 注册的自定义工具名(用量卡片中与内置「系统工具」分开统计) */
|
||||
const CUSTOM_TOOL_NAMES = new Set<string>(browserTools.map((tool) => tool.name))
|
||||
/** SDK 注册的自定义工具名(用量卡片中与内置「系统工具」分开统计)。
|
||||
* browserTools 已迁入浏览器插件(pi.registerTool 注册),这里同步其名单。 */
|
||||
const CUSTOM_TOOL_NAMES = new Set<string>(browserToolNames)
|
||||
|
||||
/** 需要人工审批的工具名单(高危内置工具;业务演示工具已随 demo-tools.ts 移除) */
|
||||
const TOOLS_REQUIRING_APPROVAL: ReadonlySet<string> = new Set(['bash', 'write', 'edit'])
|
||||
@@ -270,7 +272,9 @@ export class AgentService {
|
||||
agentDir: targetAgentDir,
|
||||
resourceLoaderOptions: {
|
||||
extensionFactories: [
|
||||
createApprovalExtension(this.approvals, TOOLS_REQUIRING_APPROVAL, () => this.permissionMode)
|
||||
createApprovalExtension(this.approvals, TOOLS_REQUIRING_APPROVAL, () => this.permissionMode),
|
||||
// 插件聚合 extension:全部已启用插件在同一真实 ExtensionAPI 上下文里激活
|
||||
getPluginHost().createAggregatedExtension()
|
||||
]
|
||||
}
|
||||
})
|
||||
@@ -290,8 +294,9 @@ export class AgentService {
|
||||
const result = await createAgentSessionFromServices({
|
||||
services,
|
||||
sessionManager,
|
||||
sessionStartEvent,
|
||||
customTools: browserTools
|
||||
sessionStartEvent
|
||||
// 业务工具(browserTools 等)由插件经 pi.registerTool 注册(聚合 extension),
|
||||
// 此处不再传 customTools
|
||||
})
|
||||
return { ...result, services, diagnostics: services.diagnostics }
|
||||
}
|
||||
@@ -1125,7 +1130,8 @@ export class AgentService {
|
||||
}
|
||||
}
|
||||
|
||||
private async rebuildRuntime(): Promise<void> {
|
||||
/** 重建运行时(插件重载/启停后由 PluginHost 调用,extensionFactories 重跑) */
|
||||
async rebuildRuntime(): Promise<void> {
|
||||
const old = this.runtime
|
||||
this.runtime = null
|
||||
this.initPromise = null
|
||||
|
||||
Reference in New Issue
Block a user