Replies: 3 comments 1 reply
|
这个 Windows 路径问题我们也踩过。dsh 的 workspace 路径处理在 Windows 上确实是重灾区- 含中文/特殊字符路径会触发 0x00 截断和 ENOENT(官方讨论区 #151/#396 也有类似反馈),我们把这类坑整理进了手册第 12 章「已知不足与边界」: https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/12-limitations.md 临时 workaround 建议(按优先级):
如果方便,把完整报错日志贴出来,我们手册第 8 章(工具与上下文/安全模型)的排查思路也许能帮上。 |
|
感谢。我重新回读了两次原始 Session 的工具记录。这个复现和 #151/#396 应该不是同一类:工作区是纯英文路径 两次失败都没有重试或升级权限,完整报错如下: 相对路径写入外部新增子目录工作目录: Set-Content -LiteralPath ".\dsh-torture-fixture\state\relative-nested.txt" -Value "RELATIVE_NESTED" -Encoding utf8绝对路径写入同一个外部新增子目录工作目录: Set-Content -LiteralPath "D:\harness\dsh-torture-fixture\state\absolute-nested.txt" -Value "ABSOLUTE_NESTED" -Encoding utf8同一轮里的根目录控制组可以写入: Set-Content -LiteralPath "D:\harness\absolute-root.txt" -Value "ABSOLUTE_ROOT" -Encoding utf8另一个新 Session 由 Agent 自己创建子目录再写入也成功: New-Item -ItemType Directory -Path ".\agent-created-child" -Force | Out-Null; Set-Content -LiteralPath ".\agent-created-child\inside.txt" -Value "AGENT_CREATED_CHILD" -Encoding utf8我又做了一次只读 ACL 对照,结果仍然一致: 因此我目前仍倾向于把它看成工作区授权完成后,外部新增子目录没有补到 capability SID 的问题,而不是 Windows 路径解码问题。放宽 sandbox 可以绕过拒绝,但会改变这里要验证的 workspace-write 条件。 |
|
已发布完整根因报告:grantWrite 的 exact-ACE skip 使 workspace capability ACE 一次性生效,之后外部创建/移入的子目录(Windows 移动保留源 DACL)永远不会被补授。rc.6 发布包实测复现(icacls 对照 + 受限写入拒绝 + 补授恢复)、源码定位与修复建议(provision 时增量补授)见 #423 。 |
Uh oh!
There was an error while loading. Please reload this page.
我在 Windows 上测试 Agent 工具时遇到一个比较稳定的问题。
把
D:\harness连接为工作区并执行过一次工具后,如果其他本地进程再在工作区里创建子目录,Harness 后续无法在这个子目录中写文件。直接写工作区根目录正常,由 Agent 自己新建子目录再写文件也正常。复现方式:
D:\harness连接为工作区,并执行一次工作区可写模式的工具。D:\harness\late-child。结果会提示:
同一个 session 写入
D:\harness\test.txt可以成功。使用相对路径和绝对路径写入late-child都会失败。我用
icacls对比了一下:工作区根目录带有 Harness 的 workspace capability SID;外部后来创建的late-child没有;Agent 自己创建的子目录可以正常继承这个 SID。我又看了
grantWrite的实现。工作区根目录已经存在相同 ACE 时会跳过再次应用。所以我怀疑,首次授权传播完成后,外部新增且没有继承 capability SID 的子目录,在后续 session 中也不会被补上。预期是工作区内后来创建的正常子目录,在后续工作区可写 session 中仍然可以写入。
这里是否需要在 workspace provision 时重新检查这类子目录,或者在其他层做一次 ACL 补齐?
测试环境:Windows,commit
47f943859bef60e4160492346772ded9b24f765a,Nodev24.15.0,pnpm11.19.0。可能和 #81 有关,但我还不能确定是不是同一个原因。
All reactions