mirror of
https://github.com/shareAI-lab/analysis_claude_code.git
synced 2026-06-21 04:33:36 +08:00
fix: align TodoWrite memory model with task system docs
This commit is contained in:
@@ -32,19 +32,21 @@ Agent は作業を開始する。3 つのファイルをリネーム、テスト
|
||||
|
||||
## 仕組み
|
||||
|
||||
**todo_write ツール**、ステータス付きのリストを受け取り、`.tasks/current_todos.json` に永続化(教育版は観察用にディスクに書き込む)、端末に進捗を表示する:
|
||||
**todo_write ツール**は、ステータス付きのリストを受け取り、現在のプロセスメモリに保持し、端末に進捗を表示する:
|
||||
|
||||
```python
|
||||
CURRENT_TODOS: list[dict] = []
|
||||
|
||||
def run_todo_write(todos: list) -> str:
|
||||
tasks_file = TASKS_DIR / "current_todos.json"
|
||||
tasks_file.write_text(json.dumps(todos, indent=2, ensure_ascii=False))
|
||||
global CURRENT_TODOS
|
||||
CURRENT_TODOS = todos
|
||||
|
||||
lines = ["\n## Current Tasks"]
|
||||
for t in todos:
|
||||
for t in CURRENT_TODOS:
|
||||
icon = {"pending": " ", "in_progress": "▸", "completed": "✓"}[t["status"]]
|
||||
lines.append(f" [{icon}] {t['content']}")
|
||||
print("\n".join(lines))
|
||||
return f"Updated {len(todos)} tasks"
|
||||
return f"Updated {len(CURRENT_TODOS)} tasks"
|
||||
```
|
||||
|
||||
ツール定義は他の 5 つと一緒にディスパッチマップに追加される:
|
||||
@@ -135,7 +137,7 @@ Agent は計画できるようになった。しかしタスクが大きすぎ
|
||||
|
||||
CC には二つのタスクシステムが共存している(`tasks.ts:133-139`):
|
||||
|
||||
- **TodoWrite(V1)**:シンプルなリストツール、データはメモリ AppState で管理(`TodoWriteTool.ts:65-103`)。教育版は観察用に `.tasks/current_todos.json` に書き込むが、実際の V1 はディスクに書き込まない
|
||||
- **TodoWrite(V1)**:シンプルなリストツール、データはメモリ AppState で管理(`TodoWriteTool.ts:65-103`)。教育版もプロセスメモリに保持し、終了時に消える
|
||||
- **Task System(V2 = s12)**:ファイル永続化、依存グラフ、並行ロック、ownership
|
||||
|
||||
切り替えは `isTodoV2Enabled()` で制御される。現在のソースコードの実装:対話型セッションでは V2 がデフォルトで有効、非対話型セッション(SDK)では V1 がデフォルトで有効。`CLAUDE_CODE_ENABLE_TASKS` 環境変数を設定するとセッション種別に関わらず V2 が強制有効になる。ソースコメント「Force-enable tasks in non-interactive mode」は環境変数パスの用途を説明しており、デフォルト分岐の戻り値のセマンティクスとは異なるため注意。
|
||||
|
||||
Reference in New Issue
Block a user