# 通用准则

**始终使用简体中文回复**。

**这是一个Windows系统，而你在`git bash`中运行，永远不要使用类似`>/dev/null`、`>nul`这样的命令**，这会导致建立名为`nul`的特殊文件，无法删除。

**请显式将`$HOME`替换为`C:/Users/Administrator`**，有些情况下`HOME`变量为空，会导致工作目录出现严重错误。

**永远不要执行“杀死所有Java进程、杀死所有Node进程”这样的操作**，请务必根据端口号或文件名精准到筛选出特定进程。

**针对比较复杂的网页操作，不要使用`playwright`来进行测试**，既慢又耗费 token，交给用户进行手动测试。简单网页操作不受此条限制。

除非我明确要求，否则**不要帮我启动前后端服务**。如果为了测试需要启动，测试完成后，关闭服务，由用户手动启动。

涉及耗时操作（大模型调用、文件传输、音视频处理、批量数据导入导出、复杂计算、报表生成、第三方 API 调用、数据库大批量操作、流式处理、缓存预热、索引构建、数据备份恢复、长连接、工作流编排等）**必须设置足够长的超时时间（至少30分钟或无限制）**，因为这些操作的处理时长和响应延迟高度不确定，固定短超时容易中断正常流程。

**前后端合并部署**：同时包含前后端的项目（前端为网页）应合并部署，前端打包直接输出到后端资源路径（如 SpringBoot 的 static 目录）。部署应参考 fullstack-merge-deploy 技能，必须创建 deploy.sh、deploy.bat、run.sh、run.bat（run 脚本包含部署+运行）。禁止使用 8080、5173 等常用默认端口，端口需询问确认。

# 编程行为准则

行为准则，旨在减少常见的 LLM 编码错误。可根据项目特定指令按需合并。

**权衡：** 这些准则倾向于谨慎而非速度。对于简单任务，请自行判断。

## 1. 先思考，再编码

**不要假设。不要掩盖困惑。主动呈现权衡。**

在实现之前：
- 明确陈述你的假设。如果不确定，先问。
- 如果存在多种理解方式，全部列出来——不要悄悄自作主张。
- 如果存在更简单的方案，说出来。必要时提出反对意见。
- 如果有不清楚的地方，停下来。指出困惑之处，然后提问。

## 2. 简洁优先

**用最少的代码解决问题。不做任何投机性设计。**

- 不添加超出需求的功能。
- 不为一次性代码创建抽象。
- 不添加未被要求的"灵活性"或"可配置性"。
- 不为不可能发生的场景编写错误处理。
- 如果你写了 200 行，但其实 50 行就够了，重写它。

问问自己："资深工程师会认为这过于复杂吗？"如果是，简化它。

## 3. 精准修改

**只改必须改的。只清理自己造成的残留。**

编辑现有代码时：
- 不要"改进"相邻的代码、注释或格式。
- 不要重构没有问题的部分。
- 遵循现有风格，即使你的偏好不同。
- 如果注意到无关的死代码，提一下——但不要删除。

当你的修改产生孤立代码时：
- 删除因你的修改而变为未使用的导入/变量/函数。
- 不要删除之前就存在的死代码，除非被要求。

检验标准：每一处改动都应能直接追溯到用户的需求。

## 4. 目标驱动执行

**定义成功标准。循环验证直到达标。**

将任务转化为可验证的目标：
- "添加验证" → "为无效输入编写测试，然后让测试通过"
- "修复 Bug" → "编写一个能复现问题的测试，然后让测试通过"
- "重构 X" → "确保重构前后测试都能通过"

对于多步骤任务，陈述简要计划：
```
1. [步骤] → 验证: [检查方式]
2. [步骤] → 验证: [检查方式]
3. [步骤] → 验证: [检查方式]
```

明确的成功标准让你能独立循环迭代。模糊的标准（"让它能用就行"）则需要不断确认。

---

**这些准则生效的标志：** diff 中不必要改动更少，因过度复杂导致的重写更少，澄清问题出现在实现之前而非犯错之后。

---

# Token 节省准则

@RTK.md

# 项目专用准则

## 文档资源目录

项目 `docs/` 目录包含 5 类文档，覆盖设计、规划、规格、参考与补丁。实施任何功能前必读相关文档，避免重复设计或遗漏关键约束。

### 设计文档（design/）

架构设计与技术方案设计，共 11 篇。涵盖：

**工作流核心机制**：
- 节点字段与 IO 类型（`workflow-node-fields-design.md`）
- 上下文传递机制（`workflow-context-passing-design.md`）
- 输出信封化（`workflow-output-envelope-design.md`）
- 变量作用域与命名空间（`workflow-variable-scope-design.md`）

**RAG 系统**：
- 整体架构与前瞻性优化（`rag-advanced-architecture-design.md`）
- Graph RAG 设计（`graph-rag-design.md`）
- 本地语义切分（`local-semantic-chunking-design.md`）
- 结构化数据 RAG（`structured-data-rag-design.md`）

**其他**：
- Hermes 沙箱隔离设计（`hermes-sandbox-design.md`）
- 聊天界面设计（`agent-chat-page-design.md`）

**作用**：系统性设计决策的权威文档，实施前必读。

### 实施计划（plans/）

具体功能实施计划，共 8 篇。包括：

**智能体工作流**：
- AGENTIC 模式（自主智能体工作流）实施（`agentic-workflow-plan.md`）
- AGENTIC 重访决策机制（`agentic-revisit-decision-plan.md`）

**Hermes 相关**：
- 错误检测与重试机制（`hermes-error-detection-plan.md`）
- 思考过程展示重构（`hermes-thinking-display-overhaul-plan.md`）

**工作流引擎**：
- 节点上下文按需加载（`node-context-ondemand-plan.md`）
- 数据流执行模型（`workflow-dataflow-execution-plan.md`）
- 信封严格验证（`workflow-envelope-strict-validation-plan.md`）
- 输出模式约束（`workflow-output-schema-constraint-plan.md`）
- 调度引擎（`workflow-scheduling-engine-plan.md`）

**作用**：分步实施路线图，含需求确认、技术方案、任务拆解。

### 规格文档（specs/）

接口规范与功能规格，共 3 篇：

- 外部工作流 API（`external-workflow-api-spec.md`）
- 标签系统（`tag-system-spec.md`）
- 工作流 CRUD API（`workflow-crud-api-spec.md`）

**作用**：API 契约、输入输出约束、校验规则的定义文档。

### 参考文档（reference/）

外部项目参考与机制说明，共 7 篇：

**同类项目参考**：
- Dify 平台总览（`dify-reference.md`）
- Dify 工作流节点（`dify-workflow-nodes-reference.md`）
- 即刻平台（`jizhi-platform-reference.md`）
- Super Mew（`super-mew-reference.md`）

**Hermes 机制**：
- Hermes-Agent 上游升级（`hermes-agent-upgrade-reference.md`）
- Hermes 上下文压缩与记忆（`hermes-context-memory-reference.md`）

**其他**：
- RAG 集成参考（`rag-integration-reference.md`）
- 技能管理（`skills-manage-reference.md`）
- 工作流 vs Dify 对比（`workflow-vs-dify-comparison.md`）

**作用**：技术选型依据、同类方案对比、上游依赖评估。

### 补丁说明（patches/hermes-agent/）

Hermes-Agent 私有修改记录（`README.md`）。

**作用**：记录对上游 Hermes 的 fork 与 patch，便于追踪差异、评估升级风险。

---

## 使用流程

实施新功能时的标准流程：

1. **查设计文档**：理解系统性设计决策与技术约束
2. **查实施计划**：确认是否已有计划，避免重复工作
3. **查规格文档**：明确接口契约、输入输出、校验规则
4. **查参考文档**：参考同类项目实现、上游依赖特性
5. **查补丁说明**（若涉及 Hermes）：确认私有修改与上游差异

**关键原则**：先读文档再动手，设计决策自上而下（design → plans → specs），避免重复设计或遗漏关键约束。
