Files

40 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 标准 JavaScript 会话编排发现
## Requirements
- 提供 `@ccweb/session`,支持 `getCurrentConversationId`、`createConversation`、`sendMessage`、`selectSemanticBranch`、`getLastMessage`。
- 脚本位于当前来源对话 cwd 下 `.ccweb/scripts/`,只允许 `.js`,目录使用 ESM。
- MCP 提供 create/write/run/get_run/stop 以及 `ccweb_javascript_session_api` manifest。
- 异步脚本通过 `runId` 查询;主动 stop 不插入来源消息;异常结束向来源对话插入通知。
## Research Findings
- `lib/ccweb-mcp-server.js` 已有 HTTP MCP 客户端,使用 `CC_WEB_MCP_URL`、`CC_WEB_MCP_TOKEN`、`CC_WEB_SOURCE_SESSION_ID`。
- `server.js` 的 `/api/internal/mcp` 会鉴权后调用 `callInternalMcpTool`。
- 现有会话入口为 `createMcpConversation`、`sendCrossConversationMessage` 和 `handleCodexAppSteerMessage`。
- Codex App 完成路径 `handleCodexAppTurnComplete` 会持久化 assistant 消息并完成跨会话回复;需要复用其完成点实现脚本等待。
- `killProcess` 与 `handleCodexAppAbortSession` 可作为停止行为的参考,但脚本子进程需要独立 PID/日志/状态管理。
- codebase-memory 项目 `home-cc-web` 索引状态为 ready(7740 nodes/17835 edges)。
## Technical Decisions
| Decision | Rationale |
|----------|-----------|
| 脚本包通过本地 `node_modules/@ccweb/session` 注入 | Node ESM 对裸包名解析稳定,不依赖不可靠的 `NODE_PATH` |
| 脚本运行凭据按 runId 绑定 | 避免把全局内部 MCP token 长期暴露给用户脚本 |
| 日志追加落盘,get_run 分段读取 | 支持用户确认的无限输出,同时保护 MCP 响应大小 |
| 判断器一次性只读 Codex App turn | 不污染目标会话、工作区和普通 MCP 能力 |
## Issues Encountered
| Issue | Resolution |
|-------|------------|
| 根目录计划属于此前 hooks 验证任务 | 使用 scoped plan,保留原有计划文件 |
## Resources
- `server.js`
- `lib/ccweb-mcp-server.js`
- `lib/codex-app-server-client.js`
- `.codex/skills/planning-with-files/`