Skip to content

Commit 208e3ac

Browse files
feat: 实现生成器同步机制并重构项目架构
核心功能: - 实现 xdist 生成器同步机制(文件同步 + pytest 钩子) - 支持外部资源(数据库、API)的生成器 - 新增参数组合器优化单参数解包逻辑 - 实现自动预加载和懒加载机制 架构重构: - 重构为 engine 模块化架构(dependency, generator, parametrize) - 统一装饰器 API(param_generator, parametrize_test) 测试重构: - 新增 compatibility/ 目录(pytest 插件兼容性测试) - 整合 functional/, integration/, unit/, performance/ 测试 - 删除 legacy/, fixtures/, generators/ 等过时目录 - 新增外部资源示例测试 文档工具: - 引入 TalkTree 项目管理系统 v2.0 - 新增全局技能和工作流技能 - 完善 CONTRIBUTING.md 和使用文档
1 parent 7d520c0 commit 208e3ac

220 files changed

Lines changed: 26338 additions & 12542 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coveragerc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@ exclude_lines =
88
omit =
99
src/dynamic_params/plugin/pytest_plugin.py
1010
**/__init__.py
11-
src/dynamic_params/types.py
11+
src/dynamic_params/types.py
12+
src/dynamic_params/__version__.py
13+
src/dynamic_params/errors.py
14+
src/dynamic_params/public/api.py

.trae/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
talktree-conversations/

.trae/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 ProgrammerChengPei
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
name: "code-review"
3+
description: "Reviews code for PEP8 compliance, type hints, best practices and bugs. Invoke when user asks for code review, before committing changes, or after implementing new features."
4+
---
5+
6+
# 代码审查技能
7+
8+
用于审查代码质量,确保符合 PEP8 规范、类型提示完整、遵循最佳实践。
9+
10+
## 审查清单
11+
12+
### 代码风格
13+
- [ ] 符合 PEP8 规范
14+
- [ ] 使用 4 空格缩进
15+
- [ ] 行长度不超过 88 字符(Black 默认)
16+
- [ ] 使用 UTF-8 编码
17+
- [ ] 文件末尾有空行
18+
19+
### 命名规范
20+
- [ ] 变量名使用 snake_case
21+
- [ ] 类名使用 PascalCase
22+
- [ ] 常量使用 UPPER_SNAKE_CASE
23+
- [ ] 私有属性以单下划线开头
24+
- [ ] 名称具有描述性,避免单字母
25+
26+
### 类型提示
27+
- [ ] 函数参数有类型注解
28+
- [ ] 函数返回值有类型注解
29+
- [ ] 使用 typing 模块的类型
30+
- [ ] 复杂类型使用 TypeAlias
31+
32+
### 文档字符串
33+
- [ ] 公共函数有 docstring
34+
- [ ] 公共类有 docstring
35+
- [ ] 使用 Google 或 NumPy 风格
36+
- [ ] 包含参数和返回值说明
37+
38+
### 错误处理
39+
- [ ] 使用具体的异常类型
40+
- [ ] 提供有意义的错误消息
41+
- [ ] 适当使用 try-except
42+
- [ ] 资源使用 with 语句管理
43+
44+
### 代码结构
45+
- [ ] 函数单一职责
46+
- [ ] 函数长度适中(建议 < 50 行)
47+
- [ ] 避免深层嵌套
48+
- [ ] 使用早返回减少嵌套
49+
50+
### 安全性
51+
- [ ] 不硬编码敏感信息
52+
- [ ] 不使用不安全的函数
53+
- [ ] 输入验证
54+
55+
## 注意事项
56+
1. 审查前确保代码可运行
57+
2. 优先修复高优先级问题
58+
3. 保持代码风格一致性
59+
4. 新代码必须有对应测试
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
***
2+
3+
name: "conversation"
4+
description: "管理对话流程和状态转换。在处理任务、话题、问答交互时调用。"
5+
--------------------------------------------
6+
7+
# 对话管理规则
8+
9+
## 核心概念
10+
11+
### Task(任务)
12+
13+
用户发起的完整工作单元,具有独立的生命周期。
14+
15+
| 状态 | 说明 |
16+
| ------------- | -------- |
17+
| **IDLE** | 空闲/无活动任务 |
18+
| **ACTIVE** | 进行中 |
19+
| **PAUSED** | 已暂停(可恢复) |
20+
| **COMPLETED** | 已完成 |
21+
| **ABANDONED** | 已放弃 |
22+
23+
### Topic(话题)
24+
25+
Task 内的一个主题单元,一个 Task 可包含多个 Topic。
26+
27+
| 状态 | 说明 |
28+
| ------------- | ------------ |
29+
| **ACTIVE** | 当前活跃话题 |
30+
| **PAUSED** | 已暂停(切换到其他话题) |
31+
| **COMPLETED** | 已完成 |
32+
| **ABANDONED** | 已放弃 |
33+
34+
### QA(问答)
35+
36+
Topic 内的一次完整问答交互。
37+
38+
| 状态 | 说明 |
39+
| --------------- | --------- |
40+
| **PROCESSING** | AI 正在处理 |
41+
| **WAITING** | 等待用户确认/输入 |
42+
| **COMPLETED** | 已完成 |
43+
| **INTERRUPTED** | 已中断(可恢复) |
44+
45+
***
46+
47+
## 状态记录文件
48+
49+
所有对话状态记录在 `.trae/status/conversation.yaml` 文件中,包含:
50+
51+
- Task 列表及其状态
52+
- 每个 Task 包含的 Topic 列表
53+
- 每个 Topic 包含的 QA 列表
54+
- 每个对象的唯一 ID、创建时间、更新时间等信息
55+
56+
### 唯一 ID 生成规则
57+
58+
- **Task ID**: `T-{timestamp}-{random4}` (例:`T-20260326192600-a1b2`)
59+
- **Topic ID**: `TP-{task_id}-{sequence}` (例:`TP-T-20260326192600-a1b2-001`)
60+
- **QA ID**: `QA-{topic_id}-{sequence}` (例:`QA-TP-T-20260326192600-a1b2-001-001`)
61+
62+
***
63+
64+
## 用户指令集
65+
66+
### Task 级别指令
67+
68+
| 指令 | 说明 | 触发条件 |
69+
| ------------------------------- | ---------- | ------------ |
70+
| `/continue [task_id/task_name]` | 继续指定任务 | IDLE, PAUSED |
71+
| `/merge [task_id/task_name]` | 继承指定任务的上下文 | IDLE |
72+
| `/status [task_id/task_name]` | 查看任务状态 | 任意 |
73+
| `/save [task_id/task_name]` | 保存进度,存储记忆 | PAUSED |
74+
75+
### Topic 级别指令
76+
77+
| 指令 | 说明 | 触发条件 |
78+
| -------------------------------- | ---------------- | -------------- |
79+
| `/new [topic_name]` | 新建话题,名称可由用户输入或为空 | IDLE |
80+
| `/status [topic_id/topic_desc]` | 查看话题状态 | 任意 |
81+
| `/save [topic_id/topic_desc]` | 保存进度,存储记忆 | PAUSED |
82+
| `/abandon [topic_id/topic_desc]` | 放弃当前话题 | ACTIVE, PAUSED |
83+
84+
### QA 级别指令
85+
86+
| 指令 | 说明 | 触发条件 |
87+
| ----------- | --------------- | ----------------------- |
88+
| `/stop` | 停止当前问答(UI 停止按钮) | PROCESSING |
89+
| `/continue` | 继续执行 | INTERRUPTED |
90+
| `/abandon` | 放弃当前问答的执行结果 | INTERRUPTED 或 COMPLETED |
91+
| `/adjust` | 调整方案后继续 | WAITING |
92+
93+
***
94+
95+
## 状态管理规则
96+
97+
### Task 状态转换
98+
99+
- `IDLE``ACTIVE`: 用户通过 UI 创建新任务
100+
- `ACTIVE``PAUSED`: 用户暂停任务
101+
- `ACTIVE``COMPLETED`: 所有话题完成
102+
- `ACTIVE``ABANDONED`: 用户放弃任务
103+
- `PAUSED``ACTIVE`: 用户继续任务
104+
- `PAUSED``COMPLETED`: 用户确认完成
105+
- `PAUSED``ABANDONED`: 用户放弃任务
106+
107+
### Topic 状态转换
108+
109+
- `IDLE``ACTIVE`: 用户创建新话题(`/new`
110+
- `ACTIVE``PAUSED`: 切换到其他话题
111+
- `ACTIVE``COMPLETED`: 话题内所有 QA 完成
112+
- `ACTIVE``ABANDONED`: 用户放弃话题(`/abandon`
113+
- `PAUSED``ACTIVE`: 切换回该话题
114+
- `PAUSED``COMPLETED`: 用户确认完成
115+
- `PAUSED``ABANDONED`: 用户放弃话题
116+
117+
### QA 状态转换
118+
119+
- `IDLE``PROCESSING`: 用户输入,AI 开始处理
120+
- `PROCESSING``WAITING`: AI 处理完成,等待确认
121+
- `PROCESSING``INTERRUPTED`: 用户点击停止(`/stop`
122+
- `WAITING``PROCESSING`: 用户调整方案(`/adjust`
123+
- `WAITING``COMPLETED`: 用户确认
124+
- `INTERRUPTED``PROCESSING`: 用户继续(`/continue`
125+
- `INTERRUPTED``COMPLETED`: 用户放弃执行结果(`/abandon`
126+
127+
***
128+
129+
## 话题切换与跨任务处理
130+
131+
### 场景一:同一任务内切换话题
132+
133+
**处理规则:**
134+
135+
1. **明确切换**(用户主动说明)
136+
- 当用户明确表示切换话题时(如"换个话题")
137+
- 当前 Topic 进入 PAUSED
138+
- 创建新 Topic 或切换到已存在的话题
139+
2. **隐式切换**(上下文自然转移)
140+
- 当用户问题与当前上下文明显无关时
141+
- 提醒用户确认是否开启新话题
142+
- 用户确认后创建新 Topic
143+
144+
### 场景二:跨任务联系
145+
146+
**处理规则:**
147+
148+
1. **任务 ID/名称引用**
149+
- 用户可通过任务 ID 或名称引用其他任务
150+
- AI 主动询问是否需要加载引用任务的上下文
151+
2. **上下文继承**
152+
- 用户可以要求继承上一个任务的上下文(`/merge`
153+
- AI 确认继承内容后继续
154+
3. **项目级记忆**
155+
- 将用户偏好、项目背景存储到 `.trae/status/conversation.yaml`
156+
- 新任务自动加载项目上下文
157+
158+
***
159+
160+
## 默认采纳机制
161+
162+
- 对话中如果用户对 AI 的回答没有提出质疑,**默认就是采纳**
163+
- 采纳意味着用户认可 AI 的回答内容,不需要进一步修改或澄清
164+
- AI 可以继续推进任务,无需反复确认
165+
166+
***
167+
168+
## 质疑与修改流程
169+
170+
- 用户可能会对 AI 回答的某个点产生质疑,逐步修改 AI 的回答
171+
- 每次质疑都是对回答的**局部调整**,而非整体否定
172+
- AI 应根据质疑内容调整方案,而非重新开始
173+
174+
***
175+
176+
## 执行前汇总原则
177+
178+
- 当用户明确表示**开始执行**时,AI 需要汇总几次质疑的最终结果
179+
-**最终汇总结果**去执行,确保执行方案是所有讨论和修改的综合结果
180+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
---
2+
name: "dev-workflow"
3+
description: "Manages development workflow including feature development, bug fixing, and release process."
4+
---
5+
6+
# 项目开发工作流技能
7+
8+
## 开发流程
9+
10+
### 功能开发
11+
```bash
12+
git checkout -b feature/feature-name
13+
# 编写代码...
14+
pytest tests/
15+
pre-commit run --all-files
16+
```
17+
18+
### Bug 修复
19+
```bash
20+
git checkout -b fix/bug-name
21+
# 编写失败测试重现 bug
22+
# 修复 bug
23+
```
24+
25+
### 版本发布
26+
```bash
27+
# 1. 更新版本号
28+
# 2. 更新 CHANGELOG
29+
pytest --cov=src/项目
30+
pre-commit run --all-files
31+
python -m build
32+
twine upload dist/*
33+
git tag -a v0.x.0 -m "Release v0.x.0"
34+
```
35+
36+
## 代码规范
37+
- 最低支持 Python 3.8
38+
- 使用类型提示
39+
- 遵循 PEP8 规范
40+
41+
## 导入顺序
42+
1. 标准库
43+
2. 第三方库
44+
3. 本地模块
45+
46+
## 注意事项
47+
1. 新功能必须有测试
48+
2. 保持向后兼容性
49+
3. 使用语义化版本
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
name: "follow-up-check"
3+
description: "Automatically checks and suggests follow-up actions after completing a task. Invoke after completing any task to ensure all related actions are performed."
4+
---
5+
6+
# 后续动作检查技能
7+
8+
## 核心原则
9+
**完成一步后,主动检查并提醒后续动作!**
10+
11+
## 任务与后续动作映射
12+
13+
### 代码修改后
14+
15+
| 完成的动作 | 后续动作 | 需求文档 | 设计文档 |
16+
|-----------|---------|---------|---------|
17+
| 修复代码 Bug | 运行测试、更新 CHANGELOG | ❌ 不需要 | ❌ 不需要 |
18+
| 添加新功能 | 编写测试、更新文档 | ✅ 需要 | ✅ 需要 |
19+
| 重构代码 | 运行测试、检查性能 | ❌ 不需要 | ⚠️ 视情况 |
20+
| 修改 API | 更新文档、检查兼容性 | ❌ 不需要 | ✅ 需要 |
21+
| 修改业务逻辑 | 运行测试、检查边界 | ⚠️ 视情况 | ⚠️ 视情况 |
22+
23+
### 测试相关
24+
25+
| 完成的动作 | 后续动作 |
26+
|-----------|---------|
27+
| 编写新测试 | 运行测试、检查覆盖率 |
28+
| 修复测试失败 | 分析原因、检查影响 |
29+
30+
### 文档相关
31+
32+
| 完成的动作 | 后续动作 |
33+
|-----------|---------|
34+
| 更新 README | 检查示例、检查链接 |
35+
| 更新 CHANGELOG | 检查完整性、检查版本 |
36+
37+
## 检查流程
38+
```
39+
1. 完成用户请求的任务
40+
2. 分析任务类型
41+
3. 查找对应的后续动作列表
42+
4. 向用户提醒需要执行的后续动作
43+
5. 询问用户是否需要执行
44+
```
45+
46+
### 提醒格式
47+
```markdown
48+
## 任务完成
49+
已完成:[任务描述]
50+
## 建议的后续动作
51+
- [ ] [后续动作1] - [原因]
52+
是否需要我执行这些后续动作?
53+
```
54+
55+
## 注意事项
56+
1. **主动检查**:不要等待用户询问
57+
2. **合理建议**:只建议真正需要的后续动作
58+
3. **尊重用户**:询问用户是否需要执行,不强制执行

0 commit comments

Comments
 (0)