sync: WIN10-I9-64G 2026-07-20

This commit is contained in:
Myfro9
2026-07-20 18:14:49 +08:00
parent bceafcd58c
commit 2ef32a9dcc
7 changed files with 502 additions and 22 deletions
+36 -22
View File
@@ -7,31 +7,38 @@ description: Use the LangGraph plan-review workflow from the current Claude Code
Use this skill to run the LangGraph plan-review workflow. All scripts are bundled under the skill's own `scripts\` directory (`C:\Users\bowei\.claude\skills\langgraph-plan-review\scripts\`) — no dependency on `E:\LangGraph_Design\lab00`.
## ⚠️ 强制执行规则(MANDATORY — read first)
## 运行方式:进程内驱动,无 dev server(2026-07 起)
**plan-review 工作流必须、且只能通过 `langgraph dev` 服务器来驱动。**
**本 skill 已去掉 `langgraph dev` 服务器**。工作流由进程内 runner **`scripts\clean_run.py`** 直接驱动:
它 `build_workflow()` 编译图、用 **SqliteSaver**(`scripts\.plan_review_state.sqlite`)做跨调用持久化、
自己处理 `interrupt`/`Command(resume=...)`。不再需要 `manage_dev_server.ps1` / `run_langgraph.ps1` /
`run_workflow.py`(这些是旧的 dev-server 路径,保留仅作参考,勿再使用)。
- ✅ **唯一允许的入口**:`run_langgraph.ps1` → `run_workflow.py`。后者是一个**纯 REST/SDK 客户端**
(`langgraph_sdk.get_sync_client(url=http://127.0.0.1:2024)`),每次 start/resume 都把 run
投递到 `langgraph dev` 服务器执行。先用 `manage_dev_server.ps1 start` 把服务器拉起。
这样 LangGraph Studio 才能实时追踪线程、节点、中断与状态。
- **入口**:用 `langgraph` conda 环境的 python 跑 `clean_run.py`:
```powershell
$PY = "C:\Users\bowei\.conda\envs\langgraph\python.exe"
$RUN = "C:\Users\bowei\.claude\skills\langgraph-plan-review\scripts\clean_run.py"
# 首次(到 write_plan 中断):
& $PY $RUN --task-id 10 --work-dir "<work_dir>" --notes-dir Notes --prompt "<原始请求>"
# resume(写完/改完 Task10.md 后;resume 值 base64(JSON)):
$resume = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('true'))
& $PY $RUN --task-id 10 --work-dir "<work_dir>" --notes-dir Notes --resume-b64 $resume --codex-review-command-b64 $CMD --timeout 900
```
每次调用推进到下一个 `interrupt` 或结束,打印一行 JSON:`{"status":"waiting","action_required":{...}}`
或 `{"status":"done","has_serious_issue":...}`。`action_required` 的处理同下(write_plan / decide /
revise / write_rejection),resume 值:`write_plan`/`revise`/`write_rejection` 用 `true`;`decide` 用
`{"accepts":true}` 或 `{"accepts":false,"reason":"..."}`。
- 🚫 **绝对禁止**:直接 `import` / 在进程内运行本 skill 的图定义模块
(`scripts\graph.py`、`scripts\workflow.py`、`scripts\agents.py`)来跑工作流。包括但不限于:
- `python -c "from graph import ...; graph.invoke(...)"` 或 `.stream(...)`
- 写临时脚本 build 编译图后在进程内调用
- 任何绕过 `http://127.0.0.1:2024` 的「就地执行」方式
- **codex 评审的两个必备条件**(本次踩坑记录):
1. **codex CLI 要足够新**。config.toml 若配了较新模型(如 `gpt-5.6-sol`),旧 codex 会返回 400
`requires a newer version of Codex`。升级:`npm i -g @openai/codex@latest`(≥0.144.5 实测可用)。
2. **codex 子进程要能到 chatgpt.com**。`clean_run.py` 会自动读 Windows 系统代理(HKCU Internet
Settings 的 `ProxyServer`)设进 `HTTP(S)_PROXY`,让 codex 走代理;也可用 `PLAN_REVIEW_PROXY` 覆盖。
3. **codex 超时**:`review_task.py` 的内层 codex 超时取 argv[5](默认 300s,评审常不够)。用
`--codex-review-command-b64` 传一条**末尾带超时秒数**的命令(见 Workflow),并把 `--timeout` 设一致。
这类调用在 dev server 进程**之外**运行,Studio 追踪不到状态,**一律不允许**——
即使只是想「快速验证一个节点」也不行。
- ℹ️ **例外说明**:`review_task.py`(Codex 评审 shim)会直接调 `codex`,这是**合规的**——
它是由运行在 dev server 内的图通过 `codex_review_command` 调起的评审步骤,不是绕过
dev server 去驱动工作流本身。区别在于:驱动图 = 必须走 dev server;图内部调用的工具 = 正常。
- 🛠 **改了 `graph.py`/`workflow.py`/`agents.py` 后**:dev server 内存里仍是旧代码。先
`manage_dev_server.ps1 stop` 再 `start`(或让 `--reload` 生效),再经 `run_langgraph.ps1`
重跑,使改动在被追踪的运行中生效。
- **改了 `workflow.py`/`agents.py`/`clean_run.py` 后**:无 dev server 缓存,下次 `clean_run.py` 直接生效。
若图结构改到与旧 checkpoint 不兼容,删 `scripts\.plan_review_state.sqlite` 重新开始该 thread。
## Pre-flight: Environment Setup
@@ -75,7 +82,10 @@ conda run -n langgraph langgraph --version
- The workflow uses LangGraph `interrupt()` and persists state via the langgraph dev server.
- Each `run_langgraph.ps1` invocation advances the graph to the next interrupt or completion. Use `-Resume` to continue the same thread after completing the requested Claude Code action.
## Dev Server Lifecycle
## Dev Server Lifecycle ⛔ DEPRECATED
> **已弃用(2026-07 起)。** 本 skill 现用 `clean_run.py` 进程内驱动,**不再需要 dev server**。
> 下面这套 `manage_dev_server.ps1` / `langgraph dev` / Studio 仅作历史参考,正常流程不要用。
The `langgraph dev` server must be running for the entire duration of a workflow session.
Use `manage_dev_server.ps1` to start it before the first `run_langgraph.ps1` call and stop it after the workflow completes.
@@ -99,6 +109,10 @@ C:\Users\bowei\.claude\skills\langgraph-plan-review\scripts\manage_dev_server.ps
## Workflow
> **注意**:下列步骤是**旧的 dev-server 流程**(`manage_dev_server.ps1` + `run_langgraph.ps1`)。
> 正常请用上方"**运行方式:进程内驱动**"节的 `clean_run.py`。以下 action 语义(write_plan / decide /
> revise / write_rejection 及其 resume 值)两种流程通用,可参考。
1. Determine `TaskId` from the user. If missing, ask for it.
2. Start the dev server (idempotent):
```powershell