已开启
[RFC]: 统一可插拔能力框架与 Pending Mode 状态切换协议 #44
yi-zhang95创建于 8月27日
openJiuwen-bot
8月27日 评论:
8月27日 评论:
欢迎来到 openJiuwen 社区
Hey @yi-zhang95 , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。


8月27日 关联了pull request:fix(agent): 移除执行模式激活握手并恢复首轮工具可见性
8月28日 修改了issue 的描述
8月29日 关联了pull request:[Refactor] 将 Plan 收敛为 Run 级轻量快照
背景与现状
ScienceDiscovery 已完成多数领域代码的物理分包,
runtime-core也基本保持领域中立;但能力进入一次 Agent Run 时,仍依赖中心代码手工接线。因此当前更接近“代码分包”,尚未达到“能力可插拔”。已有基础包括:
runtime-core只依赖 Context、Model、Tool、Event 等通用端口;当前问题
主要问题不在 Agent Loop,而在 Run 的能力装配层:新增或移除一种能力,通常仍要修改多个中心模块。
WorkspaceAgentOptions承载 MCP、Artifact、Review、Memory、Subagent 等大量领域回调,已经成为事实上的能力总线。services/api/src/runs/index.ts集中构造各种领域回调,能力的实现、接入和运行期状态处理尚未形成统一边界。解决方案
方案核心是让 package 自主声明能力、组合层统一注册、Run 开始前冻结契约;
runtime-core继续只执行已经组装好的通用端口,不感知 Plan、Goal、PUCT 等领域名称。1. 建立最小能力注册内核
在 orchestration/composition 层提供统一入口,而不是把插件装配控制流放入
runtime-core:interface CapabilityPlugin { readonly id: string; register(context: CapabilityContext): Disposable; }V1 先提供当前已有真实需求的扩展点:
tools:注册 Tool 及其 Schema;context:注册 Context Contributor;events:发布和监听类型化运行事件;state:读取只读、带版本的运行状态。Guard、Projection、Run Driver 后续按真实能力接入需要扩展,不在第一阶段一次性预建完整体系。
2. 由所属 package 完成能力注册
每个 package 同时拥有其工具、上下文和事件定义;Service 只提供依赖并注册能力,不再逐字段转发到
WorkspaceAgentOptions。优先迁移三类代表性能力:
迁移完成后,NativeAgent 和 Runtime Core 不应出现具体 package 名称分支,
createWorkspaceTools()只保留真正属于 Workspace 的通用能力。3. 固化 Step Contract
每次模型调用前生成不可变快照,覆盖本轮模型响应及同批 Tool Call:
interface StepContractSnapshot { readonly stepId: string; readonly modelInput: unknown; readonly tools: readonly ToolSpec[]; readonly modelConfig: ModelConfig; readonly stateVersion: number; }会改变 Prompt、工具 Schema 或模型配置的状态,最早在下一 Step 生效;同批异步工具的完成顺序不得改变当前 Step 契约。
4. 最后实现 Pending Mode
Pending Mode 只服务于确实存在运行模式冲突的 package,不替代 Permission、Sandbox、资源锁等其他判断平面。
immediate / next_step / next_run的最低安全边界;实施顺序
实施过程先解决能力注册和中心接线问题,再补 Step 安全边界,最后处理真实模式冲突。
runs/index.ts,使其只负责 Run 组合和生命周期;验收标准
完成后,能力应能通过“package 实现 + composition 注册”接入,Agent 主流程无需理解能力的领域含义。
非目标
本 Issue 聚焦 Agent 执行路径的能力解耦,不要求同时插件化所有 UI 和 HTTP 路由,也不在 V1 支持运行时热装卸、自动跨 Step 工具重放或完整模式配置 DSL。