Skip to content

交付物(图表 chart.html)在 better-sidebar 里打开报 ENOENT / realpath '/capital-analysis/...',官方 sidebar 则正常 #788

Description

@v587d

提交前确认 / Pre-submit checklist

  • 我已搜索现有 issue,确认没有完全相同的条目(只有完全一致才算重复)| I searched existing issues and confirmed there is no exact duplicate (only exactly identical issues count as duplicates)
  • 我已确认使用最新版本 dsh-better-sidebar / I confirmed I am on the latest dsh-better-sidebar version

运行环境 / Environment

DSH Web(浏览器访问)/ DSH Web (browser access)

DSH Web 版本 + 浏览器 / DSH Web version + Browser

DSH 0.1.7-rc2 Chrome 153 (windows)

Desktop 实现仓库 / Desktop repo(源头 / upstream)

No response

插件版本 / Plugin version

@latest

类别 / Category

🐛 Bug(功能异常 / Something is broken)

描述 / Description

维护者你好,首先很喜欢 dsh-better-sidebar,交互体验比默认的好不少,感谢付出 🙏。接入我们项目(capital-generation,一个跑在 DSH
上的数据/图表插件)时遇到一个打开图表的兼容问题,复盘后定位到是交付物路径解析口径的差异,想反馈一下,麻烦看看是否方便适配。

现象

  • 图表出图后,从会话收尾的"本轮交付"行点开那张自包含 chart.html:
    • 用官方 document preview → 正常渲染;
    • 用 better-sidebar → 右侧空白,并返回:
      {"ok":false,"error":{"code":"fs-error",
      "message":"cannot resolve target "/capital-analysis/charts/ch_xxx/chart.html":
      ENOENT: no such file or directory, realpath '/capital-analysis/charts/ch_xxx/chart.html'"}}
    • 同一张图,直接用浏览器打开磁盘上的文件也正常(说明文件确实存在、内容没问题)。

根因(我这边读代码后的判断,仅供参考)

注意报错里那个前导 /。我们的交付事件(官方 deliverables/presented)里 files[].path 是工作区相对路径
capital-analysis/charts//chart.html——这是官方契约要求的:绝对路径会被「Presented file has no verified Host
path」这一关拒绝,所以我们也没法改成绝对路径发出去。

官方 sidebar 会拿产出会话的 session.cwd 作为 workspace root 去 join 这个相对路径,落到真实位置 /capital-analysis/.../chart.html。而 better-sidebar
似乎是拿 /(或自身进程 cwd)当 root 去 realpath,于是解析成 /capital-analysis/... → ENOENT。

另外点击被路由到了 #/capital-charts/,但我们插件其实没有这个页面:我们只注册了①一个 tool.call.toolview['render_chart'] 内联卡片,②一个序列数据旁路
/capital-charts/.json(返回的是 series.json 且接了平台认证围栏 connection.requestRejection,非受信 origin 会 401/403)。呈现目标应该是那个自包含的
chart.html,不是去取数据旁路。

建议的修法(哪一处更合适由你定)

  1. 解析交付物路径时,走和官方一致口径:workspaceFiles.stat({ sessionId, workspaceRoot: session.cwd }),以产出会话的 cwd 为根 join 相对路径,而不是
    /。这是最关键的一点。
  2. 点开 .html 交付物时,按自包含 HTML 渲染(官方那种 script-enabled iframe 即可),不要路由到 #/capital-charts/。
  3. 如果你们的定位就是"只服务本地同机文件",那么至少在第 1 点补齐 workspace-root 解析,也能覆盖大多数插件按官方契约发的相对路径。

复现/自查

  • 相对路径 + 以 / 为 root join → 必然多出前导 /;本机 / 下并无 capital-analysis 目录,可对照排查。

如果需要,我可以提供我们这侧交付事件的确切载荷样例、render_chart 相关源码位置,或者一起验证修复效果。再次感谢,辛苦了!


要我再补一版更短的、或者附一段"我们侧载荷长这样"的 JSON 样例给对方,随时说。

补充信息 / Additional context

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions