SuperAPI AI 工具集

add-a-capability

智能体与模型

查看项目

更新于 10-15 23:33

技能介绍

用途:一份“能力”由契约(defineContract)与服务端处理器(implement)组成,契约定义名称、输入、输出、失败与元数据,处理器实现动作。只定义一次共享契约,在数据与基础设施所在处实现处理器,不为每种接口写独立业务逻辑。

主要能力:Effect 描述带类型化失败与依赖的工作;Schema 定义可接受值及运行时校验;service 是单一职责的具名接口,Layer 构建服务并提供构造依赖。契约中设置 readOnly、idempotent、destructive、openWorld 等注解;需要审批时设 needsApproval: true,implement 会加入 Approval 要求与 ApprovalDenied 失败。

用法:跨进程契约放在 packages/core/src/contracts.ts,从 @rat-stack/capability/contract 导入 defineContract;处理器从 @rat-stack/capability/implement 导入 implement,放在服务或服务端数据旁,保持精简,把实际工作交给 service 或生命周期机器。需要 service 时可参照 packages/core/src/file-inspector.ts,使用 Context.Service 类,在 make 中捕获依赖并保留静态 layer。随后把实现加入其组合根消费的 capabilities 元组,例如 packages/core/src/inspect-file.ts 中的 export const capabilities = [inspectFile, doThing] as const; 顺序是公开的,该元组供各投影与 code-mode 声明使用。CLI、HTTP、MCP、RPC 与 code-mode 投影读取契约中的名称、schema、注解与审批设置:HTTP 增加 POST /doThing 并更新 OpenAPI;MCP 增加同名工具;沙箱目录增加 tools.doThing(input),调用时解码输入、运行同一处理器再编码结果。toCommand 从注册元组构建 CLI 命令,并添加 --json;仅在需要位置参数、自定义渲染或别名时才改 apps/cli/src/command.ts。浏览器客户端从 @rat-stack/core/contracts 导入契约、从 @rat-stack/capability/rpc-group 导入 toRpcGroup,不导入处理器或服务端 toRpc 投影。测试用 @effect/vitest,通过 it.effect 或 it.layer 运行 Effect,不要在测试中调用 Effect.run* 或 ManagedRuntime.make;覆盖处理器输出、预期失败、注解与审批行为,投影变化时加投影测试,公开接口变化时加命令行端到端测试,用 Schema.encodeEffect 检查编码结果、Effect.flip 检查预期错误。最后运行 pnpm turbo run check test build,修复失败,不要放宽检查、钩子或固定版本。

限制:schema 必须能在无服务的情况下编解码,契约模块中不得包含服务端依赖;资料未提供收费、价格或平台信息。