Trammel——用于编码助理的AI任务规划器
  
Trammel帮助AI编码助手规划、验证和记忆多步骤任务。
Trammel没有让你的人工智能助手在复杂的变化中游刃有余,而是将目标分解为有序的步骤,验证每个步骤的有效性,从失败中学习,并保存成功的策略以供重用。它与 克劳德代码, 光标,以及任何与MCP兼容的编辑器,或通过Python和CLI独立使用。
Trammel是一种工具 为了 LLM,而不是调用LLM的工具。它提供了编码助理可靠地处理多步骤任务所需的规划规则。
它的作用
- 将目标分解为步骤 --分析项目的代码结构,找出什么取决于什么,并创建一个有序的计划
- 尝试多种方法 --并行探索不同的策略(自下而上、自上而下、风险优先等),以找到最有效的方法
- 在过程中进行验证 --在Python工具中,在独立副本中的每个步骤后运行测试,这样就不会出现糟糕的更改。在MCP模式下,
verify_step是一种静态/启发式检查——在步骤之间自己运行测试套件,或调用plan_and_execute来自Python,用于真正的隔离测试执行。 - 从错误中学习 --记录失败的原因,然后阻止同样的错误再次发生
- 记住什么有效 --将成功的策略保存为可重复使用的配方,以便下次更快地解决类似的任务
- 协调多个代理 --为多代理工作流提供步骤声明、依赖性跟踪和DAG指标
支持15种语言: Python、TypeScript、JavaScript、Go、Rust、C/C++、Java/Kotlin、C#、Ruby、PHP、Swift、Dart、Zig
安装
pip install trammel # core library (no dependencies beyond Python stdlib)
pip install trammel[mcp] # with MCP server for Claude Code / Cursor或来源:
git clone https://github.com/IronAdamant/Trammel.git
cd Trammel && pip install -e '.[mcp]'快速开始
使用克劳德代码或光标(MCP)
添加到您的 .claude/.mcp.json (克劳德代码)或等效的MCP配置:
{
"mcpServers": {
"trammel": {
"command": "trammel-mcp",
"args": []
}
}
}你的人工智能助手现在可以访问31个计划工具——分解目标、创建计划、声明步骤、验证工作、保存食谱和修剪过时的计划。看 SYSTEM_PROMPT.md 获取完整的编排指南。
从命令行
python -m trammel "refactor auth module" --root /path/to/project --beams 3
python -m trammel "fix tests" --test-cmd "pytest -x -q"
python -m trammel "explore auth" --dry-run # explore strategies without verification
python -m trammel "fix auth" --root /monorepo --scope services/auth来自Python
from trammel import plan_and_execute, explore, synthesize
# Full pipeline: decompose → plan → explore → verify → store recipe
result = plan_and_execute("your goal", "/path/to/project", num_beams=3)
# Explore only (no verification)
strategy = explore("refactor auth", "/path/to/project")
# Save a verified strategy as a reusable recipe
synthesize("refactor auth", verified_strategy)运作原理
Trammel将规划视为一个结构化搜索问题:
- 分解 --分析导入并构建依赖关系图,然后生成具有基本原理的有序步骤。支持尚未存在的新文件的脚手架定义。
- 探索 --创建多种策略变体(自下而上、自上而下、风险优先、关键路径、凝聚力、最小变化等),并并行运行。
- 验证 --在独立的临时副本中应用编辑,并按步骤运行测试。当某物断裂时提取结构化故障分析。
- 限制 --将失败原因记录为持久约束,以防止会话之间出现相同的错误。
- 记住 --将成功的策略存储为食谱,稍后通过文本相似度+文件重叠+成功率进行检索。
所有州都存储在本地SQLite数据库中(trammel.db)--计划、步骤、约束、配方和遥测。
集成选项
特拉梅尔不需要MCP。通过多个曲面可以获得相同的功能:
| 表面 | 最适合 |
|---|---|
MCP服务器 (trammel-mcp) | Claude Code、Cursor和其他支持MCP的编辑器 |
Python API (plan_and_execute, explore等) | 脚本、CI管道、自定义编排器 |
命令行界面 (python -m trammel) | 壳牌自动化,快速一次性计划 |
SQLite (trammel.db) | 直接查询、外部仪表板、跨流程协调 |
多代理支持
当使用脚手架进行分解时,Trammel返回DAG指标,用于在多个代理之间分配工作:
| 度量 | 它告诉你什么 |
|---|---|
max_parallelism | 您一次可以运行的代理的峰值数量 |
layer_widths | 每轮可以处理多少个文件(例如。 [7, 12, 6, 10, 3, 2]) |
critical_path_length | 最长的链条——你的最小轮数 |
代理人通过以下方式进行协调 claim_step / release_step / available_steps。声明将在10分钟后自动过期,以恢复过时的代理。
使用石碑和凿子工作
| 工具 | 角色 |
|---|---|
| 石碑 | 持久上下文检索和语义索引 |
| 凿子 | 代码分析、流失、耦合、风险映射 |
| 束缚 | 计划、验证、故障学习、配方记忆 |
计划保真度和配置
Trammel有控制措施来保持计划的准确性和子代理的一致性:
strict_greenfield--如果新的工作目标没有框架,则分解失败,从而防止模糊的临时计划relevant_only--只过滤对目标重要的步骤- 相关性层次 --每一步都得到
high/medium/low相关性,因此优先级是透明的
可选项目配置通过 pyproject.toml ([tool.trammel] 节)或 .trammel.json:
[tool.trammel]
default_scope = "src/"
focus_keywords = ["auth", "login"]
max_files = 50项目布局
trammel/ Importable package
__init__.py Public API: plan_and_execute, explore, synthesize
core.py Planner: decomposition, constraints, step generation
store.py RecipeStore: SQLite persistence (8 tables), telemetry
store_recipes.py Recipe methods: save, retrieve, list, prune
strategies.py 9 built-in beam strategies
harness.py Execution harness: temp copies, test runner
analyzer_specs.py Declarative regex specs for 13 regex-based analyzers
analyzer_engine.py RegexAnalyzerEngine + import resolvers + backward-compat shims
analyzers.py Python + TypeScript analyzers, language detection
analyzers_ext.py Backward-compat shim (re-exports from analyzer_engine)
analyzers_ext2.py Backward-compat shim (re-exports from analyzer_engine)
project_config.py Config merging (pyproject.toml + .trammel.json)
utils.py Trigrams, cosine, failure extraction, shared helpers
cli.py CLI entry point
mcp_server.py MCP tool schemas and dispatch
mcp_stdio.py MCP stdio server entry point
plan_merge.py Plan merging engine: conflict detection + 4 resolution strategies
store_agents.py Multi-agent coordination: step claiming, availability, proximity warnings
tests/ 361 tests across 6 modules (stdlib unittest)
SYSTEM_PROMPT.md Reference orchestration guide for LLM clientsSQLite架构(trammel.db)
| 表 | 目的 |
|---|---|
recipes | 具有模式、约束、成功/失败计数的成功策略 |
recipe_trigrams | 用于快速检索配方的倒三元组索引 |
recipe_files | 结构匹配的文件路径(Jaccard重叠) |
plans | 目标+战略快照+逐步推进的脚手架 |
steps | 具有依赖关系、基本原理、验证结果的工作单元 |
constraints | 防止已知不良重复的故障记录 |
trajectories | 每个梁的运行日志:结果、完成的步骤、失败原因 |
failure_patterns | 具有解决历史的历史故障特征 |
usage_events | 遥测:工具调用、配方命中率、策略获胜率 |
贡献
欢迎捐款。请先打开一个问题来讨论更改。
- 分叉存储库
- 创建要素分支(
git checkout -b feature/your-feature) - 进行更改(核心必须仅保留stdlib;测试使用
unittest仅) - 运行测试:
python -m unittest discover -q -s tests -p 'test_*.py' - 打开拉取请求
出版(维护者)
发布使用 可信发布 (GitHub OIDC→ PyPI)。不需要API令牌。
- 碰撞
version在pyproject.toml - 运行测试、提交、推送
main - 标签:
git tag -a vX.Y.Z -m "Release X.Y.Z" && git push origin vX.Y.Z - 创建GitHub发布(自动触发PyPI发布)
______________________________________________________________________
Full Changelog
v3.12.2--第15阶段发现结束:结构配方匹配、计划重复数据删除、故障恢复、目标文本框架推理
补丁发布弥补了针对TrammelConstraintFailureRecoveryEngine语料库的31/31工具测试所暴露的四个关键差距(26个对抗性几乎相同的结构支架,12个重复的“第15阶段”计划,13个约束,8个注入失败)。这 trammel_open.md 研究结果文档(RecipeLab_alt/MCP_findings)已重命名 trammel_open_closed.md.
- 配方匹配现在可以区分结构模式。 满的
has_util+“util”/“utils”角色支持已添加到goal_fingerprint_from_text,strategy_fingerprint,structural_similarity(余弦+奖金)、角色向量和goal_scaffold_fingerprint_from_text.model+service+route+testvsmodel+service+util+test(以及1-2个令牌变体)现在产生有意义的不同分数,而不是最大值~0.19。通过以下方式保存几乎相同的目标save_recipe/validate_recipes现在被正确地首选decompose以及支架配方回退路径(0.15阈值)。_W_STRUCTURAL加权和拱MinHash的好处。 - 防止创建重复的计划。
create_plan现在,对现有的未决计划执行精确的(目标+策略JSON)匹配,并返回之前的ID,而不是插入重复的ID。消除了重复观测到的12个相同+49个待决计划污染create_plan呼吁实现相同的目标。prune_plans,merge_plans,list_plans,以及usage_stats保持清洁。 resolve_failure清除“运行”步骤/计划状态。 扩展的resolve_failure_pattern、MCP处理程序,以及tool_schemas.py可选plan_id/step_id参数。如果提供,目标步骤将从“正在运行”/“挂起”移动→ “失败”,任何索赔都将被释放,决议说明将存储在步骤中verificationJSON。修复了2/8例注射失败导致台阶卡住的情况resolve_failure+failure_history.- 目标文本→ 为新文件构建NLP推理框架。 添加了专用的“util”条目
_LAYER_PATTERNS(带测试层),src/utils+src/helpers到_FALLBACK_ROLE_DIRS,以及“util”/“utils”_ROLE_DIR_SUBSTRINGS._creation_hints,_detect_layered_architecture,以及_fallback_directories现在,为绿地目标发布现成的脚手架条目(带有依赖DAGs和成对的测试文件),其中提到“util”、“导入器/导出器/注册表”、“模型+服务+util+test”等。--即使在existing_files为空,目标中没有明确的路径。explore无脚手架decompose生成有用的新文件计划,而不是完整的仓库或空结果。 - 工具和文件。 更新了中的描述
tool_schemas.py对于新的可选解析参数。scripts/release.sh助手和可信发布流不变。所有413项测试(和子测试)继续通过,没有回归。
这些变化为大型重构(第16阶段活动)提供了“40-70步依赖感知计划”的能力和可靠的配方重用,而最初的第15阶段对抗语料库旨在验证这些能力。
v3.12.1--发现审查修复(事务嵌套+写入路径强化)
v3.12.0的Bug修复跟进。没有公共API更改。
- SQLite事务嵌套已修复 (Python 3.14)。
db_connect现在使用isolation_level=None和transaction()SAVEPINT是否知道,所以create_plan,add_constraint,save_recipe,validate_recipes,以及log_event不再命中 *“无法在事务中启动事务”*.同样的根本原因悄无声息地破灭了usage_stats/list_strategies遥测技术——现在两者都报告真实数字。 get_plan在腐败战略中幸存.将JSON解析封装在store_plans.py所以resume和available_steps不再是一行500;相反,该计划会返回一个_corrupted_fields标记。explore荣誉范围新_scaffold_matches_scope拒绝所有文件都位于查询范围之外的脚手架配方匹配——修复了低阈值脚手架匹配覆盖的情况scope=X用其他地方存放的脚手架。recipe_files去重init上的一次性清理加上init上的唯一索引(recipe_sig, file_path)和INSERT OR IGNORE在_insert_file_entries防止在传统DB上看到320+个重复行。- 新
prune_plansMCP工具,对称于prune_recipes默认目标pending超过7天的计划;级联删除它们的步骤、轨迹和约束。MCP工具总数:31。 - \*\*
get_recipe↔near_match_recipes平等. When获取密码finds nothing above threshold, it now also returnsnear_match_recipesso it agrees with探索”。 trammel_blind_spots举起 到顶级decompose而不是埋在里面analysis_meta.implicit_dependency_analysis.- 413项测试通过 (406之前+7新
TestFindingsRegressions).
v3.12.0——模块拆分(500 LOC以下的每个文件)、外部化模式配置、MCP调度测试
没有公共API更改的结构重构。所有现有 from trammel... 进口继续发挥作用;再出口保留了传统路径。
- 每个模块现在都在500 LOC以下。 在此版本之前,有9个文件超过了项目约定目标(最差为1223个);零之后。在拆分中创建的新模块:
- recipe_fingerprints.py, store_retrieval.py, store_scaffolds.py (摘录自 store_recipes.py,从1223下降→ 373). - store_plans.py, store_telemetry.py (摘录自 store.py). - tool_schemas.py (摘录自 mcp_server.py). - implicit_deps_engines.py, pattern_learner.py (摘录自 implicit_deps.py). - analyzer_resolvers.py (摘录自 analyzer_engine.py). - text_similarity.py, scaffold_validation.py (摘录自 utils.py). - language_detection.py (摘录自 analyzers.py). - scaffold_creation.py (摘录自 scaffold_logic.py). - planner_helpers.py (摘录自 core.py).
- 模式表已外部化。
NAMING_CONVENTION_RULES,INFRASTRUCTURE_PATTERNS,文件角色模式和目标角色模式现在存在trammel/data/patterns.json并通过新的pattern_config.py.编辑JSON以调整推理,而无需更改代码。 - MCP调度集成测试。 新
tests/test_mcp_dispatch.py11个测试涵盖了模式↔分派奇偶校验、类别注册表同步、未知工具错误形状、以前未发现的处理程序(record_steps,claim/release/available_steps,merge_plans,usage_stats,list_strategies,resolve_failure),以及模式驱动的int强制转换。 - 公共API文档字符串。 加上
Planner(类+每个方法),ExecutionHarness(类+__init__),RecipeStore(类+上下文管理器生命周期),每个MCP_handle_*,存储上的约束/轨迹方法,以及所有11个语言分析器子类。 - 文档对等。 README中澄清了“边验证边进行”(Python工具运行测试;MCP
verify_step是静态/启发式的)。SYSTEM_PROMPT.md获得明确的“decomposevsexplorevscreate_plan--我该怎么称呼?“决策块。pyproject.toml版本升级到3.12.0(结束了README已经记录了v3.11.3条目但包版本仍为3.11.2的漂移)。 - 406项测试通过 (395个预重构+11个新的调度测试)。
v3.11.3--针对测试密集型项目、探索回退和策略轨迹数据的稳健性改进
over_constrained不再致命:validate_scaffold款待>4依赖关系是一个警告,而不是致命错误。具有许多依赖关系的测试文件和外观不再阻碍分解。- 部分计划恢复:当脚手架验证检测到问题(自引用、缺少依赖关系等)时,
decompose现在返回仍然可以从脚手架推断出的任何步骤,而不是空计划。 explore后备模式:如果explore从接收空结果或错误结果decompose,它会自动重试suppress_creation_hints=true和expand_repo=false以制定一个可用的策略。- 自动持久化策略轨迹:
complete_plan现在自动记录轨迹条目,因此list_strategies随着时间的推移积累经验成功/失败数据。 - 改进的MCP工具描述:
strict_greenfield和suppress_creation_hints现在的描述明确提到了测试繁重的项目和重构目标。 - 361项测试通过.
v3.11.2--主要鲁棒性改进:无支架分解、计划合并、配方匹配、验证步长
- 无支架分解改进:
- 降低了支架配方查找阈值(0.15),并自动膨胀以重复使用历史支架。 - 使用CLI命令、中间件管道、事件驱动和身份验证系统模式扩展了架构模板注册表。 - 在创建提示中添加了兄弟约定克隆(例如。, UserService.js → RecipeService.js). - 当没有提供脚手架时,将回退完整仓库扩展限制为15个文件,防止了“176步”问题。
- 计划合并系统:
- 新 merge_plans MCP工具有四种策略: sequential, interleave, priority, unified. - 冲突检测引擎可以识别文件重叠、动作冲突、依赖关系反转和循环引入。 - claim_step 现在,当其他活动计划有针对同一文件的未决步骤时,会返回邻近警告。
- 配方匹配增强:
- 架构形状MinHash索引:配方通过其结构角色指纹进行索引,实现基于形状的检索(例如,模型→服务→route→测试)。 - 脚手架衍生结构匹配:当 decompose 称为支架,支架指纹用于配方比较。 - 成功加权预过滤:成功率为零的候选人被降级。 - 检索技术词库扩展(auth → authentication, authorization, login, token等等)。
verify_step深度改进:
- Python AST飞行前验证捕获 SyntaxError 以及在运行测试之前可能未定义的名称。 - 导入完整性检查验证相对导入是否解析为现有文件。 - 当编辑删除项目依赖项可能引用的符号时,符号引用验证会发出警告。 - 扩展的 static_analysis 启发式方法:混合缩进、TODO/FIXME密度、空文件、重复符号名称。 - 当测试运行器可执行文件丢失时,测试命令dry-run会很快失败。
- 358项测试通过.
v3.11.1--审查结果:计划验证、歧义检测、验证步骤静态分析、MinHash配方检索
create_plan飞行前验证:添加了拓扑循环检测create_plan具有循环步骤依赖关系的计划将被明确拒绝circular_dependency错误而不是持续存在。- 模糊检测
decompose新ambiguity领域analysis_meta为含糊的措辞打分(real-time,AI-powered,conflict resolution等)、范围词和连词密度。帮助在计划之前标记未明确的目标。 verify_step静态分析:步骤验证现在包括static_analysis对象具有文件路径约定检查和测试覆盖率启发式(例如,缺少匹配的测试文件),即使在测试通过时也会显示警告。- MinHash增强配方检索:
retrieve_best_recipe和retrieve_near_matches现在,TF-IDF倒排词索引和MinHash LSH索引的联合候选,提高了同义词/重新排序目标的召回率。 - 346项测试通过.
v3.11.0——核心模块化,配方词索引+MinHash,分析器场崩溃
- core.py模块化:将巨石提取成
scoring.py,scaffold_logic.py,goal_nlp.py,constraints.py,scaffold_templates.py编排器从约1700 LOC减少到约570 LOC。 - 配方索引迁移新
recipe_index.py具有零dep倒排字索引(TF-IDF)和用于重复数据删除/近似最近邻的MinHash LSH。架构扩展为recipe_terms和recipe_signatures;融入store_recipes.py(为过渡安全而保留的三元组表)。 - 分析器场崩溃:15个正则表达式分析器合并为声明式
analyzer_specs.py+单身RegexAnalyzerEngine在analyzer_engine.py.analyzers_ext.py/analyzers_ext2.py现在向后调整垫片。所有类名保持不变。 - 358项测试通过.
v3.10.3--文档:用于多代理调度的脚手架DAG度量
- 自述文件: 新的“多代理调度的脚手架DAG度量”部分记录
max_parallelism,layer_widths,critical_path_length,以及max_dependency_depth为并行代理工作流提供使用指南。 - 规格: 在§5 Planner中添加了脚手架DAG指标文档。
- RecipeLab复习十题结束: 未发现任何错误。通过6个特征树的正确拓扑排序验证了40步/59边脚手架分解。有史以来测试过的最大的支架和最复杂的DAG——完美无瑕。
- API无变化 --仅更新文档。
v3.10.1--修复关键的create_plan脚手架迁移错误
- 错误修复:
create_plan失败于"table plans has no column named scaffold"在现有数据库上。架构迁移针对的是错误的表(steps而不是plans).固定在store.py. - 影响:解除阻止完整的计划执行工作流(
create_plan→claim_step→record_steps→complete_plan).
v3.9.4--RecipeLab发现:脚手架指标、跳过UX、重构提示、CI检查表
- 规划师/MCP:
suppress_creation_hints,scaffold_dag_metrics,skipped_existing_scaffold重构动词护句进行创造推理;summary_only曲面DAG+跳过块。 - 测验:
tests/test_findings_checklist.py对验证矩阵A-C进行编码(305次测试)。 核心仍然只支持stdlib (零第三方运行时deps)。
v3.9.1--文档:MCP可选集成、发布指南
- 自述文件: 集成表面(API/CLI/SQLite vs MCP)、路线图说明、可信发布的发布清单。
- 维基/规范: §1.1–1.2对齐;
SYSTEM_PROMPT.md在回购中跟踪(没有MCP的子代理)。 - API无变化 --doc和打包元数据刷新,用于PyPI长描述。
v3.7.9--全面清理:死代码、bug修复、现代化、健壮性
- 错误修复:CLI目标验证(
str(None)bug),缺失createdstep查询中的列,mixin存根现在引发NotImplementedError,_sql_in空输入保护。 - 死代码:删除未使用的
_is_ignored_dir导入自analyzers_ext2.py. - 加固:替换所有位置
sqlite3.Row使用命名列访问进行解包(8个站点)。在模块级别预编译Rust/Cargo/Maven正则表达式模式。 - 简化:波束计数封顶,步骤描述助手,列表策略理解,
_validate_registries()包装。 - 现代化:海象操作员
_extract_step_files,TYPE_CHECKING进口,私人_cosine命名,MCP stdio中的键盘中断处理。 - 248测试 (全部通过)。
v3.7.8--代码质量:DRY步骤字典、简化的助手、一致的实例
- 干燥步骤指令:提取
_STEP_COLUMNS+_step_to_dict()在store.py中--消除了中重复的step字典构造get_plan()和get_step(). - 简化助手:
word_jaccard,cosine,_strip_php_comments在utils.py中浓缩(减少总LOC)。 - 一致性:已修复
type()vsisinstance()不一致PythonAnalyzer.collect_typed_symbols. - 248测试 (全部通过)。
v3.7.4——代码质量:删除死代码、简化和现代化
- Bug硬化:固定电位
ZeroDivisionError在explore_trajectories,ValueError0根梁,更换为易碎梁assert随着RuntimeError在MCP服务器中。 - 删除死代码:删除未使用的
_default_beam_count,死了TYPE_CHECKING: pass块。 - 简化:将4个SQL COUNT查询合并为1个,提取
_sql_in()助手(消除8个站点的重复),消除了冗余的字典副本,简化了令人困惑的列表解包理解。 - 现代化:
asyncio.to_thread替换run_in_executor,日志程序在模块级别配置,用于早期错误捕获,懒惰_get_analyzer_registry()取代后期内联导入。 - 248测试 (全部通过)。
v3.7.3--代码质量:重复数据删除、现代化和强化
- 去重:提取了中的共享三元组/文件助手
store_recipes.py,消除了Swift SPM扫描的重复。 - 现代化:
_count_importers用途Counter,基于集合的符号重复数据删除,f字符串连续。 - 加固:遥测异常范围缩小
sqlite3.Error,固定类型注释,为幻数命名常量。 - 清理:标记未使用的MCP处理程序参数,固定Dart导入互斥性。
- 248测试 (全部通过)。
v3.7.2--代码库审核和清理
- 错误修复:已修复
_inject_orderings无关键格言理解,食谱突变decompose(),硬编码数据库路径synthesize(),失踪claimed_by/claimed_at在get_step(). - 跨平台:规范化的Swift分析器路径分隔符处理。
- 248测试 (全部通过)。
v3.7.1--混合型安全性、稳健性和性能
- 类型安全性:将类型化属性存根添加到
RecipeStoreMixin和AgentStoreMixin为了确保类型检查器的兼容性。 - 鲁棒性:
claim_step拒绝非未决步骤;平行波束回退变窄至OSError仅使用调试日志记录。 - 演出:
run_incremental通过持久基拷贝从O(K^2)优化到O(K)。 - 测试覆盖率:9个新
collect_typed_symbols测试(Rust、C++、Java、C#、Ruby、PHP、Swift、Dart、Zig)。 - 248测试 (全部通过)。
v3.7.0--全面审计、错误修复和现代化
- 8个bug修复:关键路径循环泄漏,
log_event裸提交、基于广泛捕获的模式迁移、不一致的获胜率公式,trigram_signature指纹类型错误、Rust cargo relpath错误、Java导入注释剥离、PHP分组使用别名剥离。 - 死代码:已删除
ExecutionHarness.run()别名。 - 简化:配方检索中的N+1查询修复,SQL端配方修剪,
_walk_project_sources共享发电机,DEFAULT_DB_PATH不断巩固。 - 现代化:
_SUPPORTED_LANGUAGES从注册表派生,语言/分析器同步断言,中间文件导入移到顶部,过早的Python 3.14分类器被删除。 - 239测试 (全部通过)。
v3.6.0--代码库审计、错误修复和现代化
- 错误修复:修复了TOCTU比赛
record_failure_pattern和resolve_failure_pattern(包含在交易中)。固定的JavaAnalyzer.pick_test_cmd回退到使用系统gradle而不是不存在./gradlew. - 消除重复:提取
_count_importers(),_is_claimed_by_other(),_try_resolve()助手。run()现在代表verify_step().删除冗余_collect_files包装纸。合并了两笔交易validate_recipes. - 删除死代码:始终保持警惕,不必要
or "",冗余分配,无效的延迟导入。 - 现代化:
collections.abc.Callable/Generator进口,PEP 561py.typed标记,get_analyzer添加到__all__,.mypy_cache/.ruff_cache在.gitignore. - 简化:单程
_split_active_skipped,防御性.get()对于约束描述,简化了测试断言。 - 239测试 (全部通过)。
v3.5.2--代码库清理和现代化
- 综合评论脱衣舞:删除重复项
_strip_js_comments和_strip_cpp_comments,所有分析器现在都使用共享_strip_c_comments来自utils - 一致的进口分析:所有基于正则表达式的分析器现在都会在提取导入之前删除注释(修复了Ruby、Dart、Zig、C#、PHP中注释掉的导入的误报)
- 修复了PHP方法模式重叠问题:方法模式现在需要至少一个访问修饰符(已更改
*到+),使用函数模式防止重复的符号条目 - 修复Dart函数误报:添加了负面前瞻以排除控制流关键字(
if,for,while等等) - 改进
max()型式安全:detect_language扩展计数现在使用lambda k: counts[k]而不是counts.get - 现代化
str.endswith:始终使用本机元组形式_collect_*助手 - 删除冗余
store参数 从Planner.explore_trajectories(使用self.store) - MCP状态处理程序重构:现在代表
RecipeStore.get_status_summary()而不是原始SQL - 架构/调度同步断言:模块负载断言确保
_TOOL_SCHEMAS和_DISPATCH按键保持同步 - 店铺改进:已删除不可靠
__del__,将架构迁移异常缩小到sqlite3.OperationalError,固定list_plans状态过滤器,固定get_strategy_stats返回类型,批量获取配方文件list_recipes(N+1次修复) - 固定浮动相等:配方文本相似性早期退出现在使用
>= 0.9999而不是== 1.0 - 日志设置修复:
mcp_stdio.py现在呼叫logging.basicConfig服务器构建前 - CLI硬化:为stdin输入添加了JSON解析错误处理
- 与语言无关的消息:“没有Python符号”回退消息现在显示“没有找到符号”
__main__.py守卫:添加if __name__ == "__main__"保护
3.5.1
- 多智能体步骤协调新
claim_step,release_step,以及available_stepsMCP工具(共27个工具)。代理在处理步骤之前会先声明步骤——其他代理会看到声明的步骤并跳过它们。声明在10分钟后自动过期(过时代理恢复)。available_steps仅返回满足依赖关系且未被其他代理声明的步骤。 - 新
store_agents.py混入:AgentStoreMixin随着claim_step(),release_step(),get_available_steps().RecipeStore继承两者RecipeStoreMixin和AgentStoreMixin. - 架构迁移:步数表增益
claimed_by和claimed_at列(现有数据库的安全迁移)。 - 242测试 (全部通过)。
3.5.0
- 故障模式学习新
failure_patternsSQLite表(共9个表)跨会话累积结构化故障特征。当验证数据的步骤失败时,会自动记录文件+错误类型+消息。模式跟踪发生计数、首次/最后一次看到的时间戳和分辨率历史。 failure_historyMCP工具:按文件或项目范围查询历史故障模式。显示哪些文件经常失败,发生了哪些错误类型,以及哪些解决方案有效。在修改文件之前使用,以避免已知的陷阱。resolve_failureMCP工具:记录修复已知故障模式的方法。在特定文件上建立对特定错误类型有效的机构记忆。总共24个MCP工具。- 自动录制:
update_step随着status="failed"自动提取故障分析并记录模式,无需手动检测。 - 242测试 (全部通过)。
3.4.1
- C++嵌套模板解析:模板图案现在可以处理2级嵌套(
template>)而不是一开始就打破>.也固定在Rust中impl<>和Java/Kotlin通用fun<>模式。 - Rust工作空间+相对导入:
analyze_imports现在解决use super::,use self::,以及工作区crate导入(读取Cargo.toml[workspace] members以及成员机箱名称)。以前只有use crate::已处理。 - PHP分组使用语句:
use Foo\{Bar, Baz, Qux};(PHP 7.0+)现在已正确扩展和解析。以前只是简单use Foo\Bar;被解析。 - Swift SPM感知模块映射:检测
Sources//和Tests//Swift包管理器项目的目录结构。对于非SPM项目,回退到父目录映射。 - TypeScript单仓库工作区支持:阅读
package.jsonworkspacesfield(npm、yarn、pnpm模式),发现工作区包,解析裸导入(import { x } from '@scope/pkg')到工作空间包入口点。 - 242测试 (全部通过)。
3.4.0
- 使用遥测新
usage_eventsSQLite表(共8个表)log_event()和get_usage_stats()方法论RecipeStore。自动跟踪工具调用、配方命中率/未命中率和策略获胜率。新usage_statsMCP工具(共22个工具)在可配置的时间窗口内返回聚合遥测数据。 - 调度重构:替换153行
match/case在mcp_server.py采用调度字典模式。每个工具都有一个专用的处理函数,通过以下方式查找_DISPATCH添加新工具现在只需要:处理程序函数+模式+字典条目。 - 分析仪改进:现在检测到PHP类方法(是主要差距)。Java 16+
record支持关键字。检测到飞镖工厂/命名构造函数。 - 7种语言的评论删除:已添加
_strip_c_comments(Go、Rust、Java、C#、Swift、Dart、Zig共享),_strip_hash_comments(Ruby),以及_strip_php_comments(PHP)。以前只有Python(AST)、TypeScript和C/C++在符号检测之前剥离了注释。 - 5个新样本仓库:Jekyll(Ruby)、Flame(Dart)、ZLS(Zig)、Laravel(PHP)、Ktor(Kotlin)克隆到
sample_file_test/用于所有15种支持语言的分析器验证。 - 242测试 (全部通过)。
3.3.1
- 策略模块提取:梁策略注册表和从中提取的9个内置排序
core.py进入新strategies.py(约280 LOC)。core.py从595 LOC降至324 LOC,远低于500 LOC的限制。 - 消除了循环依赖的解决方法:移动共享
_collect_symbols_regex和_collect_typed_symbols_regex助手来自analyzers.py到utils.py.已删除functools.cache懒惰地从导入包装analyzers_ext.py和analyzers_ext2.py(每条12行),改为直接进口。 - DRY正则表达式模式:衍生
_*_SYMBOL_PATTERNS从_*_TYPED_PATTERNS通过[p for p, _ in _*_TYPED_PATTERNS]用于TypeScript、Rust、Java、C#、Ruby、PHP、Swift和Dart(8种语言)。消除了约70行重复的正则表达式定义。 - DRY Python AST行走:提取
PythonAnalyzer._iter_ast()发电机,两者共享collect_symbols和collect_typed_symbols,消除了重复的文件遍历和AST解析代码。 - 进口订购修复:修复了stdlib导入顺序
store_recipes.py(import os在本地进口之前移动)。 - 500 LOC以下的所有文件:
analyzers.py从559个LOC减少到463个LOC。总来源:3876至3771个LOC(通过重复数据删除净减少105行)。 - 242测试 (不变,全部通过)。
3.3.0
- 类型符号分析新
collect_typed_symbols()所有15个分析器上的方法都返回具有类型分类(函数、类、接口、枚举、结构、trait等)的符号。 - 3种新的波束策略 (共9个):
leaf_first(首先零导入文件),hub_first(网络集线器文件按输入\*输出程度),test_adjacent(首先是具有匹配测试文件的文件)。 - 分析器修复Ruby基名覆盖,Swift目录映射过于宽泛,Java无包文件间隙。
- 商店重构:
_init_schema()分解为类级SQL常量。 - 242测试 (12个新)。
3.2.1
- 错误修复:
retrieve_best_recipe评分错误在哪里best_score在JSON验证之前进行了更新——损坏的条目可能会影响有效的配方。 - 已删除死代码:未使用
total_files变量inestimate冗余工具get_analyzer再进口。 - 代码简化:
detect_language用数据驱动循环替换了8个扩展别名常量和12个分支if/elif。Lambda替换为def在_detect_from_config.冗余DartAnalyzer.pick_test_cmd树枝被移除。 - 演出:消除了C#/PHP分析器中的双文件读取;Go分析器从两次步行减少到一次;PHP命名空间查找从O(n)优化到O(1)。
- 现代化:向添加了返回类型注释
_get_collect_symbols_regex.已移动_SUPPORTED到模块级别_SUPPORTED_LANGUAGES冷冻集。简体__main__.py. - 230次测试 (不变)。
3.2.0
- 六个新的语言分析器:
CSharpAnalyzer(.cs),RubyAnalyzer(.rb),PhpAnalyzer(.php),SwiftAnalyzer(.swift),DartAnalyzer(.dart),ZigAnalyzer(.zig)in newanalyzers_ext2.py(约480 LOC)。总共:支持15种语言(Python、TypeScript、JavaScript、Go、Rust、C/C++、Java/Kotlin、C#、Ruby、PHP、Swift、Dart、Zig)。 - 配置文件检测功能已扩展:Package.swift(swift)、build.zip(zig)、pubspec.yaml(dart)、.csproj/.sln(csharp)、Gemfile(ruby)、composer.json(php)。
- 扩展计数已扩大:
.cs,.rb,.php,.swift,.dart,.zig全部计入detect_language退路。 - 注册表已扩展:15种语言
_ANALYZER_REGISTRY.MCP_LANGUAGES列表已更新以匹配。 - 出口扩大:
CSharpAnalyzer,DartAnalyzer,PhpAnalyzer,RubyAnalyzer,SwiftAnalyzer,ZigAnalyzer出口自__init__.py. - 所有21个样本仓库均已重新测试:所有语言和范围内均无错误。
- 230次测试 (新增15个:用于C#、Ruby、PHP、Swift、Dart、Zig+6配置检测的符号/导入)。
3.1.0
- 配方匹配中的缩写处理新
_ABBREVIATIONSdict inutils.py有大约40个常见的编码缩写(gc、db、auth、api等)。normalize_goal在应用动词同义词之前展开缩写。之前失败的配方匹配(例如,“优化GC”与“优化垃圾收集器”)现在的相似度为0.86+。 - 分析时间元数据:
decompose现在回来了analysis_meta在回复中language,scope,files_analyzed,dep_files,dep_edges,timing_s(符号、进口、总计),可选warning对于不受支持的语言回退。 estimateMCP工具:无需运行完整分析,即可快速计算项目或范围的文件数。退货language,matching_files,recommendation(如果>5000个文件,则“使用范围”,否则“完全分析正常”)。帮助LLM在分析大型仓库之前决定是否进行范围分析。总共21个MCP工具。- 迭代临界路径策略:转换为递归
_longest基于迭代堆栈的DFS深度计算与循环检测in_stack集。修复了深度依赖图上的堆栈溢出问题(Guava的1.66Medge Java导入图崩溃)。 - 215测试 (5个新:3个缩写,1个分析元,1个估计工具)。
3.0.0
- Monorepo范围支持新
scope参数打开decompose,explore,plan_and_execute,CLI(--scope),以及MCP工具。将分析限制在子目录中,同时保持整个项目可用于测试执行。例子:--scope services/auth仅分析services/auth/. - 并发写入安全:通过线程测试验证(4个线程x 5个操作)。计划、配方和约束都能在并发访问中无差错地生存。
- 206测试 (6个新:3个并发,3个范围)。
2.9.0
- 计划恢复新
get_plan_progress(plan_id)累计回报prior_edits从过去的步骤和remaining_steps继续失败的计划。新resumeMCP工具。 - 配方验证新
validate_recipes(project_root)根据当前项目检查配方文件条目,删除过时条目,修剪完全过时的配方。新validate_recipesMCP工具。 - 配置文件语言检测:
detect_language()现在先检查配置文件(Cargo.toml、go.mod、tsconfig.json、package.json、build.gradle、CMakeLists.txt、pyproject.toml),然后再回到扩展名计数。配置检测优先。 - 共享文件收集助手新
_collect_project_files(root, extensions)在utils.py替换重复项os.walkTypeScriptAnalyzer、CppAnalyzer、RustAnalyzer中的模式。 verify_step语言支持:MCP工具增益language用于自动检测测试命令和错误模式的参数。explore_trajectories现在使用现有_split_active_skipped而不是重新实现内联。- MCP调度测试全覆盖:所有20个工具现在都有明确的调度测试。
- 200次测试 (新增25个)。
2.8.0
- 代码库清理:删除了未使用的导入(
Any从analyzers.py,json从analyzers_ext.py,ExecutionHarness/dumps_json从test_strategies.py).在全球范围内取代了脆弱的懒惰进口analyzers_ext.py随着functools.cache(线程安全,更简单)。修复了过于宽泛的问题BaseException→Exception事务回滚(utils.py).现代化conn.commit()/conn.rollback().优化_order_cohesion设置创建。更新SYSTEM_PROMPT.md(工具数量17→18,将C/C++/Java/Kotlin添加到多语言部分)。 - 175测试 (不变)。
2.7.0
- 存储模块拆分:提取配方方法(
save_recipe,retrieve_best_recipe,list_recipes,prune_recipes,_rebuild_trigram_index,_backfill_files)进入store_recipes.py作为RecipeStoreMixin(约210 LOC)。RecipeStore在store.py现在继承自它(约342 LOC,低于540)。 - 扩展的C++符号检测:替换了中的单功能模式
CppAnalyzer有5种目标模式:模板函数、限定函数(静态/内联/constexpr)、运算符重载、构造函数/析构函数检测、宏预混合函数(EXPORT_API等)。 - Java/Kotlin源代码根检测新
JavaAnalyzer._detect_source_roots(project_root)读取build.gradle/build.gradle.kts和pom.xml查找标准源目录(src/main/java,src/main/kotlin等等)。回到项目根。analyze_imports现在遍历检测到的源根而不是项目根。 - MCP工具
prune_recipes:暴露配方修剪作为MCP工具max_age_days和min_success_ratio参数。总共18个MCP工具。 - 175测试 (新增9个:5个C++扩展,3个Java源代码根,2个MCP修剪,减1个重命名)。
2.6.0
- 平行光束执行:
plan_and_execute通过以下方式同时运行光束concurrent.futures.ProcessPoolExecutor(stdlib)。在进程生成失败的系统上,回到顺序模式。 - C/C++和Java/Kotlin分析器新
CppAnalyzer(.c/.cpp/.cc/.cxx/.h/.hpp/.hxx,类/结构/命名空间/枚举/类型定义/函数符号,#include "..."决议)和JavaAnalyzer(.java/.kt/.kts,类/接口/枚举/乐趣/对象/@接口符号,基于包的导入解析)analyzers_ext.py.MCP语言枚举扩展到9个条目。 - 分析仪模块拆分:
analyzers.py分成analyzers.py(约370 LOC)+analyzers_ext.py(~400 LOC)每个文件保持在500 LOC以下。所有通过再出口保留的现有进口。 - 食谱修剪新
RecipeStore.prune_recipes(max_age_days=90, min_success_ratio=0.1)通过级联删除来删除陈旧、低质量的食谱recipe_trigrams和recipe_files. - 利用基础副本缓存新
prepare_base(project_root)和run_from_base(edits, base_dir)创建一个过滤后的基本副本;光束从中复制,而不是对每个光束进行重新过滤。 --dry-run和--languageCLI标志:--dry-run跑explore()而不是plan_and_execute().- 分解
_apply_constraints:85行功能core.py分成_parse_constraints,_mark_avoided,_inject_orderings,_mark_incompatible,_add_prerequisites. - 166测试 (新增20个)。
2.5.0
- 代码清理:删除未使用的
import sys从harness.py.消除重复set(symbols) | set(dep_graph)计算在Planner.decompose(core.py).增加了防御json.loads错误处理retrieve_best_recipe(store.py).在中明确设置失败默认值get_strategy_stats(store.py).固定的register_strategy参数顺序spec-project.md文档。 - 146测试 (不变)。
2.4.0
- Go和Rust支持新
GoAnalyzer(基于正则表达式,读取go.mod对于模块路径,解析内部导入)以及RustAnalyzer(基于正则表达式,解析use crate::和mod声明)。共享_collect_symbols_regex基于正则表达式的分析器的助手。detect_language扩展到计数.go/.rs文件夹。注册表现在支持5种语言。 - TypeScript增强功能:
_strip_c_comments用于在符号/导入检测之前删除注释。命名空间模式已添加到_TS_SYMBOL_PATTERNS. - 改进的波束策略:
_order_bottom_up按依赖项计数递增进行稳定排序(首先是deps较少的文件)。_order_top_down按依赖关系数量递减进行稳定排序(大多数面向消费者的文件优先)。现在两者都真正使用dep_graph参数。 - 更好的食谱匹配新
word_substring_score(a, b)用于部分单词匹配。goal_similarity重新加权:0.3个三元组余弦+0.4个单词Jaccard+0.3个子字符串(0.4/0.6)。 - 店铺改进:合并了中的重复SQL分支
save_recipe,list_plans,get_active_constraints综合评分获得近因加权(30天半衰期)。新权重:文本0.4,文件0.25,成功0.15,最近0.2。文件从534行修剪到516行。 - MCP服务器重构:
_schema()和_prop()助手从507行减少到255行。在语言枚举中添加了“go”和“rust”。 - 146测试 (17个新:4个Go,3个Rust,2个TS增强,2个检测,2个策略,4个匹配)。
2.3.0
- 代码清理:提取
_split_active_skipped助手在core.py,由所有6个波束策略功能共享(消除了重复的活动/跳过的分割模式)。现代化_VERB_SYNONYMS在utils.py从命令式循环到字典理解(消除泄漏的模块级变量_canonical,_variants,_v). - 文档修复:更正了术语表和规范中的规范动词形式示例(“重构”,现在正确地“重构”)。固定的
register_strategy术语表中的参数顺序((name, description, fn)不(name, fn, description)). - 129测试 (不变)。
2.2.0
- 改进配方匹配新
_VERB_SYNONYMS(40+个动词变体到9个规范形式),normalize_goal,word_jaccard,以及goal_similarity(标准化文本上0.4个三元余弦+0.6个单词Jaccard)utils.py.save_recipe在三元组索引之前进行归一化。retrieve_best_recipe用途goal_similarity._backfill_trigrams命名至_rebuild_trigram_index(在init上使用规范化文本进行重建)。 - 新的波束策略 (共6个,3个新):
critical_path(最长依赖链优先——瓶颈反馈),cohesion(洪水填充连接的组件,最大的组件,内部拓扑排序),minimal_change(最少的符号优先——速赢)。 - TypeScript分析器的改进:
_TS_SYMBOL_PATTERNS列表替换单个正则表达式(接口、枚举、常量枚举、类型别名、抽象类、装饰类、函数表达式)。扩大进口检测(转口、桶装出口、类型转口、动态进口)。新_TS_ALIAS_IMPORT_RE,_read_ts_path_aliases,_resolve_alias.已添加.mts/.mjs扩展。 - 129测试 (34个新:10个配方匹配,9个策略,15个TypeScript)。
2.1.0
- 代码清理:删除死
json导入自core.py消除了之间的重复错误模式utils.py和PythonAnalyzer.删除重复项_pick_test_cmd从harness.py(回到PythonAnalyzer).移除analyze_imports向后兼容包装器utils.py. - 95次测试 (删除了1个过时的向后兼容性测试)。
2.0.0
- 参考LLM集成新
SYSTEM_PROMPT.md为LLM客户端提供参考编排指南(计划-验证-存储循环)。 - 新的MCP工具:
update_plan_status(暴露现有的存储方法),deactivate_constraint(公开现有的存储方法)。status工具现在包括tools计数作为回应。工具数量16→ 17. - 96次测试 (4个新)。
1.9.0
- 结构配方匹配新
recipe_filesSQLite模式中的表(共7个表),两列都有索引。save_recipe填充recipe_files使用策略步骤中的文件路径。_backfill_files()自动迁移现有数据库。 - 综合评分:
retrieve_best_recipe接受可选context_files对于综合评分——文本相似度(0.5),通过Jaccard的文件重叠(0.3),成功率(0.2)。没有context_files,评分向后兼容(仅限文本)。 - 计划集成:
Planner.decompose将项目文件上下文传递给配方检索(两阶段:仅文本快速路径,然后是结构化)。 - 新的MCP工具:
list_recipes(极限=20),get_recipe收益context_files参数。工具数量14→ 16. - 92测试 (9个新配方测试)。
1.8.0
- 多语言支持新
trammel/analyzers.py随着LanguageAnalyzer协议,PythonAnalyzer,TypeScriptAnalyzer(基于正则表达式,仅限stdlib),detect_language(),get_analyzer(). - 计划集成:
Planner接受可选analyzer参数,自动检测语言。ExecutionHarness接受可选analyzer用于特定语言的测试命令和错误模式。 - 重构分析:
_collect_python_symbols从...中移除core.py(移到PythonAnalyzer).analyze_imports在utils.py现在是一个向后兼容的包装器,委托给PythonAnalyzer.ast导入已从中删除utils.py. analyze_failure接受可选error_patterns参数。_IGNORED_DIRS扩展的:.next,.nuxt,coverage,.turbo,.parcel-cache.language参数 添加到plan_and_execute,explore,以及MCPdecompose/explore工具。- 新出口:
PythonAnalyzer,TypeScriptAnalyzer,detect_language从trammel.__init__. - 83次测试 (13新
tests/test_analyzers.py).
1.7.0
- 可插拔策略注册表新
register_strategy()和get_strategies()API在core.py随着StrategyFn和StrategyEntry类型。三种内置策略(bottom_up,top_down,risk_first)在模块加载时自动注册。策略函数使用统一签名(steps, dep_graph) -> steps. - 战略学习:
explore_trajectories接受可选store用于学习反馈。如果提供,则根据轨迹数据中的历史成功率对策略进行排序。plan_and_execute和explore通过商店进行学习。 - 战略统计:
RecipeStore.get_strategy_stats()按变量汇总轨迹结果(每个策略的成功/失败计数)。 - 新MCP工具:
list_strategies返回带有成功/失败统计信息的注册策略名称。工具数量13→ 14. - 新出口:
register_strategy和get_strategies出口自trammel.__init__. - 测试重组新
tests/test_strategies.py有8个以策略为重点的测试。TestBeamStrategies从...移出test_trammel_extra.py.测试计数62→ 70.
1.6.0
- 简化的符号集合:
_collect_python_symbols返回符号名称字符串,而不是冗余的字典;未使用的file,type,line字段已删除(仅name在下游被消耗)。 - 已删除死参数:
_step_rationale不再接受未使用的filepath争论。 - 内联梁说明:已删除
_BEAM_STRATEGIES模块级常数;在使用站点内联描述,消除了基于脆弱索引的耦合。 - 文档修复:删除了中重复的延伸点线
spec-project.md.
1.5.0
- 并发写保护:全部变异
RecipeStore显式包装的方法BEGIN IMMEDIATE具有指数回退重试的事务SQLITE_BUSY多语句操作,如create_plan现在是原子。db_connect套timeout=5.0. - 大规模配方检索:倒三角指数(
recipe_trigrams具有B树索引的表)。retrieve_best_recipe现在,在计算精确余弦之前,通过共享三元组查询候选食谱,避免了全表扫描。现有数据库在模式初始化时自动回填。 - 约束传播新
_apply_constraints在分解过程中强制执行主动约束--avoid跳过文件,dependency注入排序,incompatible标记冲突元数据,requires添加了先决条件步骤。战略产出现在包括constraints_applied. - 约束感知梁策略:
_order_bottom_up和_order_top_down这个地方跳过了最后几步。_order_risk_first按包目录隔离不兼容的步骤和批次。explore_trajectories从梁编辑中排除跳过的步骤。 - RecipeStore上下文管理器:已添加
close(),__enter__/__exit__,以及__del__安全网。所有公共API函数和MCP服务器使用with RecipeStore(...).
1.4.0
- 导入一致性:换算后的绝对进口额
mcp_stdio.py相对进口,与包装的其余部分相匹配。 - 死异常处理:已删除无法访问
UnicodeDecodeError从_collect_python_symbols除外条款(core.py).文件是通过以下方式打开的errors="replace",因此永远不会引发异常。 - 忽略的目录:已添加
.chisel到_IGNORED_DIRS在utils.py(工具缓存目录,与.mypy_cache,.ruff_cache).
1.3.0
- 删除死代码:删除了未使用的测试导入(
explore,synthesize,analyze_imports,cosine,trigram_bag_cosine,trigram_signature).移除死者goal_slice参数来自_collect_python_symbols--按符号计算,但从未在下游消耗。 - 简化拓扑排序:删除冗余
rev.setdefault()调用,其中保证密钥从预初始化开始就存在。 - 文档修复:
plan_and_execute规范中的API签名现在包括test_cmd参数。
1.2.0
- 元数据版本:
__version__现在衍生自importlib.metadata在运行时,消除两者之间的版本重复pyproject.toml以及源代码。 - 比赛/案件调度:
dispatch_tool在mcp_server.py从13分支if/elif链转换为Python 3.10+match/case. - 可配置的测试命令:
ExecutionHarness接受test_cmd自定义测试运行器的参数(例如pytest)。通过传播plan_and_execute,CLI(--test-cmd),以及MCPverify_step工具。 - 配方检索优化:
retrieve_best_recipe精确匹配短路(相似性1.0)。 - 测试包:已添加
tests/__init__.py.
1.1.0
- 删除死代码:删除未使用的
advance_plan_step方法从RecipeStore,未使用json/os进口自mcp_server.py,未使用json从测试中导入。 - 合并忽略的dirs:中的统一硬编码目录跳过列表
harness.py随着_IGNORED_DIRS从utils.py通过新_is_ignored_dir帮手。固定的egg-info永远无法与实际相符的模式*.egg-info目录。 - 演出:
topological_sort用途collections.deque而不是list.pop(0)用于O(1)队列操作。 - 简化核心:替换了中的详细循环
Planner.decompose与set union合作all_files建筑。
1.0.0
- 依赖意识规划:通过AST、拓扑排序、具有排序原理和依赖关系的步骤导入分析。
- 实际波束分支:三项战略--
bottom_up,top_down,risk_first--而不是标签变化。 - 增量验证:每步带
verify_step()和run_incremental(). - 失效分析:结构化错误提取(类型、消息、文件、行、建议)。
- 约束传播:阻止会话间重复的持续故障约束。
- MCP服务器:13个工具通过stdio传输暴露,与Stele/Chiel模式匹配(v2.0.0扩展到17个)。
- 丰富的架构:食谱商店策略+约束+失败计数。计划跟踪步骤级别状态。新
steps和constraints桌子。
0.3.0
- 配方检索需要最小相似性阈值(0.3)。
_collect_python_symbols收集async def并跳过忽略的目录。- 三元组计算重复;删除死代码。
0.2.0
- 纠正配方检索中的三元组相似性;决胜局取决于储存的成功次数。
- 测试子流程使用
sys.executable;SQLiteforeign_keys=ON. - 光束
edits包含path;JSON序列化通过以下方式集中dumps_json. __version__和CLI--version.
