mirror of
https://github.com/aitingtingya/mv-obcc.git
synced 2026-07-22 07:47:28 +00:00
6.9 KiB
6.9 KiB
Windows 实机验证手册
在真实 Windows 10/11 机器完成本清单后,才能把 Windows 状态标记为“实机通过”。
环境记录
记录以下版本与路径:
- Windows 版本和内部版本号
- Obsidian 桌面版版本
- Claude Code 版本
- Node.js 版本
- 测试 vault 路径,必须同时包含空格和中文,例如
C:\Users\<name>\Documents\Test Vault 中文
构建与安装
-
在源码目录运行
npm ci。 -
运行
npm run verify,确认类型检查、65 项测试及生产构建全部通过。 -
运行
npm run package。 -
在
release目录运行以下命令,并与SHA256SUMS逐项比较:Get-FileHash -Algorithm SHA256 .\mv-obcc-ide-0.2.7.zip Get-FileHash -Algorithm SHA256 .\mv-obcc-ide-0.2.7-source.zip Get-FileHash -Algorithm SHA256 .\mv-obcc-ide-0.2.7\main.js Get-FileHash -Algorithm SHA256 .\mv-obcc-ide-0.2.7\manifest.json Get-FileHash -Algorithm SHA256 .\mv-obcc-ide-0.2.7\styles.css -
将
release\mv-obcc-ide-0.2.7\复制到<vault>\.obsidian\plugins\mv-obcc-ide\。 -
只启用
MV OBCC IDE,关闭其他 Claude Code IDE 桥接插件。 -
检查
%USERPROFILE%\.claude\ide\中生成了对应端口的 lock 文件。
MCP 与设置
- 打开插件设置,确认全部文案为中文。
- 确认 Claude 可执行文件能自动识别;若失败,填写
claude.cmd或claude.exe完整路径。 - 点击“重新注册”,确认状态显示“MCP 已注册并验证;重新启动 Claude Code 后生效”。
- 运行
claude mcp list和claude mcp get mv-obcc-ide,确认 URL、Authorization header 和 Connected 状态正确。 - 重启 Claude Code,确认出现
mcp__mv-obcc-ide__getLatestSelection、getOpenEditors、openFile和已启用的网页工具。 - 逐一关闭和开启主动工具,重新启动 Claude Code,确认工具清单同步变化。
- 关闭“启用 MCP 主动工具”,确认 local MCP 注册被删除;重新开启后确认恢复。
- 检查 MCP 只监听
127.0.0.1,且无 Bearer token 时返回 401。
上游自动解析
- 将插件中的手动上游地址留空。
- 分别在用户、项目和 local Claude 设置中配置不同 URL,确认显示来源遵循 local > project > user。
- 兼容模式下确认
.claude\settings.local.json指向插件本地端口。 - 确认插件不会把本地代理地址当成真实上游形成循环。
- 用脱敏抓包验证选区正文只在
user消息出现一次。 - 切换回原生模式,确认插件只恢复自己接管过的值。
标签与选区
- 保持“支持所有活动页面”关闭,分别验证 Markdown、PDF、Web Viewer 三个开关。
- 开启“支持所有活动页面”,确认三个页面类型开关变为不可用。
- 检查
.claude\settings.local.json中只新增本插件标记的SessionStart和UserPromptSubmitHook。 - 同时从两个终端启动 Claude A 和 Claude B。
- 确认
%USERPROFILE%\.claude\sessions\<PID>.json分别映射两个 session。 - 在 A 中交互时确认 A 保留上一个非自身终端页面;切到 B 的终端后,A 可以读取 B。
- 对 B 执行对称测试;退出后确认其他 Claude 设置和 Hook 没有被破坏。
随后继续通用标签测试:
- 打开 Markdown、PDF、PNG/JPG、Web Viewer、终端、搜索和一个第三方插件标签。
- 调用
getOpenEditors,确认所有标题、类型和活动状态正确。 - 确认后台延迟加载的 Markdown、PDF 和图片仍返回 Windows 绝对路径。
- 在 Markdown 中选择中文、公式、Unicode 和 CRLF 多行文本。
- 在 PDF 文本层选择文字,确认文件、页码和正文正确。
- 在 Web Viewer 中选择文字,确认 URL、标题和正文正确。
- 选中一段文本并发送任意消息,等 Claude 回复结束、右下角不再显示选区状态后,再调用
getLatestSelection,确认仍返回刚才的最后一次非空选区。 - 清空选区并继续聊天,再次调用
getLatestSelection,确认空选区没有覆盖上一步结果。
视觉高亮
- 确认“切换标签时保留选区高亮”默认开启。
- 分别在 Markdown 源码模式、Live Preview、PDF 和 Web Viewer 中划词,然后切到普通标签和终端插件标签,确认源页面高亮仍保留。
- 回到源页面空点,确认只清除该标签的视觉高亮;重新划词时确认替换该标签原高亮。
- 在多个标签中分别划词,确认每个标签最多保留一个且互不影响。
- Markdown 中编辑选中文字前后的内容,确认范围随编辑移动;完全删除选中文字后高亮消失。
- 刷新或导航 Web Viewer、滚动触发 PDF 文本层重建,确认失效高亮安全清理且插件无报错。
- 关闭设置开关,确认全部视觉高亮立即清除;重新开启后无需重启。
- 重复
getLatestSelection和状态感知测试,确认视觉高亮不改变发送给 Claude 的正文。
网页转 Markdown
- 打开普通文章、GitHub 页面和需要登录的页面。
- 记录读取前的 URL、标题和页面状态。
- 调用
readCurrentWebPage,确认返回的是当前这个精确标签的 Markdown。 - 确认页面没有刷新、没有跳转、登录状态未丢失。
- 在长页面的顶部调用工具,确认结果同时包含视口下方已经加载但尚未滚动到的正文。
- 打开两个 URL 或标题相同的标签,内容保持不同;切换到其中一个再离开网页,确认工具只读取最后追踪的精确标签。
- 测试 SPA 动态内容,确认读取当前可见 DOM,不包含
display: none的预载或 Reader 隐藏内容。 - 测试 Canvas、跨域 iframe 和图片页面,确认返回明确的不可提取或部分提取状态。
- 将“网页工具最大返回字符数”留空或设为
0,确认不截断;填写正整数后确认truncated标记和长度正确。
文件导航与 Diff
- 用
openFile测试含空格和中文的 Windows 路径。 - 测试指定行、文本范围、仓库外路径拒绝和不存在文件。
- 启动不预批准
Edit的 Claude Code,修改现有文件。 - 确认 Obsidian 出现可编辑 Diff;拒绝后文件不变。
- 再次修改,在右侧更改候选文本后接受,确认只写入最终文本一次。
- 关闭 Diff 标签,确认 Claude 收到
DIFF_REJECTED。 - 并发打开两个 Diff 并逆序处理。
- 测试新文件和源文件审核期间被外部修改的冲突。
- 使用
acceptEdits重试,确认直接写入且不额外弹 Diff。
生命周期
- 保持 Obsidian 开启并重启 Claude Code。
- 保持 Claude Code 关闭并重启 Obsidian。
- 制造首选端口冲突,确认 lock、MCP URL 和实际端口一致。
- 禁用插件,确认服务和 lock 消失,未完成 Diff 被拒绝。
- 重新启用插件,确认 MCP 自动修复注册。
每项记录通过/失败、截图、脱敏日志和复现步骤。Windows 实机完成前不要修改测试报告中的未验证声明。