From cfe5cc6d3f7814aaa813ba022b7de104cb2c7bbd Mon Sep 17 00:00:00 2001 From: Val-sss <154882199@qq.com> Date: Wed, 6 May 2026 18:57:20 +0800 Subject: [PATCH] docs: update STATUS.md with current progress - 67 bench tasks (Python/Go/TS) added - CLI file structure updated (commands/ split) - TODO list updated with completed items Co-Authored-By: Claude Opus 4.6 (1M context) --- STATUS.md | 31 +++++--- .../t33_workflow_engine/workflow.py | 75 ------------------- .../{t57_user_api => t51_user_api}/api.py | 0 .../{t57_user_api => t51_user_api}/client.py | 0 .../{t57_user_api => t51_user_api}/models.py | 0 .../test_user_api.py | 0 .../{t58_order_api => t52_order_api}/api.py | 0 .../client.py | 0 .../models.py | 0 .../test_order_api.py | 0 .../api.py | 0 .../client.py | 0 .../models.py | 0 .../test_notification_api.py | 0 .../go.mod | 0 .../handler.go | 0 .../middleware.go | 0 .../middleware_test.go | 0 .../router.go | 0 .../go.mod | 0 .../pool.go | 0 .../pool_test.go | 0 .../task.go | 0 .../worker.go | 0 .../config.go | 0 .../config_test.go | 0 .../{t59_go_config => t56_go_config}/go.mod | 0 .../merger.go | 0 .../watcher.go | 0 .../go.mod | 0 .../log.go | 0 .../raft_log_test.go | 0 .../replicator.go | 0 .../snapshot.go | 0 .../state.go | 0 .../tests/bench_tasks/t61_go_scheduler/go.mod | 3 - 36 files changed, 19 insertions(+), 90 deletions(-) delete mode 100644 kaiwu/tests/bench_tasks/t33_workflow_engine/workflow.py rename kaiwu/tests/bench_tasks/{t57_user_api => t51_user_api}/api.py (100%) rename kaiwu/tests/bench_tasks/{t57_user_api => t51_user_api}/client.py (100%) rename kaiwu/tests/bench_tasks/{t57_user_api => t51_user_api}/models.py (100%) rename kaiwu/tests/bench_tasks/{t57_user_api => t51_user_api}/test_user_api.py (100%) rename kaiwu/tests/bench_tasks/{t58_order_api => t52_order_api}/api.py (100%) rename kaiwu/tests/bench_tasks/{t58_order_api => t52_order_api}/client.py (100%) rename kaiwu/tests/bench_tasks/{t58_order_api => t52_order_api}/models.py (100%) rename kaiwu/tests/bench_tasks/{t58_order_api => t52_order_api}/test_order_api.py (100%) rename kaiwu/tests/bench_tasks/{t59_notification_api => t53_notification_api}/api.py (100%) rename kaiwu/tests/bench_tasks/{t59_notification_api => t53_notification_api}/client.py (100%) rename kaiwu/tests/bench_tasks/{t59_notification_api => t53_notification_api}/models.py (100%) rename kaiwu/tests/bench_tasks/{t59_notification_api => t53_notification_api}/test_notification_api.py (100%) rename kaiwu/tests/bench_tasks/{t57_go_middleware => t54_go_middleware}/go.mod (100%) rename kaiwu/tests/bench_tasks/{t57_go_middleware => t54_go_middleware}/handler.go (100%) rename kaiwu/tests/bench_tasks/{t57_go_middleware => t54_go_middleware}/middleware.go (100%) rename kaiwu/tests/bench_tasks/{t57_go_middleware => t54_go_middleware}/middleware_test.go (100%) rename kaiwu/tests/bench_tasks/{t57_go_middleware => t54_go_middleware}/router.go (100%) rename kaiwu/tests/bench_tasks/{t58_go_channel_pool => t55_go_channel_pool}/go.mod (100%) rename kaiwu/tests/bench_tasks/{t58_go_channel_pool => t55_go_channel_pool}/pool.go (100%) rename kaiwu/tests/bench_tasks/{t58_go_channel_pool => t55_go_channel_pool}/pool_test.go (100%) rename kaiwu/tests/bench_tasks/{t58_go_channel_pool => t55_go_channel_pool}/task.go (100%) rename kaiwu/tests/bench_tasks/{t58_go_channel_pool => t55_go_channel_pool}/worker.go (100%) rename kaiwu/tests/bench_tasks/{t59_go_config => t56_go_config}/config.go (100%) rename kaiwu/tests/bench_tasks/{t59_go_config => t56_go_config}/config_test.go (100%) rename kaiwu/tests/bench_tasks/{t59_go_config => t56_go_config}/go.mod (100%) rename kaiwu/tests/bench_tasks/{t59_go_config => t56_go_config}/merger.go (100%) rename kaiwu/tests/bench_tasks/{t59_go_config => t56_go_config}/watcher.go (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/go.mod (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/log.go (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/raft_log_test.go (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/replicator.go (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/snapshot.go (100%) rename kaiwu/tests/bench_tasks/{t60_go_raft_log => t57_go_raft_log}/state.go (100%) delete mode 100644 kaiwu/tests/bench_tasks/t61_go_scheduler/go.mod diff --git a/STATUS.md b/STATUS.md index 5908347..0d5009a 100644 --- a/STATUS.md +++ b/STATUS.md @@ -9,7 +9,8 @@ ## Current: v1.5.0 (2026-05-06) -451/451 tests green. Architecture upgrade: isolated search + cross-file contracts + PENCIL compression. +451/451 tests green + 67个bench tasks(多语言:Python/Go/TypeScript)。 +架构升级:隔离搜索 + 跨文件契约 + PENCIL压缩 + CLI拆分 + 注释中文化。 ### v1.5.0 — Isolated Search + Cross-File Contracts @@ -140,9 +141,14 @@ kwcode/ ├── STATUS.md └── kaiwu/ ├── cli/ - │ ├── main.py # REPL + EventBus rendering + spinner + summary - │ ├── status_bar.py # Status bar (4-tier adaptive) - │ └── onboarding.py # First-run onboarding + │ ├── main.py # 入口(173行)+ Typer路由 + │ ├── commands/task.py # run/chat/vision/multi-task命令 + │ ├── commands/expert.py # expert list/info/export/install + │ ├── commands/config.py # init/api/serve/setup-search + │ ├── formatters.py # Rich输出格式化 + │ ├── repl.py # REPL交互循环 + │ ├── status_bar.py # 状态栏(4档自适应) + │ └── onboarding.py # 首次启动引导 ├── core/ │ ├── event_bus.py # Unified event bus (append-only + replay) │ ├── cognitive_gate.py # Diminishing returns detection @@ -181,20 +187,21 @@ kwcode/ ├── mcp/ # MCP Router ├── llm/ # Ollama + llama.cpp backends ├── tools/ # 5 deterministic tools + ToolGateway - └── tests/ # 451 tests + └── tests/ # 451 unit tests + 67 bench tasks (Python/Go/TS) ``` --- ## TODO -1. ~~CLI refactor: split main.py (1861 lines) into cli/commands/~~ ✅ v1.5.0 -2. ~~Comments: unify to Chinese across all modules~~ ✅ v1.5.0 -3. ~~Expert-level EventBus emit (file reads, function locations, test results)~~ ✅ v1.5.0 -4. SQLite cross-session queries -5. Full expert benchmark (12 presets) -6. pip publish to PyPI -7. install.ps1 / install.sh one-click install +1. ~~CLI拆分:main.py 1861→173行~~ ✅ v1.5.0 +2. ~~注释统一中文~~ ✅ v1.5.0 +3. ~~专家细粒度EventBus emit~~ ✅ v1.5.0 +4. ~~bench tasks多语言覆盖(67题 Python/Go/TS)~~ ✅ v1.5.0 +5. SQLite跨session查询 +6. pip publish到PyPI(v1.5.0) +7. install.ps1 / install.sh一键安装 +8. SWE-bench评测(用评测VPS跑) ## Known Issues diff --git a/kaiwu/tests/bench_tasks/t33_workflow_engine/workflow.py b/kaiwu/tests/bench_tasks/t33_workflow_engine/workflow.py deleted file mode 100644 index e987fd8..0000000 --- a/kaiwu/tests/bench_tasks/t33_workflow_engine/workflow.py +++ /dev/null @@ -1,75 +0,0 @@ -"""Workflow definition: nodes, edges, and parallel gateway logic.""" - -from __future__ import annotations -from dataclasses import dataclass, field -from typing import List, Dict, Optional, Set -from enum import Enum - - -class NodeType(Enum): - START = "start" - END = "end" - TASK = "task" - PARALLEL_SPLIT = "parallel_split" # fork: one in, many out - PARALLEL_JOIN = "parallel_join" # merge: many in, one out - - -@dataclass -class Node: - node_id: str - node_type: NodeType - name: str = "" - - -@dataclass -class Edge: - edge_id: str - source_id: str - target_id: str - condition: Optional[str] = None # None means unconditional - - -class WorkflowDefinition: - """Immutable workflow graph.""" - - def __init__(self, workflow_id: str): - self.workflow_id = workflow_id - self._nodes: Dict[str, Node] = {} - self._edges: List[Edge] = [] - - def add_node(self, node: Node) -> None: - self._nodes[node.node_id] = node - - def add_edge(self, edge: Edge) -> None: - self._edges.append(edge) - - def get_node(self, node_id: str) -> Node: - return self._nodes[node_id] - - def outgoing_edges(self, node_id: str) -> List[Edge]: - return [e for e in self._edges if e.source_id == node_id] - - def incoming_edges(self, node_id: str) -> List[Edge]: - return [e for e in self._edges if e.target_id == node_id] - - def all_nodes(self) -> List[Node]: - return list(self._nodes.values()) - - def start_node(self) -> Node: - for node in self._nodes.values(): - if node.node_type == NodeType.START: - return node - raise ValueError("No START node defined") - - def can_join(self, join_node_id: str, completed: Set[str], skipped: Set[str]) -> bool: - """ - Return True when all branches feeding into a PARALLEL_JOIN have - either completed or been skipped. - - BUG: only checks `completed`; ignores `skipped`, so a join that - has one branch completed and one branch skipped will never fire. - """ - incoming = self.incoming_edges(join_node_id) - required_sources = {e.source_id for e in incoming} - # BUG: should be `required_sources <= (completed | skipped)` - return required_sources <= completed diff --git a/kaiwu/tests/bench_tasks/t57_user_api/api.py b/kaiwu/tests/bench_tasks/t51_user_api/api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t57_user_api/api.py rename to kaiwu/tests/bench_tasks/t51_user_api/api.py diff --git a/kaiwu/tests/bench_tasks/t57_user_api/client.py b/kaiwu/tests/bench_tasks/t51_user_api/client.py similarity index 100% rename from kaiwu/tests/bench_tasks/t57_user_api/client.py rename to kaiwu/tests/bench_tasks/t51_user_api/client.py diff --git a/kaiwu/tests/bench_tasks/t57_user_api/models.py b/kaiwu/tests/bench_tasks/t51_user_api/models.py similarity index 100% rename from kaiwu/tests/bench_tasks/t57_user_api/models.py rename to kaiwu/tests/bench_tasks/t51_user_api/models.py diff --git a/kaiwu/tests/bench_tasks/t57_user_api/test_user_api.py b/kaiwu/tests/bench_tasks/t51_user_api/test_user_api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t57_user_api/test_user_api.py rename to kaiwu/tests/bench_tasks/t51_user_api/test_user_api.py diff --git a/kaiwu/tests/bench_tasks/t58_order_api/api.py b/kaiwu/tests/bench_tasks/t52_order_api/api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t58_order_api/api.py rename to kaiwu/tests/bench_tasks/t52_order_api/api.py diff --git a/kaiwu/tests/bench_tasks/t58_order_api/client.py b/kaiwu/tests/bench_tasks/t52_order_api/client.py similarity index 100% rename from kaiwu/tests/bench_tasks/t58_order_api/client.py rename to kaiwu/tests/bench_tasks/t52_order_api/client.py diff --git a/kaiwu/tests/bench_tasks/t58_order_api/models.py b/kaiwu/tests/bench_tasks/t52_order_api/models.py similarity index 100% rename from kaiwu/tests/bench_tasks/t58_order_api/models.py rename to kaiwu/tests/bench_tasks/t52_order_api/models.py diff --git a/kaiwu/tests/bench_tasks/t58_order_api/test_order_api.py b/kaiwu/tests/bench_tasks/t52_order_api/test_order_api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t58_order_api/test_order_api.py rename to kaiwu/tests/bench_tasks/t52_order_api/test_order_api.py diff --git a/kaiwu/tests/bench_tasks/t59_notification_api/api.py b/kaiwu/tests/bench_tasks/t53_notification_api/api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t59_notification_api/api.py rename to kaiwu/tests/bench_tasks/t53_notification_api/api.py diff --git a/kaiwu/tests/bench_tasks/t59_notification_api/client.py b/kaiwu/tests/bench_tasks/t53_notification_api/client.py similarity index 100% rename from kaiwu/tests/bench_tasks/t59_notification_api/client.py rename to kaiwu/tests/bench_tasks/t53_notification_api/client.py diff --git a/kaiwu/tests/bench_tasks/t59_notification_api/models.py b/kaiwu/tests/bench_tasks/t53_notification_api/models.py similarity index 100% rename from kaiwu/tests/bench_tasks/t59_notification_api/models.py rename to kaiwu/tests/bench_tasks/t53_notification_api/models.py diff --git a/kaiwu/tests/bench_tasks/t59_notification_api/test_notification_api.py b/kaiwu/tests/bench_tasks/t53_notification_api/test_notification_api.py similarity index 100% rename from kaiwu/tests/bench_tasks/t59_notification_api/test_notification_api.py rename to kaiwu/tests/bench_tasks/t53_notification_api/test_notification_api.py diff --git a/kaiwu/tests/bench_tasks/t57_go_middleware/go.mod b/kaiwu/tests/bench_tasks/t54_go_middleware/go.mod similarity index 100% rename from kaiwu/tests/bench_tasks/t57_go_middleware/go.mod rename to kaiwu/tests/bench_tasks/t54_go_middleware/go.mod diff --git a/kaiwu/tests/bench_tasks/t57_go_middleware/handler.go b/kaiwu/tests/bench_tasks/t54_go_middleware/handler.go similarity index 100% rename from kaiwu/tests/bench_tasks/t57_go_middleware/handler.go rename to kaiwu/tests/bench_tasks/t54_go_middleware/handler.go diff --git a/kaiwu/tests/bench_tasks/t57_go_middleware/middleware.go b/kaiwu/tests/bench_tasks/t54_go_middleware/middleware.go similarity index 100% rename from kaiwu/tests/bench_tasks/t57_go_middleware/middleware.go rename to kaiwu/tests/bench_tasks/t54_go_middleware/middleware.go diff --git a/kaiwu/tests/bench_tasks/t57_go_middleware/middleware_test.go b/kaiwu/tests/bench_tasks/t54_go_middleware/middleware_test.go similarity index 100% rename from kaiwu/tests/bench_tasks/t57_go_middleware/middleware_test.go rename to kaiwu/tests/bench_tasks/t54_go_middleware/middleware_test.go diff --git a/kaiwu/tests/bench_tasks/t57_go_middleware/router.go b/kaiwu/tests/bench_tasks/t54_go_middleware/router.go similarity index 100% rename from kaiwu/tests/bench_tasks/t57_go_middleware/router.go rename to kaiwu/tests/bench_tasks/t54_go_middleware/router.go diff --git a/kaiwu/tests/bench_tasks/t58_go_channel_pool/go.mod b/kaiwu/tests/bench_tasks/t55_go_channel_pool/go.mod similarity index 100% rename from kaiwu/tests/bench_tasks/t58_go_channel_pool/go.mod rename to kaiwu/tests/bench_tasks/t55_go_channel_pool/go.mod diff --git a/kaiwu/tests/bench_tasks/t58_go_channel_pool/pool.go b/kaiwu/tests/bench_tasks/t55_go_channel_pool/pool.go similarity index 100% rename from kaiwu/tests/bench_tasks/t58_go_channel_pool/pool.go rename to kaiwu/tests/bench_tasks/t55_go_channel_pool/pool.go diff --git a/kaiwu/tests/bench_tasks/t58_go_channel_pool/pool_test.go b/kaiwu/tests/bench_tasks/t55_go_channel_pool/pool_test.go similarity index 100% rename from kaiwu/tests/bench_tasks/t58_go_channel_pool/pool_test.go rename to kaiwu/tests/bench_tasks/t55_go_channel_pool/pool_test.go diff --git a/kaiwu/tests/bench_tasks/t58_go_channel_pool/task.go b/kaiwu/tests/bench_tasks/t55_go_channel_pool/task.go similarity index 100% rename from kaiwu/tests/bench_tasks/t58_go_channel_pool/task.go rename to kaiwu/tests/bench_tasks/t55_go_channel_pool/task.go diff --git a/kaiwu/tests/bench_tasks/t58_go_channel_pool/worker.go b/kaiwu/tests/bench_tasks/t55_go_channel_pool/worker.go similarity index 100% rename from kaiwu/tests/bench_tasks/t58_go_channel_pool/worker.go rename to kaiwu/tests/bench_tasks/t55_go_channel_pool/worker.go diff --git a/kaiwu/tests/bench_tasks/t59_go_config/config.go b/kaiwu/tests/bench_tasks/t56_go_config/config.go similarity index 100% rename from kaiwu/tests/bench_tasks/t59_go_config/config.go rename to kaiwu/tests/bench_tasks/t56_go_config/config.go diff --git a/kaiwu/tests/bench_tasks/t59_go_config/config_test.go b/kaiwu/tests/bench_tasks/t56_go_config/config_test.go similarity index 100% rename from kaiwu/tests/bench_tasks/t59_go_config/config_test.go rename to kaiwu/tests/bench_tasks/t56_go_config/config_test.go diff --git a/kaiwu/tests/bench_tasks/t59_go_config/go.mod b/kaiwu/tests/bench_tasks/t56_go_config/go.mod similarity index 100% rename from kaiwu/tests/bench_tasks/t59_go_config/go.mod rename to kaiwu/tests/bench_tasks/t56_go_config/go.mod diff --git a/kaiwu/tests/bench_tasks/t59_go_config/merger.go b/kaiwu/tests/bench_tasks/t56_go_config/merger.go similarity index 100% rename from kaiwu/tests/bench_tasks/t59_go_config/merger.go rename to kaiwu/tests/bench_tasks/t56_go_config/merger.go diff --git a/kaiwu/tests/bench_tasks/t59_go_config/watcher.go b/kaiwu/tests/bench_tasks/t56_go_config/watcher.go similarity index 100% rename from kaiwu/tests/bench_tasks/t59_go_config/watcher.go rename to kaiwu/tests/bench_tasks/t56_go_config/watcher.go diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/go.mod b/kaiwu/tests/bench_tasks/t57_go_raft_log/go.mod similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/go.mod rename to kaiwu/tests/bench_tasks/t57_go_raft_log/go.mod diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/log.go b/kaiwu/tests/bench_tasks/t57_go_raft_log/log.go similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/log.go rename to kaiwu/tests/bench_tasks/t57_go_raft_log/log.go diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/raft_log_test.go b/kaiwu/tests/bench_tasks/t57_go_raft_log/raft_log_test.go similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/raft_log_test.go rename to kaiwu/tests/bench_tasks/t57_go_raft_log/raft_log_test.go diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/replicator.go b/kaiwu/tests/bench_tasks/t57_go_raft_log/replicator.go similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/replicator.go rename to kaiwu/tests/bench_tasks/t57_go_raft_log/replicator.go diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/snapshot.go b/kaiwu/tests/bench_tasks/t57_go_raft_log/snapshot.go similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/snapshot.go rename to kaiwu/tests/bench_tasks/t57_go_raft_log/snapshot.go diff --git a/kaiwu/tests/bench_tasks/t60_go_raft_log/state.go b/kaiwu/tests/bench_tasks/t57_go_raft_log/state.go similarity index 100% rename from kaiwu/tests/bench_tasks/t60_go_raft_log/state.go rename to kaiwu/tests/bench_tasks/t57_go_raft_log/state.go diff --git a/kaiwu/tests/bench_tasks/t61_go_scheduler/go.mod b/kaiwu/tests/bench_tasks/t61_go_scheduler/go.mod deleted file mode 100644 index edc8d6d..0000000 --- a/kaiwu/tests/bench_tasks/t61_go_scheduler/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module bench/t61_go_scheduler - -go 1.21