Files
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

68 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DSH 平台项目 — 工作区指令(DSH 会话必读)
> 🔴 **为什么有这个文件(2026-09-27 实测)**:DSH 的指令候选**只有工作区根的 `AGENTS.md` / `CLAUDE.md`(+ `.local.md`)**,**不读 `CODEBUDDY.md`** ⇒ 本项目此前把全部规则写在 `CODEBUDDY.md`(15,650 B)里,**对 DSH 会话完全不生效**(不是被预算截断,是没进候选)。本文件 = **对 DSH 生效的那一层**。
> 📎 **完整规则**(解释段 / 历史 / 实证 / 命令全文)⇒ 同目录 **`CODEBUDDY.md`(必读)**。两份中**同名条目冲突时以本文件为准**;改任一份 ⇒ **另一份同步**。
> 🔧 `PY`=`E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe` | `WS`=`E:/ProgramData/AIProject/ai1net-dsh-server` | `DOC`=`D:\github\dsh_shenxian\dsh-server-docs` | 脚本目录 = `$DOC\07-scripts`。
## 0. 动作前三条(必须)
1. **先跑状态**(1 次调用顶十几轮探索):`"$PY" "$WS/state.py"`(`--online` 加远端基线)—— **跑完之前不许 Glob/Grep 全库摸底**。
2. **改文件之前先"抢"锁**(不是"检查"):`bash $DOC\07-scripts/handoff-guard.sh --claim-exec "<会话名>"` —— **抢到之前不要动文件**;抢不到 ⇒ 停手报告(⛔ 不删锁、不接管,R9)。
3. **推送前对账**:`bash scripts/docs-sync-check.sh` + `PUSH=1 bash "$DOC\07-scripts/handoff-guard.sh"`(幽灵文件硬判定)。
## 1. 提问判据(唯一一条)
> **只问「超过现有判断方法边界」的问题。**
- **边界内 ⇒ 自决,不要问**:技术选型 / 实现路径 / 命名与数据结构 / 调参 / 部署与同步 / 排查方法 / 版本依赖 / 兼容降级 / 方案取舍 / 文档技术内容。**「部署上线」属此项 ⇒ 做完即上线**;生产变更**直接做**、只需**动手前一句话说明**。
- **边界外 ⇒ 必须问**:① 业务目标与优先级 ② 花钱与资源承诺 ③ 对外承诺 ④ 需用户提供的凭据或审批 ⑤ 无客观优劣的偏好 ⑥ 影响面超出本平台 ⑦ 红线门禁 ⑧ 判不准。
- **判据**:有没有**客观可判的优劣**?有 ⇒ 自决;没有 ⇒ 问。上抛门槛 = **存在真取舍**(候选只有优点或只有缺点 ⇒ 自己拍掉)。
- ⛔ **禁用征询句收尾**(「要我…吗 / 请确认 / 你看怎么办」);⛔ **不许捆包**(要问红线只问那一句)。
- 🔴 **待拍板内容必须自包含**:① 一句话说清要决定什么(不用指代)② 为什么要用户定(影响谁 / 断多久 / 花多少钱 / 会不会丢数据)③ 每个候选**写优点 + 缺点** ④ 一轮一问;⛔ 不出现包名 / 路径 / 变量名 / 类名。
- 📐 **排版**:首屏 3 行给判定 · 层级 ≤3 · 每节 ≤7 行 · 表格 ≤5 列 · 一条信息只说一次。
## 3. 红线 R1–R11(任一条命中 ⇒ **先停手**;效率论证不构成豁免)
| # | 禁令 / 判据 |
|---|---|
| **R1** | **不自动升级 dsh** —— 升级须走独立"测试 → 评估 → 修复"流程 |
| **R2** | **不改官方 dsh 主程序与缓存** —— `@deepseek-ai/dsh` 零改动;扩展只走 profile 层官方插件机制 |
| **R3** | **client bundle 禁 `exports.default`** —— 只导出 `apply` + `inject` |
| **R4** | **不用真实账号测登录** —— 用临时 session(`mksess.cjs` 直插),用完即删 |
| **R5** | **权限只准收窄** —— 凡**扩大**(新挂载 / 放开遮蔽 / 暴露平台目录或 env / 放宽 nft / 提档位)⇒ 先出「权限影响评估」并取得确认 |
| **R6** | **先查已有资产再动手** —— 可用技能 → 本机 / 项目已有技能与记忆 |
| **R7** | **禁未经确认的批量 / 全仓写入** —— 只做被明确要求的事;禁全库遍历·通配符改写 / 批量换行符改动 / `cp -r` 覆盖 / `git add -A`;**>10 文件 ⇒ 先出清单 + 确认**;**本机不是沙箱**(scp 会传导到生产) |
| **R7-边界** | **R7 只管「不是我的 lane」**:我 lane 内的细节(部署 / 重启 / 改配置 / 跑自己的脚本 / 改自己的插件)⇒ **直接做**;别人的 / 归属不明 ⇒ **只报告、不动手**。判据看**归属** |
| **R8** | **生产变更**:`47.77.182.89` 是**开发环境服务器** ⇒ 重启 / 停 scope / drain / 改配额·env / nginx·nft **直接做**。两条自律:**动手前一句话说明** + **不可逆操作**(删数据 / 迁 DB / 清目录)**先报清单** |
| **R9** | **⛔⛔ 绝对禁止「人工删锁 / 接管」** —— 锁**只能由持有者自己释放**;抢不到锁唯一合规 = **停手 + 报告用户**(处置权只属用户本人) |
| **R10** | **⛔ 绝不以 root(或非该实例 uid)运行 / 触碰用户实例的东西** —— ① 验证 / 冒烟 / 探针**必须以该 uid 运行**或进 bwrap 沙箱 ② 确需 root ⇒ 收尾必 `find <home> -user root -exec chown <uid>:<uid> {} +` ③ 实例起不来**先看属主 / EACCES,别先怀疑 OOM** |
| **R11** | **⛔ 只做正向迭代** —— 十维(目标 / 方向 / 架构 / 功能 / 性能 / 安全 / 交互 / UI / 便利性 / 扩展性)任一维净变差 ⇒ 立即停下复盘;⛔ 禁"必要代价 / 后续再优化 / 藏进交付不写" |
## 4. 提交边界
**未明确要求 ⇒ 不 commit / 不 push / 不同步仓库**;用户说了才做,且**只 add 自己改的文件**。⛔ 三类禁入库:`tmp/` |中间产物(`_tmp_seq*/`、`_中间产物*/`)|`$DOC\05-交接单/` 下的会话交接单。提交前自查 `git diff --cached --name-only` 命中三类别 ⇒ **立即 `git reset`**。
## 5. 规划与执行分离
规划会话**只产出交接单**(8 段必填),**不 ssh、不改码、不重启、不 scp**;落地交另一个执行会话(**不读其上下文**)。
## 6. 并发纪律(要点)
- 共享文件**只用精确片段替换**,⛔ **禁整文件覆盖**;⚠️ 机制层(`config`·`crypto`·`isolation`·`index`·`scripts`·`CODEBUDDY.md`·锁与钩子本身)**必须独占**。
- **抢锁必须"校验结果"**:① 检查退出码(⛔ 不接管道 —— `grep` 会吃掉退出码)② 复读锁文件断言是自己的。
- ✅ 锁**只管写不管读**;⚠️ 会改本地状态的命令(`git fetch/checkout/stash/reset/switch`、任何写盘)**不算读** ⇒ 要持锁。
- 🔓 释放时机 = **交付闭环走完**(台账 → 四件套 → 提交 + 对账 → 归档);**要等用户拍板 ⇒ 先释放再等**;完工**反序释放**;结束语必须对锁状态负责。
## 7. 环境要点(反复踩过)
- ⚠️ **本机 bash 的 PATH 常丢** ⇒ 每条命令前置 PATH 导出(`PortableGit/versions/1.2.0` 下的 `usr/bin` + `mingw64/bin`;`git.exe` 只在 `mingw64/bin`);⛔ 别把 `/c/Windows/System32` 放前面。🔴 **调用间不共享 shell 状态**。
- 其余(转 LF / Node 22 / 禁 `py_compile` / pnpm / 会话取证 / 推送核验)⇒ **`CODEBUDDY.md` §7 + §D**。
## 8. 收尾与交付门禁
- **收尾四件套**:① 落地件(绝对路径)② **校验命令与真实读数**(⛔ 不是自述)③ 台账 / 入口回填 ④ 下一棒登记,或写清「不登记 + 原因」。
- 🔴 **本机改完 ≠ 交付**:必须走完**生效链路**并在**用户可见面**复验(`src/` 改动 → build 出 `lib/`;client bundle → 重建;profile / 插件 → **重启实例**)。
- **结束语必须对状态变更负责**:写明「未留下后台进程 / 未建会话 / 无待跑任务」,或**点名遗留物 + 原因 + 下一步**。
> ⛔ **本文件与 `CODEBUDDY.md` 必须双份同步**(两个工作区副本亦然);只改一份 = 静默漂移。