每次记录工具版本、SDK 运行时版本/ABI、系统/架构、双方配置、操作顺序、预期与实际行为。不要把密码、身份导出或业务消息放入公开 issue。
| 场景 | 操作与验收 |
|---|---|
| 加载 | 正确平台/架构能加载;旧 ABI、错误架构、缺符号有错误;不会悄悄加载其他同名库 |
| 生命周期 | 临时身份启停;新建密码目录;错误密码拒绝且原数据保留;两个进程同目录被锁拒绝 |
| LAN | 两端发现、核对 SAS、分别确认;单方确认不能建立信任;拒绝/取消可重试 |
| 消息 | 双向 Unicode 文字;排队/送达区别;断线重连;持久目录重启后身份与关系保留 |
| 文件 | 二进制内容校验;明确接受/拒绝;暂停/恢复/取消;无权限接收目录报告失败;不自动删除源文件 |
| 诊断 | 无效 JSON 不调用 SDK;非法参数返回状态码;事件展示;异步 requestId 查询;导出无业务内容 |
| UI | macOS/Windows/Linux:窗口缩放、高 DPI、中文输入、长 JSON、文件路径 Unicode、关闭与退出 |
| 网络实验 | 手动填写授权参数;不更改系统代理/路由;没有经过验证的场景不得报告通过 |
| BLE | 仅完整帧注入/提取;当前没有系统 GATT 桥,不能用它声称已完成真实无线互通 |
测试目录是 DevTools 专用,存有加密身份和数据库;接收文件是用户指定的明文文件,必须自行管理。残留 .pending 代表一次未完成文件提交,不自动删除;保留目录排障。持久化或停止失败时保留会话并重试,不把强制退出当作成功保存。
CLI 示例:向 sovkit-console /absolute/path/libsovkit.* 的 stdin 逐行发送:
{"id":1,"op":"info"}
{"id":2,"op":"start","deviceName":"DevTools-A"}
{"id":3,"op":"discovery_start","request":{"candidateTtlMs":12000}}
{"id":4,"op":"discovery_list"}
{"id":5,"op":"stop"}响应以 id 对应请求。持久模式在 start 顶层提供 profile 和 password,只从 stdin 传入,不放在命令行或提交到脚本。CLI 是测试接口,输出可能包含本机业务响应;诊断导出白名单仅适用于 GUI 导出按钮。
SDK 原生结构化日志也可能输出到控制台;脚本应只将含 result 的 JSON 行作为命令响应。常规 GUI 关闭失败时保留窗口;CLI 到达 EOF 或系统强制要求关闭时,宿主仍等待停止提交成功,不释放活跃回调对象。遇到持久 IO 故障应先恢复磁盘/目录可写性,不能将进程仍未退出误认为保存已完成。
Windows 持久测试目录会收紧为当前用户和 SYSTEM 可访问,仅作用于空目录或已有 DevTools 专用目录;不会接管其他用户目录。SDK 的数据库保护仍生效。更换 SDK 后先看 info/自检; 若中文文件接收失败,记录 DLL 摘要核对是否包含 2026-09-17 UTF-8 路径修复。
两端(例如 Windows + macOS)各用不同设备名、独立身份;首次调试建议先临时身份配对, 再新建持久测试目录复现重启。不会复用普通 Nearvia 的身份或聊天库。