适用于 fn 0.5.0、SDK 0.4.0 和 iPhone 0.3.0(4)。此页面路径保留原预览地址;安装见下载指南。
应用、连接和会话
fn 是 Bun 上的 Cordis 应用宿主,直接使用 DeepSeek Harness 的 Agent、模型、工具和 Session 核心。FIA 继续管理原生窗口、系统能力及后台进程。插件页面与独立 fn Chat 连接同一个运行宿主,关页或断线不终止后台任务。
模型以“连接”管理。每个连接独立保存 provider、端点和 API Key 或订阅登录,可以给同一服务添加多个账号。新建会话时选择连接与模型;会话内可以切换同一连接的模型,换账号或端点则创建新连接与会话。
会话记录保存在本机 SQLite,工具和模型执行前会检查持久化。重启后从记录恢复展示,不自动重放无法确认完成的文件写入或 shell 操作。手机采用新的 Chat 协议,通过 iCloud 传递命令和展示内容,并同步已读游标。离线回复和已读操作进入持久队列;v3 生产 schema 和四类订阅已部署并验证,手机真机交互和通知点击仍需实测。
桌面工作空间
紧凑侧栏保留应用入口,底部提供 Chat、应用中心和设置。设置包含模型服务、外观、应用更新与聊天同步;明暗模式和原生标题栏同步,配色主题供插件页面共用。
模型服务可从 Pi 服务商预设开始,添加 API Key 或订阅账号,也可配置兼容协议的自定义端点。每个账号拥有独立模型目录;将需要的模型加入列表后,在新会话和插件页面选择使用。手机只同步已添加且仍在当前账号目录中的模型,没有可选模型的连接会隐藏;离线期间被移除的模型不能用于新建或切换会话,已有会话绑定保留。添加模型不会发起生成请求。预设目录不代表账号权限;动态目录才从当前账号查询。已有订阅的真实模型请求、网页工具调用和重启历史已通过开发验收,新的交互登录与过期 token 刷新仍待验证。
应用中心提供插件市场、已安装列表、市场源、归档/npm/Git 地址安装以及更新、停用和卸载。新的 Cordis 市场与旧市场分离,官方新索引为 marketplace-cordis.json,不能直接安装旧插件包。
应用更新页继续提供 FIA 的检查、下载和安装流程;正式构建启动时及每 24 小时自动检查。Dev/Preview 默认关闭正式更新,避免覆盖开发构建。插件更新先等待后台空闲,再切换完整运行目录。
插件作者需要改变什么
插件是普通 npm 包:
exports["."]导出 Cordis 插件,可直接指向 ESM TypeScript 后端。- 可选
exports["./client"]提供浏览器构建产物;服务插件不必提供页面。 fn元数据描述应用 ID、名称、介绍及可选文字/SVG 图标;依赖通过 npm 字段和精确 peer requirements 声明。- 宿主 SDK 提供应用 KV、方法、Chat 入口和页面注册,Agent、Session 与工具类型直接来自锁定的 dsh 包。
浏览器也使用 Cordis 管理生命周期,React 渲染页面。共享 React、Cordis 和 @semicoder/fn-sdk/ui 由宿主提供。页面可声明 keepAlive: true 保留当前窗口切页状态,默认卸载;跨重启内容仍由应用保存到 KV。SVG 图标从 src/icon.svg 构建到 dist/icon.svg,上限 8 KiB。插件仍是可信本机代码,具备 Bun 的本机执行能力;Cordis scope 不提供安全沙箱。官方写入、进程与外部副作用工具默认需要批准,会话可以显式启用自动执行。
连接、模型、会话和 KV 列表采用分页响应。页面通过 ctx.clientApp.list(method, params) 读取完整列表,SDK 自动请求后续页;ctx.clientApp.kv.list() 已包含此处理。直接调用 API 时需读取 items、nextOffset 与 hasMore,不能假定一次返回全部数据。
Chat 自定义卡片
应用可通过 ctx.app.cards.action 注册处理入口,使用 ctx.app.cards.create 向自己的 Session 发出确认、选择或表单卡片;也可取消尚未回复的卡片。输入支持文字、数字、布尔、单选和多选。桌面与原生 Chat 展示同一份状态,页面关闭不取消卡片。
回复先持久记录,再交给应用处理。多设备竞争只接受首个成功认领的答案;过期、取消、应用停用或处理入口销毁后不可继续提交。手机离线回复进入持久队列,重连后同步最终答案。处理中发生崩溃会显示中断,失败操作不会自动重放;外部操作仍需应用自行保存业务检查点。
插件从 @semicoder/fn-sdk/cards 使用卡片类型与校验函数。卡片属于 fn 产品交互记录,Agent 消息历史继续由 dsh Session 保存。iPhone 0.3.0(4)支持此接口,旧 v2 客户端不兼容。
安装和更新
安装或更新先构建并验证完整依赖目录,运行期间不自动安装缺失包。候选准备好后等待后台任务空闲,再重启 Bun;原生窗口保留,页面重连。持续运行的任务会让更新保持待应用状态,可以显式停止任务后更新。
Git 安装仅归档指定 ref 的已提交文件,不运行仓库构建脚本;插件作者需要提交前端产物。
内核采用固定的 dsh 发行包组合,升级前验证连接隔离、Session 持久化、工具取消和客户端合同。SDK 0.4.0 与旧 SDK 不兼容,使用精确版本或宿主随附归档。
源码开发时,bun run dev 监听 runtime/SDK 并重建固定快照,后端和共享契约修改也等待任务空闲后重载。构建失败保留当前后台,修复源码后重试。前端继续热更新;框架、根依赖、配置和命令入口变更仍走原开发工具链,修改前先结束任务。
数据与兼容边界
新架构使用独立数据目录和 Chat zone,不读取、迁移或删除旧应用数据。旧 SDK、插件归档和客户端协议不兼容,三个官方应用均按新契约重新构建。旧数据可继续由对应旧版本读取,新应用不进行迁移。