功能(ClaudeCode): 新增飞书联动工具链与会话管理增强
- 新增命令: lark-delegate(跨项目委派)、lark-inbox(收件箱)、lark-me(自发送)、stop(任务收尾) - 新增工具: lark-consumer/consumer-ensure/inbox-check(飞书事件实时消费与会话隔离)、tmux-monitor(监控面板) - runcc.sh 增加 --list/--kill/--send 操作模式与多会话自增命名 - CLAUDE.md 增加强制要求(汇报格式、收尾通知、上下文压缩)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
---
|
||||
name: arno-util-lark-delegate
|
||||
description: 以金鹏身份向 SZIS bot 或 DIT bot 发飞书消息指派任务。目标 bot 侧的 Claude Code 通过 lark-consumer 实时收到并自动执行。当用户要让另一个项目的 CC 干活、跨项目委派、给 szis/dit 下任务时使用。触发词:委派、delegate、让szis、让dit、给szis发、给dit发、跨项目指派。
|
||||
argument-hint: '<szis|dit> <任务指令>'
|
||||
allowed-tools: Bash
|
||||
---
|
||||
|
||||
# arno-util-lark-delegate
|
||||
|
||||
以金鹏(user)身份向 SZIS 或 DIT bot 的 P2P 会话发消息指派任务。目标 bot 侧的 Claude Code(lark-consumer 监听)会实时收到该消息,并自动 send-keys 到对端 CC 输入框执行。
|
||||
|
||||
## 用户输入
|
||||
|
||||
```
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
格式:`<目标> <任务指令>`,目标取第一个词,仅接受 `szis` 或 `dit`;其余整体作为任务指令文本。
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 第1步:解析目标与任务
|
||||
|
||||
- 从 `$ARGUMENTS` 取首词为 `TARGET`(szis|dit),其余为 `TASK`。
|
||||
- `TARGET` 非 szis/dit 时,提示正确用法并退出,不要猜测发送。
|
||||
|
||||
### 第2步:按目标选择 profile 与 chat_id 发送
|
||||
|
||||
**向 SZIS bot 指派**(szis profile,金鹏已在 szis 授权 user 身份):
|
||||
|
||||
```bash
|
||||
lark-cli --profile szis im +messages-send --as user \
|
||||
--chat-id oc_xxx \
|
||||
--text "<TASK>"
|
||||
```
|
||||
|
||||
**向 DIT bot 指派**(dit profile,需金鹏已在 dit 授权 user 身份):
|
||||
|
||||
```bash
|
||||
lark-cli --profile dit im +messages-send --as user \
|
||||
--chat-id oc_xxx \
|
||||
--text "<TASK>"
|
||||
```
|
||||
|
||||
### 第3步:输出结果
|
||||
|
||||
展示 `ok`、`message_id`、`create_time`;失败时输出完整错误码与信息。
|
||||
|
||||
## 关键约束
|
||||
|
||||
- **必须 `--as user`(金鹏身份)**:目标 bot 的 consumer sender 白名单是金鹏;若用 bot 身份发,sender 是 app,会被对端 consumer 直接过滤,任务不会被执行。
|
||||
- **profile 与目标一一对应**:向 SZIS 发用 `--profile szis`,向 DIT 发用 `--profile dit`。open_id 与 chat_id 按 app 隔离,跨用会报 `99992361 open_id cross app`。
|
||||
- **写操作可见性**:发出的消息会真实进入对端项目的 Claude Code 并执行,指令内容需明确、自洽、可独立理解(对端没有本轮上下文)。
|
||||
|
||||
## 固定参数
|
||||
|
||||
| 目标 | profile | P2P chat_id | 对端 Claude Code |
|
||||
|------|---------|-------------|------------------|
|
||||
| szis | szis | oc_xxx | arno/szis(tmux ds-ds) |
|
||||
| dit | dit | oc_xxx | allmed/dit |
|
||||
|
||||
## 示例
|
||||
|
||||
```
|
||||
# 让 SZIS 整理本周对话捕捉
|
||||
/arno-util-lark-delegate szis 整理 01-输入/对话捕捉.md 本周新增条目,归类到对应清单
|
||||
|
||||
# 让 DIT 更新项目推进报告
|
||||
/arno-util-lark-delegate dit 用 arno-prj-upd 更新项目推进报告与项目推进分析判断
|
||||
```
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: arno-util-lark-inbox
|
||||
description: 读取金鹏与飞书 bot 的 P2P 私聊记录。优先展示实时事件流(lark-inbox.ndjson),回退到 API 拉取。通过环境变量 LARK_PROFILE/LARK_INBOX_CHAT_ID/LARK_INBOX_NDJSON_PATH/LARK_BOT_NAME 适配不同项目。当用户需要查看飞书收件箱、检查发给 bot 的消息时使用。触发词:收件箱、inbox、查看消息、bot对话、飞书消息。
|
||||
argument-hint: '[条数 默认10]'
|
||||
allowed-tools: Bash
|
||||
---
|
||||
|
||||
# arno-util-lark-inbox
|
||||
|
||||
读取金鹏 ↔ bot P2P 私聊记录。**优先增量检查**(调用 `lark-inbox-check.sh --text`),有新消息则展示;有历史消息但无新消息时静默结束;ndjson 不存在时回退 API 拉取。增量检查脚本位于 `../tools/lark-inbox-check.sh`(相对 skill 目录),与 SessionStart hook 共用同一脚本、同一时间戳跟踪。
|
||||
|
||||
## 环境变量
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `LARK_PROFILE` | lark-cli profile 名 | `szis` / `dit` |
|
||||
| `LARK_INBOX_CHAT_ID` | P2P 会话 chat_id | `oc_xxx` |
|
||||
| `LARK_INBOX_NDJSON_PATH` | 实时事件日志路径(相对项目根) | `01-输入/lark-inbox.ndjson` |
|
||||
| `LARK_BOT_NAME` | bot 显示名称 | `SZIS` / `DIT` |
|
||||
|
||||
## 用户输入
|
||||
|
||||
```
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 第1步:增量检查(优先)
|
||||
|
||||
调用 `lark-inbox-check.sh --text`,按 tmux session 隔离的时间戳做增量检查(同一 tmux 窗口内多次 CC 会话共享时间戳,避免重复展示),只返回上次检查后的新消息(最多5条)。
|
||||
|
||||
```bash
|
||||
lark-inbox-check.sh --text
|
||||
```
|
||||
|
||||
- **有新消息** → 展示新消息,结束。
|
||||
- **无新消息** → 检查 ndjson 文件是否存在且非空:
|
||||
- 存在(有历史消息但无新消息)→ **静默结束**,不输出任何内容。
|
||||
- 不存在 → 进入第2步(回退 API 拉取)。
|
||||
|
||||
### 第2步:回退 API 拉取(ndjson 不可用时)
|
||||
|
||||
```bash
|
||||
lark-cli --profile "${LARK_PROFILE}" im +chat-messages-list --as bot \
|
||||
--chat-id "${LARK_INBOX_CHAT_ID}" \
|
||||
--sort desc --page-size ${ARGUMENTS:-10} --json
|
||||
```
|
||||
|
||||
区分 `sender_type: user`(👤 金鹏)和 `sender_type: app`(🤖 bot)。
|
||||
|
||||
## 示例
|
||||
|
||||
```
|
||||
/arno-util-lark-inbox # 最近 10 条
|
||||
/arno-util-lark-inbox 20 # 最近 20 条
|
||||
```
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
name: arno-util-lark-me
|
||||
description: 飞书 bot 向金鹏私聊发送消息。通过环境变量 LARK_PROFILE/LARK_ME_USER_ID/LARK_BOT_NAME 适配不同项目。当用户需要给自己发飞书提醒、通过 bot 推送通知、快速测试飞书通道时使用。触发词:发给自己、bot消息、飞书提醒、lark-me、自发送。
|
||||
argument-hint: '<消息内容>'
|
||||
allowed-tools: Bash
|
||||
---
|
||||
|
||||
# arno-util-lark-me
|
||||
|
||||
bot → 金鹏 P2P 快捷发送。
|
||||
|
||||
## 环境变量
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `LARK_PROFILE` | lark-cli profile 名 | `szis` / `dit` |
|
||||
| `LARK_ME_USER_ID` | 金鹏在该应用下的 open_id | `ou_xxx` |
|
||||
| `LARK_BOT_NAME` | bot 显示名称 | `SZIS` / `DIT` |
|
||||
|
||||
## 用户输入
|
||||
|
||||
```
|
||||
$ARGUMENTS
|
||||
```
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 第1步:发送消息
|
||||
|
||||
```bash
|
||||
lark-cli --profile "${LARK_PROFILE}" im +messages-send --as bot \
|
||||
--user-id "${LARK_ME_USER_ID}" \
|
||||
--text "$ARGUMENTS"
|
||||
```
|
||||
|
||||
### 第2步:输出结果
|
||||
|
||||
展示发送状态、message_id、时间。
|
||||
|
||||
## 固定参数
|
||||
|
||||
| 参数 | 值 |
|
||||
|------|-----|
|
||||
| 身份 | `--as bot` |
|
||||
| Profile | `$LARK_PROFILE` |
|
||||
| 目标 | `$LARK_ME_USER_ID`(金鹏) |
|
||||
| 类型 | P2P 私聊 |
|
||||
|
||||
## 示例
|
||||
|
||||
```bash
|
||||
# 用户输入: /arno-util-lark-me 别忘了下午3点的会议
|
||||
# 等价于:
|
||||
lark-cli --profile "${LARK_PROFILE}" im +messages-send --as bot \
|
||||
--user-id "${LARK_ME_USER_ID}" \
|
||||
--text "别忘了下午3点的会议"
|
||||
```
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
name: arno-util-stop
|
||||
description: 任务执行完毕后的收尾流程——发送对话摘要、扫描新产生的承诺/待办/想法/决定并追加到对话捕捉文件。由 CLAUDE.md 强制要求在任务完成前调用,非用户直接触发。触发词:stop、收尾、任务完成、对话捕捉。
|
||||
allowed-tools: Bash, Read, Edit, Skill
|
||||
---
|
||||
|
||||
# arno-util-stop
|
||||
|
||||
任务执行完毕后的收尾流程。
|
||||
|
||||
## 环境变量
|
||||
|
||||
| 变量 | 说明 | 示例 |
|
||||
|------|------|------|
|
||||
| `LARK_PROFILE` | lark-cli profile 名 | `szis` / `dit` |
|
||||
| `LARK_ME_USER_ID` | 金鹏在该应用下的 open_id | `ou_xxx` |
|
||||
| `LARK_BOT_NAME` | bot 显示名称 | `SZIS` / `DIT` |
|
||||
|
||||
## 执行流程
|
||||
|
||||
### 第1步:发送对话摘要
|
||||
|
||||
通过 `arno-util-lark-me` skill 发出本次对话的简要摘要。
|
||||
|
||||
### 第2步:扫描并捕捉新事项
|
||||
|
||||
扫描本次对话中新产生的承诺、待办、想法、决定。
|
||||
|
||||
- **有**:通过 Edit 追加到 `01-输入/对话捕捉.md`,格式:`- YYYY-MM-DD 类型:承诺/待办/想法/决定 内容 — 来源:上下文`,再通过 `arno-util-lark-me` skill 发出。
|
||||
- **无**:完全静默,不要输出任何文字。
|
||||
|
||||
## 关键指令
|
||||
|
||||
⚠️ 全程只通过工具操作,不附加任何解释文字。
|
||||
Reference in New Issue
Block a user