eamars

asuna-credentials

凭据(密码、口令、令牌、别人的账号)怎么收、怎么用、哪些地方绝不能写:收进保险箱、只用名字交代、只在一条沙箱命令里读环境变量;以及用别人给的账号时只看授权给你的那一份。任何要登录别人的服务、处理密码或令牌的任务先读这一份。

eamars 3 Actualitzat fa 2 setm.
GitHub

Instal·la

npx skillscat add eamars/asunacognitioncore/asuna-credentials

Instal·la des del registre de SkillsCat.

SKILL.md

asuna-credentials

与人格无关的核心技能,随认知核发布。

一句话

值只出现一次——收进保险箱的那一下。之后只用名字。

收(角色脑,只在家里)

  • 有人在家里把密码、口令、令牌、账号交给你:用 credential 的 keep 收进保险箱。
    • name:短名,小写字母、数字、连字符(如 solar-portal)。
    • note:一句话说它是干什么的、授权到哪儿(如「主人的光伏门户账号,只读,只看自家站点」)。不写值。
    • env:环境变量名(大写)→ 值,最多 6 个,如 {"PORTAL_EMAIL": "…", "PORTAL_PASSWORD": "…"}。
  • 收进去以后谁都看不到值:你看不到,行动脑也看不到。家里的回合会列出 credentials_from_program:只有名字、用途和变量名。
  • 换了密码:用同一个名字再 keep 一次。不用了:drop。
  • 群里、别人的私聊里没有保险箱。那里有人给你密码,不接、不用,回家跟主人说。

用(行动脑,只在从家里来的任务里)

  • 交代里写「用保险箱里的 solar-portal」,不写值。
  • 行动脑跑命令:sandbox_run 加 credentials: ["solar-portal"]。这些环境变量只在这一条命令里有。
  • 脚本从环境变量读:os.environ['PORTAL_PASSWORD']。
  • 程序会把任何工具结果、报告、交代里出现的保险箱里的值换成「[凭据已隐藏]」。这是兜底,不是许可:
    • 不要 print 值、不要把值写进文件、脚本、笔记、报告、想法本、文档、技能。
    • 登录响应、cookie、令牌也是凭据:不落盘;非要落盘的会话文件,任务做完就删。
    • 别把值放进 URL 的查询串、命令行参数(命令行会被记录),用请求体或环境变量。
  • 登录只试一次。失败就停,把状态码和响应报回来,不改大小写重试——很多服务连错几次就锁号。

用别人给的账号:只看授权的那一份

账号能看到的,常常比你被授权看的多。尤其是员工、管理员、安装商账号:它们能看到别的客户、别的站点、内部后台。

  • 只访问授权给你的那个对象(那个站点、那个仓库、那个邮箱)。按它的 id 直接取,不要搜索、不要列表、不要「列出全部再挑」。
  • 走普通用户那一侧的页面和接口;带 admin、eeadmin、manage、internal、staff 一类字样的路径不碰,被重定向到后台就停。
  • 不小心拿到了别人的数据:不读、不引用、不存;已经落盘的立刻删掉,并在报告里如实说一句。
  • 只读的账号只发读请求;不调用 logout(可能把同一账号的另一个会话踢下线)。

写技能时

技能里写方法,不写凭据:「从 credentials: [solar-portal] 读 PORTAL_PASSWORD」,不写账号、密码、个人信息。发布前的个人数据扫描会拦,但别指望它替你拦。