背景
在当前 main@22e77d63b7c23b13e14d47f166e9b295b21c4b97 上复核 OpenPI 体检报告。构建与测试保持通过,但确认存在两项发布制品完整性问题和三项低风险质量债。
本 Issue 只记录已复现的问题;Sessions 扩展使用 .js 相对导入后缀仅是局部历史风格,当前运行、类型检查和测试均正常,不作为缺陷处理。
P1:npm 发布制品中的文档引用不完整
1. README 相对链接在安装包内没有目标
package.json#files 不包含 docs/,但 README 仍有:
docs/design/WORKFLOW_INVOCATION_GRAPH.md
docs/design/
复现:
npm pack --dry-run --json
实际 packlist 包含 README.md,但不包含任何 docs/ 文件。GitHub 仓库页面可解析这些链接,安装后的 npm 制品本地却无法解析。
建议: README 改为指向 GitHub main 的绝对链接。除非明确希望发布整套研究文档,否则不建议为了两处链接扩大 npm 制品。
2. Subagent Skill 引用被 packlist 排除的文档
skills/subagents/SKILL.md:13 引用:
extensions/subagents/docs/agent-types.md
仓库中目标存在,但 package.json#files 的 !extensions/*/docs 会将其从安装包排除。实测 packlist 包含 Skill,却不包含目标文档。
这会直接破坏安装后 Skill 的渐进披露链路。
建议: 将用户/Agent 需要读取的 agent-types 参考文档移到 skills/subagents/(例如 REFERENCE.md)并使用同目录相对链接;内部设计笔记继续留在扩展目录且不发布。
P2:CRLF fenced code block 被误判为未闭合
extensions/user-input-fold/index.ts 使用 markdown.split("\n"),因此 CRLF 行保留结尾 \r;当前:
const FENCE_CLOSE = /^ {0,3}`{3,}[ \t]*$/;
无法匹配以 CRLF 结尾的关闭围栏行。
同一条长 fenced message 的实测:
LF: fence count = 2,保留闭合 fence
CRLF: fence count = 1,走 unterminated-fence prose fallback
结果是折叠后的展示可能留下未闭合 Markdown fence。模型上下文和持久历史不受影响,但 TUI 投影不正确。
建议: 在行解析边界统一处理 CRLF,或让关闭 fence 显式接受尾部 \r;补一条包含长代码围栏的 CRLF 回归测试,要求 fence 成对且折叠结构与 LF 等价。
P2:Effect TypeScript 插件仍报告 12 条 warning
bun run check 当前退出码为 0,Biome lint 也干净;但 bun run typecheck 会在 extensions/file-search/src/binaries.ts 输出 12 条 Effect warning:
- 11 条
TS377023 globalErrorInEffectFailure
- 1 条
TS377033 multipleEffectProvide
因此应准确描述为“Effect TypeScript 插件 warning”,不是 Biome lint failure。
建议: 使用带 tag 的领域错误并合并 Layer provide;若某条确实需要保留,使用最窄范围、带原因的显式抑制,不要全局关闭规则。
P2:文档和模型提示引用不存在的 /handoff
已确认以下位置把 /handoff 描述成可用入口:
SETUP.md:74
extensions/context-pivot/index.ts 的低于阈值提示
context_pivot 工具说明
OpenPI 没有 /handoff 命令;可选的 pi-intercom 提供的是 pi-intercom Skill、intercom 工具和 /intercom-id,也没有 /handoff。
建议: 改为真实路径:同一会话阶段切换用 /context-pivot,会话浏览/切换用 /sessions,需要跨顶层 Session 传递上下文时使用可选 pi-intercom。不要暗示一个不存在的 Slash Command。
验收标准
背景
在当前
main@22e77d63b7c23b13e14d47f166e9b295b21c4b97上复核 OpenPI 体检报告。构建与测试保持通过,但确认存在两项发布制品完整性问题和三项低风险质量债。本 Issue 只记录已复现的问题;Sessions 扩展使用
.js相对导入后缀仅是局部历史风格,当前运行、类型检查和测试均正常,不作为缺陷处理。P1:npm 发布制品中的文档引用不完整
1. README 相对链接在安装包内没有目标
package.json#files不包含docs/,但 README 仍有:docs/design/WORKFLOW_INVOCATION_GRAPH.mddocs/design/复现:
实际 packlist 包含
README.md,但不包含任何docs/文件。GitHub 仓库页面可解析这些链接,安装后的 npm 制品本地却无法解析。建议: README 改为指向 GitHub
main的绝对链接。除非明确希望发布整套研究文档,否则不建议为了两处链接扩大 npm 制品。2. Subagent Skill 引用被 packlist 排除的文档
skills/subagents/SKILL.md:13引用:仓库中目标存在,但
package.json#files的!extensions/*/docs会将其从安装包排除。实测 packlist 包含 Skill,却不包含目标文档。这会直接破坏安装后 Skill 的渐进披露链路。
建议: 将用户/Agent 需要读取的 agent-types 参考文档移到
skills/subagents/(例如REFERENCE.md)并使用同目录相对链接;内部设计笔记继续留在扩展目录且不发布。P2:CRLF fenced code block 被误判为未闭合
extensions/user-input-fold/index.ts使用markdown.split("\n"),因此 CRLF 行保留结尾\r;当前:无法匹配以 CRLF 结尾的关闭围栏行。
同一条长 fenced message 的实测:
结果是折叠后的展示可能留下未闭合 Markdown fence。模型上下文和持久历史不受影响,但 TUI 投影不正确。
建议: 在行解析边界统一处理 CRLF,或让关闭 fence 显式接受尾部
\r;补一条包含长代码围栏的 CRLF 回归测试,要求 fence 成对且折叠结构与 LF 等价。P2:Effect TypeScript 插件仍报告 12 条 warning
bun run check当前退出码为 0,Biome lint 也干净;但bun run typecheck会在extensions/file-search/src/binaries.ts输出 12 条 Effect warning:TS377023 globalErrorInEffectFailureTS377033 multipleEffectProvide因此应准确描述为“Effect TypeScript 插件 warning”,不是 Biome lint failure。
建议: 使用带 tag 的领域错误并合并 Layer provide;若某条确实需要保留,使用最窄范围、带原因的显式抑制,不要全局关闭规则。
P2:文档和模型提示引用不存在的
/handoff已确认以下位置把
/handoff描述成可用入口:SETUP.md:74extensions/context-pivot/index.ts的低于阈值提示context_pivot工具说明OpenPI 没有
/handoff命令;可选的 pi-intercom 提供的是pi-intercomSkill、intercom工具和/intercom-id,也没有/handoff。建议: 改为真实路径:同一会话阶段切换用
/context-pivot,会话浏览/切换用/sessions,需要跨顶层 Session 传递上下文时使用可选 pi-intercom。不要暗示一个不存在的 Slash Command。验收标准
npm pack --dry-run后,README 和已发布 Skills 的仓库内相对链接均能在制品中解析,或已改成稳定的 GitHub 绝对链接bun run typecheck不再输出上述 12 条 Effect warning,或每个保留项都有窄范围书面理由/handoffbun run check与bun run test通过