3.3 KiB
3.3 KiB
AGENT_RULES.local
目的:记录 tsl-devkit 项目私有约束,只补充 AGENT_RULES.md
与 .agents/ 没有覆盖的仓库事实。
进入任务前
- 先读
memory-bank/project-brief.md、memory-bank/tech-context.md、memory-bank/system-patterns.md - 处理 C++ 代码前,再读
.agents/cpp/index.md - 做 playbook 对齐时,只改 playbook 管理的规则与上下文文件;
README.md、lsp-server/README.md、vscode/README.md、vim/README.md不在本任务范围内
架构边界
- LSP 对外兼容性优先:
method字符串、JSON 字段名、响应结构 不得无依据改动 core/负责协议入口、生命周期与路由; 具体能力实现放在provider/provider/负责把 LSP 请求编排到项目能力, 共享状态统一通过manager/获取language/承载 AST、语义、符号分析;bridge/只封装第三方库,不放业务规则- 新增能力优先沿现有分层扩展,不跨层直接耦合
Tree-sitter / AST 同步规则
新增或修改语法、解析、AST 链路时:
- 先更新语法源、生成物和解析入口,再补 AST / semantic 适配
lsp-server/src/tree-sitter/与lsp-server/test/test_tree_sitter/src/下同名 parser / scanner 文件必须同步- AST 节点结构变化时,同步检查
language/ast、 反序列化、debug printer 和对应测试 - 汇报中明确归因:语法层 / AST 层 / 语义层
构建与验证
默认 Linux 构建目录:lsp-server/build/clang-linux/Release
- 构建前置:
CONAN_HOME=/tmp/conan-home conan install lsp-server \
-pr:h=lsp-server/conan/profiles/linux-x86_64-clang \
-pr:b=lsp-server/conan/profiles/linux-x86_64-clang \
-of lsp-server/build/clang-linux/Release \
--build=missing
cmake -S lsp-server -B lsp-server/build/clang-linux/Release -G Ninja \
-DCMAKE_TOOLCHAIN_FILE=$PWD/lsp-server/build/clang-linux/Release/generators/conan_toolchain.cmake \
-DBUILD_TESTS=ON
- AST / 解析改动至少执行:
ctest --test-dir lsp-server/build/clang-linux/Release -R 'test_ast|test_tree_sitter' --output-on-failure - Provider / 协议改动至少执行:
ctest --test-dir lsp-server/build/clang-linux/Release -R 'test_provider|test_lsp_any|request_json' --output-on-failure - 语义 / 符号改动至少执行:
ctest --test-dir lsp-server/build/clang-linux/Release -R 'test_semantic|test_symbol' --output-on-failure
Playbook 对齐规则
docs/standards/playbook/是 vendored 快照; 升级必须优先使用git subtree pull --prefix docs/standards/playbook ... --squash- subtree 更新后,统一执行
python docs/standards/playbook/scripts/playbook.py -config playbook.toml同步规则、提示词和.agents/ - 项目自维护文件是
AGENT_RULES.local.md、memory-bank/*.md、docs/superpowers/** - playbook 对齐不改产品 README,也不把 playbook 细节写入产品介绍文档
工作区注意事项
- 该仓库常位于 CIFS 共享目录,
git status、git diff-index可能出现假脏或卡住 - 遇到索引异常时,优先使用:
git -c core.trustctime=false -c core.checkStat=minimal ... - 必要时执行
git update-index --refresh, 或先给受影响目录补u+w权限后再做 subtree / stash / clean
最后更新:2026-05-24