正文内容
preqstation
使用此技能,通过本地 CLI 引擎执行与 PREQSTATION 相关的自然语言请求任务。
触发条件 / 禁止场景
当消息中包含以下任意一项时,以最高优先级触发本技能:
/skill preqstationpreqstationpreq
禁止使用本技能的场景包括:
- 可直接完成的简单单行手动编辑
- 仅需读取或解释文件内容(无执行需求)的只读操作
- 在
~/clawd/或~/.openclaw/目录内启动任何 coding-agent
快速触发示例
/skill preqstation: implement the PROJ-1preqstation: plan PROJ-76 using Claude Codepreq: implement PROJ-1
强制性规则
- 所有 coding agent 必须以
pty:true模式运行。 - 严格遵循用户指定的引擎。若未明确指定,默认使用
claude。 - 不得仅因会话响应缓慢而终止;应先轮询或记录日志。
- 绝不允许在
~/clawd/或~/.openclaw/中启动 coding agent。 - 已解析的项目路径仅作为主检出源(primary checkout source);启动任何 coding agent 前,必须先创建 git worktree。
- 禁止在主检出路径(primary checkout path)中运行 coding-agent 命令。
- PR 审查(review)必须在临时克隆(temp clone)或 git worktree 中执行,严禁在活跃的主检出中运行。
- 所有执行必须严格限定在已解析的 worktree
范围内。 - worktree 分支名必须包含已解析的
project_key。 - 默认以
background:true启动 coding agent;仅当用户明确要求阻塞式/同步执行时,才使用前台(foreground)模式。
运行时前提条件(必需)
-
git必须已安装并可在PATH中调用。 - 至少安装一个引擎二进制文件:
claude、codex或gemini。 -
本技能使用的环境变量:
-
OPENCLAW_WORKTREE_ROOT(可选,默认为/tmp/openclaw-worktrees)
-
- 本技能读取并更新
MEMORY.md中的项目映射,所有路径必须为绝对路径。
执行安全门控(必需)
在运行任何引擎命令前,必须执行以下检查:
-
执行预检(preflight)检查:
command -v gitcommand -v
- 仅当当前执行工作目录(
cwd)是该任务已解析的 git worktree 路径时,才继续执行。 - 绝不允许在主检出路径或
~/clawd//~/.openclaw/内运行引擎命令。 -
dangerously-*/ sandbox-disable 类标志仅允许用于本地可信 CLI 的实际编码执行场景。 - 对于规划类(planning)或只读类(read-only)请求,不得启动引擎命令。
输入解析规则
从用户消息中解析以下字段:
-
engine(引擎)- 若显式指定:
claude、codex或gemini - 默认值:
claude
- 若显式指定:
-
task(任务标识)- 匹配首个形如
的 token(例如:- PRJ-284) - 可选字段
- 匹配首个形如
-
branch_name(分支名,可选)-
解析首个匹配如下格式的 token:
branch_name=branch_name:branch=
- 去除
周围的引号 - 统一转为小写;将空格替换为
- - 若不包含已解析的
project_key,则自动前置preqstation//
-
-
project_cwd(项目工作目录,执行准备必需)- 若用户显式提供绝对路径,则直接采用
- 否则,从
MEMORY.md中按project键解析 - 若
task前缀键(如PROS-102→pros)匹配MEMORY.md中某项目键,则采用对应路径 - 若无法解析,需向用户询问项目键/名称及绝对路径,更新
MEMORY.md后再继续执行 - 若
MEMORY.md中不存在完全匹配的项目键,必须向用户确认,禁止猜测
-
objective(执行目标)- 直接采用用户请求原文作为执行目标
-
cwd(执行工作目录,必需)- 默认值:基于
project_cwd推导出的每任务 git worktree 路径 - 必须在启动引擎命令前创建 worktree
- 若
project_cwd不是有效的 git 仓库,需先向用户索要 git 工作区路径,再执行
- 默认值:基于
-
progress_mode(进度更新风格)- 若用户明确使用
live、realtime、frequent、detailed等词:设为live - 若用户明确使用
sparse、concise、summary-only、key events only等词:设为sparse - 默认值:
sparse - 若用户措辞模糊或存在冲突,仅询问一次以确认模式
- 若用户明确使用
-
context_compaction(上下文压缩策略)- 默认行为:复用当前对话/会话上下文,仅压缩状态更新,而非新建会话
- 避免重放完整日志;发送简短检查点摘要,并从此摘要处继续
- 仅当用户明确要求新建会话,或平台限制导致当前会话不可续时,才启动新会话
MEMORY.md 解析规则
- 从本仓库根目录读取
MEMORY.md。 - 使用其中
Projects表(列:key | cwd | note)。 - 项目键匹配仅支持精确匹配(大小写不敏感,禁用模糊/部分匹配)。
- 若
MEMORY.md中缺失精确匹配的项目键,必须向用户询问正确键/路径后才能继续。 - 若用户请求新增/更新项目路径映射,需先更新
MEMORY.md,再确认。 - 若存在
task id(如PROS-102),将其前缀(pros)视为候选项目键。
MEMORY.md 更新规则
- 仅维护
Projects表中的映射。 - 新增或更新格式统一为:
||| | - 每个键独占一行;若键已存在,则覆盖整行。
- 所有路径必须为绝对路径(禁止相对路径)。
- 写入前将
key标准化为小写 kebab-case(例如MyProject→my-project)。 - 若用户提供项目名称,存入
note字段;否则默认使用workspace。
缺失项目映射处理流程(必需)
当 project_cwd 无法解析,或 MEMORY.md 中缺失精确匹配的项目键时:
-
向用户提出一个简短问题,请求以下信息:
- 项目键(或确认从
task前缀推断出的键) - 绝对工作区路径
- 可选:用于
note的项目名称
- 项目键(或确认从
- 验证路径是否为绝对路径。
-
立即更新或插入
MEMORY.md对应行。 - 用一行简短语句确认映射已建立。
- 使用新解析的
project_cwd继续原始任务:创建任务专用 worktree并执行。
分支命名规范(基于项目键)
分支名解析优先级如下:
- 用户消息中解析出的
branch_name - 回退值:
preqstation/
规则:
-
必须来自MEMORY.md解析出的项目键。 - 所有 token 统一转为小写,并适配 kebab-case(如空格→
-)。 - 分支名必须包含已解析的
project_key;若缺失,强制前置preqstation/。/ - 拒绝不安全的分支名(含
..、以/开头、或为空),并提示用户输入有效分支名。
Worktree 优先执行(必需默认)
在解析出 project_cwd 和 project_key 后,按以下步骤准备执行工作区:
-
按本技能约定构建分支名:
-
构建每任务 worktree 路径:
- 默认根目录:
${OPENCLAW_WORKTREE_ROOT:-/tmp/openclaw-worktrees} - 目录结构:
/ / -
branch_slug=中/替换为-
- 默认根目录:
-
从
project_cwd创建 worktree(启动引擎前):- 新建分支:
git -Cworktree add -b HEAD - 复用已有分支:
git -Cworktree add
- 新建分支:
- 将此 worktree 路径作为
,用于 prompt 渲染和引擎执行。
Prompt 渲染模板(必需)
禁止直接转发原始用户文本。必须渲染以下模板:
注意:模板中 必须为任务专用 worktree 路径(非主检出路径)。
Task ID:Project Key:Branch Name:User Objective:Execution Requirements: 1) Work only inside. 2) Complete the requested work. 3) Use branchfor commits/pushes when provided. 4) After completion, return a short completion summary.
引擎命令(沿用当前策略)
所有引擎命令必须通过 bash 启动,并显式指定 PTY 和工作目录。
为何保留 dangerously-* 标志:
- 本技能面向非交互式 PTY/后台执行场景。
- 权限提示会阻塞无人值守运行;此类标志可规避阻塞。
- 此类标志仅在通过上述全部安全门控、且运行于已解析任务 worktree 时允许使用。
- 若您的环境禁止此类标志,请快速失败并返回简短原因,切勿静默降级。
Claude Code
bash pty:true workdir:command:"claude --dangerously-skip-permissions ''"
Codex CLI
bash pty:true workdir:command:"codex exec --dangerously-bypass-approvals-and-sandbox ''"
Gemini CLI
bash pty:true workdir:command:"GEMINI_SANDBOX=false gemini -p ''"
Bash 执行接口(必需)
默认使用 bash + PTY + 后台模式。
Bash 参数说明
| 参数 | 类型 | 是否必需 | 用途 |
|---|---|---|---|
command |
string | 是 | 待执行的引擎命令 |
pty |
boolean | 是 | coding-agent CLI 必须为 true
|
workdir |
string | 是 | 每任务 worktree
|
background |
boolean | 否 | 异步运行并返回 session id(本技能默认 true) |
timeout |
number | 否 | 硬性超时时间(秒) |
elevated |
boolean | 否 | 若策略允许,提升主机执行权限 |
后台会话标准操作
使用以下操作作为标准控制指令:
-
list: 列出所有会话 -
poll: 检查运行/完成状态 -
log: 读取增量输出 -
write: 发送原始 stdin 数据 -
submit: 发送 stdin + 换行符(模拟回车) -
kill: 仅在必要时终止会话
执行模式(workdir + background + pty)
单次执行示例
创建任务 worktree,并在其中执行(默认后台模式):
git -Cworktree add -b/tmp/openclaw-worktrees//HEAD bash pty:true workdir:/tmp/openclaw-worktrees//background:true command:"codex exec --dangerously-bypass-approvals-and-sandbox ''"
模式核心:workdir + background + pty
对于长时任务,启用后台模式 + PTY:
# 在任务 worktree 中启动 agent(必须启用 PTY!) bash pty:true workdir:background:true command:"codex exec --full-auto 'Build a snake game'" # 返回 sessionId 用于跟踪 # 监控进度 process action:log sessionId:XXX # 检查是否完成 process action:poll sessionId:XXX # 发送输入(若 agent 提问) process action:write sessionId:XXX data:"y" # 模拟回车提交(如输入 "yes" 后按 Enter) process action:submit sessionId:XXX data:"yes" # 如需终止 process action:kill sessionId:XXX
为何 workdir 关键:Agent 启动后聚焦于指定目录,不会误读无关文件(比如你的 soul.md