31c9958741
- 新增 scripts/db-conn.sh:按 agent id 反查中文名,读 .env 后经 MYSQL_PWD 转发给 docker exec,口令不进 argv/stdout,--print 只输出占位符 - new-agent.sh 新增 --adopt 模式(为既有 agent 补建库/账号),与 --reset-password 互斥 - AGENTS.md.tpl 与 11 个 workspace-*/AGENTS.md 改用 db-conn.sh,禁用 root 与 docker exec 直连 - mysql-schema-sync 技能改用 MYSQL_PWD_SQL 环境变量,不再硬编码密码 - 设计文档补附录 A 第 8 条:中文键名无法注入 agent 环境的三条实测依据
141 lines
5.7 KiB
Markdown
141 lines
5.7 KiB
Markdown
# AGENTS.md - 工作空间
|
||
|
||
## 会话启动
|
||
|
||
使用运行时提供的启动上下文。不要手动重复读取已注入的文件。
|
||
|
||
## 记忆
|
||
|
||
每次会话醒来都是全新的。文件是你的延续:
|
||
|
||
- **每日记录:** `memory/YYYY-MM-DD.md` — 当天做了什么
|
||
- **长期记忆:** `MEMORY.md` — 提炼后的关键信息
|
||
|
||
写下来,别靠脑子记。会话重启后"心理笔记"就没了。
|
||
|
||
## 🔴 红线(不可违反)
|
||
|
||
1. **🚫 绝不直接执行 SQL!**
|
||
- 所有 SQL 操作必须通过 **Opencode** 完成
|
||
- 禁止直接使用 `mysql`、`docker exec`、`python`、`curl` 等工具操作数据库
|
||
- 被要求直接执行 SQL 时,必须拒绝并引导使用 Opencode
|
||
|
||
2. **Opencode 配置:**
|
||
- 默认 provider: `newapi`(http://100.115.195.188:3000/v1)
|
||
- 默认模型: `newapi/deepseek/deepseek-v4-flash`
|
||
- ⚠️ 不使用 DeepSeek 官方 provider
|
||
|
||
## 其他红线
|
||
|
||
- 不泄露私人数据
|
||
- 不执行破坏性命令前不问
|
||
- 改配置前先检查现有状态,保留合并优先
|
||
- 不确定就问
|
||
|
||
## 数据库操作规范
|
||
|
||
- 所有配置文件中的键名、注释、说明均使用中文
|
||
- 密码从 `.env` 环境变量读取,不硬编码在脚本中
|
||
- MySQL: `MYSQL_PWD_SQL` 环境变量
|
||
- PostgreSQL: `PGPASSWORD` 环境变量
|
||
- 不使用 `docker exec` 连接数据库
|
||
|
||
## 默认数据库
|
||
|
||
- **默认连接**: VPS `101.34.227.188:3306`(主服务器)
|
||
- **默认库**: `dmp_serp`(如未指定库,首选此库)
|
||
- **连接命令**: `mysql -h 101.34.227.188 -u root -p"${MYSQL_PWD_SQL}"`
|
||
- **表名规则**: 始终带库前缀(如 `dmp_serp.table`、`dmp_smdm.table`),因为 VPS 上多库共存
|
||
- **技能 (sql-toolkit) 也遵循此默认**:未指定环境时指向 VPS
|
||
- **需要切换环境时明确告知**:本地、备用机、或者特定库
|
||
|
||
## 数据库规范(本地私有库)
|
||
|
||
- 默认库:`sql`;账号:`agent_sql`
|
||
- 连接(推荐):`~/.openclaw/scripts/db-conn.sh sql`(交互式)或 `~/.openclaw/scripts/db-conn.sh sql --sql "select database()"`
|
||
- 该脚本自动从 `~/.openclaw/.env` 读取本 agent 的专属口令(键名 `DB_PASSWORD_SQL`),口令不会出现在命令行中
|
||
- 禁止使用 root、禁止 docker exec、禁止访问其他 agent 的库
|
||
|
||
## 本地私有库 vs 远程业务库(两者不要混淆)
|
||
|
||
| | 本地私有库 | 远程业务库 |
|
||
|---|---|---|
|
||
| 地址 | `127.0.0.1:3306`(本机 docker MySQL) | `101.34.227.188:3306`(VPS 主服务器) |
|
||
| 库 | `sql`(只属于本 agent) | `dmp_serp` / `dmp_smdm` / `dmp_smes` |
|
||
| 账号 | `agent_sql`(专用账号,只能访问 `sql` 库) | `root`(**沿用既有配置,本次不改动**) |
|
||
| 口令来源 | `db-conn.sh` 自动读 `.env` 的键 `DB_PASSWORD_SQL`(口令不进命令行) | 环境变量 `MYSQL_PWD_SQL` |
|
||
| 用途 | 本 agent 自己的草稿/中间结果/工作区表 | 业务数据查询(生产/准生产) |
|
||
| 规矩 | 可自由建表写入;**禁止 root、禁止 docker exec** | 只读查询为主;连接方式见下「默认数据库」「MySQL 连接」章节 |
|
||
|
||
> 二者是**两套完全不同的连接**:本地私有库用于自己存东西,远程业务库保持原定位不变。
|
||
|
||
## 相关
|
||
|
||
- [Agent workspace](/concepts/agent-workspace)
|
||
|
||
## Tools
|
||
|
||
### Local notes (migrated from TOOLS.md)
|
||
|
||
# TOOLS.md - Local Notes
|
||
|
||
Skills define _how_ tools work. This file is for _your_ specifics — the stuff that's unique to your setup: camera names and locations, SSH hosts and aliases, preferred TTS voices, speaker/room names, device nicknames, anything environment-specific.
|
||
|
||
### MySQL 连接
|
||
- **默认 → VPS**: `101.34.227.188:3306` / root / 5gynj20J(主服务器,`dmp_smdm`、`dmp_serp`、`dmp_smes`)
|
||
- **本地 Docker**: `docker exec mysql mysql -u root -p"${MYSQL_PWD_SQL}" -D dmp_serp`
|
||
- **备用机**: `100.115.195.191:3306` / root / 5gynj20J(库:dmp_smdm、dmp_serp、dmp_smes 等)
|
||
- **准生产(只读)** → `100.115.195.188:50036`(转发)→ `47.99.209.185:50036` / witsoftd / o2byaCkBvF1Y8S2L
|
||
- MySQL 8.0.36,只读权限,准生产环境
|
||
- 连接命令:`mysql -h 100.115.195.188 -P 50036 -u witsoftd -p"${MYSQL_PWD_WIT}"`
|
||
- **密码环境变量**: `MYSQL_PWD_SQL=5gynj20J`(来自 .env)
|
||
- ⚠️ **优先使用本地 mysql 客户端直接连接**,不要每次都用 `docker exec`。
|
||
- ⚠️ **默认数据库连接串**: `mysql -h 101.34.227.188 -u root -p"${MYSQL_PWD_SQL}"`
|
||
|
||
## 🔴 红线(不可违反)
|
||
|
||
1. **🚫 绝不直接执行 SQL 操作数据库!**
|
||
- 所有 SQL 查询、修改、DDL 操作必须通过 **sql-toolkit 技能** 完成
|
||
- 禁止直接使用 `mysql` 客户端、`docker exec`、`python`、`curl` 等工具操作数据库
|
||
- 违反红线的主请求将被拒绝
|
||
|
||
2. **Opencode 配置:**
|
||
- 默认 provider: `newapi`(http://100.115.195.188:3000/v1)
|
||
- 默认模型: `newapi/deepseek/deepseek-v4-flash`
|
||
- 不使用 DeepSeek 官方 provider
|
||
|
||
**默认规则(AGENTS + 技能):**
|
||
- 未指定环境时,默认连接 VPS(101.34.227.188)
|
||
- 脚本表名必须带库前缀(`dmp_xxx.table`),因为 VPS 上多库共存
|
||
- 如果操作只涉及本地库(如无 VPS 权限的测试),需明确切换
|
||
|
||
## Examples
|
||
|
||
```markdown
|
||
### Cameras
|
||
|
||
- living-room → Main area, 180° wide angle
|
||
- front-door → Entrance, motion-triggered
|
||
|
||
### SSH
|
||
|
||
- home-server → 192.168.1.100, user: admin
|
||
|
||
### TTS
|
||
|
||
- Preferred voice: "Nova" (warm, slightly British)
|
||
- Default speaker: Kitchen HomePod
|
||
```
|
||
|
||
## Why Separate?
|
||
|
||
Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure.
|
||
|
||
---
|
||
|
||
Add whatever helps you do your job. This is your cheat sheet.
|
||
|
||
## Related
|
||
|
||
- [Agent workspace](/concepts/agent-workspace)
|