personal-requirement
业务SRE二组 & 基础服务中台 AI 化组织 子项目 · 伙伴个人需求登记 OpenClaw 插件
每位伙伴在自己的 OpenClaw agent 上装这个插件后,平时收到相关方(伙伴老师、业务方、跨组)甩过来的需求/事项/问题时,让自己的 agent 调用插件把原话结构化登记到 Teable —— 每人每季度一张表。
后续周报、OKR 盘点、跨组协调等环节能直接对照这些结构化数据做进一步加工。
这个插件能做什么
3 个 MCP tool:
| 工具 | 何时用 |
|---|---|
requirement_bootstrap | 首次使用时自动初始化:检查 token、识别所属组、建/复用当季个人表 |
requirement_preview | 解析伙伴原话到结构化字段(title/description/counterpart_name 等),不写库 |
requirement_record | 人工确认字段后写入当季个人表 |
安装步骤(伙伴视角)
1. 安装插件
openclaw plugins install clawhub:@tal/personal-requirement
openclaw gateway restart
⚠️ 如果你安装过旧版,需要先卸载再重装(plugin id 已变更):
openclaw plugins uninstall sre-ai-personal-requirement # v2026.6.x 旧版 openclaw plugins uninstall personal-requirement # v0.1.x 更早旧版
3. 申请 Teable Token
⚠️ 已知安全限制:本插件面向仅有 IM 访问权限的用户,token 需要通过 IM 对话传递给 agent。token 发送后可能留存在 IM 聊天记录、客户端历史或系统日志中,这是当前架构下无法完全消除的风险。我们通过 14 天短有效期和立即提示删除消息来降低窗口,但你应在了解这一风险后自行决定是否使用。
打开 https://yach-teable.zhiyinlou.com/setting/personal-access-token ,点击「创建令牌」:
-
有效期:建议 14 天(短有效期降低泄露窗口,到期重发一次即可续期)
-
权限范围(最小权限原则,只勾必要项):
类别 Scope 基本访问 `space 需求登记 `record 季度建表 `table -
可访问的空间:基础服务中台-SRE-AI化组织
-
生成后立即复制,页面关闭后无法再查看
4. 初次使用时 agent 会引导你配置 token
安装完不需要提前手动配置。下次触发登记流程时,agent 会检测到 token 未配置,把申请步骤和配置引导念给你听,然后引导你把 token 发过来完成配置。
关于 IM 传递 token 的安全说明:
由于本插件面向仅有 IM 访问权限的用户,token 需要通过 IM 对话传递给 agent。我们采取以下措施降低风险:
- token 有效期设为 14 天,过期自动失效,降低泄露窗口
- agent 收到 token 后立即写入本地配置文件,随即提示你删除包含 token 的那条消息
- 本系统为公司内部系统,IM 通道和日志均在公司管控范围内
- token 写入本地后不会再出现在任何对话、memory 或日志中
⚠️ 收到 agent 的"已保存"提示后,请立即删除你发送 token 的那条消息。
5. 日常使用
明确告诉 agent 要登记时触发,例如:
- "帮我记一下:宋超老师反馈告警延迟的问题"
- "登记一下,业务方陈老师问能不能支持 xxx 功能"
- "高维说某个需求要排期,记一下"
agent 会:
- 用
requirement_preview解析原话 → 给你看结构化字段 - 你确认/修改
- 你确认后,
requirement_record写入你当季的表
你的当季表长这样:王海东-039240-FY27Q1,在 Teable 空间「基础服务中台-SRE-AI化组织」→「业务SRE二组」Base 下。
ℹ️ 登记内容可见范围:每条记录的
createdBy是你自己,表归你个人,但组长和 SRE 团队管理员可查看本组所有人的表。
让 agent 识别登记场景
插件内置了 OpenClaw skill,装完即生效,无需手动改任何 AGENTS.md。
注意:skill 设计为需要明确登记指令才触发,不会对普通反馈类消息自动登记,避免在用户不知情的情况下将对话内容写入外部系统。
常见问题
Q: Token 失效了怎么办?
A: 重新申请 token,把 yaml 文件的 api_token 字段替换即可。
Q: 我换组了,表名还是旧组的 Base 怎么办?
A: 让花名册管理员先在 Teable 花名册表(tblx3kjDWlSgoZz3As4)里把你的 组ID 改到新组,之后下次季度自动落到新组 Base 下。历史记录保留在旧组 Base。
Q: 跨季度会怎么样?
A: 每次 requirement_bootstrap 会按当前财年季度计算表名,新季度第一次用会自动建新表。
Q: 能不能改字段? A: 当前 schema 固定 11 个字段(title/description/counterpart_name/counterpart_org/original_message/item_type/priority_hint/found_at/status/linked_task_id/linked_task_record_id),改动请联系 SRE 工具链维护者。
许可 / 维护
- 维护者:王海东老师的 AI 助手「铁柱」(SRE 二组)
- 工单/问题:知音楼上找 王海东-039240
附:开发者信息
技术栈
- TypeScript + Node.js ≥ 22
- @sinclair/typebox(tool 参数 schema)
- js-yaml(token 文件解析)
- 依赖 openclaw/plugin-sdk
构建
npm install
npm run build # tsc 生成 dist
npm run test # 跑单元 + mock 集成测试(101 case)
打包
# 打 .plugin.tar.gz(符合 openclaw 插件规范)
./scripts/pack.sh
# 产物:dist-package/sre-ai-personal-requirement-v2026.6.4.plugin.tar.gz
架构
src/
├── teable-client.ts # Teable REST API 客户端(含 250ms 限流 + 空 body 处理)
├── team-resolver.ts # 花名册解析,工号/YachID → 成员 + 所属组
├── table-manager.ts # 每季度表建立/复用,含占位记录清理
├── record-writer.ts # 字段写入(ISO 8601 时间 / SingleSelect name 值)
├── config.ts # 插件配置 schema + 默认值(含 5 个组的 Base ID)
├── quarter.ts # 财年季度计算(3 月起)
└── tools/
├── index.ts # tool 注册入口
├── shared.ts # resolveContext 共享逻辑 + 引导话术
├── requirement-bootstrap.ts
├── requirement-preview.ts
└── requirement-record.ts
skills/
└── requirement-record/
└── SKILL.md # OpenClaw skill 定义(触发场景、工作流程、红线)
Teable 端常量(已硬编码在 config.ts 默认值里)
| 配置项 | 值 |
|---|---|
| Teable API Base | https://yach-teable.zhiyinlou.com/api |
| 花名册 Base | bseGOjceaTfP9RSsIR3(数据库 Base) |
| 花名册 Table | tblx3kjDWlSgoZz3As4 |
| sre1 Base | bseujjqSjHo80IHoJSo |
| sre2 Base | bseJnE4Uv0taLrl1YhU |
| dba Base | bseyYY6pg0xuUFHybPj |
| network Base | bsewaMgiZ76TzgdM2JK |
| platform Base | bsergAJm0oSP1tK9QGU |
测试
tests/unit.test.mjs— 55 个纯逻辑测试(quarter/config/preview 字段校验等)tests/integration.mock.test.mjs— 46 个 mock fetch 集成测试(建表/清理占位/复用/写入/边界)- 真 Teable E2E 测试脚本:
_legacy/teable-real-integration.mjs(需 token,不在 npm test 里)