用户令逐字:「E:/ProgramData/.workbuddy/skills 提交仓库是指的这里」—— 即本目录就是仓库(2026-10-07 已在本目录建仓,见当日日志 §22),本轮把余下未纳管的 9 个技能一并提交。 本次入库(9 个技能,46 个文件): 1、`AI HOT` 2、`draw-ui` 3、`dsh-diagnose` 4、`dsh-knowledge` 5、`dsh-local-env` 6、`dsh-opensource-release` 7、`dsh-workflow` 8、`oil-motion` 9、`skills-security-check` 提交前核对: · **凭据类扫描**(`*.env` / `*token*` / `*.key` / `*secret*` / `*.pem`)⇒ **零命中** ✓; · 体积合计约 20 MB(`draw-ui` 12M + `oil-motion` 6.5M 是大头,形态为配图/素材 —— 仓库 `.gitignore` 里明写「`assets/*.png` 是内容不是产物」⇒ 属刻意入库); · 运行产物仍按既定规则排除(`__pycache__` / `logs/` / `tmp/` / `.venv/` / `*.egg-info` / `uv.lock` / `.workbuddy/`)。
14 KiB
常驻规则 · 可移植快照(由 scripts/resident-rules.py --snapshot 生成,勿手改)
这是「工作区
CODEBUDDY.md关键章节」的副本,随技能走 ⇒ 换电脑 / 换工作区也能带走。 ⚠️ 权威方向单向:CODEBUDDY.md是权威,本文件是它的副本(重生成用--snapshot)。 ⚠️ 环境相关项(绝对路径 / IP / hooks 路径 / 工具位置)注入后必须按新环境核对:见文末「待核清单」。
骨架锚点(校验用;丢了就等于规则没了)
A1— 只问「超过现有判断方法边界」的问题A2— 禁用征询句收尾A3— 四件或七件套必跑R7— 禁未经确认的批量 / 全仓写入R7-边界— R7 只管「不是我的 lane」R9— 绝对禁止「人工删锁 / 接管」R11— 只做正向迭代U27— 要解决问题,不将就妥协L1— 抢到之前不要动文件L2— 锁的生命周期 = 任务的生命周期F1— 强遵循F2— 已完成的大类放最前F3— 表格 / 长散文 / 碎标签堆叠
1. 提问判据(唯一一条)
只问「超过现有判断方法边界」的问题。(用户原话)
-
边界内 ⇒ 自决,不要问:技术选型 / 实现路径 / 命名与数据结构 / 调参 / 部署与同步 / 排查方法 / 版本依赖 / 兼容降级 / 方案取舍 / 文档技术内容。「部署上线」属此项 ⇒ 做完即上线,不要问;生产变更直接做、只需动手前一句话说明(判据 ⇒ R8;详 A1/A2)。
-
边界外 ⇒ 必须问:① 业务目标与优先级 ② 花钱与资源承诺 ③ 对外承诺 ④ 需用户提供的凭据或审批 ⑤ 无客观优劣的偏好 ⑥ 影响面超出本平台 ⑦ 红线门禁 ⑧ 判不准。
-
🔴 讨论技术不谈法规:⛔ 不引条文当论据 / 不提合规风险 / 不写进方案与验收判据;只在你问起、或对象就是"对外承诺 / 资质 / 合同"时才谈(详 A3)。
-
判据:有没有客观可判的优劣?有 ⇒ 自决,没有 ⇒ 问。上抛门槛 = 存在真取舍:候选只有优点或只有缺点 ⇒ 自己拍掉;各有优劣才上抛,且逐项写优点 + 缺点(详 A4)。
-
⛔ 不许捆包:要问红线只问那一句;技术方案自己定好、当已定项陈述。
-
⛔ 禁用征询句收尾(「要我…吗 / 请确认 / 你看怎么办」)⇒ 按三问重判(真门禁?已定的事又问?真取舍?),没命中就删掉、自己做完(详 A5)。
-
🔴 上抛 / 待拍板内容必须自包含(发送前就按规范写):⛔ 作用域 = 一切「要用户拿主意」的输出(提问 · 末尾待拍板清单 · 候选 · 表格盘点 —— 换形态不豁免)。四要素:① 问题 —— 一句话说清要决定什么(⛔ 不用指代)② 说明 —— 为什么要你定("影响谁 / 断多久 / 花多少钱")③ 每候选写优点 + 缺点,末行给倾向 ④ 一轮一问;⛔ 不出现包名 / 路径 / 变量名 / 类名(详 A6)。 📐 回复排版(🔴 2026-10-01 用户定稿 · 本条覆盖旧版;六轮迭代后定下,照抄即可,⛔ 别自己另发明)
-
骨架:
# 大类(已完成 / 待处理任务)分节 →## 任务名分事 → 每件事写两段:当前状态 + 待处理事项。 🔴 大类标题必须比任务名大一号(2026-10-01 用户加)—— 大类别用一级标题#、字号最大;任务名用二级标题##;⛔ 不许大类与任务名同号(同为##⇒ 层级压平、看不出哪几件事属于同一个大类)。 -
当前状态:每条一个圆点(
-),用一句陈述句说重点;复杂情况、依据、细节放句末圆括号里。 -
待处理事项:用序号(
1、2、3、,不是1.);每条写完整句子,可以不止一句。 -
附件:本板块若有文件要展示或引用,写在该板块最末一行(
附件:<路径>)。 -
大类顺序:已完成的大类放最前,
待处理任务放最后。 -
三禁:⛔ 表格(=省略讲理,人要来回跳读)|⛔ 长散文(不是写小说,整篇不分段=没版式)|⛔ 碎标签堆叠(
-碎片 + 加粗小标题 +⇒串句)。 -
🔴 强遵循(2026-10-02 · 机制保障见
session-mechanism技能(内references/作业规矩/)):本节=每轮硬约束,命中三禁任一条 ⇒ 该条回复作废重写。机器可读副本由技能注入在下方标记块;每轮注入由钩子reply-style-guard.py承担;本环境侧另有逐字探针(resident-rules.py --check)。 -
🔴 用户原话(五条 · 每次纠正改一版,合起来才是完整口径): ①「为什么回复的内容 那么人机 把我都看抑郁了,禁止用表格,全部用文字排版」 ②「不是只用句子就行了 要排版 不是让你写小说」 ③「排版不清晰,要有大标题小标题 小标题 多项要段落排版」+「段落还有序号」 ④「当前状态:内容如果有多条情况 按无序段落排版」+「圆点符号 无序段落每个段落前要加」+「当前状态 每个段落用 一句陈述句说重点,有复杂情况可以放在末尾()中」 ⑤「如果有对应附件需要展示或引用 放在对应板块 最后」 ⑥「已完成 待处理任务 这些大类别 用更大字体标题」(2026-10-01 12:12)
-
⚠️ 本条只管「给人读的回复」;注释/日志/解析用字段不受限(给程序读的随便)。
-
🎯 要解决问题,不将就妥协(降级 / 延期 / 静默兜底都不算解决);🟢 只做正向迭代(= R11)(详 A8)。
-
🔀 冲突裁决序:① R8 → ② §1 边界内自决清单 → ③ 其余红线(R5 / R7 / R9 / R10 永远硬约束);⛔ 冲突 ≠ 门禁。上抛前必答三问:对象是我们自己的资源吗?查证过关键不确定点吗?第一名明显更优吗?任一"是" ⇒ 自决(详 A9)。
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 内细节(部署 / 重启 / 改配置 / 跑自己的脚本 / 改自己的插件)⇒ 直接做,⛔ 别拿 R7 挡箭牌去问;别人的 / 归属不明 ⇒ 只报告、不动手。🔑 判据看归属,不看"是不是平台组件" |
| R8 | 生产变更:47.77.182.89 是开发环境服务器 ⇒ 重启 / 停 scope / drain / 改配额·env / nginx·nft 直接做。两条自律:动手前一句话说明在动什么 + 不可逆操作(删数据 / 迁 DB / 清目录)先报清单 |
| R9 | ⛔⛔ 绝对禁止「人工删锁 / 接管」 —— 不得删 交接单/.exec-lock / .doing-*、不得以「持有者疑似已死 / 卡住」为由单方面接管;锁只能由持有者自己释放(guard 那句「或确认接管后人工删锁」不构成授权)。抢不到锁唯一合规 = 停手 + 报告用户(处置权只属用户本人) |
| R10 | ⛔ 绝不以 root(或非该实例 uid)运行 / 触碰用户实例的东西 —— ① 验证 / 冒烟 / 探针必须以该 uid 运行或进 bwrap 沙箱,⛔ 禁 root 直跑 profile ② 确需 root ⇒ 收尾必 find <home> -user root -exec chown <uid>:<uid> {} + ③ 实例起不来先看属主 / EACCES,别先怀疑 OOM |
| R11 | ⛔ 只做正向迭代 —— 判据(十维:目标 / 方向 / 架构 / 功能 / 性能 / 安全 / 交互 / UI / 便利性 / 扩展性):是否让任一维净变差?命中 ⇒ 立即停下复盘:写清劣化在哪维、代价多大 → 找保住正向收益的做法 → 拿不出 ⇒ 立即停止、只报告。⛔ 禁三种伪装:说成"必要代价" / "后续再优化" / 藏进交付不写 |
R5 / R7-边界 / R8 / R9 / R10 / R11 的解释段 · 事故全过程 · 用户原话 ⇒ 【详】§B-1…§B-5。
4. 提交边界
未明确要求 ⇒ 不 commit / 不 push / 不同步仓库;用户说了才做,且只 add 自己改的文件。⛔ 三类禁止入库(2026-09-21 用户明令):tmp/ |中间产物(_tmp_seq*/、_中间产物*/)|$DOC\05-交接单/ 下的会话交接单。
- ⛔ 别用
git status判"交接单要不要提交"(被 ignore ⇒ 不出现,属预期行为);确需入库只能显式git add -f并说明理由。⚠️ 已跟踪的05-交接单/README.md、archive/**不受影响。 - ✅ 落点与入库解耦:交接单照旧写
05-交接单/(8 段模板不变)只是不进 Git;中间产物一律留tmp/内。🔴 提交前自查git diff --cached --name-only出现三类中任一 ⇒ 立即git reset。
5. 规划与执行分离
规划会话只产出交接单($DOC\05-交接单/,8 段必填:目标 / 只读前置 / 范围 / 决策点 / 步骤 / 验收 / 回滚 / 回报格式),不 ssh、不改码、不重启、不 scp;落地交另一个执行会话(不读其上下文)。
6. 并发纪律(多会话并行是常态 · 命令与实证全文【详】§C)
- 共享文件只用 Edit 精确片段替换(失败 = 天然冲突检测),禁整文件 Write 覆盖。并行度按「冲突域是否重叠」定:域不重叠 ⇒ 可真并行;⚠️ 机制层(
config·crypto·isolation·index·scripts·CODEBUDDY.md·锁与钩子本身)必须独占。 - 🔒 开工门禁:先跑
bash $DOC\07-scripts\preflight-lock.sh "<会话名>" <目标文件...>判可锁定范围。【A】可独立锁 /【B】秒级独占 /【E】机制层 /【C】共享 /【D】未归类。⛔ 【D】或【E】非空 ⇒rc=1拒开工(D = 先归类再动;E = 机制层全平台共用 ⇒ 仅当确认无其他会话在跑才可独占开工)。 - 三把锁 + 两把秒级锁(全文【详】§C):域锁(默认)
--claim-exec "<会话名>" --domains <域键>,域键 =<锚点段>/<下一段>、多个用逗号|不带--domains⇒ 退化独占(机制层必走)|--claim|服务器侧op-lock.sh claim;秒级--claim-skeleton(改机制层 / 领迁移号)、--claim-publish(commit / push / scp / build)。完工一律反序释放(先--release,最后--release-exec "<会话名>"—— ⛔ 不带会话名 ⇒ 拒绝释放)。🔴 域键判据 shell 与 hook 两侧必须逐字一致(_ANCHOR_SEGS⇄_DOMAIN_SEGS),⛔ 改一侧 ⇒ 域锁静默失效(假绿)。 - 🔍 抢锁必须"校验结果"不能"看输出":① 检查退出码(不接管道)② 复读
.locks/<会话名>/DOMAINS或.exec-lock/OWNER并断言是自己的。⛔ 用| grep截尾 = grep 吃掉退出码,也吃掉"抢不到"。⚠️rc=1两因分清:域冲突(停手)vs.gate占用(重试)。⚠️ 「无锁」=「你快去抢」;⛔ 抢不到就是终点 ⇒ 处置见 R9(等释放或报告用户)。 - ✅ 锁只约束「写」不约束「读」(读文档 / 读码 / 只读命令随时可做);⚠️ 会改本地状态的命令不算"读"(
git fetch/checkout/stash/reset/switch)⇒ 要持锁。🔓 释放时机 = 交付闭环走完(台账 → 四件套 → commit → 推送 + 对账 → 归档),不是"改完就放"(释放一律带会话名:--release-exec "<会话名>",⛔ 不带名 ⇒ 拒绝释放);要等用户拍板 ⇒ 先释放再等。🔒 锁的生命周期 = 任务的生命周期,⛔ 禁"抢到锁、做一半、不解锁就结束回合"。结束语必须对锁状态负责(写明"已释放",或点名锁仍在谁手上 + 原因 + 下一步)。 - 推送前复跑对账:「仅本地」里有不在你清单的文件 ⇒ 立刻停手(幽灵文件);基线数字必须带取数时间 + 复核命令。
settings.json的hooks段 = 多会话共享 ⇒ 只能 Edit 增删条目,禁整段覆盖(覆盖顶层键 = 静默抹掉别人的钩子);用户级MEMORY.md同理。⚠️ hook =「会话启动时快照」(对在跑的会话无效 ⇒ 须完全重启,关窗 ≠ 退出);⚠️ 脚本路径失配 = fail-closed(Write/Edit 全被拒)⇒ 迁移 / 改名后第一件事 = 核对 hooks 绝对路径;兜底 钩子不拦 Bash。
8. 会导致事故的实测事实(6 条速查 · 详解 ⇒ 【详】§E)
🔴 速查(详情 + 后果 ⇒ 【详】§E):① 权限档位只在开会话时播种 ② 插件「禁用」= 真卸载 ③ 配额 384 MiB / V8 堆按宿主算 ④ 业务插件只走门户候选池 ⑤ home 写文件走
UserFs⑥ PG 身份键 =id。
待核清单(换环境后逐项核对,脚本不代改)
- 工作区根 E:/ProgramData/AIProject/ai1net-dsh-server
- 文档库 D:/github/dsh_shenxian/dsh-server-docs
- 代码仓 D:/github/dsh_shenxian
- 备份目录 /opt/dsh/backups
- 服务器 bt-server(47.77.182.89,SSH 22;别名里的 32022 已失效)