安全任务声明
MCP服务器,为Claude Code团队提供原子任务声明,使用 flock.
问题
克劳德代码 TaskUpdate 该工具没有原子声明语义。当多个实例共享一个任务列表时,一个实例可以覆盖另一个实例的声明。手动解决方法(TaskUpdate,然后TaskGet进行验证)很有效。
解决方案
一个 safe_claim 原子性工具:
- 获得独家
flock上~/.claude/tasks/{team}/.lock - 读取任务JSON文件
- 如果已声明、正在进行或已完成,则拒绝
- 集合
owner和status: "in_progress" - 写入文件并释放锁
参数
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
task_id | string | yes | 要声明的任务ID |
owner | string | yes | 声明任务的代理名称 |
team | string | no | 团队名称(默认为中的第一个目录 ~/.claude/tasks/) |
设置
添加 ~/.claude.json:
{
"mcpServers": {
"safe-task-claim": {
"type": "stdio",
"command": "cargo",
"args": ["run", "--quiet", "--manifest-path", "/path/to/safe-task-claim/Cargo.toml"],
"instructions": "Safe task claiming with file locking. Use safe_claim before starting work on any task."
}
}
}用法
safe_claim(task_id: "1", owner: "agent-alpha", team: "my-team")
// => "Claimed task 1: Write unit tests"
safe_claim(task_id: "1", owner: "agent-beta", team: "my-team")
// => "Error: already claimed by agent-alpha"