mit einem Klick
feishu-ops
// 飞书操作:向用户/群组发送消息(文字/富文本/图片/文件)、读写云文档/电子表格/多维表格、查询群成员、管理日历事件。适合推送通知、发送处理结果文件、读取共享文档、批量发送报告等场景。
// 飞书操作:向用户/群组发送消息(文字/富文本/图片/文件)、读写云文档/电子表格/多维表格、查询群成员、管理日历事件。适合推送通知、发送处理结果文件、读取共享文档、批量发送报告等场景。
基于 persona.md 的 personality_dims,按映射公式计算行为参数,写入 character_params.yaml。 由 calibrate_params 定时任务触发(每7天),或初始化完成时立即触发一次。 其他 SKILL/hook 在检测到 persona_checksum 不一致时,也会直接调用 recalculate.sh 同步重算。
v2.2 M3 · 对话历程摘要。RECENT_HISTORY.md 超过 30 条时,压缩旧条目为 3-5 句历程摘要 写入 memory/session_summary.md,防止长 context 导致角色漂移到共情模板。 被 memory_distill 在检测条数超阈时调用,或用户主动校验记忆时调用。
Companion Workspace 生活日志生成 SOP (v5.2)。 由 life_sim.yaml 定时任务触发(每 4 小时)。 从 material_pool 选真实素材,以"触发→反应"模板转译为角色生活日志。 内含:留白模式、用户倾诉强制呼应、降温规则、多形态衔接、失败降级链。
v5.1 关键词模板驱动 + 硬筛规则 + LLM 二审(锁外)+ 失败状态追踪。 由 material_fetch.yaml 定时任务触发(每 6 小时)。send_output: false。 读 memory/keyword_templates.yaml 生成查询,经 filters.yaml 硬筛后 LLM 二审打 fit_score 入库。
Companion Workspace 定时记忆提炼 SOP。 由 memory_distill.yaml 定时任务触发(每小时一次)。 从最近消息中提炼新信息,补充到 memory 文件,不重复已有内容。
Companion Workspace 记忆写入规范。 触发词:记住 / 对话结束时的自动检查 / 强烈情绪事件
| name | feishu_ops |
| description | 飞书操作:向用户/群组发送消息(文字/富文本/图片/文件)、读写云文档/电子表格/多维表格、查询群成员、管理日历事件。适合推送通知、发送处理结果文件、读取共享文档、批量发送报告等场景。 |
| type | task |
| version | 3.1 |
| metadata | {"requires":{"bins":["lark-cli","python3"]}} |
⚠️ 安全约束(CRITICAL):所有飞书操作必须通过本目录下的
scripts/脚本执行。
禁止直接调用:lark-cli命令、全局lark-*skills、飞书 OpenAPI。
脚本自动从 feishu.json 读取凭证和 lark-cli profile,无需手动处理鉴权。
调用方式:python {_skill_base}/scripts/<脚本名>.py [参数]
python {_skill_base}/scripts/send_text.py \
--routing_key <routing_key> \
--text "消息内容"
| 参数 | 必填 | 说明 |
|---|---|---|
--routing_key | ✅ | p2p:ou_xxx(私聊)或 group:oc_xxx(群组) |
--text | ✅ | 纯文本消息内容 |
python {_skill_base}/scripts/send_post.py \
--routing_key <routing_key> \
--title "消息标题" \
--paragraphs '["第一段内容", "第二段,含[链接](https://example.com)"]'
| 参数 | 必填 | 说明 |
|---|---|---|
--routing_key | ✅ | 同上 |
--title | 否 | 消息标题,可为空 |
--paragraphs | ✅ | JSON 字符串数组;支持 [文字](URL) 格式内嵌链接 |
python {_skill_base}/scripts/send_image.py \
--routing_key <routing_key> \
--image_path /workspace/sessions/{session_id}/outputs/chart.png
| 参数 | 必填 | 说明 |
|---|---|---|
--routing_key | ✅ | 同上 |
--image_path | ✅ | 图片绝对路径(jpg/png/gif/webp,≤30MB) |
python {_skill_base}/scripts/send_file.py \
--routing_key <routing_key> \
--file_path /workspace/sessions/{session_id}/outputs/report.pdf
| 参数 | 必填 | 说明 |
|---|---|---|
--routing_key | ✅ | 同上 |
--file_path | ✅ | 文件绝对路径(pdf/doc/xls/ppt/mp4 等,≤30MB) |
python {_skill_base}/scripts/read_doc.py \
--doc "https://xxx.feishu.cn/docx/doccnXXXXXX" [--no-cache] [--verify-remote]
| 参数 | 必填 | 说明 |
|---|---|---|
--doc | ✅ | 飞书文档 URL 或 doc_token |
--no-cache | 否 | 跳过本地缓存,强制远程拉取 |
--verify-remote | 否 | 命中本地后顺手校验远程 revision 是否变化(变化只 warning,仍返回本地快照) |
缓存逻辑:若该飞书文档由本工作区通过 create_doc.py 上传过,且本地源 md 文件仍存在、内容未变,则直接读本地文件返回(data.source == "local_cache"),不再下载。否则走远程(data.source == "remote")。
python {_skill_base}/scripts/read_sheet.py \
--sheet "https://xxx.feishu.cn/sheets/shtcnXXXXXX" \
--sheet_id Sheet1 \
--range A1:D10
python {_skill_base}/scripts/get_chat_members.py --chat_id oc_xxxxx
python {_skill_base}/scripts/list_events.py \
--calendar_id primary \
--start_time 2026-03-01T00:00:00+08:00 \
--end_time 2026-03-31T23:59:59+08:00
python {_skill_base}/scripts/create_event.py \
--summary "周例会" \
--start_time 2026-04-09T10:00:00+08:00 \
--end_time 2026-04-09T11:00:00+08:00 \
--description "本周进度同步" \
--attendees '["ou_aaa", "ou_bbb"]'
⚠️ 只接受本地
.md文件路径。--content/--content_file已废弃,传了会报errcode: 2。 上传前若同内容(按 sha256)已上传过,直接复用旧链接(data.cached == true),不重复上传。
python {_skill_base}/scripts/create_doc.py \
--file_path /root/course/ai-pm/前期沟通/前期沟通报告_20260510.md \
--title "AI PM 前期沟通报告" [--folder_token <token>] [--no-cache]
| 参数 | 必填 | 说明 |
|---|---|---|
--file_path | ✅ | 本地 .md 文件绝对路径,必须在工作区 /root/course 内,≤10MB |
--title | 否 | 文档标题(默认取文件名去后缀) |
--folder_token | 否 | 目标飞书文件夹 token(留空放根目录) |
--no-cache | 否 | 跳过缓存命中,强制重新上传 |
返回 data:{url, document_id, cached(bool), sha256, record_id}。
上传前要先生成/保存 md 文件时:见下方「八、文件存放规范」——优先放到项目内合适位置,没有归属时才放
/root/course/tmp_file/,禁止放/tmp、CWD、skill 目录内。
python {_skill_base}/scripts/dump_index.py [--status active|deleted|remote_missing|all]
python {_skill_base}/scripts/create_sheet.py --title "销售数据"
python {_skill_base}/scripts/upload_sheet.py \
--file_path /workspace/outputs/report.xlsx \
--title "销售报告"
python {_skill_base}/scripts/write_sheet.py \
--sheet "https://xxx.feishu.cn/sheets/shtcnXXXX" \
--values '[["姓名","年龄"],["Alice",30]]'
python {_skill_base}/scripts/create_bitable.py --name "项目管理"
python {_skill_base}/scripts/create_bitable_table.py \
--app "https://xxx.feishu.cn/base/BxxXXXX" \
--name "任务清单" \
--fields '[{"name":"任务名称","type":"text"},{"name":"优先级","type":"select","options":["高","中","低"]}]'
python {_skill_base}/scripts/write_bitable_records.py \
--app "https://xxx.feishu.cn/base/BxxXXXX" \
--table_id tblXXXXXX \
--records '[{"任务名称":"完成API文档","优先级":"高"}]'
调用 create_doc.py 前若需要先生成或保存 .md 文件,存放位置遵循以下优先级:
ai-pm/、multi-agent/、企业培训/<客户>/、.claude/skills/<skill>/docs/ 等。/root/course/tmp_file/(次选):纯过渡性、无明确归属的 md,放这里(可建子目录)。/tmp、/var/tmp、当前工作目录(CWD)、skill 目录根目录或 scripts/ 下。create_doc.py 会拒绝工作区(/root/course)之外的文件路径,并提示重新放置。
{_skill_base}/index/doc_cache.db(SQLite,自动创建)。(sha256, 飞书 doc_token/url, 本地源路径, 标题, ...) 映射。create_doc.py 上传前查 sha256;read_doc.py 读取前查 doc_token。命中即走本地,省去重复上传/下载。dump_index.py 查看,无需手工编辑 db 文件。所有脚本统一输出 JSON 到 stdout:
{"errcode": 0, "errmsg": "success", "data": {...}}
{"errcode": 1, "errmsg": "错误说明\n建议:...", "data": {}}