40 lines
2.0 KiB
Markdown
40 lines
2.0 KiB
Markdown
# 标准 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/`
|